commit
724a242f7a
|
|
@ -7,6 +7,7 @@ import com.ruoyi.system.service.IWechatApiService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
|
|
@ -24,13 +25,14 @@ public class WechatApiController extends BaseController {
|
||||||
@Autowired
|
@Autowired
|
||||||
IWechatApiService wechatApiService;
|
IWechatApiService wechatApiService;
|
||||||
|
|
||||||
/* @RequestMapping("anon/getAccessToken")
|
@RequestMapping("anon/getAccessToken")
|
||||||
|
@ResponseBody
|
||||||
public String getAccessToken() {
|
public String getAccessToken() {
|
||||||
return wechatApiService.GetAccessToken();
|
return wechatApiService.GetAccessToken();
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
@GetMapping("anon/userInfo")
|
@GetMapping("anon/userInfo")
|
||||||
public Map<String, Object> getJSON(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
public Map<String, Object> getJSON(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||||
|
|
||||||
BufferedReader streamReader = new BufferedReader( new InputStreamReader(request.getInputStream(), "UTF-8"));
|
BufferedReader streamReader = new BufferedReader( new InputStreamReader(request.getInputStream(), "UTF-8"));
|
||||||
StringBuilder responseStrBuilder = new StringBuilder();
|
StringBuilder responseStrBuilder = new StringBuilder();
|
||||||
|
|
@ -38,8 +40,8 @@ public class WechatApiController extends BaseController {
|
||||||
while ((inputStr = streamReader.readLine()) != null) {
|
while ((inputStr = streamReader.readLine()) != null) {
|
||||||
responseStrBuilder.append(inputStr);
|
responseStrBuilder.append(inputStr);
|
||||||
}
|
}
|
||||||
Map<String, Object> params = JSON.parseObject(responseStrBuilder.toString(), Map.class);
|
return JSON.parseObject(responseStrBuilder.toString(), Map.class);
|
||||||
return params;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -51,7 +53,7 @@ public class WechatApiController extends BaseController {
|
||||||
userIdList.add("erqrqwe");//错误userId示例
|
userIdList.add("erqrqwe");//错误userId示例
|
||||||
userIdList.add(""); //空UserId示例
|
userIdList.add(""); //空UserId示例
|
||||||
userIdList.add("359");
|
userIdList.add("359");
|
||||||
if(!ShiroUtils.getUserId().equals("359")){
|
if(! String.valueOf(ShiroUtils.getUserId()).equals("359")){
|
||||||
userIdList.add(String.valueOf(ShiroUtils.getUserId()));
|
userIdList.add(String.valueOf(ShiroUtils.getUserId()));
|
||||||
}
|
}
|
||||||
Map<String, String> resultMap = wechatApiService.SendTextMessageToWechatUser(userIdList,"<a href=\"www.baidu.com\">哈哈哈!</a>");
|
Map<String, String> resultMap = wechatApiService.SendTextMessageToWechatUser(userIdList,"<a href=\"www.baidu.com\">哈哈哈!</a>");
|
||||||
|
|
@ -68,7 +70,7 @@ public class WechatApiController extends BaseController {
|
||||||
userIdList.add("359");
|
userIdList.add("359");
|
||||||
//userIdList.add("454");
|
//userIdList.add("454");
|
||||||
//userIdList.add("408");
|
//userIdList.add("408");
|
||||||
if(!ShiroUtils.getUserId().equals("359")){
|
if(!String.valueOf(ShiroUtils.getUserId()).equals("359")){
|
||||||
userIdList.add(String.valueOf(ShiroUtils.getUserId()));
|
userIdList.add(String.valueOf(ShiroUtils.getUserId()));
|
||||||
}
|
}
|
||||||
String title="号外:特大优惠!限时抢购";
|
String title="号外:特大优惠!限时抢购";
|
||||||
|
|
|
||||||
2
pom.xml
2
pom.xml
|
|
@ -28,7 +28,7 @@
|
||||||
<fastjson.version>1.2.76</fastjson.version>
|
<fastjson.version>1.2.76</fastjson.version>
|
||||||
<oshi.version>5.8.0</oshi.version>
|
<oshi.version>5.8.0</oshi.version>
|
||||||
<jna.version>5.8.0</jna.version>
|
<jna.version>5.8.0</jna.version>
|
||||||
<commons.io.version>2.10.0</commons.io.version>
|
<commons.io.version>2.11.0</commons.io.version>
|
||||||
<commons.fileupload.version>1.4</commons.fileupload.version>
|
<commons.fileupload.version>1.4</commons.fileupload.version>
|
||||||
<poi.version>4.1.2</poi.version>
|
<poi.version>4.1.2</poi.version>
|
||||||
<velocity.version>1.7</velocity.version>
|
<velocity.version>1.7</velocity.version>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<!--360浏览器优先以webkit内核解析-->
|
<!--360浏览器优先以webkit内核解析-->
|
||||||
<title>BPS后台管理系统介绍</title>
|
<title>BPS后台管理系统</title>
|
||||||
<link rel="shortcut icon" href="favicon.ico">
|
<link rel="shortcut icon" href="favicon.ico">
|
||||||
<link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
<link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
||||||
<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
|
<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
<div id="parent" class="col-sm-4">
|
<div id="parent" class="col-sm-6">
|
||||||
<div id="child">
|
<div id="child">
|
||||||
<h3 class="text-primary"> <strong>[[${wordsContent}]]</strong></h3>
|
<h3 class="text-primary"> <strong>[[${wordsContent}]]</strong></h3>
|
||||||
<h5 class="pull-right text-warning">-- 《[[${wordsOrigin}]]》 · [[${wordsAuthor}]]</h5>
|
<h5 class="pull-right text-warning">-- 《[[${wordsOrigin}]]》 · [[${wordsAuthor}]]</h5>
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@
|
||||||
height : 192,
|
height : 192,
|
||||||
lang : 'zh-CN',
|
lang : 'zh-CN',
|
||||||
followingToolbar: false,
|
followingToolbar: false,
|
||||||
|
dialogsInBody: true,
|
||||||
callbacks: {
|
callbacks: {
|
||||||
onImageUpload: function (files) {
|
onImageUpload: function (files) {
|
||||||
sendFile(files[0], this);
|
sendFile(files[0], this);
|
||||||
|
|
|
||||||
|
|
@ -303,7 +303,8 @@ public class VelocityUtils
|
||||||
*/
|
*/
|
||||||
public static String getParentMenuId(JSONObject paramsObj)
|
public static String getParentMenuId(JSONObject paramsObj)
|
||||||
{
|
{
|
||||||
if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID))
|
if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID)
|
||||||
|
&& StringUtils.isNotEmpty(paramsObj.getString(GenConstants.PARENT_MENU_ID)))
|
||||||
{
|
{
|
||||||
return paramsObj.getString(GenConstants.PARENT_MENU_ID);
|
return paramsObj.getString(GenConstants.PARENT_MENU_ID);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ public class ${ClassName}Controller extends BaseController
|
||||||
{
|
{
|
||||||
if (StringUtils.isNotNull(${pkColumn.javaField}))
|
if (StringUtils.isNotNull(${pkColumn.javaField}))
|
||||||
{
|
{
|
||||||
mmap.put("${className}", ${className}Service.select${ClassName}ById(${pkColumn.javaField}));
|
mmap.put("${className}", ${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}));
|
||||||
}
|
}
|
||||||
return prefix + "/add";
|
return prefix + "/add";
|
||||||
}
|
}
|
||||||
|
|
@ -129,7 +129,7 @@ public class ${ClassName}Controller extends BaseController
|
||||||
@GetMapping("/edit/{${pkColumn.javaField}}")
|
@GetMapping("/edit/{${pkColumn.javaField}}")
|
||||||
public String edit(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}, ModelMap mmap)
|
public String edit(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}, ModelMap mmap)
|
||||||
{
|
{
|
||||||
${ClassName} ${className} = ${className}Service.select${ClassName}ById(${pkColumn.javaField});
|
${ClassName} ${className} = ${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
|
||||||
mmap.put("${className}", ${className});
|
mmap.put("${className}", ${className});
|
||||||
return prefix + "/edit";
|
return prefix + "/edit";
|
||||||
}
|
}
|
||||||
|
|
@ -156,7 +156,7 @@ public class ${ClassName}Controller extends BaseController
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public AjaxResult remove(String ids)
|
public AjaxResult remove(String ids)
|
||||||
{
|
{
|
||||||
return toAjax(${className}Service.delete${ClassName}ByIds(ids));
|
return toAjax(${className}Service.delete${ClassName}By${pkColumn.capJavaField}s(ids));
|
||||||
}
|
}
|
||||||
#elseif($table.tree)
|
#elseif($table.tree)
|
||||||
/**
|
/**
|
||||||
|
|
@ -168,7 +168,7 @@ public class ${ClassName}Controller extends BaseController
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public AjaxResult remove(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField})
|
public AjaxResult remove(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField})
|
||||||
{
|
{
|
||||||
return toAjax(${className}Service.delete${ClassName}ById(${pkColumn.javaField}));
|
return toAjax(${className}Service.delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}));
|
||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
#if($table.tree)
|
#if($table.tree)
|
||||||
|
|
@ -182,7 +182,7 @@ public class ${ClassName}Controller extends BaseController
|
||||||
{
|
{
|
||||||
if (StringUtils.isNotNull(${pkColumn.javaField}))
|
if (StringUtils.isNotNull(${pkColumn.javaField}))
|
||||||
{
|
{
|
||||||
mmap.put("${className}", ${className}Service.select${ClassName}ById(${pkColumn.javaField}));
|
mmap.put("${className}", ${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}));
|
||||||
}
|
}
|
||||||
return prefix + "/tree";
|
return prefix + "/tree";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,10 @@ public interface ${ClassName}Mapper
|
||||||
/**
|
/**
|
||||||
* 查询${functionName}
|
* 查询${functionName}
|
||||||
*
|
*
|
||||||
* @param ${pkColumn.javaField} ${functionName}ID
|
* @param ${pkColumn.javaField} ${functionName}主键
|
||||||
* @return ${functionName}
|
* @return ${functionName}
|
||||||
*/
|
*/
|
||||||
public ${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
|
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询${functionName}列表
|
* 查询${functionName}列表
|
||||||
|
|
@ -49,27 +49,27 @@ public interface ${ClassName}Mapper
|
||||||
/**
|
/**
|
||||||
* 删除${functionName}
|
* 删除${functionName}
|
||||||
*
|
*
|
||||||
* @param ${pkColumn.javaField} ${functionName}ID
|
* @param ${pkColumn.javaField} ${functionName}主键
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
|
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量删除${functionName}
|
* 批量删除${functionName}
|
||||||
*
|
*
|
||||||
* @param ${pkColumn.javaField}s 需要删除的数据ID
|
* @param ${pkColumn.javaField}s 需要删除的数据主键集合
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int delete${ClassName}ByIds(String[] ${pkColumn.javaField}s);
|
public int delete${ClassName}By${pkColumn.capJavaField}s(String[] ${pkColumn.javaField}s);
|
||||||
#if($table.sub)
|
#if($table.sub)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量删除${subTable.functionName}
|
* 批量删除${subTable.functionName}
|
||||||
*
|
*
|
||||||
* @param customerIds 需要删除的数据ID
|
* @param ${pkColumn.javaField}s 需要删除的数据主键集合
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int delete${subClassName}By${subTableFkClassName}s(String[] ${pkColumn.javaField}s);
|
public int delete${subClassName}By${pkColumn.capJavaField}s(String[] ${pkColumn.javaField}s);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量新增${subTable.functionName}
|
* 批量新增${subTable.functionName}
|
||||||
|
|
@ -81,11 +81,11 @@ public interface ${ClassName}Mapper
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过${functionName}ID删除${subTable.functionName}信息
|
* 通过${functionName}主键删除${subTable.functionName}信息
|
||||||
*
|
*
|
||||||
* @param ${pkColumn.javaField} ${functionName}ID
|
* @param ${pkColumn.javaField} ${functionName}ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});
|
public int delete${subClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
|
||||||
#end
|
#end
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,10 @@ public interface I${ClassName}Service
|
||||||
/**
|
/**
|
||||||
* 查询${functionName}
|
* 查询${functionName}
|
||||||
*
|
*
|
||||||
* @param ${pkColumn.javaField} ${functionName}ID
|
* @param ${pkColumn.javaField} ${functionName}主键
|
||||||
* @return ${functionName}
|
* @return ${functionName}
|
||||||
*/
|
*/
|
||||||
public ${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
|
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询${functionName}列表
|
* 查询${functionName}列表
|
||||||
|
|
@ -49,18 +49,18 @@ public interface I${ClassName}Service
|
||||||
/**
|
/**
|
||||||
* 批量删除${functionName}
|
* 批量删除${functionName}
|
||||||
*
|
*
|
||||||
* @param ids 需要删除的数据ID
|
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int delete${ClassName}ByIds(String ids);
|
public int delete${ClassName}By${pkColumn.capJavaField}s(String ${pkColumn.javaField}s);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除${functionName}信息
|
* 删除${functionName}信息
|
||||||
*
|
*
|
||||||
* @param ${pkColumn.javaField} ${functionName}ID
|
* @param ${pkColumn.javaField} ${functionName}主键
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField});
|
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
|
||||||
#if($table.tree)
|
#if($table.tree)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -39,13 +39,13 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
|
||||||
/**
|
/**
|
||||||
* 查询${functionName}
|
* 查询${functionName}
|
||||||
*
|
*
|
||||||
* @param ${pkColumn.javaField} ${functionName}ID
|
* @param ${pkColumn.javaField} ${functionName}主键
|
||||||
* @return ${functionName}
|
* @return ${functionName}
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField})
|
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
|
||||||
{
|
{
|
||||||
return ${className}Mapper.select${ClassName}ById(${pkColumn.javaField});
|
return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -111,36 +111,36 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除${functionName}对象
|
* 批量删除${functionName}
|
||||||
*
|
*
|
||||||
* @param ids 需要删除的数据ID
|
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
#if($table.sub)
|
#if($table.sub)
|
||||||
@Transactional
|
@Transactional
|
||||||
#end
|
#end
|
||||||
@Override
|
@Override
|
||||||
public int delete${ClassName}ByIds(String ids)
|
public int delete${ClassName}By${pkColumn.capJavaField}s(String ${pkColumn.javaField}s)
|
||||||
{
|
{
|
||||||
#if($table.sub)
|
#if($table.sub)
|
||||||
${className}Mapper.delete${subClassName}By${subTableFkClassName}s(Convert.toStrArray(ids));
|
${className}Mapper.delete${subClassName}By${subTableFkClassName}s(Convert.toStrArray(${pkColumn.javaField}s));
|
||||||
#end
|
#end
|
||||||
return ${className}Mapper.delete${ClassName}ByIds(Convert.toStrArray(ids));
|
return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}s(Convert.toStrArray(${pkColumn.javaField}s));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除${functionName}信息
|
* 删除${functionName}信息
|
||||||
*
|
*
|
||||||
* @param ${pkColumn.javaField} ${functionName}ID
|
* @param ${pkColumn.javaField} ${functionName}主键
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField})
|
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
|
||||||
{
|
{
|
||||||
#if($table.sub)
|
#if($table.sub)
|
||||||
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField});
|
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField});
|
||||||
#end
|
#end
|
||||||
return ${className}Mapper.delete${ClassName}ById(${pkColumn.javaField});
|
return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
|
||||||
}
|
}
|
||||||
#if($table.tree)
|
#if($table.tree)
|
||||||
|
|
||||||
|
|
@ -179,7 +179,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
|
||||||
public void insert${subClassName}(${ClassName} ${className})
|
public void insert${subClassName}(${ClassName} ${className})
|
||||||
{
|
{
|
||||||
List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List();
|
List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List();
|
||||||
Long ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}();
|
${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}();
|
||||||
if (StringUtils.isNotNull(${subclassName}List))
|
if (StringUtils.isNotNull(${subclassName}List))
|
||||||
{
|
{
|
||||||
List<${subClassName}> list = new ArrayList<${subClassName}>();
|
List<${subClassName}> list = new ArrayList<${subClassName}>();
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
#end
|
#end
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="select${ClassName}ById" parameterType="${pkColumn.javaType}" resultMap="#if($table.sub)${ClassName}${subClassName}Result#else${ClassName}Result#end">
|
<select id="select${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}" resultMap="#if($table.sub)${ClassName}${subClassName}Result#else${ClassName}Result#end">
|
||||||
#if($table.crud)
|
#if($table.crud)
|
||||||
<include refid="select${ClassName}Vo"/>
|
<include refid="select${ClassName}Vo"/>
|
||||||
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
|
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
|
||||||
|
|
@ -113,11 +113,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
|
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<delete id="delete${ClassName}ById" parameterType="${pkColumn.javaType}">
|
<delete id="delete${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}">
|
||||||
delete from ${tableName} where ${pkColumn.columnName} = #{${pkColumn.javaField}}
|
delete from ${tableName} where ${pkColumn.columnName} = #{${pkColumn.javaField}}
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
<delete id="delete${ClassName}ByIds" parameterType="String">
|
<delete id="delete${ClassName}By${pkColumn.capJavaField}s" parameterType="String">
|
||||||
delete from ${tableName} where ${pkColumn.columnName} in
|
delete from ${tableName} where ${pkColumn.columnName} in
|
||||||
<foreach item="${pkColumn.javaField}" collection="array" open="(" separator="," close=")">
|
<foreach item="${pkColumn.javaField}" collection="array" open="(" separator="," close=")">
|
||||||
#{${pkColumn.javaField}}
|
#{${pkColumn.javaField}}
|
||||||
|
|
@ -132,7 +132,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
</foreach>
|
</foreach>
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
<delete id="delete${subClassName}By${subTableFkClassName}" parameterType="Long">
|
<delete id="delete${subClassName}By${subTableFkClassName}" parameterType="${pkColumn.javaType}">
|
||||||
delete from ${subTableName} where ${subTableFkName} = #{${subTableFkclassName}}
|
delete from ${subTableName} where ${subTableFkName} = #{${subTableFkclassName}}
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,7 @@ public class SysJobController extends BaseController
|
||||||
{
|
{
|
||||||
if (!CronUtils.isValid(job.getCronExpression()))
|
if (!CronUtils.isValid(job.getCronExpression()))
|
||||||
{
|
{
|
||||||
return AjaxResult.error("新增任务'" + job.getJobName() + "'失败,Cron表达式不正确");
|
return error("新增任务'" + job.getJobName() + "'失败,Cron表达式不正确");
|
||||||
}
|
}
|
||||||
else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI))
|
else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI))
|
||||||
{
|
{
|
||||||
|
|
@ -167,7 +167,7 @@ public class SysJobController extends BaseController
|
||||||
{
|
{
|
||||||
if (!CronUtils.isValid(job.getCronExpression()))
|
if (!CronUtils.isValid(job.getCronExpression()))
|
||||||
{
|
{
|
||||||
return AjaxResult.error("修改任务'" + job.getJobName() + "'失败,Cron表达式不正确");
|
return error("修改任务'" + job.getJobName() + "'失败,Cron表达式不正确");
|
||||||
}
|
}
|
||||||
else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI))
|
else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -233,7 +233,8 @@ public class SysDeptServiceImpl implements ISysDeptService
|
||||||
updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors);
|
updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors);
|
||||||
}
|
}
|
||||||
int result = deptMapper.updateDept(dept);
|
int result = deptMapper.updateDept(dept);
|
||||||
if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors()))
|
if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors())
|
||||||
|
&& !StringUtils.equals("0", dept.getAncestors()))
|
||||||
{
|
{
|
||||||
// 如果该部门是启用状态,则启用该部门的所有上级部门
|
// 如果该部门是启用状态,则启用该部门的所有上级部门
|
||||||
updateParentDeptStatusNormal(dept);
|
updateParentDeptStatusNormal(dept);
|
||||||
|
|
|
||||||
|
|
@ -2,23 +2,25 @@ package com.ruoyi.system.service.impl;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.ruoyi.common.annotation.Log;
|
|
||||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||||
|
import com.ruoyi.common.utils.CacheUtils;
|
||||||
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import com.ruoyi.common.utils.http.HttpUtils;
|
import com.ruoyi.common.utils.http.HttpUtils;
|
||||||
import com.ruoyi.system.domain.WechatAccessToken;
|
import com.ruoyi.system.domain.WechatAccessToken;
|
||||||
import com.ruoyi.system.domain.WechatSendMessage;
|
|
||||||
import com.ruoyi.system.domain.WechatUserInfo;
|
import com.ruoyi.system.domain.WechatUserInfo;
|
||||||
import com.ruoyi.system.mapper.WechatAccessTokenMapper;
|
import com.ruoyi.system.mapper.WechatAccessTokenMapper;
|
||||||
import com.ruoyi.system.service.ISysUserService;
|
import com.ruoyi.system.service.ISysUserService;
|
||||||
import com.ruoyi.system.service.IWechatApiService;
|
import com.ruoyi.system.service.IWechatApiService;
|
||||||
|
import org.apache.shiro.cache.Cache;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class WechatApiServiceImpl implements IWechatApiService {
|
public class WechatApiServiceImpl implements IWechatApiService {
|
||||||
|
|
@ -44,6 +46,31 @@ public class WechatApiServiceImpl implements IWechatApiService {
|
||||||
* @return Access Token
|
* @return Access Token
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
public String GetAccessToken() {
|
||||||
|
String cacheName = "wechatToke:" + corpId + "," + agentId;
|
||||||
|
|
||||||
|
//获取缓存中accessToken与缓存的时间信息
|
||||||
|
Cache<String, Object> cache = CacheUtils.getCache(cacheName);
|
||||||
|
String accessToken = (String) cache.get("accessToken");
|
||||||
|
Date getTokenTime = ObjectToDate(cache.get("getTokenTime"));
|
||||||
|
Integer expires_in = ObjectToInteger(cache.get("expires_in"));
|
||||||
|
//如果没有获取到cache或者accessToken为空或者cache即将过期,则重新获取并返回新的accessToken;
|
||||||
|
if (StringUtils.isEmpty(accessToken) || null == getTokenTime ? true : (differenceSecond(DateUtils.getNowDate(), getTokenTime) + 1000 > expires_in ? true : false)) {
|
||||||
|
//清空wechatAccessTokenCache
|
||||||
|
CacheUtils.removeAll(cacheName);
|
||||||
|
//从企业微信获取新的accessToken
|
||||||
|
WechatAccessToken wechatAccessToken = getAccessTokenFromWechat(corpId, secret, agentId);
|
||||||
|
//将Token写入缓存
|
||||||
|
CacheUtils.put(cacheName, "accessToken", wechatAccessToken.getAccess_token());
|
||||||
|
CacheUtils.put(cacheName, "expires_in", wechatAccessToken.getExpires_in());
|
||||||
|
CacheUtils.put(cacheName, "getTokenTime", DateUtils.getNowDate());
|
||||||
|
//返回token
|
||||||
|
return wechatAccessToken.getAccess_token();
|
||||||
|
}
|
||||||
|
return accessToken;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
public String GetAccessToken() {
|
public String GetAccessToken() {
|
||||||
//获取本地数据库中的Token
|
//获取本地数据库中的Token
|
||||||
WechatAccessToken wat = new WechatAccessToken();
|
WechatAccessToken wat = new WechatAccessToken();
|
||||||
|
|
@ -55,6 +82,7 @@ public class WechatApiServiceImpl implements IWechatApiService {
|
||||||
if(list.isEmpty() || list.size() <=0)
|
if(list.isEmpty() || list.size() <=0)
|
||||||
{
|
{
|
||||||
returnWat= getAccessTokenFromWechat(corpId,secret,agentId);
|
returnWat= getAccessTokenFromWechat(corpId,secret,agentId);
|
||||||
|
//将accessToken写入数据库
|
||||||
wechatAccessTokenMapper.insertWechatAccessToken(returnWat);
|
wechatAccessTokenMapper.insertWechatAccessToken(returnWat);
|
||||||
return returnWat.getAccess_token();
|
return returnWat.getAccess_token();
|
||||||
}
|
}
|
||||||
|
|
@ -83,6 +111,34 @@ public class WechatApiServiceImpl implements IWechatApiService {
|
||||||
//如果以上情况皆不是,则返回本地数据库的token
|
//如果以上情况皆不是,则返回本地数据库的token
|
||||||
return list.get(0).getAccess_token();
|
return list.get(0).getAccess_token();
|
||||||
|
|
||||||
|
}*/
|
||||||
|
|
||||||
|
//将对象转化为日期,如果无法转换则返回空值,避免抛出异常。
|
||||||
|
private Date ObjectToDate(Object obj){
|
||||||
|
try {
|
||||||
|
return (Date) obj;
|
||||||
|
}catch (Exception e){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//将对象转化为Integer,如果对象为空或无法转换返回0,
|
||||||
|
private Integer ObjectToInteger(Object obj){
|
||||||
|
//如果为空返回零
|
||||||
|
if(null==obj){
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
return Integer.parseInt(obj.toString());
|
||||||
|
}catch (Exception e){
|
||||||
|
//发生异常返回0
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取相两个日期相差秒数
|
||||||
|
private int differenceSecond(Date minuendDate, Date subtractionDate ) {
|
||||||
|
return (int)((minuendDate.getTime() - subtractionDate.getTime()) / 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
//根据corpId与corpSecret获取Token
|
//根据corpId与corpSecret获取Token
|
||||||
|
|
@ -97,12 +153,6 @@ public class WechatApiServiceImpl implements IWechatApiService {
|
||||||
return wechatAccessToken;
|
return wechatAccessToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
//获取相两个日期相差秒数
|
|
||||||
private int differenceSecond(Date minuendDate, Date subtractionDate ) {
|
|
||||||
return (int)((minuendDate.getTime() - subtractionDate.getTime()) / 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据企业微信登录身份获取本地LoginName
|
* 根据企业微信登录身份获取本地LoginName
|
||||||
*
|
*
|
||||||
|
|
@ -201,6 +251,8 @@ public class WechatApiServiceImpl implements IWechatApiService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 推送text消息到企业微信用户
|
* 推送text消息到企业微信用户
|
||||||
|
* 其中text参数的content字段可以支持换行、以及A标签,即可打开自定义的网页
|
||||||
|
* 示例:"content" : "你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href=\"http://work.weixin.qq.com\">邮件中心视频实况</a>,聪明避开排队。"
|
||||||
* @param toUserList 发送的用户列表
|
* @param toUserList 发送的用户列表
|
||||||
* @param message 发送的消息内容
|
* @param message 发送的消息内容
|
||||||
* @return 消息发送结果
|
* @return 消息发送结果
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue