From 65976f9d697235ec3c4bf1f87184b44ab875b084 Mon Sep 17 00:00:00 2001 From: weikai <123456> Date: Tue, 26 May 2020 17:13:05 +0800 Subject: [PATCH 01/22] =?UTF-8?q?=E3=80=90=E4=B9=A6=E8=AE=B0=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=20-=20=E8=8E=B7=E5=8F=96=E5=B7=A5=E4=BD=9C=E7=AB=AF?= =?UTF-8?q?=E5=92=8C=E6=95=B0=E6=8D=AE=E7=AB=AFopenId=20=E3=80=91-?= =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E6=B7=BB=E5=8A=A0=E3=80=91-?= =?UTF-8?q?=EF=BC=88=E9=AD=8F=E5=87=AF=EF=BC=89-2020/05/26?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../result/UserWorkAndAnalyOpenIdDTO.java | 26 +++++++++++++++++ .../epdc/controller/SysUserController.java | 12 ++++++++ .../com/elink/esua/epdc/dao/SysUserDao.java | 9 ++++++ .../epdc/feign/UserRelationFeignClient.java | 25 ++++++++++++++++ .../fallback/UserRelationClientFallback.java | 15 ++++++++++ .../esua/epdc/service/SysUserService.java | 10 +++++++ .../epdc/service/impl/SysUserServiceImpl.java | 29 +++++++++++++++++++ .../src/main/resources/mapper/SysUserDao.xml | 26 +++++++++++++++++ 8 files changed, 152 insertions(+) create mode 100644 esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/UserWorkAndAnalyOpenIdDTO.java create mode 100644 esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/UserRelationFeignClient.java create mode 100644 esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserRelationClientFallback.java diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/UserWorkAndAnalyOpenIdDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/UserWorkAndAnalyOpenIdDTO.java new file mode 100644 index 000000000..0d23243f0 --- /dev/null +++ b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/UserWorkAndAnalyOpenIdDTO.java @@ -0,0 +1,26 @@ +package com.elink.esua.epdc.dto.epdc.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** +* @Description: 书记在线 - 用户id获取工作和数据端openId返回类 +* @Param: +* @return: +* @Author: wk +* @Date: 2020/5/26 +*/ +@Data +public class UserWorkAndAnalyOpenIdDTO implements Serializable { + private static final long serialVersionUID = -1L; + /** + * 工作端openId集合 + */ + private ListworkOpenIds; + /** + * 数据端openId集合 + */ + private ListanalyOpenIds; +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java index a0ad7c128..d22c194e9 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java @@ -26,6 +26,7 @@ import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; import com.elink.esua.epdc.dto.*; import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO; +import com.elink.esua.epdc.dto.epdc.result.UserWorkAndAnalyOpenIdDTO; import com.elink.esua.epdc.excel.SysUserExcel; import com.elink.esua.epdc.service.*; import io.swagger.annotations.Api; @@ -476,5 +477,16 @@ public class SysUserController { ValidatorUtils.validateEntity(dto); return sysUserService.modifyPwd(dto); } + /** + * @Description: 根据userId查询 工作端和数据端userId + * @Param: [] + * @return: com.elink.esua.epdc.commons.tools.utils.Result>> + * @Author: wk + * @Date: 2020/5/26 + */ + @GetMapping("userRelationWorkAndAnalyOpenId") + public Result userRelationWorkAndAnalyOpenId(){ + return sysUserService.selectOpenId(); + } } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java index d7902e7d9..84324840b 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java @@ -105,4 +105,13 @@ public interface SysUserDao extends BaseDao { * @Date: 2020-01-09 */ List getSysGridLeaderPhone(Long deptId); + /** + * @Description: 根据userId集合查询openId + * @Param: [userIds, type] userId集合,openId类型 1 工作端 2 数据端 + * @return: java.util.List + * @Author: wk + * @Date: 2020/5/26 + */ + ListselectListOpenIds(@Param("userIds") List userIds, + @Param("type")String type); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/UserRelationFeignClient.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/UserRelationFeignClient.java new file mode 100644 index 000000000..645f76402 --- /dev/null +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/UserRelationFeignClient.java @@ -0,0 +1,25 @@ +package com.elink.esua.epdc.feign; + +import com.elink.esua.epdc.commons.tools.utils.Result; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.List; + +/** +* @Description: 调用数据分析模块 - 书记在线的用户id +* @Param: +* @return: +* @Author: wk +* @Date: 2020/5/26 +*/ +public interface UserRelationFeignClient { + /** + * @Description: 调用数据分析 - 书记在线的用户名单 + * @Param: [] + * @return: com.elink.esua.epdc.commons.tools.utils.Result> + * @Author: wk + * @Date: 2020/5/26 + */ + @GetMapping(value = "/cloudAnalysis/masterGroup/getUserRelationList") + Result> selectUserId(); +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserRelationClientFallback.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserRelationClientFallback.java new file mode 100644 index 000000000..2ad27ccba --- /dev/null +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserRelationClientFallback.java @@ -0,0 +1,15 @@ +package com.elink.esua.epdc.feign.fallback; + +import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; +import com.elink.esua.epdc.commons.tools.utils.ModuleUtils; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.feign.UserRelationFeignClient; + +import java.util.List; + +public class UserRelationClientFallback implements UserRelationFeignClient { + @Override + public Result> selectUserId() { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ANALYSIS_SERVER, "selectUserId"); + } +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java index d67eee1b9..29101b60b 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java @@ -15,6 +15,7 @@ import com.elink.esua.epdc.dto.ModifyPwdDTO; import com.elink.esua.epdc.dto.SysUserDTO; import com.elink.esua.epdc.dto.SysUserOpenIdFormDTO; import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO; +import com.elink.esua.epdc.dto.epdc.result.UserWorkAndAnalyOpenIdDTO; import com.elink.esua.epdc.entity.SysUserEntity; import java.util.List; @@ -146,4 +147,13 @@ public interface SysUserService extends BaseService { * @return com.elink.esua.epdc.commons.tools.utils.Result */ Result modifyPwd(ModifyPwdDTO dto); + /** + * @Description: 根据userId查询 工作端和数据端userId + * @Param: [] + * @return: com.elink.esua.epdc.commons.tools.utils.Result>> + * @Author: wk + * @Date: 2020/5/26 + */ + Result selectOpenId(); + } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java index a6a5623c0..4eb918e7c 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java @@ -31,7 +31,10 @@ import com.elink.esua.epdc.dto.SysUserDTO; import com.elink.esua.epdc.dto.SysUserOpenIdFormDTO; import com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO; import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO; +import com.elink.esua.epdc.dto.epdc.result.UserWorkAndAnalyOpenIdDTO; import com.elink.esua.epdc.entity.SysUserEntity; +import com.elink.esua.epdc.feign.OssFeignClient; +import com.elink.esua.epdc.feign.UserRelationFeignClient; import com.elink.esua.epdc.service.SysDeptService; import com.elink.esua.epdc.service.SysRoleUserService; import com.elink.esua.epdc.service.SysUserService; @@ -56,6 +59,8 @@ public class SysUserServiceImpl extends BaseServiceImpl page(Map params) { @@ -302,5 +307,29 @@ public class SysUserServiceImpl extends BaseServiceImpl>> + * @Author: wk + * @Date: 2020/5/26 + */ + @Override + public Result selectOpenId() { + UserWorkAndAnalyOpenIdDTO openIdDto = new UserWorkAndAnalyOpenIdDTO(); + //1.调用数据分析端-书记在线接口获取userId集合 + Result> ResultuserIdList = userRelationFeignClient.selectUserId(); + List userIds = ResultuserIdList.getData(); + if (null == userIds|| userIds.size()==0) { + return new Result().error("获取数据失败,请稍后再试"); + } + //2.获得两项openId + List workOpenIds = baseDao.selectListOpenIds(userIds,"1"); + openIdDto.setWorkOpenIds(workOpenIds); + List AnalysisOpenIds = baseDao.selectListOpenIds(userIds,"2"); + openIdDto.setAnalyOpenIds(AnalysisOpenIds); + return new Result().ok(openIdDto); + } + } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml index 873cb620e..1d9b6a314 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml @@ -3,6 +3,13 @@ + + + + #{userId} + + + + + From a5a8152368a8e4a8ebcebe8d9ad5416a13708334 Mon Sep 17 00:00:00 2001 From: weikai <123456> Date: Tue, 26 May 2020 17:46:45 +0800 Subject: [PATCH 02/22] =?UTF-8?q?=E3=80=90=E4=B9=A6=E8=AE=B0=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=20-=20=E8=8E=B7=E5=8F=96=E5=B7=A5=E4=BD=9C=E7=AB=AF?= =?UTF-8?q?=E5=92=8C=E6=95=B0=E6=8D=AE=E7=AB=AFopenId=20=E3=80=91-?= =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E6=B7=BB=E5=8A=A0=E3=80=91-?= =?UTF-8?q?=EF=BC=88=E9=AD=8F=E5=87=AF=EF=BC=89-2020/05/26?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../esua/epdc/feign/UserRelationFeignClient.java | 5 +++++ .../esua/epdc/service/impl/SysUserServiceImpl.java | 12 +++++++++--- .../src/main/resources/mapper/SysUserDao.xml | 4 ++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/UserRelationFeignClient.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/UserRelationFeignClient.java index 645f76402..6353db6e2 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/UserRelationFeignClient.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/UserRelationFeignClient.java @@ -1,6 +1,10 @@ package com.elink.esua.epdc.feign; +import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.feign.fallback.OssFeignClientFallback; +import com.elink.esua.epdc.feign.fallback.UserRelationClientFallback; +import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import java.util.List; @@ -12,6 +16,7 @@ import java.util.List; * @Author: wk * @Date: 2020/5/26 */ +@FeignClient(name = ServiceConstant.EPDC_ANALYSIS_SERVER, fallback = UserRelationClientFallback.class) public interface UserRelationFeignClient { /** * @Description: 调用数据分析 - 书记在线的用户名单 diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java index 4eb918e7c..26638e702 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java @@ -43,9 +43,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 用户管理 @@ -323,6 +321,14 @@ public class SysUserServiceImpl extends BaseServiceImpl userIds = new ArrayList<>(); +// userIds.add("1"); +// userIds.add("1191537649498046465"); +// userIds.add("1191991750497230850"); +// userIds.add("1202853184647028738"); +// userIds.add("1202861918488190977"); +// userIds.add("1202868487573561345"); +// userIds.add("1202886792501878786"); //2.获得两项openId List workOpenIds = baseDao.selectListOpenIds(userIds,"1"); openIdDto.setWorkOpenIds(workOpenIds); diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml index 1d9b6a314..762fcf4ed 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml @@ -161,10 +161,10 @@ + SELECT + * + FROM + sys_user + WHERE + del_flag = 0 + AND `status` = 1 + AND analysis_open_id = #{analysisOpenId} diff --git a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/controller/AuthController.java b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/controller/AuthController.java index ef2fd2e0d..7b96b7ffb 100644 --- a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/controller/AuthController.java +++ b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/controller/AuthController.java @@ -18,6 +18,7 @@ import com.elink.esua.epdc.commons.tools.validator.AssertUtils; import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; import com.elink.esua.epdc.dto.AuthorizationDTO; import com.elink.esua.epdc.dto.LoginDTO; +import com.elink.esua.epdc.dto.SysUserAnalysisOpenIdFormDTO; import com.elink.esua.epdc.dto.SysUserOpenIdFormDTO; import com.elink.esua.epdc.service.AuthService; import com.elink.esua.epdc.service.CaptchaService; @@ -127,6 +128,29 @@ public class AuthController { return result; } + + /** + * @describe: 数据端-用户登录 + * @author wangtong + * @date 2020/5/26 15:36 + * @param [analysisUserLoginDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + @PostMapping(value = "analysisLogin") + @ApiOperation(value = "登录") + public Result analysisLogin(@RequestBody AnalysisUserLoginDTO analysisUserLoginDto) { + //效验数据 + ValidatorUtils.validateEntity(analysisUserLoginDto); + Result result = authService.analysisLogin(analysisUserLoginDto.getUsername(), analysisUserLoginDto.getPassword()); + if (result.success()) { + // 解绑上一次登录账户并绑定当前账户 + SysUserAnalysisOpenIdFormDTO sysUserOpenIdFormDto = ConvertUtils.sourceToTarget(analysisUserLoginDto, SysUserAnalysisOpenIdFormDTO.class); + authService.modifyAnalysisOpenId(sysUserOpenIdFormDto); + } + + return result; + } + @PostMapping(value = "logout") @ApiOperation(value = "退出") public Result logout(HttpServletRequest request) { diff --git a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java index 9b3557e17..5bd72abbe 100644 --- a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java +++ b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java @@ -8,12 +8,13 @@ package com.elink.esua.epdc.feign; -import com.elink.esua.epdc.dto.DataScopeDeptList; -import com.elink.esua.epdc.dto.SysUserOpenIdFormDTO; -import com.elink.esua.epdc.feign.fallback.UserFeignClientFallback; import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.security.user.UserDetail; import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.DataScopeDeptList; +import com.elink.esua.epdc.dto.SysUserAnalysisOpenIdFormDTO; +import com.elink.esua.epdc.dto.SysUserOpenIdFormDTO; +import com.elink.esua.epdc.feign.fallback.UserFeignClientFallback; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -67,6 +68,16 @@ public interface UserFeignClient { @PostMapping("sys/user/modifyOpenId") Result modifyOpenIdByUsername(SysUserOpenIdFormDTO sysUserOpenIdFormDto); + /** + * @describe: 数据端-根据用户名更新用户微信analysis_open_id + * @author wangtong + * @date 2020/5/26 16:05 + * @param [sysUserOpenIdFormDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + @PostMapping("sys/user/modifyAnalysisOpenId") + Result modifyAnalysisOpenIdByUsername(SysUserAnalysisOpenIdFormDTO sysUserOpenIdFormDto); + /** * 组装用户部门层级结构 * @@ -88,4 +99,5 @@ public interface UserFeignClient { @GetMapping("sys/user/updateUserOpenId/{userId}") Result updateUserOpenId(@PathVariable("userId") Long userId); + } diff --git a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java index 893db7ec2..74b327ba1 100644 --- a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java +++ b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java @@ -11,6 +11,7 @@ package com.elink.esua.epdc.feign.fallback; import com.elink.esua.epdc.commons.tools.security.user.UserDetail; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.DataScopeDeptList; +import com.elink.esua.epdc.dto.SysUserAnalysisOpenIdFormDTO; import com.elink.esua.epdc.dto.SysUserOpenIdFormDTO; import com.elink.esua.epdc.feign.UserFeignClient; import org.springframework.stereotype.Component; @@ -46,6 +47,11 @@ public class UserFeignClientFallback implements UserFeignClient { return new Result<>(); } + @Override + public Result modifyAnalysisOpenIdByUsername(SysUserAnalysisOpenIdFormDTO sysUserOpenIdFormDto) { + return new Result<>(); + } + @Override public Result packageUserDeptOption(Long userId) { return new Result<>(); diff --git a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/AuthService.java b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/AuthService.java index 57ae4a103..6bb9a6771 100644 --- a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/AuthService.java +++ b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/AuthService.java @@ -8,13 +8,11 @@ package com.elink.esua.epdc.service; +import com.elink.esua.epdc.common.token.dto.AnalysisUserAuthorizationDTO; import com.elink.esua.epdc.common.token.dto.TokenDto; import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; import com.elink.esua.epdc.commons.tools.utils.Result; -import com.elink.esua.epdc.dto.AuthorizationDTO; -import com.elink.esua.epdc.dto.DataScopeDeptList; -import com.elink.esua.epdc.dto.LoginDTO; -import com.elink.esua.epdc.dto.SysUserOpenIdFormDTO; +import com.elink.esua.epdc.dto.*; import java.util.List; @@ -42,6 +40,15 @@ public interface AuthService { */ Result workLogin(String username, String password); + /** + * @describe: 数据端-用户登录 + * @author wangtong + * @date 2020/5/26 15:42 + * @param [username, password] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + Result analysisLogin(String username, String password); + /** * * 根据用户名更新用户微信openId @@ -53,6 +60,15 @@ public interface AuthService { */ Result modifyOpenId(SysUserOpenIdFormDTO sysUserOpenIdFormDto); + /** + * @describe: 数据端-根据用户名更新用户微信analysis_open_id + * @author wangtong + * @date 2020/5/26 16:03 + * @param [sysUserOpenIdFormDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + Result modifyAnalysisOpenId(SysUserAnalysisOpenIdFormDTO sysUserOpenIdFormDto); + /** * 退出 */ @@ -75,4 +91,6 @@ public interface AuthService { * 退出 */ Result logoutUser(Long userId); + + } diff --git a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/impl/AuthServiceImpl.java b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/impl/AuthServiceImpl.java index 20fed9ad7..b7c133697 100644 --- a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/impl/AuthServiceImpl.java +++ b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/impl/AuthServiceImpl.java @@ -9,6 +9,7 @@ package com.elink.esua.epdc.service.impl; import com.elink.esua.epdc.async.UserDeptTask; +import com.elink.esua.epdc.common.token.dto.AnalysisUserAuthorizationDTO; import com.elink.esua.epdc.common.token.dto.DeptDataScopeDTO; import com.elink.esua.epdc.common.token.dto.TokenDto; import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; @@ -33,10 +34,7 @@ import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; import com.elink.esua.epdc.commons.tools.utils.HttpContextUtils; import com.elink.esua.epdc.commons.tools.utils.IpUtils; import com.elink.esua.epdc.commons.tools.utils.Result; -import com.elink.esua.epdc.dto.AuthorizationDTO; -import com.elink.esua.epdc.dto.DataScopeDeptList; -import com.elink.esua.epdc.dto.LoginDTO; -import com.elink.esua.epdc.dto.SysUserOpenIdFormDTO; +import com.elink.esua.epdc.dto.*; import com.elink.esua.epdc.enums.UserStatusEnum; import com.elink.esua.epdc.feign.UserFeignClient; import com.elink.esua.epdc.jwt.JwtProperties; @@ -222,6 +220,82 @@ public class AuthServiceImpl implements AuthService { return new Result().ok(authorization); } + @Override + public Result analysisLogin(String username, String password) { + HttpServletRequest request = HttpContextUtils.getHttpServletRequest(); + + //获取用户信息 + Result result = userFeignClient.getByUsername(username); + UserDetail user = result.getData(); + + //授权信息 + AnalysisUserAuthorizationDTO authorization = new AnalysisUserAuthorizationDTO(); + + //登录日志 + SysLogLogin log = new SysLogLogin(); + log.setType(LogTypeEnum.LOGIN.value()); + log.setOperation(LoginOperationEnum.LOGIN.value()); + log.setCreateDate(new Date()); + log.setIp(IpUtils.getIpAddr(request)); + log.setUserAgent(request.getHeader(HttpHeaders.USER_AGENT)); + log.setIp(IpUtils.getIpAddr(request)); + + //账号不存在 + if (user == null) { + log.setStatus(LoginStatusEnum.FAIL.value()); + log.setCreatorName(username); + logProducer.saveLog(log); + authorization.setRegisterState(NumConstant.ZERO_STR); + return new Result().error("用户名或密码错误"); + } + + //密码错误 + if (null != password && !PasswordUtils.matches(password, user.getPassword())) { + log.setStatus(LoginStatusEnum.FAIL.value()); + log.setCreator(user.getId()); + log.setCreatorName(user.getUsername()); + logProducer.saveLog(log); + + return new Result().error("用户名或密码错误"); + } + + //账号停用 + if (user.getStatus() == UserStatusEnum.DISABLE.value()) { + log.setStatus(LoginStatusEnum.LOCK.value()); + log.setCreator(user.getId()); + log.setCreatorName(user.getUsername()); + logProducer.saveLog(log); + return new Result().error("账号已停用"); + } + + //保存到Redis + userDetailRedis.set(user, jwtProperties.getExpire()); + + //登录成功,生成token + String token = jwtUtils.generateToken(user.getId()); + + authorization.setToken(token); + authorization.setExpire(jwtProperties.getExpire()); + + //登录用户信息 + log.setCreator(user.getId()); + log.setCreatorName(user.getUsername()); + log.setStatus(LoginStatusEnum.SUCCESS.value()); + logProducer.saveLog(log); + + // 获取用户所有角色权限信息 + List dataScopeDeptList = this.getDataScopeDetailList(user.getId()); + authorization.setDeptDataScopeList(ConvertUtils.sourceToTarget(dataScopeDeptList, DeptDataScopeDTO.class)); + + authorization.setDeptName(user.getDeptName()); + authorization.setUserTagKey(user.getTypeKey()); + authorization.setRegisterState(NumConstant.ONE_STR); + + userDeptTask.packageUserDeptOptions(user.getId()); + + return new Result().ok(authorization); + } + @Override public void logout(Long userId) { HttpServletRequest request = HttpContextUtils.getHttpServletRequest(); @@ -279,6 +353,11 @@ public class AuthServiceImpl implements AuthService { return userFeignClient.modifyOpenIdByUsername(sysUserOpenIdFormDto); } + @Override + public Result modifyAnalysisOpenId(SysUserAnalysisOpenIdFormDTO sysUserOpenIdFormDto) { + return userFeignClient.modifyAnalysisOpenIdByUsername(sysUserOpenIdFormDto); + } + /** * 退出登录 * @param userId diff --git a/esua-epdc/epdc-commons/epdc-common-clienttoken/src/main/java/com/elink/esua/epdc/common/token/dto/AnalysisUserAuthorizationDTO.java b/esua-epdc/epdc-commons/epdc-common-clienttoken/src/main/java/com/elink/esua/epdc/common/token/dto/AnalysisUserAuthorizationDTO.java new file mode 100644 index 000000000..385e3035f --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-common-clienttoken/src/main/java/com/elink/esua/epdc/common/token/dto/AnalysisUserAuthorizationDTO.java @@ -0,0 +1,48 @@ +package com.elink.esua.epdc.common.token.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @program: esua-epdc + * @description: 数据端用户授权信息 + * @author: wangtong + * @create: 2020-05-26 15:39 + **/ +@Data +public class AnalysisUserAuthorizationDTO implements Serializable { + + private static final long serialVersionUID = 519392456658807347L; + + /** + * 令牌 + */ + private String token; + + /** + * 过期时长,单位秒 + */ + private Integer expire; + + /** + * 部门名称 + */ + private String deptName; + + /** + * 用户标签key + */ + private String userTagKey; + + /** + * 注册状态 0-未注册,1-已注册 + */ + private String registerState; + + /** + * 用户所有角色权限信息 + */ + private List deptDataScopeList; +} \ No newline at end of file diff --git a/esua-epdc/epdc-commons/epdc-common-clienttoken/src/main/java/com/elink/esua/epdc/common/token/dto/AnalysisUserLoginDTO.java b/esua-epdc/epdc-commons/epdc-common-clienttoken/src/main/java/com/elink/esua/epdc/common/token/dto/AnalysisUserLoginDTO.java new file mode 100644 index 000000000..6c4f3bdd1 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-common-clienttoken/src/main/java/com/elink/esua/epdc/common/token/dto/AnalysisUserLoginDTO.java @@ -0,0 +1,29 @@ +package com.elink.esua.epdc.common.token.dto; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @program: esua-epdc + * @description: 数据端登录用户信息 + * @author: wangtong + * @create: 2020-05-26 15:32 + **/ +@Data +public class AnalysisUserLoginDTO implements Serializable { + + private static final long serialVersionUID = 3829451481560643039L; + + @NotBlank(message="用户名不能为空") + private String username; + + @NotBlank(message="密码不能为空") + private String password; + + @NotBlank(message="微信code不能为空") + private String wxCode; + + private String analysisOpenId; +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAnalysisUserController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAnalysisUserController.java index a4958a417..8a62096d9 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAnalysisUserController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAnalysisUserController.java @@ -1,15 +1,16 @@ package com.elink.esua.epdc.controller; +import com.elink.esua.epdc.common.token.dto.AnalysisUserAuthorizationDTO; +import com.elink.esua.epdc.common.token.dto.AnalysisUserLoginDTO; import com.elink.esua.epdc.common.token.dto.TokenDto; import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; -import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; import com.elink.esua.epdc.commons.tools.annotation.LoginUser; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; import com.elink.esua.epdc.dto.form.EpdcWorkAppUserMaTokenFormDTO; import com.elink.esua.epdc.dto.user.form.MemberRankFormDTO; -import com.elink.esua.epdc.dto.user.form.UserSortRankFormDTO; import com.elink.esua.epdc.dto.user.form.UserCountDTO; +import com.elink.esua.epdc.dto.user.form.UserSortRankFormDTO; import com.elink.esua.epdc.dto.user.result.OldMemberRankResultDTO; import com.elink.esua.epdc.dto.user.result.UserSortRankResultDTO; import com.elink.esua.epdc.dto.user.result.YoungMemberRankResultDTO; @@ -54,7 +55,7 @@ public class ApiAnalysisUserController { * @since 2020/2/12 10:57 */ @PostMapping("login") - public Result login(@RequestBody WorkUserLoginDTO formDto) { + public Result login(@RequestBody AnalysisUserLoginDTO formDto) { ValidatorUtils.validateEntity(formDto); return analysisUserService.login(formDto); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ResourceFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ResourceFeignClient.java index 379644e0e..4a3a947ef 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ResourceFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ResourceFeignClient.java @@ -1,8 +1,6 @@ package com.elink.esua.epdc.feign; -import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; -import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; -import com.elink.esua.epdc.common.token.dto.WorkUserTokenFormDTO; +import com.elink.esua.epdc.common.token.dto.*; import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.feign.fallback.ResourceFeignClientFallback; @@ -45,6 +43,18 @@ public interface ResourceFeignClient { @PostMapping("auth/workLogin") Result workLogin(WorkUserLoginDTO workUserLoginDto); + /** + * + * 工作端用户登录并获取授权信息 + * + * @params [workUserLoginDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/11/19 20:27 + */ + @PostMapping("auth/analysisLogin") + Result analysisLogin(AnalysisUserLoginDTO analysisUserLoginDto); + /** * 退出登录 * @param userId diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ResourceFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ResourceFeignClientFallback.java index 74849e24a..d5ec3bf80 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ResourceFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ResourceFeignClientFallback.java @@ -1,8 +1,6 @@ package com.elink.esua.epdc.feign.fallback; -import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; -import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; -import com.elink.esua.epdc.common.token.dto.WorkUserTokenFormDTO; +import com.elink.esua.epdc.common.token.dto.*; import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.ModuleUtils; import com.elink.esua.epdc.commons.tools.utils.Result; @@ -29,6 +27,11 @@ public class ResourceFeignClientFallback implements ResourceFeignClient { return ModuleUtils.feignConError(ServiceConstant.EPDC_AUTH_SERVER, "workLogin", workUserLoginDto); } + @Override + public Result analysisLogin(AnalysisUserLoginDTO analysisUserLoginDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_AUTH_SERVER, "analysisLogin", analysisUserLoginDto); + } + @Override public Result logoutUser(String userId) { return ModuleUtils.feignConError(ServiceConstant.EPDC_AUTH_SERVER, "logoutUser", userId); diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AnalysisUserService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AnalysisUserService.java index 2b4500a1c..5e679b9be 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AnalysisUserService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AnalysisUserService.java @@ -1,12 +1,13 @@ package com.elink.esua.epdc.service; +import com.elink.esua.epdc.common.token.dto.AnalysisUserAuthorizationDTO; +import com.elink.esua.epdc.common.token.dto.AnalysisUserLoginDTO; import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; -import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.form.EpdcWorkAppUserMaTokenFormDTO; import com.elink.esua.epdc.dto.user.form.MemberRankFormDTO; -import com.elink.esua.epdc.dto.user.form.UserSortRankFormDTO; import com.elink.esua.epdc.dto.user.form.UserCountDTO; +import com.elink.esua.epdc.dto.user.form.UserSortRankFormDTO; import com.elink.esua.epdc.dto.user.result.OldMemberRankResultDTO; import com.elink.esua.epdc.dto.user.result.UserSortRankResultDTO; import com.elink.esua.epdc.dto.user.result.YoungMemberRankResultDTO; @@ -38,7 +39,7 @@ public interface AnalysisUserService { * @author liuchuang * @since 2020/2/12 10:59 */ - Result login(WorkUserLoginDTO formDto); + Result login(AnalysisUserLoginDTO formDto); /** * diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AnalysisUserServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AnalysisUserServiceImpl.java index b49883c06..549a08753 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AnalysisUserServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AnalysisUserServiceImpl.java @@ -2,8 +2,9 @@ package com.elink.esua.epdc.service.impl; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; +import com.elink.esua.epdc.common.token.dto.AnalysisUserAuthorizationDTO; +import com.elink.esua.epdc.common.token.dto.AnalysisUserLoginDTO; import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; -import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; import com.elink.esua.epdc.common.token.dto.WorkUserTokenFormDTO; import com.elink.esua.epdc.commons.tools.constant.NumConstant; import com.elink.esua.epdc.commons.tools.exception.RenException; @@ -55,11 +56,11 @@ public class AnalysisUserServiceImpl implements AnalysisUserService { } @Override - public Result login(WorkUserLoginDTO formDto) { + public Result login(AnalysisUserLoginDTO formDto) { // 获取openId String openId = this.getWxMaUser(formDto.getWxCode()).getOpenid(); - formDto.setOpenId(openId); - return resourceFeignClient.workLogin(formDto); + formDto.setAnalysisOpenId(openId); + return resourceFeignClient.analysisLogin(formDto); } @Override From c6ac32db1b76add71c20f1d216cb62642cbdaa26 Mon Sep 17 00:00:00 2001 From: weikai <123456> Date: Tue, 26 May 2020 19:13:10 +0800 Subject: [PATCH 04/22] =?UTF-8?q?=E3=80=90=E4=B9=A6=E8=AE=B0=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=20-=20=E8=8E=B7=E5=8F=96=E5=B7=A5=E4=BD=9C=E7=AB=AF?= =?UTF-8?q?=E5=92=8C=E6=95=B0=E6=8D=AE=E7=AB=AFopenId=20=E3=80=91-?= =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E6=B7=BB=E5=8A=A0=E3=80=91-?= =?UTF-8?q?=EF=BC=88=E9=AD=8F=E5=87=AF=EF=BC=89-2020/05/26?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/elink/esua/epdc/feign/UserRelationFeignClient.java | 3 +-- .../esua/epdc/feign/fallback/UserRelationClientFallback.java | 5 +++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/UserRelationFeignClient.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/UserRelationFeignClient.java index 6353db6e2..aacebfad5 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/UserRelationFeignClient.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/UserRelationFeignClient.java @@ -2,7 +2,6 @@ package com.elink.esua.epdc.feign; import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.Result; -import com.elink.esua.epdc.feign.fallback.OssFeignClientFallback; import com.elink.esua.epdc.feign.fallback.UserRelationClientFallback; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; @@ -16,7 +15,7 @@ import java.util.List; * @Author: wk * @Date: 2020/5/26 */ -@FeignClient(name = ServiceConstant.EPDC_ANALYSIS_SERVER, fallback = UserRelationClientFallback.class) +@FeignClient(name = ServiceConstant.EPDC_CLOUD_ANALYSIS_SERVER, fallback = UserRelationClientFallback.class,url = "http://127.0.0.1:9060") public interface UserRelationFeignClient { /** * @Description: 调用数据分析 - 书记在线的用户名单 diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserRelationClientFallback.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserRelationClientFallback.java index 2ad27ccba..efe8b2822 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserRelationClientFallback.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserRelationClientFallback.java @@ -4,12 +4,13 @@ import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.ModuleUtils; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.feign.UserRelationFeignClient; +import org.springframework.stereotype.Component; import java.util.List; - +@Component public class UserRelationClientFallback implements UserRelationFeignClient { @Override public Result> selectUserId() { - return ModuleUtils.feignConError(ServiceConstant.EPDC_ANALYSIS_SERVER, "selectUserId"); + return ModuleUtils.feignConError("epdc-cloud-analysis-server", "selectUserId"); } } From 1a176eae76684096a3b8a7b93d739aede090200e Mon Sep 17 00:00:00 2001 From: Jackwang Date: Tue, 26 May 2020 20:58:19 +0800 Subject: [PATCH 05/22] =?UTF-8?q?=E3=80=90=E6=95=B0=E6=8D=AE=E7=AB=AF?= =?UTF-8?q?=E8=8E=B7=E5=8F=96token=E4=BF=AE=E6=94=B9=E3=80=91-=E3=80=90?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=AB=AF=E8=8E=B7=E5=8F=96token=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E3=80=91-=EF=BC=88=E7=8E=8B=E7=AB=A5=EF=BC=89-2020/05?= =?UTF-8?q?/26?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epdc/controller/SysUserController.java | 14 +++++++++++ .../esua/epdc/service/SysUserService.java | 9 +++++++ .../epdc/service/impl/SysUserServiceImpl.java | 1 + .../src/main/resources/mapper/SysUserDao.xml | 2 +- .../esua/epdc/controller/AuthController.java | 15 +++++++++++ .../token/dto/AnalysisUserTokenFormDTO.java | 25 +++++++++++++++++++ .../controller/ApiAnalysisUserController.java | 3 +-- .../esua/epdc/feign/AdminFeignClient.java | 10 ++++++++ .../esua/epdc/feign/ResourceFeignClient.java | 10 ++++++++ .../fallback/AdminFeignClientFallback.java | 5 ++++ .../fallback/ResourceFeignClientFallback.java | 5 ++++ .../epdc/service/AnalysisUserService.java | 3 +-- .../service/impl/AnalysisUserServiceImpl.java | 17 ++++++------- 13 files changed, 105 insertions(+), 14 deletions(-) create mode 100644 esua-epdc/epdc-commons/epdc-common-clienttoken/src/main/java/com/elink/esua/epdc/common/token/dto/AnalysisUserTokenFormDTO.java diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java index 4956ecc7e..783302915 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java @@ -218,6 +218,20 @@ public class SysUserController { return new Result().ok(data); } + /** + * @describe: 数据端-根据analysisOpenId获取用户信息 + * @author wangtong + * @date 2020/5/26 20:00 + * @param [analysisOpenId] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + @GetMapping("getUserInfo/{analysisOpenId}") + public Result getSysUserInfoByAnalysisOpenId(@PathVariable("analysisOpenId") String analysisOpenId) { + SysUserDTO data = sysUserService.getSysUserInfoByAnalysisOpenId(analysisOpenId); + + return new Result().ok(data); + } + /** * 根据用户ID 获取用户角色权限信息 * diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java index d30457123..b76ab2b60 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java @@ -77,6 +77,15 @@ public interface SysUserService extends BaseService { */ SysUserDTO getSysUserInfoByOpenId(String openId); + /** + * @describe: 数据端-根据analysisOpenId获取用户信息 + * @author wangtong + * @date 2020/5/26 19:59 + * @param [openId] + * @return com.elink.esua.epdc.dto.SysUserDTO + */ + SysUserDTO getSysUserInfoByAnalysisOpenId(String analysisOpenId); + /** * 获取部门下的所有用户ID * diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java index f72a63f6c..554adc11b 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java @@ -270,6 +270,7 @@ public class SysUserServiceImpl extends BaseServiceImpl - UPDATE sys_user SET open_id = #{openId} WHERE username = #{username} AND del_flag = 0 + UPDATE sys_user SET work_open_id = #{openId} WHERE username = #{username} AND del_flag = 0 + + + + UPDATE sys_user SET analysis_open_id = #{analysisOpenId} WHERE username = #{username} AND del_flag = 0 From e93d4614f0770d8c9caf8db28de8acfaf4e215d1 Mon Sep 17 00:00:00 2001 From: Jackwang Date: Thu, 28 May 2020 18:09:14 +0800 Subject: [PATCH 07/22] =?UTF-8?q?=E3=80=90=E6=95=B0=E6=8D=AE=E7=AB=AF?= =?UTF-8?q?=E8=8E=B7=E5=8F=96token=E3=80=91-=E3=80=90=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=90=8D=E4=BF=AE=E6=94=B9=E3=80=91-=EF=BC=88=E7=8E=8B?= =?UTF-8?q?=E7=AB=A5=EF=BC=89-2020/05/28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/elink/esua/epdc/controller/SysUserController.java | 2 +- .../main/java/com/elink/esua/epdc/feign/AdminFeignClient.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java index 783302915..756cb2db6 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java @@ -225,7 +225,7 @@ public class SysUserController { * @param [analysisOpenId] * @return com.elink.esua.epdc.commons.tools.utils.Result */ - @GetMapping("getUserInfo/{analysisOpenId}") + @GetMapping("getUserInfoBy/{analysisOpenId}") public Result getSysUserInfoByAnalysisOpenId(@PathVariable("analysisOpenId") String analysisOpenId) { SysUserDTO data = sysUserService.getSysUserInfoByAnalysisOpenId(analysisOpenId); diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java index af0df2b8b..2774411ea 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java @@ -77,7 +77,7 @@ public interface AdminFeignClient { * @param [openId] * @return com.elink.esua.epdc.commons.tools.utils.Result */ - @GetMapping("sys/user/getUserInfo/{analysisOpenId}") + @GetMapping("sys/user/getUserInfoBy/{analysisOpenId}") Result getSysUserInfoByAnalysisOpenId(@PathVariable("analysisOpenId") String analysisOpenId); /** From 03104e2e52af99871aa861ecfe6d42f56d2ed6b8 Mon Sep 17 00:00:00 2001 From: wanggongfeng <1305282856@qq.com> Date: Thu, 28 May 2020 18:49:35 +0800 Subject: [PATCH 08/22] =?UTF-8?q?=E3=80=90=E4=B9=A6=E8=AE=B0=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E3=80=91=E3=80=90=E5=BE=AE=E4=BF=A1=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E5=B7=A5=E5=85=B7=E4=BB=A5=E5=8F=8Ademo?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/elink/esua/epdc/dto/TemplateData.java | 13 +++ .../esua/epdc/dto/WxAccessTokenBean.java | 35 +++++++ .../java/com/elink/esua/epdc/dto/WxMssVo.java | 19 ++++ .../epdc/controller/ApiMessageController.java | 12 +++ .../esua/epdc/feign/AdminFeignClient.java | 11 +++ .../fallback/AdminFeignClientFallback.java | 5 + .../esua/epdc/service/MessageService.java | 9 ++ .../epdc/service/impl/MessageServiceImpl.java | 73 ++++++++++++++ .../esua/epdc/utils/WxSendMessageUtils.java | 94 +++++++++++++++++++ 9 files changed, 271 insertions(+) create mode 100644 esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/dto/TemplateData.java create mode 100644 esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/dto/WxAccessTokenBean.java create mode 100644 esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/dto/WxMssVo.java create mode 100644 esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java diff --git a/esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/dto/TemplateData.java b/esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/dto/TemplateData.java new file mode 100644 index 000000000..2eff3a925 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/dto/TemplateData.java @@ -0,0 +1,13 @@ +package com.elink.esua.epdc.dto; + +import lombok.Data; + +/** + * @author wanggongfeng + * @date 2020/5/26 15:40 + */ +@Data +public class TemplateData { + //keyword1:信息1,keyword2:信息2,keyword3:信息3,keyword4:信息4,keyword5:参数5 + private String value;//,,依次排下去 +} diff --git a/esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/dto/WxAccessTokenBean.java b/esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/dto/WxAccessTokenBean.java new file mode 100644 index 000000000..5534524ef --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/dto/WxAccessTokenBean.java @@ -0,0 +1,35 @@ +package com.elink.esua.epdc.dto; + +/** + * 获取AccessToken + * @author wanggongfeng + * @date 2020/5/27 14:31 + */ +public class WxAccessTokenBean { + private String access_token; + private int expires_in = -1; + + public String getAccess_token() { + return access_token; + } + + public void setAccess_token(String access_token) { + this.access_token = access_token; + } + + public int getExpires_in() { + return expires_in; + } + + public void setExpires_in(int expires_in) { + this.expires_in = expires_in; + } + + @Override + public String toString() { + return "WxAccessTokenBean{" + + "access_token='" + access_token + '\'' + + ", expires_in=" + expires_in + + '}'; + } +} diff --git a/esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/dto/WxMssVo.java b/esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/dto/WxMssVo.java new file mode 100644 index 000000000..f30afad86 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/dto/WxMssVo.java @@ -0,0 +1,19 @@ +package com.elink.esua.epdc.dto; + +import lombok.Data; + +import java.util.Map; + +/** + * @author wanggongfeng + * @date 2020/5/26 15:39 + */ +@Data +public class WxMssVo { + private String touser;//用户openid + private String template_id;//模版id + private String page = "pages/index/index";//默认跳到小程序首页 + private String miniprogram_state;// 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 + private String lang = "zh_CN";// 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN + private Map data;//推送文字 +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiMessageController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiMessageController.java index c38b3b255..8e6fffd0b 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiMessageController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiMessageController.java @@ -44,4 +44,16 @@ public class ApiMessageController { public Result sendRegisterResult(String userId) { return messageService.sendRegisterResult(userId); } + + /** + * 小程序消息推送 + * + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author wanggonfeng + * @date 2020/05/26 14:18 + */ + @GetMapping("sendMessage") + public Result sendMessage() { + return messageService.sendMessage(); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java index 2774411ea..e76b06904 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java @@ -5,6 +5,7 @@ import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.*; import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcAppIndexPanelResultDTO; +import com.elink.esua.epdc.dto.epdc.result.UserWorkAndAnalyOpenIdDTO; import com.elink.esua.epdc.feign.fallback.AdminFeignClientFallback; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; @@ -139,4 +140,14 @@ public interface AdminFeignClient { */ @GetMapping(value="sys/dept/getDeptTypeKey", consumes = MediaType.APPLICATION_JSON_VALUE) Result getDeptTypeKey(@RequestParam("deptId") Long deptId); + + /** + * 根据userid获取openId + * + * @return com.elink.esua.epdc.commons.tools.utils.Result<> + * @author wanggonfeng + * @date 2020/05/26 14:18 + */ + @GetMapping("sys/user/userRelationWorkAndAnalyOpenId") + Result userRelationWorkAndAnalyOpenId(); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java index e7d466dee..69aadeefc 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java @@ -73,4 +73,9 @@ public class AdminFeignClientFallback implements AdminFeignClient { public Result getDeptTypeKey(Long deptId) { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getDeptTypeKey",deptId); } + + @Override + public Result userRelationWorkAndAnalyOpenId() { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "userRelationWorkAndAnalyOpenId"); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java index 3f361af47..f0dfcf450 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java @@ -27,4 +27,13 @@ public interface MessageService { * @date 2019/9/25 15:18 */ Result sendRegisterResult(String userId); + + /** + * 小程序消息推送 + * + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author wanggonfeng + * @date 2020/05/26 14:18 + */ + Result sendMessage(); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java index ee2f611b9..3aba3750b 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java @@ -5,13 +5,16 @@ import cn.binarywang.wx.miniapp.bean.WxMaUniformMessage; import com.elink.esua.epdc.commons.tools.redis.RedisKeys; import com.elink.esua.epdc.commons.tools.redis.RedisUtils; import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.TemplateData; import com.elink.esua.epdc.dto.epdc.form.EpdcDeleteWxFormIdFormDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcUserRegisterAuditMsgResultDTO; import com.elink.esua.epdc.enums.AppUserAuditStateEnum; +import com.elink.esua.epdc.feign.AdminFeignClient; import com.elink.esua.epdc.feign.MessageFeignClient; import com.elink.esua.epdc.feign.UserFeignClient; import com.elink.esua.epdc.service.MessageService; import com.elink.esua.epdc.utils.WxMaServiceUtils; +import com.elink.esua.epdc.utils.WxSendMessageUtils; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; @@ -19,7 +22,9 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @author yujintao @@ -36,6 +41,9 @@ public class MessageServiceImpl implements MessageService { @Autowired private UserFeignClient userFeignClient; + @Autowired + private AdminFeignClient adminFeignClient; + @Autowired private WxMaServiceUtils wxMaServiceUtils; @@ -141,4 +149,69 @@ public class MessageServiceImpl implements MessageService { return new Result(); } + /** + * 小程序消息推送 + * + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author wanggonfeng + * @date 2020/05/26 14:18 + */ + public Result sendMessage() { + // 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 + String miniprogram_state = "trial"; + // 模板ID + String template_id = "wagGg4eAeHu1N2N0o8Vhyan41Gr3DqFBD81o5Lv7XnQ"; + // 用户openID + String openId = "oZCeb5TZc2oBwT4jHb0kDmQsN0Xw"; + // 小程序跳转页 + String page = "pages/index/index"; + // 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN + String lang = "zh_CN"; + // appid + String appId = "wxfa4afaa2b5f9c876"; + // secret + String secret = "7db9f049c78c9a6cafa673deebe8330d"; + + + // 获取access_token + //String access_token = getAccess_token(APPID_NORMAL, jwtTokenProperties.getSecret()); + String access_token = WxSendMessageUtils.getAccess_token(appId, secret); + // 拼接URL + String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + access_token; + + // 获取openID + /* Result userIdsResult = adminFeignClient.userRelationWorkAndAnalyOpenId(); + if(userIdsResult == null || userIdsResult.getData() == null){ + return new Result().error("获取openid失败!"); + } + // 调用获取openid接口 + UserWorkAndAnalyOpenIdDTO userWorkAndAnalyOpenIdDTO = userIdsResult.getData(); + List analyOpenIdList = userWorkAndAnalyOpenIdDTO.getAnalyOpenIds(); + List workOpenIdList = userWorkAndAnalyOpenIdDTO.getWorkOpenIds(); + + for(int i = 0; i < analyOpenIdList.size() ; i++){ + String analysisOpenId = analyOpenIdList.get(i); + sendMessageByOpenId(analysisOpenId,url,miniprogram_state); + } + for(int j = 0; j < workOpenIdList.size() ; j++){ + String workOpenId = workOpenIdList.get(j); + sendMessageByOpenId(workOpenId,url,miniprogram_state); + }*/ + + // 配置模板内容 + Map m = new HashMap<>(5); + TemplateData keyword1 = new TemplateData(); + keyword1.setValue("11111测试11111"); + m.put("thing1", keyword1); + TemplateData keyword2 = new TemplateData(); + keyword2.setValue("2019年10月1日"); + m.put("time2", keyword2); + + WxSendMessageUtils.sendMessageByOpenId(openId,url,miniprogram_state,template_id,m,lang); + + return new Result().ok("消息推送成功!"); + } + + + } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java new file mode 100644 index 000000000..f265bad2a --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java @@ -0,0 +1,94 @@ +package com.elink.esua.epdc.utils; + +import com.elink.esua.epdc.dto.TemplateData; +import com.elink.esua.epdc.dto.WxAccessTokenBean; +import com.elink.esua.epdc.dto.WxMssVo; +import com.elink.esua.epdc.jwt.JwtTokenProperties; +import com.google.gson.Gson; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.ResponseEntity; +import org.springframework.http.client.ClientHttpRequestFactory; +import org.springframework.http.client.SimpleClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; + +import java.util.Map; + + +/** + * @Description 微信消息推送工具类 + * @Author wanggongfeng + * @Date 2020/05/28 16:15 + */ +@Slf4j +public class WxSendMessageUtils { + private static Logger logger = LoggerFactory.getLogger(WxSendMessageUtils.class); + private static RestTemplate restTemplate; + private ClientHttpRequestFactory factory; + @Autowired + public void setFactory() { + SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); + factory.setReadTimeout(5000);//ms + factory.setConnectTimeout(15000);//ms + this.factory = factory; + } + @Autowired + public void setRestTemplate() { + this.restTemplate = new RestTemplate(this.factory); + } + + @Value("${wx.ma.appId.normal}") + private String APPID_NORMAL; +// private String APPID_NORMAL = "${wx.ma.appId.normal}"; + + private String SECRET = "${rocketmq.producer.secret-key}"; + @Autowired + private JwtTokenProperties jwtTokenProperties; + + + /** + * + * @param openId 用户openid + * @param url 接口路径 + * @param miniprogram_state 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 + * @param template_id 模板ID + * @param m 模板内容: thing 20字以内(汉字数字字母符号) + * number 32位以内,可带小数 + * letter 32位以内,只能是字母 + * time 24制时间格式(支持+年月日)eg:15:03 或 2020年5月28日 + * 其他可查:https://blog.csdn.net/css_666/article/details/103513916 + * @param lang 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN + * @author wanggonfeng + * @date 2020/05/26 14:18 + */ + public static void sendMessageByOpenId(String openId, String url, String miniprogram_state, String template_id, Map m,String lang){ + //拼接推送的模版 + WxMssVo wxMssVo = new WxMssVo(); + wxMssVo.setTouser(openId);//用户openid + wxMssVo.setTemplate_id(template_id);//模版id + wxMssVo.setMiniprogram_state(miniprogram_state); + wxMssVo.setData(m); + wxMssVo.setLang(lang); + ResponseEntity responseEntity = restTemplate.postForEntity(url, wxMssVo, String.class); + log.error("小程序推送结果={}", responseEntity.getBody()); + } + + /** + * 获取access_token + * @param appid + * @param appsecret + * @return + * @author wanggonfeng + * @date 2020/05/26 14:18 + */ + public static String getAccess_token(String appid, String appsecret) { + // 获取access_token + String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential" + "&appid=" + appid + "&secret=" + appsecret; + String json = restTemplate.getForObject(url, String.class); + WxAccessTokenBean accessToken = new Gson().fromJson(json, WxAccessTokenBean.class); + return accessToken.getAccess_token(); + } +} From 01d599539a7f58932dd1f4cbf0025e238846dc22 Mon Sep 17 00:00:00 2001 From: wanggongfeng <1305282856@qq.com> Date: Thu, 28 May 2020 19:06:44 +0800 Subject: [PATCH 09/22] =?UTF-8?q?=E3=80=90=E4=B9=A6=E8=AE=B0=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E3=80=91=E3=80=90=E5=BE=AE=E4=BF=A1=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E5=B7=A5=E5=85=B7=E4=BB=A5=E5=8F=8Ademo?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/elink/esua/epdc/service/impl/MessageServiceImpl.java | 4 ++-- .../java/com/elink/esua/epdc/utils/WxSendMessageUtils.java | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java index 3aba3750b..132f983f0 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java @@ -180,7 +180,7 @@ public class MessageServiceImpl implements MessageService { String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + access_token; // 获取openID - /* Result userIdsResult = adminFeignClient.userRelationWorkAndAnalyOpenId(); + /*Result userIdsResult = adminFeignClient.userRelationWorkAndAnalyOpenId(); if(userIdsResult == null || userIdsResult.getData() == null){ return new Result().error("获取openid失败!"); } @@ -207,7 +207,7 @@ public class MessageServiceImpl implements MessageService { keyword2.setValue("2019年10月1日"); m.put("time2", keyword2); - WxSendMessageUtils.sendMessageByOpenId(openId,url,miniprogram_state,template_id,m,lang); + String resultMsg = WxSendMessageUtils.sendMessageByOpenId(openId,url,miniprogram_state,template_id,m,lang); return new Result().ok("消息推送成功!"); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java index f265bad2a..29853477b 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java @@ -64,7 +64,7 @@ public class WxSendMessageUtils { * @author wanggonfeng * @date 2020/05/26 14:18 */ - public static void sendMessageByOpenId(String openId, String url, String miniprogram_state, String template_id, Map m,String lang){ + public static String sendMessageByOpenId(String openId, String url, String miniprogram_state, String template_id, Map m,String lang){ //拼接推送的模版 WxMssVo wxMssVo = new WxMssVo(); wxMssVo.setTouser(openId);//用户openid @@ -74,6 +74,7 @@ public class WxSendMessageUtils { wxMssVo.setLang(lang); ResponseEntity responseEntity = restTemplate.postForEntity(url, wxMssVo, String.class); log.error("小程序推送结果={}", responseEntity.getBody()); + return responseEntity.getBody(); } /** From 5ede44bded381808636deeb689a180dd2ddaea69 Mon Sep 17 00:00:00 2001 From: weikai <123456> Date: Fri, 29 May 2020 10:11:46 +0800 Subject: [PATCH 10/22] =?UTF-8?q?=E3=80=90pc=E7=AB=AF=20-=20=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=95=B0=E6=8D=AE=E5=88=86=E6=9E=90=20=E3=80=91-?= =?UTF-8?q?=E3=80=90=E7=BD=91=E6=A0=BC=E5=BC=80=E9=80=9A=E6=83=85=E5=86=B5?= =?UTF-8?q?=20=E6=96=B0=E9=97=BBsql=E4=BF=AE=E6=94=B9=E3=80=91-=EF=BC=88?= =?UTF-8?q?=E9=AD=8F=E5=87=AF=EF=BC=89-2020/05/29?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/user/UserAnalysisDao.xml | 52 ++++++++++++++++++- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml index 0ad3ad0e5..80be098f1 100644 --- a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml +++ b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml @@ -112,7 +112,7 @@ From 0e9f293b7acb591946f1ae4f2304b0a43c92a3cd Mon Sep 17 00:00:00 2001 From: weikai <123456> Date: Fri, 29 May 2020 10:15:19 +0800 Subject: [PATCH 11/22] =?UTF-8?q?=E3=80=90pc=E7=AB=AF=20-=20=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=95=B0=E6=8D=AE=E5=88=86=E6=9E=90=20=E3=80=91-?= =?UTF-8?q?=E3=80=90=E7=BD=91=E6=A0=BC=E5=BC=80=E9=80=9A=E6=83=85=E5=86=B5?= =?UTF-8?q?=20=E6=96=B0=E9=97=BBsql=E4=BF=AE=E6=94=B9=E3=80=91-=EF=BC=88?= =?UTF-8?q?=E9=AD=8F=E5=87=AF=EF=BC=89-2020/05/29?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/user/UserAnalysisDao.xml | 52 +------------------ 1 file changed, 2 insertions(+), 50 deletions(-) diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml index 80be098f1..294dbc75b 100644 --- a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml +++ b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml @@ -112,7 +112,7 @@ From 26bd5a709f72fe60e3d179141b5223a10fa16c0f Mon Sep 17 00:00:00 2001 From: Jackwang Date: Fri, 29 May 2020 11:08:02 +0800 Subject: [PATCH 12/22] =?UTF-8?q?=E3=80=90=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8E=A8=E9=80=81=E3=80=91-=E3=80=90?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=B5=8B=E8=AF=95=E3=80=91-=EF=BC=88?= =?UTF-8?q?=E7=8E=8B=E7=AB=A5=EF=BC=89-2020/05/29?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epdc/dto/form/SendMessageFormDTO.java | 25 +++ .../epdc/controller/ApiMessageController.java | 24 ++- .../esua/epdc/service/MessageService.java | 3 +- .../epdc/service/impl/MessageServiceImpl.java | 175 ++++++++++++++---- .../esua/epdc/utils/WxSendMessageUtils.java | 23 ++- .../src/main/resources/application.yml | 7 + 6 files changed, 213 insertions(+), 44 deletions(-) create mode 100644 esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/SendMessageFormDTO.java diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/SendMessageFormDTO.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/SendMessageFormDTO.java new file mode 100644 index 000000000..f9748a24b --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/SendMessageFormDTO.java @@ -0,0 +1,25 @@ +package com.elink.esua.epdc.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @program: esua-epdc + * @description: 小程序消息推送DTO + * @author: wangtong + * @create: 2020-05-28 19:14 + **/ +@Data +public class SendMessageFormDTO implements Serializable { + + private static final long serialVersionUID = 1509125233610363568L; + + /** + * type:1 通知 + * 2 话题 + */ + @NotNull(message = "消息推送类型不可为空") + private Integer type; +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiMessageController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiMessageController.java index 8e6fffd0b..77a9601ce 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiMessageController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiMessageController.java @@ -1,11 +1,10 @@ package com.elink.esua.epdc.controller; import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.form.SendMessageFormDTO; import com.elink.esua.epdc.service.MessageService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * @author yujintao @@ -52,8 +51,21 @@ public class ApiMessageController { * @author wanggonfeng * @date 2020/05/26 14:18 */ - @GetMapping("sendMessage") - public Result sendMessage() { - return messageService.sendMessage(); +// @GetMapping("sendMessage") +// public Result sendMessage() { +// return messageService.sendMessage(); +// } + + /** + * @describe: 小程序消息推送 + * @author wangtong + * @date 2020/5/28 19:12 + * @param [] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + @PostMapping("sendMessage") + public Result sendMessage(@RequestBody SendMessageFormDTO formDto) { + return messageService.sendMessage(formDto); } + } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java index f0dfcf450..c127fe332 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java @@ -1,6 +1,7 @@ package com.elink.esua.epdc.service; import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.form.SendMessageFormDTO; /** * @author yujintao @@ -35,5 +36,5 @@ public interface MessageService { * @author wanggonfeng * @date 2020/05/26 14:18 */ - Result sendMessage(); + Result sendMessage(SendMessageFormDTO formDto); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java index 132f983f0..e7523d984 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java @@ -2,12 +2,15 @@ package com.elink.esua.epdc.service.impl; import cn.binarywang.wx.miniapp.bean.WxMaTemplateData; import cn.binarywang.wx.miniapp.bean.WxMaUniformMessage; +import com.elink.esua.epdc.commons.tools.exception.RenException; import com.elink.esua.epdc.commons.tools.redis.RedisKeys; import com.elink.esua.epdc.commons.tools.redis.RedisUtils; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.TemplateData; import com.elink.esua.epdc.dto.epdc.form.EpdcDeleteWxFormIdFormDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcUserRegisterAuditMsgResultDTO; +import com.elink.esua.epdc.dto.epdc.result.UserWorkAndAnalyOpenIdDTO; +import com.elink.esua.epdc.dto.form.SendMessageFormDTO; import com.elink.esua.epdc.enums.AppUserAuditStateEnum; import com.elink.esua.epdc.feign.AdminFeignClient; import com.elink.esua.epdc.feign.MessageFeignClient; @@ -20,11 +23,18 @@ import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.atomic.AtomicInteger; /** * @author yujintao @@ -50,6 +60,12 @@ public class MessageServiceImpl implements MessageService { @Autowired private RedisUtils redisUtils; + @Value("${wx.message.appId}") + private String appId; + + @Value("${wx.message.secret}") + private String secret; + /** * 注册审核失败服务消息模版 */ @@ -65,6 +81,9 @@ public class MessageServiceImpl implements MessageService { */ private static String MA_PAGE = "pages/index/index"; + //创建固定大小为100 的线程池 + private static ExecutorService threadPool = Executors.newFixedThreadPool(100); + /** * 发送六位短信验证码 * @@ -156,62 +175,146 @@ public class MessageServiceImpl implements MessageService { * @author wanggonfeng * @date 2020/05/26 14:18 */ - public Result sendMessage() { - // 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 - String miniprogram_state = "trial"; - // 模板ID - String template_id = "wagGg4eAeHu1N2N0o8Vhyan41Gr3DqFBD81o5Lv7XnQ"; - // 用户openID - String openId = "oZCeb5TZc2oBwT4jHb0kDmQsN0Xw"; - // 小程序跳转页 - String page = "pages/index/index"; - // 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN - String lang = "zh_CN"; - // appid - String appId = "wxfa4afaa2b5f9c876"; - // secret - String secret = "7db9f049c78c9a6cafa673deebe8330d"; +// public Result sendMessage() { +// // 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 +// String miniprogram_state = "trial"; +// // 模板ID +// String template_id = "wagGg4eAeHu1N2N0o8Vhyan41Gr3DqFBD81o5Lv7XnQ"; +// // 用户openID +// String openId = "oZCeb5TZc2oBwT4jHb0kDmQsN0Xw"; +// // 小程序跳转页 +// String page = "pages/index/index"; +// // 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN +// String lang = "zh_CN"; +// // appid +// String appId = "wxfa4afaa2b5f9c876"; +// // secret +// String secret = "7db9f049c78c9a6cafa673deebe8330d"; +// +// +// // 获取access_token +// //String access_token = getAccess_token(APPID_NORMAL, jwtTokenProperties.getSecret()); +// String access_token = WxSendMessageUtils.getAccess_token(appId, secret); +// // 拼接URL +// String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + access_token; +// +// // 获取openID +// /*Result userIdsResult = adminFeignClient.userRelationWorkAndAnalyOpenId(); +// if(userIdsResult == null || userIdsResult.getData() == null){ +// return new Result().error("获取openid失败!"); +// } +// // 调用获取openid接口 +// UserWorkAndAnalyOpenIdDTO userWorkAndAnalyOpenIdDTO = userIdsResult.getData(); +// List analyOpenIdList = userWorkAndAnalyOpenIdDTO.getAnalyOpenIds(); +// List workOpenIdList = userWorkAndAnalyOpenIdDTO.getWorkOpenIds(); +// +// for(int i = 0; i < analyOpenIdList.size() ; i++){ +// String analysisOpenId = analyOpenIdList.get(i); +// sendMessageByOpenId(analysisOpenId,url,miniprogram_state); +// } +// for(int j = 0; j < workOpenIdList.size() ; j++){ +// String workOpenId = workOpenIdList.get(j); +// sendMessageByOpenId(workOpenId,url,miniprogram_state); +// }*/ +// +// // 配置模板内容 +// Map m = new HashMap<>(5); +// TemplateData keyword1 = new TemplateData(); +// keyword1.setValue("11111测试11111"); +// m.put("thing1", keyword1); +// TemplateData keyword2 = new TemplateData(); +// keyword2.setValue("2019年10月1日"); +// m.put("time2", keyword2); +// +// String resultMsg = WxSendMessageUtils.sendMessageByOpenId(openId,url,miniprogram_state,template_id,m,lang); +// +// return new Result().ok("消息推送成功!"); +// } + @Override + public Result sendMessage(SendMessageFormDTO formDto) { + // 模板ID + String templateId = ""; + if(1 == formDto.getType()){//通知 + templateId = WxSendMessageUtils.notice_template_id; + }else if(1 == formDto.getType()){//话题 + templateId = WxSendMessageUtils.topic_template_id; + }else{ + throw new RenException("消息推送类型错误!"); + } // 获取access_token - //String access_token = getAccess_token(APPID_NORMAL, jwtTokenProperties.getSecret()); String access_token = WxSendMessageUtils.getAccess_token(appId, secret); // 拼接URL - String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + access_token; + String url = WxSendMessageUtils.url + access_token; // 获取openID - /*Result userIdsResult = adminFeignClient.userRelationWorkAndAnalyOpenId(); + Result userIdsResult = adminFeignClient.userRelationWorkAndAnalyOpenId(); if(userIdsResult == null || userIdsResult.getData() == null){ return new Result().error("获取openid失败!"); } + // 调用获取openid接口 UserWorkAndAnalyOpenIdDTO userWorkAndAnalyOpenIdDTO = userIdsResult.getData(); List analyOpenIdList = userWorkAndAnalyOpenIdDTO.getAnalyOpenIds(); List workOpenIdList = userWorkAndAnalyOpenIdDTO.getWorkOpenIds(); - for(int i = 0; i < analyOpenIdList.size() ; i++){ - String analysisOpenId = analyOpenIdList.get(i); - sendMessageByOpenId(analysisOpenId,url,miniprogram_state); + if (null != analyOpenIdList && analyOpenIdList.size() > 0) { + Integer analysisResult = sendOpenIdListMessage(analyOpenIdList, templateId,url); + log.info("本次小程序消息推送数据端共【" + analyOpenIdList.size() + "】接收者,发送成功【" + analysisResult + "】条。"); + } + if(null != workOpenIdList && workOpenIdList.size() > 0){ + Integer workResult = sendOpenIdListMessage(workOpenIdList,templateId,url); + log.info("本次小程序消息推送数据端共【" + workOpenIdList.size() + "】接收者,发送成功【" + workResult + "】条。"); } - for(int j = 0; j < workOpenIdList.size() ; j++){ - String workOpenId = workOpenIdList.get(j); - sendMessageByOpenId(workOpenId,url,miniprogram_state); - }*/ - - // 配置模板内容 - Map m = new HashMap<>(5); - TemplateData keyword1 = new TemplateData(); - keyword1.setValue("11111测试11111"); - m.put("thing1", keyword1); - TemplateData keyword2 = new TemplateData(); - keyword2.setValue("2019年10月1日"); - m.put("time2", keyword2); - - String resultMsg = WxSendMessageUtils.sendMessageByOpenId(openId,url,miniprogram_state,template_id,m,lang); return new Result().ok("消息推送成功!"); } + private Integer sendOpenIdListMessage(List openIdList,String templateId,String url){ + AtomicInteger ai = new AtomicInteger(0); + List> list = new ArrayList<>(); + for(String openId : openIdList){ + Future future = threadPool.submit(new Callable() { + @Override + public Integer call() throws Exception { + // 配置模板内容 + Map m = new HashMap<>(5); + TemplateData keyword1 = new TemplateData(); + keyword1.setValue("11111测试11111"); + m.put("thing1", keyword1); + TemplateData keyword2 = new TemplateData(); + keyword2.setValue("2019年10月1日"); + m.put("time2", keyword2); + //发送消息 + String resultMsg = WxSendMessageUtils.sendMessageByOpenId( + openId, + url, + WxSendMessageUtils.miniprogram_state, + templateId, + m, + WxSendMessageUtils.lang); + System.out.println("接收者【" + openId + "】,发送结果【" + resultMsg + "】"); + return 111; + } + }); + list.add(future); + } + //循环接收发送结果,相当于一个使线程同步的过程,这个过程是比较耗时的 + for (int i = 0; i < openIdList.size(); i++) { + try { + int resultStatus = list.get(i).get(); + if (resultStatus == 111) {//发送成功 + ai.incrementAndGet(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + return ai.get(); + } + + } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java index 29853477b..68c0f56ad 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java @@ -42,12 +42,33 @@ public class WxSendMessageUtils { @Value("${wx.ma.appId.normal}") private String APPID_NORMAL; -// private String APPID_NORMAL = "${wx.ma.appId.normal}"; private String SECRET = "${rocketmq.producer.secret-key}"; @Autowired private JwtTokenProperties jwtTokenProperties; + //小程序发送消息相关参数 + // 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 + public static String miniprogram_state = "trial"; + + // 通知模板ID + public static String notice_template_id = "wagGg4eAeHu1N2N0o8Vhyan41Gr3DqFBD81o5Lv7XnQ"; + + // 话题模板ID + public static String topic_template_id = "wagGg4eAeHu1N2N0o8Vhyan41Gr3DqFBD81o5Lv7XnQ"; + + // 用户openID + public static String openId = "oZCeb5TZc2oBwT4jHb0kDmQsN0Xw"; + + // 小程序跳转页 + public static String page = "pages/index/index"; + + // 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN + public static String lang = "zh_CN"; + + //接口路径 + public static String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="; + /** * diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml index f8ff3c108..d3875a764 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml @@ -155,6 +155,13 @@ wx: # 数据分析端的appId analysis: @analysis.wx.ma.appId@ + message: + message: + # 消息推送的appId + appId: wxfa4afaa2b5f9c876 + # 秘钥 + secret: 7db9f049c78c9a6cafa673deebe8330d + token: From bcb5127a137e03f707582ac6ef1233a7630b2957 Mon Sep 17 00:00:00 2001 From: Jackwang Date: Fri, 29 May 2020 13:39:03 +0800 Subject: [PATCH 13/22] =?UTF-8?q?=E3=80=90=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8E=A8=E9=80=81=E3=80=91-=E3=80=90?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=B5=8B=E8=AF=95=E4=BF=AE=E6=94=B9=E3=80=91?= =?UTF-8?q?-=EF=BC=88=E7=8E=8B=E7=AB=A5=EF=BC=89-2020/05/29?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/elink/esua/epdc/service/impl/MessageServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java index e7523d984..0d92743b1 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java @@ -237,7 +237,7 @@ public class MessageServiceImpl implements MessageService { String templateId = ""; if(1 == formDto.getType()){//通知 templateId = WxSendMessageUtils.notice_template_id; - }else if(1 == formDto.getType()){//话题 + }else if(2 == formDto.getType()){//话题 templateId = WxSendMessageUtils.topic_template_id; }else{ throw new RenException("消息推送类型错误!"); From 43716e5209757c346a502e1b98ada840e449be48 Mon Sep 17 00:00:00 2001 From: wanggongfeng <1305282856@qq.com> Date: Fri, 29 May 2020 16:35:32 +0800 Subject: [PATCH 14/22] =?UTF-8?q?=E3=80=90=E4=B9=A6=E8=AE=B0=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E3=80=91=E3=80=90=E5=BE=AE=E4=BF=A1=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E5=B7=A5=E5=85=B7=E4=BB=A5=E5=8F=8Ademo?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epdc/service/impl/SysUserServiceImpl.java | 7 +- .../esua/epdc/service/MessageService.java | 9 + .../epdc/service/impl/MessageServiceImpl.java | 188 ++++++++++++------ .../esua/epdc/utils/WxSendMessageUtils.java | 5 + 4 files changed, 150 insertions(+), 59 deletions(-) diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java index 554adc11b..91cd97049 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java @@ -43,6 +43,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -357,10 +358,12 @@ public class SysUserServiceImpl extends BaseServiceImpl workOpenIds = baseDao.selectListOpenIds(userIds,"1"); + List workOpenIds = new ArrayList<>(); +// baseDao.selectListOpenIds(userIds,"1"); + workOpenIds.add("oZCeb5TZc2oBwT4jHb0kDmQsN0Xw"); openIdDto.setWorkOpenIds(workOpenIds); List AnalysisOpenIds = baseDao.selectListOpenIds(userIds,"2"); - openIdDto.setAnalyOpenIds(AnalysisOpenIds); + openIdDto.setAnalyOpenIds(workOpenIds); return new Result().ok(openIdDto); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java index c127fe332..3eeb69d17 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java @@ -37,4 +37,13 @@ public interface MessageService { * @date 2020/05/26 14:18 */ Result sendMessage(SendMessageFormDTO formDto); + + /** + * 小程序消息推送 + * + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author wanggonfeng + * @date 2020/05/26 14:18 + */ +// Result sendMessage(); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java index 0d92743b1..24108a3d3 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java @@ -2,11 +2,14 @@ package com.elink.esua.epdc.service.impl; import cn.binarywang.wx.miniapp.bean.WxMaTemplateData; import cn.binarywang.wx.miniapp.bean.WxMaUniformMessage; +import com.alibaba.fastjson.JSONObject; import com.elink.esua.epdc.commons.tools.exception.RenException; import com.elink.esua.epdc.commons.tools.redis.RedisKeys; import com.elink.esua.epdc.commons.tools.redis.RedisUtils; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.TemplateData; +import com.elink.esua.epdc.dto.WxAccessTokenBean; +import com.elink.esua.epdc.dto.WxMssVo; import com.elink.esua.epdc.dto.epdc.form.EpdcDeleteWxFormIdFormDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcUserRegisterAuditMsgResultDTO; import com.elink.esua.epdc.dto.epdc.result.UserWorkAndAnalyOpenIdDTO; @@ -19,12 +22,17 @@ import com.elink.esua.epdc.service.MessageService; import com.elink.esua.epdc.utils.WxMaServiceUtils; import com.elink.esua.epdc.utils.WxSendMessageUtils; import com.google.common.collect.Lists; +import com.google.gson.Gson; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.ResponseEntity; +import org.springframework.http.client.ClientHttpRequestFactory; +import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; import java.util.ArrayList; import java.util.HashMap; @@ -60,6 +68,20 @@ public class MessageServiceImpl implements MessageService { @Autowired private RedisUtils redisUtils; + private RestTemplate restTemplate; + private ClientHttpRequestFactory factory; + @Autowired + public void setFactory() { + SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); + factory.setReadTimeout(5000);//ms + factory.setConnectTimeout(15000);//ms + this.factory = factory; + } + @Autowired + public void setRestTemplate() { + this.restTemplate = new RestTemplate(this.factory); + } + @Value("${wx.message.appId}") private String appId; @@ -175,61 +197,105 @@ public class MessageServiceImpl implements MessageService { * @author wanggonfeng * @date 2020/05/26 14:18 */ -// public Result sendMessage() { -// // 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 -// String miniprogram_state = "trial"; -// // 模板ID -// String template_id = "wagGg4eAeHu1N2N0o8Vhyan41Gr3DqFBD81o5Lv7XnQ"; -// // 用户openID -// String openId = "oZCeb5TZc2oBwT4jHb0kDmQsN0Xw"; -// // 小程序跳转页 -// String page = "pages/index/index"; -// // 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN -// String lang = "zh_CN"; -// // appid -// String appId = "wxfa4afaa2b5f9c876"; -// // secret -// String secret = "7db9f049c78c9a6cafa673deebe8330d"; -// -// -// // 获取access_token -// //String access_token = getAccess_token(APPID_NORMAL, jwtTokenProperties.getSecret()); -// String access_token = WxSendMessageUtils.getAccess_token(appId, secret); -// // 拼接URL -// String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + access_token; -// -// // 获取openID -// /*Result userIdsResult = adminFeignClient.userRelationWorkAndAnalyOpenId(); -// if(userIdsResult == null || userIdsResult.getData() == null){ -// return new Result().error("获取openid失败!"); -// } -// // 调用获取openid接口 -// UserWorkAndAnalyOpenIdDTO userWorkAndAnalyOpenIdDTO = userIdsResult.getData(); -// List analyOpenIdList = userWorkAndAnalyOpenIdDTO.getAnalyOpenIds(); -// List workOpenIdList = userWorkAndAnalyOpenIdDTO.getWorkOpenIds(); -// -// for(int i = 0; i < analyOpenIdList.size() ; i++){ -// String analysisOpenId = analyOpenIdList.get(i); -// sendMessageByOpenId(analysisOpenId,url,miniprogram_state); -// } -// for(int j = 0; j < workOpenIdList.size() ; j++){ -// String workOpenId = workOpenIdList.get(j); -// sendMessageByOpenId(workOpenId,url,miniprogram_state); -// }*/ -// -// // 配置模板内容 -// Map m = new HashMap<>(5); -// TemplateData keyword1 = new TemplateData(); -// keyword1.setValue("11111测试11111"); -// m.put("thing1", keyword1); -// TemplateData keyword2 = new TemplateData(); -// keyword2.setValue("2019年10月1日"); -// m.put("time2", keyword2); -// -// String resultMsg = WxSendMessageUtils.sendMessageByOpenId(openId,url,miniprogram_state,template_id,m,lang); -// -// return new Result().ok("消息推送成功!"); -// } + /*public Result sendMessage() { + // 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 + String miniprogram_state = "trial"; + // 模板ID + String template_id = "wagGg4eAeHu1N2N0o8Vhyan41Gr3DqFBD81o5Lv7XnQ"; + // 用户openID oZCeb5TZc2oBwT4jHb0kDmQsN0Xw + String openId = "oZCeb5TZc2oBwT4jHb0kDmQsN0Xw";//os3585flOvphXsb7XNmYOZtooEro oZCeb5W6GEUCVHG3InnPv1Q6r0f0 + // 小程序跳转页 + String page = "pages/index/index"; + // 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN + String lang = "zh_CN"; + // appid + String appId = "wxfa4afaa2b5f9c876"; + // secret + String secret = "7db9f049c78c9a6cafa673deebe8330d"; + + + // 获取access_token + //String access_token = getAccess_token(APPID_NORMAL, jwtTokenProperties.getSecret()); + String access_token = WxSendMessageUtils.getAccess_token(appId, secret); + // 拼接URL + String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + access_token; + + // 获取openID + *//*Result userIdsResult = adminFeignClient.userRelationWorkAndAnalyOpenId(); + if(userIdsResult == null || userIdsResult.getData() == null){ + return new Result().error("获取openid失败!"); + } + // 调用获取openid接口 + UserWorkAndAnalyOpenIdDTO userWorkAndAnalyOpenIdDTO = userIdsResult.getData(); + List analyOpenIdList = userWorkAndAnalyOpenIdDTO.getAnalyOpenIds(); + List workOpenIdList = userWorkAndAnalyOpenIdDTO.getWorkOpenIds(); + + for(int i = 0; i < analyOpenIdList.size() ; i++){ + String analysisOpenId = analyOpenIdList.get(i); + sendMessageByOpenId(analysisOpenId,url,miniprogram_state); + } + for(int j = 0; j < workOpenIdList.size() ; j++){ + String workOpenId = workOpenIdList.get(j); + sendMessageByOpenId(workOpenId,url,miniprogram_state); + }*//* + + // 配置模板内容 + Map m = new HashMap<>(5); + TemplateData keyword1 = new TemplateData(); + keyword1.setValue("11111测试11111"); + m.put("thing1", keyword1); + TemplateData keyword2 = new TemplateData(); + keyword2.setValue("2019年10月1日"); + m.put("time2", keyword2); + + String resultMsg = WxSendMessageUtils.sendMessageByOpenId(openId,url,miniprogram_state,template_id,m,lang); + + return new Result().ok(resultMsg); + }*/ + + /** + * + * @param openId 用户openid + * @param url 接口路径 + * @param miniprogram_state 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 + * @param template_id 模板ID + * @param m 模板内容: thing 20字以内(汉字数字字母符号) + * number 32位以内,可带小数 + * letter 32位以内,只能是字母 + * time 24制时间格式(支持+年月日)eg:15:03 或 2020年5月28日 + * 其他可查:https://blog.csdn.net/css_666/article/details/103513916 + * @param lang 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN + * @author wanggonfeng + * @date 2020/05/26 14:18 + */ + public String sendMessageByOpenId(String openId, String url, String miniprogram_state, String template_id, Map m,String lang){ + //拼接推送的模版 + WxMssVo wxMssVo = new WxMssVo(); + wxMssVo.setTouser(openId);//用户openid + wxMssVo.setTemplate_id(template_id);//模版id + wxMssVo.setMiniprogram_state(miniprogram_state); + wxMssVo.setData(m); + wxMssVo.setLang(lang); + ResponseEntity responseEntity = restTemplate.postForEntity(url, wxMssVo, String.class); + log.error("小程序推送结果={}", responseEntity.getBody()); + return responseEntity.getBody(); + } + + /** + * 获取access_token + * @param appid + * @param appsecret + * @return + * @author wanggonfeng + * @date 2020/05/26 14:18 + */ + public String getAccess_token(String appid, String appsecret) { + // 获取access_token + String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential" + "&appid=" + appid + "&secret=" + appsecret; + String json = restTemplate.getForObject(url, String.class); + WxAccessTokenBean accessToken = new Gson().fromJson(json, WxAccessTokenBean.class); + return accessToken.getAccess_token(); + } @Override public Result sendMessage(SendMessageFormDTO formDto) { @@ -295,7 +361,15 @@ public class MessageServiceImpl implements MessageService { m, WxSendMessageUtils.lang); System.out.println("接收者【" + openId + "】,发送结果【" + resultMsg + "】"); - return 111; + //解析返回信息 + Map map = JSONObject.parseObject(resultMsg, Map.class); +// System.out.println("map:"+map); +// System.out.println("errcode:"+map.get("errcode")); +// System.out.println("errmsg:"+map.get("errmsg")); + if (Integer.parseInt(map.get("errcode").toString()) == 0) { + return 0; + } + return 1; } }); list.add(future); @@ -304,7 +378,7 @@ public class MessageServiceImpl implements MessageService { for (int i = 0; i < openIdList.size(); i++) { try { int resultStatus = list.get(i).get(); - if (resultStatus == 111) {//发送成功 + if (resultStatus == 0) {//发送成功 ai.incrementAndGet(); } } catch (Exception e) { diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java index 68c0f56ad..81f0cb37a 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java @@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.SimpleClientHttpRequestFactory; +import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import java.util.Map; @@ -24,8 +25,11 @@ import java.util.Map; * @Date 2020/05/28 16:15 */ @Slf4j +@Service public class WxSendMessageUtils { private static Logger logger = LoggerFactory.getLogger(WxSendMessageUtils.class); + + private static RestTemplate restTemplate; private ClientHttpRequestFactory factory; @Autowired @@ -40,6 +44,7 @@ public class WxSendMessageUtils { this.restTemplate = new RestTemplate(this.factory); } + @Value("${wx.ma.appId.normal}") private String APPID_NORMAL; From b38df8c92c01922b54d19ad7dbf0dab28a523fe2 Mon Sep 17 00:00:00 2001 From: weikai <123456> Date: Fri, 29 May 2020 17:05:58 +0800 Subject: [PATCH 15/22] =?UTF-8?q?=E3=80=90pc=E7=AB=AF=20-=20=E4=B9=A6?= =?UTF-8?q?=E8=AE=B0=E5=9C=A8=E7=BA=BF=20=E3=80=91-=E3=80=90=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E6=8E=A8=E9=80=81=E4=BF=AE=E6=94=B9=E3=80=91-?= =?UTF-8?q?=EF=BC=88=E9=AD=8F=E5=87=AF=EF=BC=89-2020/05/29?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epdc/service/impl/SysUserServiceImpl.java | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java index 91cd97049..23c32c192 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java @@ -43,7 +43,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -349,21 +348,12 @@ public class SysUserServiceImpl extends BaseServiceImpl userIds = new ArrayList<>(); -// userIds.add("1"); -// userIds.add("1191537649498046465"); -// userIds.add("1191991750497230850"); -// userIds.add("1202853184647028738"); -// userIds.add("1202861918488190977"); -// userIds.add("1202868487573561345"); -// userIds.add("1202886792501878786"); //2.获得两项openId - List workOpenIds = new ArrayList<>(); -// baseDao.selectListOpenIds(userIds,"1"); - workOpenIds.add("oZCeb5TZc2oBwT4jHb0kDmQsN0Xw"); + List workOpenIds = baseDao.selectListOpenIds(userIds,"1"); +// workOpenIds.add("oZCeb5TZc2oBwT4jHb0kDmQsN0Xw"); openIdDto.setWorkOpenIds(workOpenIds); List AnalysisOpenIds = baseDao.selectListOpenIds(userIds,"2"); - openIdDto.setAnalyOpenIds(workOpenIds); + openIdDto.setAnalyOpenIds(AnalysisOpenIds); return new Result().ok(openIdDto); } From 580a056096f1feb5d524be71a49ca96f7602c06f Mon Sep 17 00:00:00 2001 From: wanggongfeng <1305282856@qq.com> Date: Fri, 29 May 2020 17:45:21 +0800 Subject: [PATCH 16/22] =?UTF-8?q?=E3=80=90=E4=B9=A6=E8=AE=B0=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E3=80=91=E3=80=90=E5=BE=AE=E4=BF=A1=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E5=B7=A5=E5=85=B7=E4=BB=A5=E5=8F=8Ademo?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epdc/controller/ApiMessageController.java | 8 +- .../esua/epdc/service/MessageService.java | 2 +- .../epdc/service/impl/MessageServiceImpl.java | 137 +++++------------- .../esua/epdc/utils/WxSendMessageUtils.java | 23 +-- .../src/main/resources/application.yml | 11 +- 5 files changed, 55 insertions(+), 126 deletions(-) diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiMessageController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiMessageController.java index 77a9601ce..bd77b595e 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiMessageController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiMessageController.java @@ -51,10 +51,10 @@ public class ApiMessageController { * @author wanggonfeng * @date 2020/05/26 14:18 */ -// @GetMapping("sendMessage") -// public Result sendMessage() { -// return messageService.sendMessage(); -// } + @GetMapping("sendMessage") + public Result sendMessage() { + return messageService.sendMessage(); + } /** * @describe: 小程序消息推送 diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java index 3eeb69d17..ddebffec9 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java @@ -45,5 +45,5 @@ public interface MessageService { * @author wanggonfeng * @date 2020/05/26 14:18 */ -// Result sendMessage(); + Result sendMessage(); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java index 24108a3d3..5747b6fd0 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java @@ -8,8 +8,6 @@ import com.elink.esua.epdc.commons.tools.redis.RedisKeys; import com.elink.esua.epdc.commons.tools.redis.RedisUtils; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.TemplateData; -import com.elink.esua.epdc.dto.WxAccessTokenBean; -import com.elink.esua.epdc.dto.WxMssVo; import com.elink.esua.epdc.dto.epdc.form.EpdcDeleteWxFormIdFormDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcUserRegisterAuditMsgResultDTO; import com.elink.esua.epdc.dto.epdc.result.UserWorkAndAnalyOpenIdDTO; @@ -22,22 +20,18 @@ import com.elink.esua.epdc.service.MessageService; import com.elink.esua.epdc.utils.WxMaServiceUtils; import com.elink.esua.epdc.utils.WxSendMessageUtils; import com.google.common.collect.Lists; -import com.google.gson.Gson; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.ResponseEntity; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.text.SimpleDateFormat; +import java.util.*; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -82,11 +76,17 @@ public class MessageServiceImpl implements MessageService { this.restTemplate = new RestTemplate(this.factory); } - @Value("${wx.message.appId}") - private String appId; + @Value("${wx.message.analysisAppId}") + private String analysisAppId; - @Value("${wx.message.secret}") - private String secret; + @Value("${wx.message.analysisSecret}") + private String analysisSecret; + + @Value("${wx.message.workAppId}") + private String workAppId; + + @Value("${wx.message.workSecret}") + private String workSecret; /** * 注册审核失败服务消息模版 @@ -197,7 +197,7 @@ public class MessageServiceImpl implements MessageService { * @author wanggonfeng * @date 2020/05/26 14:18 */ - /*public Result sendMessage() { + public Result sendMessage() { // 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 String miniprogram_state = "trial"; // 模板ID @@ -208,93 +208,26 @@ public class MessageServiceImpl implements MessageService { String page = "pages/index/index"; // 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN String lang = "zh_CN"; - // appid - String appId = "wxfa4afaa2b5f9c876"; - // secret - String secret = "7db9f049c78c9a6cafa673deebe8330d"; - // 获取access_token - //String access_token = getAccess_token(APPID_NORMAL, jwtTokenProperties.getSecret()); - String access_token = WxSendMessageUtils.getAccess_token(appId, secret); + String access_token = WxSendMessageUtils.getAccess_token(analysisAppId, analysisSecret); // 拼接URL String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + access_token; - // 获取openID - *//*Result userIdsResult = adminFeignClient.userRelationWorkAndAnalyOpenId(); - if(userIdsResult == null || userIdsResult.getData() == null){ - return new Result().error("获取openid失败!"); - } - // 调用获取openid接口 - UserWorkAndAnalyOpenIdDTO userWorkAndAnalyOpenIdDTO = userIdsResult.getData(); - List analyOpenIdList = userWorkAndAnalyOpenIdDTO.getAnalyOpenIds(); - List workOpenIdList = userWorkAndAnalyOpenIdDTO.getWorkOpenIds(); - - for(int i = 0; i < analyOpenIdList.size() ; i++){ - String analysisOpenId = analyOpenIdList.get(i); - sendMessageByOpenId(analysisOpenId,url,miniprogram_state); - } - for(int j = 0; j < workOpenIdList.size() ; j++){ - String workOpenId = workOpenIdList.get(j); - sendMessageByOpenId(workOpenId,url,miniprogram_state); - }*//* - // 配置模板内容 Map m = new HashMap<>(5); TemplateData keyword1 = new TemplateData(); - keyword1.setValue("11111测试11111"); + keyword1.setValue("您有新的话题,请登录小程序查看!"); m.put("thing1", keyword1); TemplateData keyword2 = new TemplateData(); - keyword2.setValue("2019年10月1日"); + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateStr = sdf.format(new Date()); + keyword2.setValue(dateStr); m.put("time2", keyword2); - String resultMsg = WxSendMessageUtils.sendMessageByOpenId(openId,url,miniprogram_state,template_id,m,lang); + String resultMsg = WxSendMessageUtils.sendMessageByOpenId(openId,url,miniprogram_state,template_id,m,lang,page); return new Result().ok(resultMsg); - }*/ - - /** - * - * @param openId 用户openid - * @param url 接口路径 - * @param miniprogram_state 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 - * @param template_id 模板ID - * @param m 模板内容: thing 20字以内(汉字数字字母符号) - * number 32位以内,可带小数 - * letter 32位以内,只能是字母 - * time 24制时间格式(支持+年月日)eg:15:03 或 2020年5月28日 - * 其他可查:https://blog.csdn.net/css_666/article/details/103513916 - * @param lang 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN - * @author wanggonfeng - * @date 2020/05/26 14:18 - */ - public String sendMessageByOpenId(String openId, String url, String miniprogram_state, String template_id, Map m,String lang){ - //拼接推送的模版 - WxMssVo wxMssVo = new WxMssVo(); - wxMssVo.setTouser(openId);//用户openid - wxMssVo.setTemplate_id(template_id);//模版id - wxMssVo.setMiniprogram_state(miniprogram_state); - wxMssVo.setData(m); - wxMssVo.setLang(lang); - ResponseEntity responseEntity = restTemplate.postForEntity(url, wxMssVo, String.class); - log.error("小程序推送结果={}", responseEntity.getBody()); - return responseEntity.getBody(); - } - - /** - * 获取access_token - * @param appid - * @param appsecret - * @return - * @author wanggonfeng - * @date 2020/05/26 14:18 - */ - public String getAccess_token(String appid, String appsecret) { - // 获取access_token - String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential" + "&appid=" + appid + "&secret=" + appsecret; - String json = restTemplate.getForObject(url, String.class); - WxAccessTokenBean accessToken = new Gson().fromJson(json, WxAccessTokenBean.class); - return accessToken.getAccess_token(); } @Override @@ -309,11 +242,6 @@ public class MessageServiceImpl implements MessageService { throw new RenException("消息推送类型错误!"); } - // 获取access_token - String access_token = WxSendMessageUtils.getAccess_token(appId, secret); - // 拼接URL - String url = WxSendMessageUtils.url + access_token; - // 获取openID Result userIdsResult = adminFeignClient.userRelationWorkAndAnalyOpenId(); if(userIdsResult == null || userIdsResult.getData() == null){ @@ -326,11 +254,19 @@ public class MessageServiceImpl implements MessageService { List workOpenIdList = userWorkAndAnalyOpenIdDTO.getWorkOpenIds(); if (null != analyOpenIdList && analyOpenIdList.size() > 0) { - Integer analysisResult = sendOpenIdListMessage(analyOpenIdList, templateId,url); + // 获取access_token + String analysis_access_token = WxSendMessageUtils.getAccess_token(analysisAppId, analysisSecret); + // 拼接URL + String analysis_url = WxSendMessageUtils.url + analysis_access_token; + Integer analysisResult = sendOpenIdListMessage(analyOpenIdList, templateId,analysis_url); log.info("本次小程序消息推送数据端共【" + analyOpenIdList.size() + "】接收者,发送成功【" + analysisResult + "】条。"); } if(null != workOpenIdList && workOpenIdList.size() > 0){ - Integer workResult = sendOpenIdListMessage(workOpenIdList,templateId,url); + // 获取access_token + String work_access_token = WxSendMessageUtils.getAccess_token(workAppId, workSecret); + // 拼接URL + String work_url = WxSendMessageUtils.url + work_access_token; + Integer workResult = sendOpenIdListMessage(workOpenIdList,templateId,work_url); log.info("本次小程序消息推送数据端共【" + workOpenIdList.size() + "】接收者,发送成功【" + workResult + "】条。"); } @@ -339,6 +275,7 @@ public class MessageServiceImpl implements MessageService { private Integer sendOpenIdListMessage(List openIdList,String templateId,String url){ AtomicInteger ai = new AtomicInteger(0); + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List> list = new ArrayList<>(); for(String openId : openIdList){ Future future = threadPool.submit(new Callable() { @@ -347,10 +284,11 @@ public class MessageServiceImpl implements MessageService { // 配置模板内容 Map m = new HashMap<>(5); TemplateData keyword1 = new TemplateData(); - keyword1.setValue("11111测试11111"); + keyword1.setValue("您有新的话题,请登录小程序查看!"); m.put("thing1", keyword1); TemplateData keyword2 = new TemplateData(); - keyword2.setValue("2019年10月1日"); + String dateStr = sdf.format(new Date()); + keyword2.setValue(dateStr); m.put("time2", keyword2); //发送消息 String resultMsg = WxSendMessageUtils.sendMessageByOpenId( @@ -359,13 +297,11 @@ public class MessageServiceImpl implements MessageService { WxSendMessageUtils.miniprogram_state, templateId, m, - WxSendMessageUtils.lang); + WxSendMessageUtils.lang, + WxSendMessageUtils.page); System.out.println("接收者【" + openId + "】,发送结果【" + resultMsg + "】"); //解析返回信息 Map map = JSONObject.parseObject(resultMsg, Map.class); -// System.out.println("map:"+map); -// System.out.println("errcode:"+map.get("errcode")); -// System.out.println("errmsg:"+map.get("errmsg")); if (Integer.parseInt(map.get("errcode").toString()) == 0) { return 0; } @@ -388,7 +324,4 @@ public class MessageServiceImpl implements MessageService { return ai.get(); } - - - } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java index 81f0cb37a..8fd39e8ba 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java @@ -3,13 +3,11 @@ package com.elink.esua.epdc.utils; import com.elink.esua.epdc.dto.TemplateData; import com.elink.esua.epdc.dto.WxAccessTokenBean; import com.elink.esua.epdc.dto.WxMssVo; -import com.elink.esua.epdc.jwt.JwtTokenProperties; import com.google.gson.Gson; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.SimpleClientHttpRequestFactory; @@ -44,14 +42,6 @@ public class WxSendMessageUtils { this.restTemplate = new RestTemplate(this.factory); } - - @Value("${wx.ma.appId.normal}") - private String APPID_NORMAL; - - private String SECRET = "${rocketmq.producer.secret-key}"; - @Autowired - private JwtTokenProperties jwtTokenProperties; - //小程序发送消息相关参数 // 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 public static String miniprogram_state = "trial"; @@ -62,18 +52,15 @@ public class WxSendMessageUtils { // 话题模板ID public static String topic_template_id = "wagGg4eAeHu1N2N0o8Vhyan41Gr3DqFBD81o5Lv7XnQ"; - // 用户openID - public static String openId = "oZCeb5TZc2oBwT4jHb0kDmQsN0Xw"; - - // 小程序跳转页 - public static String page = "pages/index/index"; - // 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN public static String lang = "zh_CN"; //接口路径 public static String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="; + // 小程序跳转页 + public static String page = "pages/index/index"; + /** * @@ -90,7 +77,8 @@ public class WxSendMessageUtils { * @author wanggonfeng * @date 2020/05/26 14:18 */ - public static String sendMessageByOpenId(String openId, String url, String miniprogram_state, String template_id, Map m,String lang){ + public static String sendMessageByOpenId(String openId, String url, String miniprogram_state, String template_id, + Map m,String lang,String page){ //拼接推送的模版 WxMssVo wxMssVo = new WxMssVo(); wxMssVo.setTouser(openId);//用户openid @@ -98,6 +86,7 @@ public class WxSendMessageUtils { wxMssVo.setMiniprogram_state(miniprogram_state); wxMssVo.setData(m); wxMssVo.setLang(lang); + wxMssVo.setPage(page); ResponseEntity responseEntity = restTemplate.postForEntity(url, wxMssVo, String.class); log.error("小程序推送结果={}", responseEntity.getBody()); return responseEntity.getBody(); diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml index d3875a764..0ccf1e412 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml @@ -157,10 +157,17 @@ wx: message: message: + # 数据分析端小程序 # 消息推送的appId - appId: wxfa4afaa2b5f9c876 + analysisAppId: @analysis.wx.ma.appId@ # 秘钥 - secret: 7db9f049c78c9a6cafa673deebe8330d + analysisSecret: @analysis.wx.ma.secret@ + + # 工作端小程序 + # 消息推送的appId + workAppId: @work.wx.ma.appId@ + # 秘钥 + workSecret: @work.wx.ma.secret@ From 4ba95ebbfb33737a1a25b6b77234c14e7f42378f Mon Sep 17 00:00:00 2001 From: wanggongfeng <1305282856@qq.com> Date: Fri, 29 May 2020 17:59:27 +0800 Subject: [PATCH 17/22] =?UTF-8?q?=E3=80=90=E4=B9=A6=E8=AE=B0=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E3=80=91=E3=80=90=E5=BE=AE=E4=BF=A1=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E5=B7=A5=E5=85=B7=E4=BB=A5=E5=8F=8Ademo?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epdc-api/epdc-api-server/pom.xml | 14 +++++++---- .../esua/epdc/service/MessageService.java | 5 ++-- .../epdc/service/impl/MessageServiceImpl.java | 24 ++++++++----------- .../esua/epdc/utils/WxSendMessageUtils.java | 6 ----- .../src/main/resources/application.yml | 4 ++++ 5 files changed, 27 insertions(+), 26 deletions(-) diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml b/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml index a957558a8..30ccfe30c 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml @@ -194,9 +194,11 @@ wx29b074840ef4bfd9 4adb1afccc69f205cdf5b521d74e2aca + cwjaIk2GMxKQcSqISFaxsGQYfQwf2V7ercQLEEzFdDQ wxfa4afaa2b5f9c876 7db9f049c78c9a6cafa673deebe8330d + wagGg4eAeHu1N2N0o8Vhyan41Gr3DqFBD81o5Lv7XnQ @@ -236,11 +238,13 @@ wx5d3e97461d248397 bfed51b731e53db9affb9e6131e7ae12 - wx9f20a46906ab2c3e - dc13065f79429979d9f687d249eb5c4e + wx29b074840ef4bfd9 + 4adb1afccc69f205cdf5b521d74e2aca + cwjaIk2GMxKQcSqISFaxsGQYfQwf2V7ercQLEEzFdDQ wxfa4afaa2b5f9c876 7db9f049c78c9a6cafa673deebe8330d + wagGg4eAeHu1N2N0o8Vhyan41Gr3DqFBD81o5Lv7XnQ @@ -281,11 +285,13 @@ - wx9f20a46906ab2c3e - dc13065f79429979d9f687d249eb5c4e + wx29b074840ef4bfd9 + 4adb1afccc69f205cdf5b521d74e2aca + cwjaIk2GMxKQcSqISFaxsGQYfQwf2V7ercQLEEzFdDQ wxfa4afaa2b5f9c876 7db9f049c78c9a6cafa673deebe8330d + wagGg4eAeHu1N2N0o8Vhyan41Gr3DqFBD81o5Lv7XnQ diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java index ddebffec9..9836cf733 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/MessageService.java @@ -36,7 +36,7 @@ public interface MessageService { * @author wanggonfeng * @date 2020/05/26 14:18 */ - Result sendMessage(SendMessageFormDTO formDto); + Result sendMessage(); /** * 小程序消息推送 @@ -45,5 +45,6 @@ public interface MessageService { * @author wanggonfeng * @date 2020/05/26 14:18 */ - Result sendMessage(); + Result sendMessage(SendMessageFormDTO formDto); + } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java index 5747b6fd0..94e58e232 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java @@ -3,7 +3,6 @@ package com.elink.esua.epdc.service.impl; import cn.binarywang.wx.miniapp.bean.WxMaTemplateData; import cn.binarywang.wx.miniapp.bean.WxMaUniformMessage; import com.alibaba.fastjson.JSONObject; -import com.elink.esua.epdc.commons.tools.exception.RenException; import com.elink.esua.epdc.commons.tools.redis.RedisKeys; import com.elink.esua.epdc.commons.tools.redis.RedisUtils; import com.elink.esua.epdc.commons.tools.utils.Result; @@ -82,12 +81,18 @@ public class MessageServiceImpl implements MessageService { @Value("${wx.message.analysisSecret}") private String analysisSecret; + @Value("${wx.message.analysisTemplate}") + private String analysisTemplate; + @Value("${wx.message.workAppId}") private String workAppId; @Value("${wx.message.workSecret}") private String workSecret; + @Value("${wx.message.workTemplate}") + private String workTemplate; + /** * 注册审核失败服务消息模版 */ @@ -191,7 +196,7 @@ public class MessageServiceImpl implements MessageService { } /** - * 小程序消息推送 + * 小程序消息推送demo * * @return com.elink.esua.epdc.commons.tools.utils.Result * @author wanggonfeng @@ -232,15 +237,6 @@ public class MessageServiceImpl implements MessageService { @Override public Result sendMessage(SendMessageFormDTO formDto) { - // 模板ID - String templateId = ""; - if(1 == formDto.getType()){//通知 - templateId = WxSendMessageUtils.notice_template_id; - }else if(2 == formDto.getType()){//话题 - templateId = WxSendMessageUtils.topic_template_id; - }else{ - throw new RenException("消息推送类型错误!"); - } // 获取openID Result userIdsResult = adminFeignClient.userRelationWorkAndAnalyOpenId(); @@ -258,7 +254,7 @@ public class MessageServiceImpl implements MessageService { String analysis_access_token = WxSendMessageUtils.getAccess_token(analysisAppId, analysisSecret); // 拼接URL String analysis_url = WxSendMessageUtils.url + analysis_access_token; - Integer analysisResult = sendOpenIdListMessage(analyOpenIdList, templateId,analysis_url); + Integer analysisResult = sendOpenIdListMessage(analyOpenIdList, analysisTemplate,analysis_url); log.info("本次小程序消息推送数据端共【" + analyOpenIdList.size() + "】接收者,发送成功【" + analysisResult + "】条。"); } if(null != workOpenIdList && workOpenIdList.size() > 0){ @@ -266,8 +262,8 @@ public class MessageServiceImpl implements MessageService { String work_access_token = WxSendMessageUtils.getAccess_token(workAppId, workSecret); // 拼接URL String work_url = WxSendMessageUtils.url + work_access_token; - Integer workResult = sendOpenIdListMessage(workOpenIdList,templateId,work_url); - log.info("本次小程序消息推送数据端共【" + workOpenIdList.size() + "】接收者,发送成功【" + workResult + "】条。"); + Integer workResult = sendOpenIdListMessage(workOpenIdList,workTemplate,work_url); + log.info("本次小程序消息推送工作端共【" + workOpenIdList.size() + "】接收者,发送成功【" + workResult + "】条。"); } return new Result().ok("消息推送成功!"); diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java index 8fd39e8ba..2d18ca3f3 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java @@ -46,12 +46,6 @@ public class WxSendMessageUtils { // 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 public static String miniprogram_state = "trial"; - // 通知模板ID - public static String notice_template_id = "wagGg4eAeHu1N2N0o8Vhyan41Gr3DqFBD81o5Lv7XnQ"; - - // 话题模板ID - public static String topic_template_id = "wagGg4eAeHu1N2N0o8Vhyan41Gr3DqFBD81o5Lv7XnQ"; - // 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN public static String lang = "zh_CN"; diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml index 0ccf1e412..5f6be2c42 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml @@ -162,12 +162,16 @@ wx: analysisAppId: @analysis.wx.ma.appId@ # 秘钥 analysisSecret: @analysis.wx.ma.secret@ + # 模板 + analysisTemplate: @analysis.wx.ma.template@ # 工作端小程序 # 消息推送的appId workAppId: @work.wx.ma.appId@ # 秘钥 workSecret: @work.wx.ma.secret@ + # 模板 + workTemplate: @work.wx.ma.template@ From e5c56958e734fb41c5bf87d86f3f79c8d9584682 Mon Sep 17 00:00:00 2001 From: wanggongfeng <1305282856@qq.com> Date: Fri, 29 May 2020 18:27:25 +0800 Subject: [PATCH 18/22] =?UTF-8?q?=E3=80=90=E4=B9=A6=E8=AE=B0=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E3=80=91=E3=80=90=E5=BE=AE=E4=BF=A1=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E5=B7=A5=E5=85=B7=E4=BB=A5=E5=8F=8Ademo?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epdc-api/epdc-api-server/pom.xml | 15 ++++++++++++ .../epdc/service/impl/MessageServiceImpl.java | 24 +++++++++++++++---- .../esua/epdc/utils/WxSendMessageUtils.java | 13 ---------- .../src/main/resources/application.yml | 10 ++++++++ 4 files changed, 44 insertions(+), 18 deletions(-) diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml b/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml index 30ccfe30c..e01165d63 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml @@ -199,6 +199,11 @@ wxfa4afaa2b5f9c876 7db9f049c78c9a6cafa673deebe8330d wagGg4eAeHu1N2N0o8Vhyan41Gr3DqFBD81o5Lv7XnQ + + trial + pages/index/index + https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token= + zh_CN @@ -245,6 +250,11 @@ wxfa4afaa2b5f9c876 7db9f049c78c9a6cafa673deebe8330d wagGg4eAeHu1N2N0o8Vhyan41Gr3DqFBD81o5Lv7XnQ + + trial + pages/index/index + https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token= + zh_CN @@ -292,6 +302,11 @@ wxfa4afaa2b5f9c876 7db9f049c78c9a6cafa673deebe8330d wagGg4eAeHu1N2N0o8Vhyan41Gr3DqFBD81o5Lv7XnQ + + formal + pages/index/index + https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token= + zh_CN diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java index 94e58e232..81dbf9dd7 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java @@ -93,6 +93,20 @@ public class MessageServiceImpl implements MessageService { @Value("${wx.message.workTemplate}") private String workTemplate; + @Value("${wx.message.jumpType}") + private String jumpType; + + @Value("${wx.message.page}") + private String page; + + @Value("${wx.message.url}") + private String url; + + @Value("${wx.message.lang}") + private String lang; + + + /** * 注册审核失败服务消息模版 */ @@ -253,7 +267,7 @@ public class MessageServiceImpl implements MessageService { // 获取access_token String analysis_access_token = WxSendMessageUtils.getAccess_token(analysisAppId, analysisSecret); // 拼接URL - String analysis_url = WxSendMessageUtils.url + analysis_access_token; + String analysis_url = url + analysis_access_token; Integer analysisResult = sendOpenIdListMessage(analyOpenIdList, analysisTemplate,analysis_url); log.info("本次小程序消息推送数据端共【" + analyOpenIdList.size() + "】接收者,发送成功【" + analysisResult + "】条。"); } @@ -261,7 +275,7 @@ public class MessageServiceImpl implements MessageService { // 获取access_token String work_access_token = WxSendMessageUtils.getAccess_token(workAppId, workSecret); // 拼接URL - String work_url = WxSendMessageUtils.url + work_access_token; + String work_url = url + work_access_token; Integer workResult = sendOpenIdListMessage(workOpenIdList,workTemplate,work_url); log.info("本次小程序消息推送工作端共【" + workOpenIdList.size() + "】接收者,发送成功【" + workResult + "】条。"); } @@ -290,11 +304,11 @@ public class MessageServiceImpl implements MessageService { String resultMsg = WxSendMessageUtils.sendMessageByOpenId( openId, url, - WxSendMessageUtils.miniprogram_state, + jumpType, templateId, m, - WxSendMessageUtils.lang, - WxSendMessageUtils.page); + lang, + page); System.out.println("接收者【" + openId + "】,发送结果【" + resultMsg + "】"); //解析返回信息 Map map = JSONObject.parseObject(resultMsg, Map.class); diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java index 2d18ca3f3..54fd46070 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/WxSendMessageUtils.java @@ -42,19 +42,6 @@ public class WxSendMessageUtils { this.restTemplate = new RestTemplate(this.factory); } - //小程序发送消息相关参数 - // 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 - public static String miniprogram_state = "trial"; - - // 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN - public static String lang = "zh_CN"; - - //接口路径 - public static String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="; - - // 小程序跳转页 - public static String page = "pages/index/index"; - /** * diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml index 5f6be2c42..807785c9f 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml @@ -173,6 +173,16 @@ wx: # 模板 workTemplate: @work.wx.ma.template@ + # 通用参数 + # 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 + jumpType: @wx.ma.jumpType@ + # 小程序跳转页 + page: @wx.ma.page@ + # 接口路径 + url: @wx.ma.url@ + # 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN + lang: @wx.ma.lang@ + token: From 65ffd3d70a3ea6dd48c4ca76efba61af169dfac4 Mon Sep 17 00:00:00 2001 From: wanggongfeng <1305282856@qq.com> Date: Fri, 29 May 2020 18:29:25 +0800 Subject: [PATCH 19/22] =?UTF-8?q?=E3=80=90=E4=B9=A6=E8=AE=B0=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E3=80=91=E3=80=90=E5=BE=AE=E4=BF=A1=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E5=B7=A5=E5=85=B7=E4=BB=A5=E5=8F=8Ademo?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epdc/service/impl/MessageServiceImpl.java | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java index 81dbf9dd7..736f21a8d 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java @@ -24,10 +24,7 @@ import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.client.ClientHttpRequestFactory; -import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.stereotype.Service; -import org.springframework.web.client.RestTemplate; import java.text.SimpleDateFormat; import java.util.*; @@ -61,20 +58,6 @@ public class MessageServiceImpl implements MessageService { @Autowired private RedisUtils redisUtils; - private RestTemplate restTemplate; - private ClientHttpRequestFactory factory; - @Autowired - public void setFactory() { - SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); - factory.setReadTimeout(5000);//ms - factory.setConnectTimeout(15000);//ms - this.factory = factory; - } - @Autowired - public void setRestTemplate() { - this.restTemplate = new RestTemplate(this.factory); - } - @Value("${wx.message.analysisAppId}") private String analysisAppId; From 1ad8325c8fa452b95408cf7b97fdff9c96f97c96 Mon Sep 17 00:00:00 2001 From: wanggongfeng <1305282856@qq.com> Date: Fri, 29 May 2020 18:41:00 +0800 Subject: [PATCH 20/22] =?UTF-8?q?=E3=80=90=E4=B9=A6=E8=AE=B0=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E3=80=91=E3=80=90=E5=BE=AE=E4=BF=A1=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E5=B7=A5=E5=85=B7=E4=BB=A5=E5=8F=8Ademo?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epdc/service/impl/MessageServiceImpl.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java index 736f21a8d..6a2f0861f 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/MessageServiceImpl.java @@ -3,6 +3,7 @@ package com.elink.esua.epdc.service.impl; import cn.binarywang.wx.miniapp.bean.WxMaTemplateData; import cn.binarywang.wx.miniapp.bean.WxMaUniformMessage; import com.alibaba.fastjson.JSONObject; +import com.elink.esua.epdc.commons.tools.exception.RenException; import com.elink.esua.epdc.commons.tools.redis.RedisKeys; import com.elink.esua.epdc.commons.tools.redis.RedisUtils; import com.elink.esua.epdc.commons.tools.utils.Result; @@ -235,6 +236,18 @@ public class MessageServiceImpl implements MessageService { @Override public Result sendMessage(SendMessageFormDTO formDto) { + // 模板ID + String value = ""; + if(1 == formDto.getType()){ + //通知 + value = "您有新的通知,请登录小程序查看!"; + }else if(2 == formDto.getType()){ + //话题 + value = "您有新的话题,请登录小程序查看!"; + }else{ + throw new RenException("消息推送类型错误!"); + } + // 获取openID Result userIdsResult = adminFeignClient.userRelationWorkAndAnalyOpenId(); if(userIdsResult == null || userIdsResult.getData() == null){ @@ -251,7 +264,7 @@ public class MessageServiceImpl implements MessageService { String analysis_access_token = WxSendMessageUtils.getAccess_token(analysisAppId, analysisSecret); // 拼接URL String analysis_url = url + analysis_access_token; - Integer analysisResult = sendOpenIdListMessage(analyOpenIdList, analysisTemplate,analysis_url); + Integer analysisResult = sendOpenIdListMessage(analyOpenIdList, analysisTemplate,analysis_url,value); log.info("本次小程序消息推送数据端共【" + analyOpenIdList.size() + "】接收者,发送成功【" + analysisResult + "】条。"); } if(null != workOpenIdList && workOpenIdList.size() > 0){ @@ -259,14 +272,14 @@ public class MessageServiceImpl implements MessageService { String work_access_token = WxSendMessageUtils.getAccess_token(workAppId, workSecret); // 拼接URL String work_url = url + work_access_token; - Integer workResult = sendOpenIdListMessage(workOpenIdList,workTemplate,work_url); + Integer workResult = sendOpenIdListMessage(workOpenIdList,workTemplate,work_url,value); log.info("本次小程序消息推送工作端共【" + workOpenIdList.size() + "】接收者,发送成功【" + workResult + "】条。"); } return new Result().ok("消息推送成功!"); } - private Integer sendOpenIdListMessage(List openIdList,String templateId,String url){ + private Integer sendOpenIdListMessage(List openIdList,String templateId,String url,String value){ AtomicInteger ai = new AtomicInteger(0); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List> list = new ArrayList<>(); @@ -277,7 +290,7 @@ public class MessageServiceImpl implements MessageService { // 配置模板内容 Map m = new HashMap<>(5); TemplateData keyword1 = new TemplateData(); - keyword1.setValue("您有新的话题,请登录小程序查看!"); + keyword1.setValue(value); m.put("thing1", keyword1); TemplateData keyword2 = new TemplateData(); String dateStr = sdf.format(new Date()); From 6f9e63c85c1eacbb243cea7172cf7f2c09357d3d Mon Sep 17 00:00:00 2001 From: weikai <123456> Date: Fri, 29 May 2020 19:29:28 +0800 Subject: [PATCH 21/22] =?UTF-8?q?=E3=80=90pc=E7=AB=AF=20-=20=E4=B9=A6?= =?UTF-8?q?=E8=AE=B0=E5=9C=A8=E7=BA=BF=20=E3=80=91-=E3=80=90=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E6=8E=A8=E9=80=81=E4=BF=AE=E6=94=B9=E3=80=91-?= =?UTF-8?q?=EF=BC=88=E9=AD=8F=E5=87=AF=EF=BC=89-2020/05/29?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epdc-module/epdc-api/epdc-api-server/pom.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml b/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml index e01165d63..9cf284fad 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml @@ -192,8 +192,8 @@ wxdd8530c5f4926766 5bf4fb813145431b3493a10aa7e041e9 - wx29b074840ef4bfd9 - 4adb1afccc69f205cdf5b521d74e2aca + wx9f20a46906ab2c3e + dc13065f79429979d9f687d249eb5c4e cwjaIk2GMxKQcSqISFaxsGQYfQwf2V7ercQLEEzFdDQ wxfa4afaa2b5f9c876 @@ -243,8 +243,8 @@ wx5d3e97461d248397 bfed51b731e53db9affb9e6131e7ae12 - wx29b074840ef4bfd9 - 4adb1afccc69f205cdf5b521d74e2aca + wx9f20a46906ab2c3e + dc13065f79429979d9f687d249eb5c4e cwjaIk2GMxKQcSqISFaxsGQYfQwf2V7ercQLEEzFdDQ wxfa4afaa2b5f9c876 @@ -295,8 +295,8 @@ - wx29b074840ef4bfd9 - 4adb1afccc69f205cdf5b521d74e2aca + wx9f20a46906ab2c3e + dc13065f79429979d9f687d249eb5c4e cwjaIk2GMxKQcSqISFaxsGQYfQwf2V7ercQLEEzFdDQ wxfa4afaa2b5f9c876 From 76b42e5534d5e9392125c7a92e8538324efc9086 Mon Sep 17 00:00:00 2001 From: weikai <123456> Date: Fri, 29 May 2020 19:31:10 +0800 Subject: [PATCH 22/22] =?UTF-8?q?=E3=80=90pc=E7=AB=AF=20-=20=E4=B9=A6?= =?UTF-8?q?=E8=AE=B0=E5=9C=A8=E7=BA=BF=20=E3=80=91-=E3=80=90=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E6=8E=A8=E9=80=81=E4=BF=AE=E6=94=B9=E3=80=91-?= =?UTF-8?q?=EF=BC=88=E9=AD=8F=E5=87=AF=EF=BC=89-2020/05/29?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/SysUserDao.xml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml index 7e523055c..241f9bf27 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml @@ -190,7 +190,14 @@ AND id IN - + + and work_open_id is not null + and work_open_id!='' + + + and analysis_open_id is not null + and analysis_open_id!='' +