From fdd97eda7ee50c98e71c0decbe3f90d5978b0b03 Mon Sep 17 00:00:00 2001 From: yujt Date: Wed, 10 Jun 2020 10:31:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=86=E6=9E=90=E7=AB=AF?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=8E=A5=E5=8F=A3=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/elink/esua/epdc/modules/.gitkeep | 0 .../controller/ApiAnalysisUserController.java | 55 +++++++++++ .../analysis/service/AnalysisUserService.java | 37 ++++++++ .../service/impl/AnalysisUserServiceImpl.java | 92 +++++++++++++++++++ 4 files changed, 184 insertions(+) create mode 100644 epdc-cloud-api/src/main/java/com/elink/esua/epdc/modules/.gitkeep create mode 100644 epdc-cloud-api/src/main/java/com/elink/esua/epdc/modules/analysis/controller/ApiAnalysisUserController.java create mode 100644 epdc-cloud-api/src/main/java/com/elink/esua/epdc/modules/analysis/service/AnalysisUserService.java create mode 100644 epdc-cloud-api/src/main/java/com/elink/esua/epdc/modules/analysis/service/impl/AnalysisUserServiceImpl.java diff --git a/epdc-cloud-api/src/main/java/com/elink/esua/epdc/modules/.gitkeep b/epdc-cloud-api/src/main/java/com/elink/esua/epdc/modules/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/epdc-cloud-api/src/main/java/com/elink/esua/epdc/modules/analysis/controller/ApiAnalysisUserController.java b/epdc-cloud-api/src/main/java/com/elink/esua/epdc/modules/analysis/controller/ApiAnalysisUserController.java new file mode 100644 index 0000000..1cf757b --- /dev/null +++ b/epdc-cloud-api/src/main/java/com/elink/esua/epdc/modules/analysis/controller/ApiAnalysisUserController.java @@ -0,0 +1,55 @@ +package com.elink.esua.epdc.modules.analysis.controller; + +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.commons.tools.validator.ValidatorUtils; +import com.elink.esua.epdc.dto.form.EpdcWorkAppUserMaTokenFormDTO; +import com.elink.esua.epdc.modules.analysis.service.AnalysisUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** + * 移动端接口-数据分析模块(项目) + * @Author LPF + * @Date 2019/11/18 13:32 + */ +@RestController +@RequestMapping("analysis/user") +public class ApiAnalysisUserController { + + @Autowired + private AnalysisUserService analysisUserService; + + /** + * + * 数据分析端-用户登录 + * + * @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/epdc-cloud-api/src/main/java/com/elink/esua/epdc/modules/analysis/service/AnalysisUserService.java b/epdc-cloud-api/src/main/java/com/elink/esua/epdc/modules/analysis/service/AnalysisUserService.java new file mode 100644 index 0000000..409748e --- /dev/null +++ b/epdc-cloud-api/src/main/java/com/elink/esua/epdc/modules/analysis/service/AnalysisUserService.java @@ -0,0 +1,37 @@ +package com.elink.esua.epdc.modules.analysis.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; + +/** + * 项目模块-数据分析移动端 + * + * @Author LPF + * @Date 2019/11/18 13:34 + */ +public interface AnalysisUserService { + + + /** + * 数据分析端-用户登录 + * + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @params [formDto] + * @author liuchuang + * @since 2020/2/12 10:59 + */ + Result login(WorkUserLoginDTO formDto); + + /** + * 数据分析端-获取token + * + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @params [formDto] + * @author liuchuang + * @since 2020/2/12 11:00 + */ + Result getMaToken(EpdcWorkAppUserMaTokenFormDTO formDto); + +} diff --git a/epdc-cloud-api/src/main/java/com/elink/esua/epdc/modules/analysis/service/impl/AnalysisUserServiceImpl.java b/epdc-cloud-api/src/main/java/com/elink/esua/epdc/modules/analysis/service/impl/AnalysisUserServiceImpl.java new file mode 100644 index 0000000..581ab99 --- /dev/null +++ b/epdc-cloud-api/src/main/java/com/elink/esua/epdc/modules/analysis/service/impl/AnalysisUserServiceImpl.java @@ -0,0 +1,92 @@ +package com.elink.esua.epdc.modules.analysis.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.ResourceFeignClient; +import com.elink.esua.epdc.modules.analysis.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; + + +/** + * 项目模块-移动app端 + * + * @Author LPF + * @Date 2019/11/18 16:34 + */ +@Service +public class AnalysisUserServiceImpl implements AnalysisUserService { + + @Autowired + private WxMaServiceUtils wxMaServiceUtils; + + @Autowired + private ResourceFeignClient resourceFeignClient; + + @Autowired + private AdminFeignClient adminFeignClient; + + + @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获取小程序用户信息 + * + * @return cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult + * @params [wxCode] + * @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; + } +}