diff --git a/esua-epdc/epdc-admin/epdc-admin-server/pom.xml b/esua-epdc/epdc-admin/epdc-admin-server/pom.xml index 8ffa0860c..62661b3f0 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/pom.xml +++ b/esua-epdc/epdc-admin/epdc-admin-server/pom.xml @@ -138,6 +138,9 @@ wx29b074840ef4bfd9 4adb1afccc69f205cdf5b521d74e2aca + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -161,6 +164,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -187,6 +193,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -214,6 +223,9 @@ wxddb240334d09049f 071b8c70da0d0482aaf79052e64f83bc + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -257,6 +269,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/application.yml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/application.yml index e0e6d34a1..ecd16eb5a 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/application.yml +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/application.yml @@ -80,11 +80,18 @@ wx: token: #微信小程序消息服务器配置的token aesKey: #微信小程序消息服务器配置的EncodingAESKey msgDataFormat: JSON + - appid: @analysis.wx.ma.appId@ + secret: @analysis.wx.ma.secret@ + token: #微信小程序消息服务器配置的token + aesKey: #微信小程序消息服务器配置的EncodingAESKey + msgDataFormat: JSON appId: # 普通居民端的appId normal: @wx.ma.appId@ # 工作端的appId work: @work.wx.ma.appId@ + # 数据分析端的appId + analysis: @analysis.wx.ma.appId@ feign: diff --git a/esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/utils/WxMaServiceUtils.java b/esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/utils/WxMaServiceUtils.java index dafd82d00..a58ef3edf 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/utils/WxMaServiceUtils.java +++ b/esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/utils/WxMaServiceUtils.java @@ -20,6 +20,9 @@ public class WxMaServiceUtils { @Value("${wx.ma.appId.work}") private String APPID_WORK; + @Value("${wx.ma.appId.analysis}") + private String APPID_ANALYSIS; + /** * 获取党群e家 普通居民端配置 * @@ -43,4 +46,18 @@ public class WxMaServiceUtils { final WxMaService wxMaService = WxMaConfig.getMaService(APPID_WORK); return wxMaService; } + + /** + * + * 获取党群e家 数据分析端配置 + * + * @params [] + * @return cn.binarywang.wx.miniapp.api.WxMaService + * @author liuchuang + * @since 2020/2/12 10:44 + */ + public final WxMaService analysisWxMaService() { + final WxMaService wxMaService = WxMaConfig.getMaService(APPID_ANALYSIS); + return wxMaService; + } } 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 6f6ae2874..bd24f1d4f 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 @@ -182,6 +182,9 @@ wx29b074840ef4bfd9 4adb1afccc69f205cdf5b521d74e2aca + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -221,6 +224,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -256,6 +262,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -291,6 +300,9 @@ wxddb240334d09049f 071b8c70da0d0482aaf79052e64f83bc + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -330,6 +342,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc 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 3d25861ae..a4958a417 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,8 +1,12 @@ package com.elink.esua.epdc.controller; 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; @@ -11,9 +15,7 @@ import com.elink.esua.epdc.dto.user.result.UserSortRankResultDTO; import com.elink.esua.epdc.dto.user.result.YoungMemberRankResultDTO; import com.elink.esua.epdc.service.AnalysisUserService; 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.*; import java.util.List; @@ -42,6 +44,36 @@ public class ApiAnalysisUserController { return analysisUserService.test(); } + /** + * + * 数据分析端-用户登录 + * + * @params [formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2020/2/12 10:57 + */ + @PostMapping("login") + public Result login(@RequestBody WorkUserLoginDTO formDto) { + ValidatorUtils.validateEntity(formDto); + return analysisUserService.login(formDto); + } + + /** + * + * 数据分析端-获取token + * + * @params [formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2020/2/12 10:58 + */ + @GetMapping("getToken") + public Result getMaToken(EpdcWorkAppUserMaTokenFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + return analysisUserService.getMaToken(formDto); + } + @GetMapping("/partyMemberOldSort") public Result> listOldMemberRankByDeptId(MemberRankFormDTO formDto) { return analysisUserService.listOldMemberRankByDeptId(formDto); 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 27f4bcf51..2b4500a1c 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,6 +1,9 @@ package com.elink.esua.epdc.service; +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; @@ -25,6 +28,29 @@ public interface AnalysisUserService { * @Date: 2019/11/19 16:37 */ Result test(); + + /** + * + * 数据分析端-用户登录 + * + * @params [formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2020/2/12 10:59 + */ + Result login(WorkUserLoginDTO formDto); + + /** + * + * 数据分析端-获取token + * + * @params [formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2020/2/12 11:00 + */ + Result getMaToken(EpdcWorkAppUserMaTokenFormDTO formDto); + /** * @Description 获取党员老龄化排名列表 * @Author songyunpeng 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 79dbafab2..8973486d1 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 @@ -1,15 +1,29 @@ package com.elink.esua.epdc.service.impl; +import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; +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; +import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.SysUserDTO; +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.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; +import com.elink.esua.epdc.feign.AdminFeignClient; import com.elink.esua.epdc.feign.AnalysisUserFeignClient; +import com.elink.esua.epdc.feign.ResourceFeignClient; import com.elink.esua.epdc.service.AnalysisUserService; +import com.elink.esua.epdc.utils.WxMaServiceUtils; +import me.chanjar.weixin.common.error.WxErrorException; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -26,13 +40,48 @@ public class AnalysisUserServiceImpl implements AnalysisUserService { @Autowired private AnalysisUserFeignClient analysisUserFeignClient; + @Autowired + private WxMaServiceUtils wxMaServiceUtils; + + @Autowired + private ResourceFeignClient resourceFeignClient; + @Autowired + private AdminFeignClient adminFeignClient; @Override public Result test() { return analysisUserFeignClient.test(); } + @Override + public Result login(WorkUserLoginDTO formDto) { + // 获取openId + String openId = this.getWxMaUser(formDto.getWxCode()).getOpenid(); + formDto.setOpenId(openId); + return resourceFeignClient.workLogin(formDto); + } + + @Override + public Result getMaToken(EpdcWorkAppUserMaTokenFormDTO formDto) { + // 获取openId + String openId = this.getWxMaUser(formDto.getWxCode()).getOpenid(); + + // 检查当前微信是否已绑定账户 + Result sysUserDtoResult = adminFeignClient.getSysUserInfoByOpenId(openId); + if (!sysUserDtoResult.success()) { + return new Result().error(sysUserDtoResult.getMsg()); + } + SysUserDTO userDto = sysUserDtoResult.getData(); + if (null == userDto) { + WorkUserAuthorizationDTO resultDto = new WorkUserAuthorizationDTO(); + resultDto.setRegisterState(NumConstant.ZERO_STR); + return new Result().ok(resultDto); + } + + return resourceFeignClient.getToken(ConvertUtils.sourceToTarget(userDto, WorkUserTokenFormDTO.class)); + } + @Override public Result> listOldMemberRankByDeptId( MemberRankFormDTO formDto) { return analysisUserFeignClient.listOldMemberRankByDeptId(formDto); @@ -59,4 +108,28 @@ public class AnalysisUserServiceImpl implements AnalysisUserService { return analysisUserFeignClient.getGridStatistics(formDto); } + + /** + * + * 解析微信code获取小程序用户信息 + * + * @params [wxCode] + * @return cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult + * @author liuchuang + * @since 2020/2/12 13:20 + */ + private WxMaJscode2SessionResult getWxMaUser(String wxCode) { + WxMaJscode2SessionResult wxMaJscode2SessionResult = null; + try { + wxMaJscode2SessionResult = wxMaServiceUtils.analysisWxMaService().jsCode2SessionInfo(wxCode); + } catch (WxErrorException e) { + e.printStackTrace(); + } + if (null == wxMaJscode2SessionResult) { + throw new RenException("解析微信用户信息失败"); + } else if (StringUtils.isBlank(wxMaJscode2SessionResult.getOpenid())) { + throw new RenException("获取微信openid失败"); + } + return wxMaJscode2SessionResult; + } } 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 0a30aed3b..ed9eacc37 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 @@ -113,11 +113,18 @@ wx: token: #微信小程序消息服务器配置的token aesKey: #微信小程序消息服务器配置的EncodingAESKey msgDataFormat: JSON + - appid: @analysis.wx.ma.appId@ + secret: @analysis.wx.ma.secret@ + token: #微信小程序消息服务器配置的token + aesKey: #微信小程序消息服务器配置的EncodingAESKey + msgDataFormat: JSON appId: # 普通居民端的appId normal: @wx.ma.appId@ # 工作端的appId work: @work.wx.ma.appId@ + # 数据分析端的appId + analysis: @analysis.wx.ma.appId@ diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/pom.xml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/pom.xml index 571ba13ef..cfc92acc1 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/pom.xml +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/pom.xml @@ -164,6 +164,9 @@ wx29b074840ef4bfd9 4adb1afccc69f205cdf5b521d74e2aca + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -200,6 +203,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -233,6 +239,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -266,6 +275,9 @@ wxddb240334d09049f 071b8c70da0d0482aaf79052e64f83bc + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -302,6 +314,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/application.yml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/application.yml index 0b47de4f7..28f416c29 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/application.yml +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/application.yml @@ -100,8 +100,15 @@ wx: token: #微信小程序消息服务器配置的token aesKey: #微信小程序消息服务器配置的EncodingAESKey msgDataFormat: JSON + - appid: @analysis.wx.ma.appId@ + secret: @analysis.wx.ma.secret@ + token: #微信小程序消息服务器配置的token + aesKey: #微信小程序消息服务器配置的EncodingAESKey + msgDataFormat: JSON appId: # 普通居民端的appId normal: @wx.ma.appId@ # 工作端的appId work: @work.wx.ma.appId@ + # 数据分析端的appId + analysis: @analysis.wx.ma.appId@