From 7f1d9724d2d8e326cbb330680e1f2c7c31513468 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E9=A3=9E?= Date: Fri, 8 May 2020 16:17:26 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=86=E5=AF=BC=E7=AB=AF=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E8=A1=A5=E4=B8=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 7 ++ .../src/main/resources/application.yml | 4 + .../epdc-api/epdc-api-server/pom.xml | 6 ++ .../controller/ApiAnalysisUserController.java | 70 ++++++++++++ .../epdc/feign/AnalysisUserFeignClient.java | 32 ++++++ .../AnalysisUserFeignClientFallback.java | 22 ++++ .../epdc/service/AnalysisUserService.java | 48 +++++++++ .../service/impl/AnalysisUserServiceImpl.java | 101 ++++++++++++++++++ .../src/main/resources/application.yml | 7 ++ .../src/main/resources/application.yml | 7 ++ 10 files changed, 304 insertions(+) create mode 100644 esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAnalysisUserController.java create mode 100644 esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AnalysisUserFeignClient.java create mode 100644 esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AnalysisUserFeignClientFallback.java create mode 100644 esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AnalysisUserService.java create mode 100644 esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AnalysisUserServiceImpl.java 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 0b2e2f01..14023ceb 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 @@ -81,11 +81,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-gateway/src/main/resources/application.yml b/esua-epdc/epdc-gateway/src/main/resources/application.yml index 0bb9fb1e..f205e8e5 100644 --- a/esua-epdc/epdc-gateway/src/main/resources/application.yml +++ b/esua-epdc/epdc-gateway/src/main/resources/application.yml @@ -232,9 +232,12 @@ renren: workLoginUrls: - /api/work/user/getToken #工作端-获取token - /api/work/user/login #工作端-登录 + - /api/analysis/user/getToken #数据分析端-获取token + - /api/analysis/user/login #数据分析端-登录 - /api/work/*/swagger/** workUrls: - /api/work/** #工作端接口 + - /api/analysis/** #数据端接口 epdc: @@ -254,3 +257,4 @@ epdc: - /api/app-user/user/ma/gridLeaderRegister # 小程序用户 网格长注册 - /api/app-user/user/ma/v2/getToken # 小程序用户 注册或登录(版本v2) - /api/work/** #工作端接口不拦截 + - /api/analysis/** #数据端接口不拦截 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 f091e81b..1a3b58a3 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 @@ -180,6 +180,9 @@ wx826a8435db9e0947 cbcb7c422f00d165105b34dc80bb825f + + wx3ea0a6fb71ddf659 + 2154e86d56df9fae4224c93a17e01bb3 @@ -219,6 +222,9 @@ wx826a8435db9e0947 cbcb7c422f00d165105b34dc80bb825f + + wx3ea0a6fb71ddf659 + 2154e86d56df9fae4224c93a17e01bb3 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 new file mode 100644 index 00000000..b2f04e8c --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAnalysisUserController.java @@ -0,0 +1,70 @@ +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.service.AnalysisUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 移动端接口-数据分析模块(项目) + * @Author LPF + * @Date 2019/11/18 13:32 + */ +@RestController +@RequestMapping("analysis/user") +public class ApiAnalysisUserController { + + @Autowired + private AnalysisUserService analysisUserService; + + + /** + * 测试demo + + * @Return: com.elink.esua.epdc.commons.tools.utils.Result<> + * @Author: lipengfei + * @Date: 2019/11/19 16:34 + */ + @GetMapping("test") + public Result test(@LoginUser TokenDto tokenDto) { + 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); + } +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AnalysisUserFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AnalysisUserFeignClient.java new file mode 100644 index 00000000..f9df1bb4 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AnalysisUserFeignClient.java @@ -0,0 +1,32 @@ +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.config.FeignRequestInterceptor; +import com.elink.esua.epdc.feign.fallback.AnalysisUserFeignClientFallback; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; + +/** + * 评价模块调用-移动app端 + * @Author LPF + * @Date 2019/11/18 16:39 + */ +@FeignClient(name = ServiceConstant.EPDC_ANALYSIS_SERVER, fallback = AnalysisUserFeignClientFallback.class, configuration = FeignRequestInterceptor.class) +public interface AnalysisUserFeignClient { + + + + /** + * 测试 + * @Return: com.elink.esua.epdc.commons.tools.utils.Result + * @Author: lipengfei + * @Date: 2019/11/19 16:42 + */ + @GetMapping(value = "analysis/user/test", consumes = MediaType.APPLICATION_JSON_VALUE) + Result test(); + + + +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AnalysisUserFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AnalysisUserFeignClientFallback.java new file mode 100644 index 00000000..5ea7eec7 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AnalysisUserFeignClientFallback.java @@ -0,0 +1,22 @@ +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.AnalysisUserFeignClient; +import org.springframework.stereotype.Component; + +/** + * @Author LPF + * @Date 2019/11/18 16:39 + */ +@Component +public class AnalysisUserFeignClientFallback implements AnalysisUserFeignClient { + + + @Override + public Result test() { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ANALYSIS_SERVER, "test"); + } + +} 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 new file mode 100644 index 00000000..e7ebd1b5 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AnalysisUserService.java @@ -0,0 +1,48 @@ +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 java.util.List; + +/** + * 项目模块-数据分析移动端 + * @Author LPF + * @Date 2019/11/18 13:34 + */ +public interface AnalysisUserService { + + + /** + * 测试模块 + * @Return: com.elink.esua.epdc.commons.tools.utils.Result<> + * @Author: lipengfei + * @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); + +} 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 new file mode 100644 index 00000000..4cf0b4f5 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AnalysisUserServiceImpl.java @@ -0,0 +1,101 @@ +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.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; + +import java.util.List; + +/** + * 项目模块-移动app端 + * @Author LPF + * @Date 2019/11/18 16:34 + */ +@Service +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)); + } + /** + * + * 解析微信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 7f3bd048..a933398e 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 @@ -114,11 +114,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/src/main/resources/application.yml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/application.yml index a794449f..381b44a2 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 @@ -101,11 +101,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@ rocketmq: name-server: @rocketmq.name.server@