From 67d0cecd3930f0b0c8f447c12bbdfc39304245ce Mon Sep 17 00:00:00 2001 From: jianjun Date: Sat, 8 Oct 2022 10:51:06 +0800 Subject: [PATCH] =?UTF-8?q?=E9=92=89=E9=92=89=E7=99=BB=E5=BD=95=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E7=AB=AFweb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ThirdLoginController.java | 21 +++++++++++-- ...ormDTO.java => DingAppLoginMdFormDTO.java} | 2 +- .../java/com/epmet/service/GovWebService.java | 8 +++++ .../com/epmet/service/ThirdLoginService.java | 11 +++++-- .../epmet/service/impl/GovWebServiceImpl.java | 27 +++++++++++++++++ .../service/impl/ThirdLoginServiceImpl.java | 30 +++++++++++++++++-- 6 files changed, 91 insertions(+), 8 deletions(-) rename epmet-auth/src/main/java/com/epmet/dto/form/{ResiDingAppLoginMdFormDTO.java => DingAppLoginMdFormDTO.java} (90%) diff --git a/epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java b/epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java index 0bb11c468a..44ca89df30 100644 --- a/epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java +++ b/epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java @@ -9,7 +9,10 @@ import com.epmet.dto.result.UserTokenResultDTO; import com.epmet.service.ThirdLoginService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import java.util.List; @@ -174,7 +177,7 @@ public class ThirdLoginController { * @return */ @PostMapping("resilogin-ding-md") - public Result resiLoginDingMd(@RequestBody ResiDingAppLoginMdFormDTO formDTO) { + public Result resiLoginDingMd(@RequestBody DingAppLoginMdFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO); return new Result().ok(thirdLoginService.resiLoginDingMd(formDTO)); } @@ -200,8 +203,20 @@ public class ThirdLoginController { * @return */ @PostMapping("resilogin-internalding") - public Result resiLoginInternalDing(@RequestBody ResiDingAppLoginMdFormDTO formDTO) { + public Result resiLoginInternalDing(@RequestBody DingAppLoginMdFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO); return new Result().ok(thirdLoginService.resiLoginInternalDing(formDTO)); } + + /** + * 根据免登授权码, 获取登录用户身份 + * + * @param formDTO 免登授权码 + * @return + */ + @PostMapping("govlogin-internalding") + public Result login(@RequestBody DingAppLoginMdFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + return new Result().ok(thirdLoginService.govLoginInternalDing(formDTO)); + } } diff --git a/epmet-auth/src/main/java/com/epmet/dto/form/ResiDingAppLoginMdFormDTO.java b/epmet-auth/src/main/java/com/epmet/dto/form/DingAppLoginMdFormDTO.java similarity index 90% rename from epmet-auth/src/main/java/com/epmet/dto/form/ResiDingAppLoginMdFormDTO.java rename to epmet-auth/src/main/java/com/epmet/dto/form/DingAppLoginMdFormDTO.java index 0b3b9ae0f8..1a8840e949 100644 --- a/epmet-auth/src/main/java/com/epmet/dto/form/ResiDingAppLoginMdFormDTO.java +++ b/epmet-auth/src/main/java/com/epmet/dto/form/DingAppLoginMdFormDTO.java @@ -10,7 +10,7 @@ import javax.validation.constraints.NotBlank; * @Date 2022/9/22 10:42 */ @Data -public class ResiDingAppLoginMdFormDTO { +public class DingAppLoginMdFormDTO { @NotBlank(message = "authCode不能为空") private String authCode; /** diff --git a/epmet-auth/src/main/java/com/epmet/service/GovWebService.java b/epmet-auth/src/main/java/com/epmet/service/GovWebService.java index 10d86c20b4..6bee4b24b3 100644 --- a/epmet-auth/src/main/java/com/epmet/service/GovWebService.java +++ b/epmet-auth/src/main/java/com/epmet/service/GovWebService.java @@ -18,6 +18,14 @@ public interface GovWebService { **/ UserTokenResultDTO login(GovWebLoginFormDTO formDTO); + /** + * @param formDTO + * @return + * @Author sun + * @Description PC工作端-工作人员 通过第三方系统登录 + **/ + UserTokenResultDTO loginByThirdPlatform(GovWebLoginFormDTO formDTO); + /** * 区块链系统通过用户密码认证身份 * @param mobile diff --git a/epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java b/epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java index 70bcc92338..dff5e129e5 100644 --- a/epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java +++ b/epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java @@ -102,12 +102,19 @@ public interface ThirdLoginService { * @param formDTO * @return */ - ResiDingAppLoginResDTO resiLoginDingMd(ResiDingAppLoginMdFormDTO formDTO); + ResiDingAppLoginResDTO resiLoginDingMd(DingAppLoginMdFormDTO formDTO); /** * 企业内部应用免登 文档地址:https://open.dingtalk.com/document/orgapp-server/enterprise-internal-application-logon-free * @param formDTO * @return */ - ResiDingAppLoginResDTO resiLoginInternalDing(ResiDingAppLoginMdFormDTO formDTO); + ResiDingAppLoginResDTO resiLoginInternalDing(DingAppLoginMdFormDTO formDTO); + + /** + * desc:企业内部应用 工作端登录 + * @param formDTO + * @return + */ + UserTokenResultDTO govLoginInternalDing(DingAppLoginMdFormDTO formDTO); } diff --git a/epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java b/epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java index eab142e6a5..92e1de27a5 100644 --- a/epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java +++ b/epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java @@ -100,6 +100,33 @@ public class GovWebServiceImpl implements GovWebService, ResultDataResolver { } + @Override + public UserTokenResultDTO loginByThirdPlatform(GovWebLoginFormDTO formDTO) { + formDTO.setApp(LoginConstant.APP_GOV); + formDTO.setClient(LoginConstant.CLIENT_WEB); +// //1.参数校验 +// if (!(LoginConstant.APP_GOV.equals(formDTO.getApp()) && LoginConstant.CLIENT_WEB.equals(formDTO.getClient()))) { +// logger.error("当前接口只适用于PC工作端运营管理后台"); +// throw new RenException("当前接口只适用于PC工作端运营管理后台"); +// } + //3.校验登陆账号是否存在 + //根据客户Id和手机号查询登陆用户信息(此处不需要判断登陆人是否是有效客户以及是否是客户的根管理员,前一接口获取登陆手机号对应客户列表已经判断了) + GovWebOperLoginFormDTO form = new GovWebOperLoginFormDTO(); + form.setCustomerId(formDTO.getCustomerId()); + form.setMobile(formDTO.getPhone()); + Result result = epmetUserFeignClient.getStaffIdAndPwd(form); + if (!result.success() || null == result.getData() || null == result.getData().getUserId()) { + logger.warn("根据手机号查询PC工作端登陆人员信息失败,返回10003账号不存在"); + throw new RenException(EpmetErrorCode.ERR10003.getCode()); + } + GovWebOperLoginResultDTO resultDTO = result.getData(); + + //5.生成token存到redis并返回 + UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO(); + userTokenResultDTO.setToken(this.packagingUserToken(formDTO, resultDTO.getUserId())); + return userTokenResultDTO; + } + /** * 生成PC工作端token * @author sun diff --git a/epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java b/epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java index 91812aaeda..cd3b36a5ee 100644 --- a/epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java +++ b/epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java @@ -34,11 +34,13 @@ import com.epmet.dto.dingres.V2UserGetuserinfoResDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.feign.EpmetMessageOpenFeignClient; +import com.epmet.feign.EpmetUserFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.jwt.JwtTokenProperties; import com.epmet.jwt.JwtTokenUtils; import com.epmet.redis.CaptchaRedis; +import com.epmet.service.GovWebService; import com.epmet.service.ThirdLoginService; import com.taobao.api.ApiException; import com.taobao.dingtalk.client.DingTalkClientToken; @@ -90,6 +92,10 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol private DingTalkClientToken dingTalkClientToken; @Autowired private DingTalkClientUser dingTalkClientUser; + @Autowired + private EpmetUserFeignClient epmetUserFeignClient; + @Autowired + private GovWebService govWebService; /** * @param formDTO @@ -920,7 +926,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol } @Override - public ResiDingAppLoginResDTO resiLoginDingMd(ResiDingAppLoginMdFormDTO formDTO) { + public ResiDingAppLoginResDTO resiLoginDingMd(DingAppLoginMdFormDTO formDTO) { // 获取用户手机号 log.info("1、钉钉居民端应用登录入参:" + JSON.toJSONString(formDTO)); ResiDingAppLoginResDTO resDTO = null; @@ -1020,7 +1026,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol * @return */ @Override - public ResiDingAppLoginResDTO resiLoginInternalDing(ResiDingAppLoginMdFormDTO formDTO) { + public ResiDingAppLoginResDTO resiLoginInternalDing(DingAppLoginMdFormDTO formDTO) { // 获取用户手机号 log.info("1、钉钉居民端应用登录入参:" + JSON.toJSONString(formDTO)); ResiDingAppLoginResDTO resDTO = null; @@ -1052,6 +1058,26 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol return resDTO; } + @Override + public UserTokenResultDTO govLoginInternalDing(DingAppLoginMdFormDTO formDTO) { + // 获取用户手机号 + log.info("1、钉钉居民端应用登录入参:" + JSON.toJSONString(formDTO)); + ResiDingAppLoginResDTO resDTO = null; + resDTO = new ResiDingAppLoginResDTO(); + resDTO.setCustomerId(getCurrentCustomerId()); + + // 1、获取用户手机号 + DingLoginResiFormDTO dingLoginResiFormDTO = getDingLoginResiFormDTOInternal(formDTO.getMiniAppId(), formDTO.getAuthCode()); + dingLoginResiFormDTO.setCustomerId(resDTO.getCustomerId()); + + + GovWebLoginFormDTO loginGovParam = new GovWebLoginFormDTO(); + loginGovParam.setCustomerId(dingLoginResiFormDTO.getCustomerId()); + loginGovParam.setPhone(dingLoginResiFormDTO.getMobile()); + + return govWebService.loginByThirdPlatform(loginGovParam); + } + /** * 最原始的企业内部应用开发,不授权给产品服务商 * @param miniAppId