From b49e736f0da0c1c272a9141f50f6f8d9af8f6d99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=BE=E6=96=87=E8=B1=AA?= <980287353@qq.com> Date: Wed, 11 Jan 2023 15:34:15 +0800 Subject: [PATCH] =?UTF-8?q?perf=EF=BC=9A=E8=B0=83=E6=95=B4=E6=8E=88?= =?UTF-8?q?=E6=9D=83=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../login/controller/LoginController.java | 36 +++++----- .../tiesheng/login/pojos/CodeExtraDTO.java | 36 ++++++++++ .../com/tiesheng/login/pojos/DoLoginInfo.java | 71 +++++++++++++++++++ .../login/pojos/{dto => }/UniqueIndexDTO.java | 12 ++-- .../service/TieshengLoginConfigurer.java | 5 +- .../service/impl/DefaultLoginConfigurer.java | 5 +- .../service/CorePlatformUniqueService.java | 46 ++++-------- .../core/service/TieshengWebConfigurer.java | 4 +- 8 files changed, 155 insertions(+), 60 deletions(-) create mode 100644 springboot-login/src/main/java/com/tiesheng/login/pojos/CodeExtraDTO.java create mode 100644 springboot-login/src/main/java/com/tiesheng/login/pojos/DoLoginInfo.java rename springboot-login/src/main/java/com/tiesheng/login/pojos/{dto => }/UniqueIndexDTO.java (79%) diff --git a/springboot-login/src/main/java/com/tiesheng/login/controller/LoginController.java b/springboot-login/src/main/java/com/tiesheng/login/controller/LoginController.java index 2b988ac..72e5cec 100644 --- a/springboot-login/src/main/java/com/tiesheng/login/controller/LoginController.java +++ b/springboot-login/src/main/java/com/tiesheng/login/controller/LoginController.java @@ -6,7 +6,9 @@ import cn.hutool.core.util.URLUtil; import com.alibaba.fastjson.JSON; import com.tiesheng.annotation.token.TokenIgnore; import com.tiesheng.login.config.token.bean.TokenBean; -import com.tiesheng.login.pojos.dto.UniqueIndexDTO; +import com.tiesheng.login.pojos.CodeExtraDTO; +import com.tiesheng.login.pojos.DoLoginInfo; +import com.tiesheng.login.pojos.UniqueIndexDTO; import com.tiesheng.login.service.TieshengLoginConfigurer; import com.tiesheng.platform.config.ding.PlatformDingConfig; import com.tiesheng.platform.config.ding.bean.DingJsapiSignature; @@ -51,9 +53,9 @@ public class LoginController { @GetMapping("/unique/redirect") @TokenIgnore public void uniqueIndex(UniqueIndexDTO dto, HttpServletResponse response) { - TokenBean tokenBean = tieshengLoginConfigurer.doLogin("unique_index_" + dto.getPlatform(), - dto.getNo(), dto.getPlatform(), dto.getInfo()); - tieshengLoginConfigurer.onLoginRedirect(tokenBean, dto.getExtra(), response); + TokenBean tokenBean = tieshengLoginConfigurer.doLogin(new DoLoginInfo("unique_index_web", + dto.getNo(), "web", dto.getTo(), dto.getInfo())); + tieshengLoginConfigurer.onLoginRedirect(tokenBean, dto.getTo(), dto.getExtra(), response); } @@ -66,8 +68,8 @@ public class LoginController { @PostMapping("/unique/index") @TokenIgnore public ApiResp uniqueIndex(@RequestBody UniqueIndexDTO dto) { - TokenBean tokenBean = tieshengLoginConfigurer.doLogin("unique_index_" + dto.getPlatform(), - dto.getNo(), dto.getPlatform(), dto.getInfo()); + TokenBean tokenBean = tieshengLoginConfigurer.doLogin(new DoLoginInfo("unique_index_web", + dto.getNo(), "web", dto.getTo(), dto.getInfo())); if (tokenBean == null) { throw new ApiException("登录失败"); } @@ -112,12 +114,13 @@ public class LoginController { */ @RequestMapping("/ding/oauth2/{service}") @TokenIgnore - public void dingOauth2(@PathVariable String service, String code, String extra, HttpServletResponse response) { - String ddUserId = platformDingConfig.getUserIdByCode(service, code); + public void dingOauth2(@PathVariable String service, CodeExtraDTO dto, HttpServletResponse response) { + String ddUserId = platformDingConfig.getUserIdByCode(service, dto.getCode()); DingUserInfo dingUserInfo = platformDingConfig.topapiV2UserGet(service, ddUserId); - TokenBean tokenBean = tieshengLoginConfigurer.doLogin(dingUserInfo.getAppId(), dingUserInfo.getUserid(), "ding", - JSON.toJSONString(dingUserInfo)); - tieshengLoginConfigurer.onLoginRedirect(tokenBean, extra, response); + TokenBean tokenBean = tieshengLoginConfigurer.doLogin(new DoLoginInfo(dingUserInfo.getAppId(), + dingUserInfo.getUserid(), "ding", dto.getTo(), + JSON.toJSONString(dingUserInfo))); + tieshengLoginConfigurer.onLoginRedirect(tokenBean, dto.getTo(), dto.getExtra(), response); } @@ -159,15 +162,14 @@ public class LoginController { /** * 微信授权回调 - * - * @param code */ @RequestMapping("/wxmp/oauth2/{service}") @TokenIgnore - public void wxmpOauth2(@PathVariable String service, String code, String extra, HttpServletResponse response) { - WxUserInfo wxUserInfo = platformWxmpConfig.getOAuth2AccessToken(service, code); - TokenBean tokenBean = tieshengLoginConfigurer.doLogin(wxUserInfo.getAppId(), wxUserInfo.getOpenid(), "wxmp", JSON.toJSONString(wxUserInfo)); - tieshengLoginConfigurer.onLoginRedirect(tokenBean, extra, response); + public void wxmpOauth2(@PathVariable String service, CodeExtraDTO dto, HttpServletResponse response) { + WxUserInfo wxUserInfo = platformWxmpConfig.getOAuth2AccessToken(service, dto.getCode()); + TokenBean tokenBean = tieshengLoginConfigurer.doLogin(new DoLoginInfo(wxUserInfo.getAppId(), + wxUserInfo.getOpenid(), "wxmp", dto.getTo(), JSON.toJSONString(wxUserInfo))); + tieshengLoginConfigurer.onLoginRedirect(tokenBean, dto.getTo(), dto.getExtra(), response); } diff --git a/springboot-login/src/main/java/com/tiesheng/login/pojos/CodeExtraDTO.java b/springboot-login/src/main/java/com/tiesheng/login/pojos/CodeExtraDTO.java new file mode 100644 index 0000000..491de05 --- /dev/null +++ b/springboot-login/src/main/java/com/tiesheng/login/pojos/CodeExtraDTO.java @@ -0,0 +1,36 @@ +package com.tiesheng.login.pojos; + +public class CodeExtraDTO { + + private String code; + private String extra; + private String to; + + /////////////////////////////////////////////////////////////////////////// + // setter\getter + /////////////////////////////////////////////////////////////////////////// + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getExtra() { + return extra; + } + + public void setExtra(String extra) { + this.extra = extra; + } + + public String getTo() { + return to; + } + + public void setTo(String to) { + this.to = to; + } +} diff --git a/springboot-login/src/main/java/com/tiesheng/login/pojos/DoLoginInfo.java b/springboot-login/src/main/java/com/tiesheng/login/pojos/DoLoginInfo.java new file mode 100644 index 0000000..1ba0259 --- /dev/null +++ b/springboot-login/src/main/java/com/tiesheng/login/pojos/DoLoginInfo.java @@ -0,0 +1,71 @@ +package com.tiesheng.login.pojos; + +public class DoLoginInfo { + + private String appId; + private String unique; + private String platform; + private String to; + private String info; + private String extra; + + public DoLoginInfo(String appId, String unique, String platform, String to, String info) { + this.appId = appId; + this.unique = unique; + this.platform = platform; + this.to = to; + this.info = info; + } + + /////////////////////////////////////////////////////////////////////////// + // setter\getter + /////////////////////////////////////////////////////////////////////////// + + public String getAppId() { + return appId; + } + + public void setAppId(String appId) { + this.appId = appId; + } + + public String getUnique() { + return unique; + } + + public void setUnique(String unique) { + this.unique = unique; + } + + public String getPlatform() { + return platform; + } + + public void setPlatform(String platform) { + this.platform = platform; + } + + public String getTo() { + return to; + } + + public void setTo(String to) { + this.to = to; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } + + public String getExtra() { + return extra; + } + + public void setExtra(String extra) { + this.extra = extra; + } +} diff --git a/springboot-login/src/main/java/com/tiesheng/login/pojos/dto/UniqueIndexDTO.java b/springboot-login/src/main/java/com/tiesheng/login/pojos/UniqueIndexDTO.java similarity index 79% rename from springboot-login/src/main/java/com/tiesheng/login/pojos/dto/UniqueIndexDTO.java rename to springboot-login/src/main/java/com/tiesheng/login/pojos/UniqueIndexDTO.java index b104ff4..87cd8a6 100644 --- a/springboot-login/src/main/java/com/tiesheng/login/pojos/dto/UniqueIndexDTO.java +++ b/springboot-login/src/main/java/com/tiesheng/login/pojos/UniqueIndexDTO.java @@ -1,11 +1,11 @@ -package com.tiesheng.login.pojos.dto; +package com.tiesheng.login.pojos; import cn.hutool.core.util.StrUtil; public class UniqueIndexDTO { private String no; - private String platform; + private String to; private String extra; private String info; @@ -21,12 +21,12 @@ public class UniqueIndexDTO { this.no = no; } - public String getPlatform() { - return platform; + public String getTo() { + return to; } - public void setPlatform(String platform) { - this.platform = platform; + public void setTo(String to) { + this.to = to; } public String getExtra() { diff --git a/springboot-login/src/main/java/com/tiesheng/login/service/TieshengLoginConfigurer.java b/springboot-login/src/main/java/com/tiesheng/login/service/TieshengLoginConfigurer.java index 5e03edc..24f25a4 100644 --- a/springboot-login/src/main/java/com/tiesheng/login/service/TieshengLoginConfigurer.java +++ b/springboot-login/src/main/java/com/tiesheng/login/service/TieshengLoginConfigurer.java @@ -1,6 +1,7 @@ package com.tiesheng.login.service; import com.tiesheng.login.config.token.bean.TokenBean; +import com.tiesheng.login.pojos.DoLoginInfo; import org.springframework.context.annotation.Configuration; import javax.servlet.http.HttpServletResponse; @@ -16,7 +17,7 @@ public interface TieshengLoginConfigurer { * * @return */ - TokenBean doLogin(String appId, String uniqueId, String platfrom, String info); + TokenBean doLogin(DoLoginInfo loginInfo); /** @@ -24,7 +25,7 @@ public interface TieshengLoginConfigurer { * * @param tokenBean */ - void onLoginRedirect(TokenBean bean, String extra, HttpServletResponse response); + void onLoginRedirect(TokenBean bean, String to, String extra, HttpServletResponse response); } diff --git a/springboot-login/src/main/java/com/tiesheng/login/service/impl/DefaultLoginConfigurer.java b/springboot-login/src/main/java/com/tiesheng/login/service/impl/DefaultLoginConfigurer.java index 0d3aa62..0bb8625 100644 --- a/springboot-login/src/main/java/com/tiesheng/login/service/impl/DefaultLoginConfigurer.java +++ b/springboot-login/src/main/java/com/tiesheng/login/service/impl/DefaultLoginConfigurer.java @@ -1,6 +1,7 @@ package com.tiesheng.login.service.impl; import com.tiesheng.login.config.token.bean.TokenBean; +import com.tiesheng.login.pojos.DoLoginInfo; import com.tiesheng.login.service.TieshengLoginConfigurer; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Configuration; @@ -15,12 +16,12 @@ import javax.servlet.http.HttpServletResponse; public class DefaultLoginConfigurer implements TieshengLoginConfigurer { @Override - public TokenBean doLogin(String appId, String uniqueId, String platfrom, String info) { + public TokenBean doLogin(DoLoginInfo loginInfo) { return null; } @Override - public void onLoginRedirect(TokenBean bean, String extra, HttpServletResponse response) { + public void onLoginRedirect(TokenBean bean, String to, String extra, HttpServletResponse response) { } } diff --git a/springboot-web/src/main/java/com/tiesheng/core/service/CorePlatformUniqueService.java b/springboot-web/src/main/java/com/tiesheng/core/service/CorePlatformUniqueService.java index b45df1a..fb1a070 100644 --- a/springboot-web/src/main/java/com/tiesheng/core/service/CorePlatformUniqueService.java +++ b/springboot-web/src/main/java/com/tiesheng/core/service/CorePlatformUniqueService.java @@ -4,8 +4,9 @@ import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.tiesheng.core.mapper.CorePlatformUniqueMapper; import com.tiesheng.core.pojos.dao.CorePlatformUnique; -import com.tiesheng.login.service.TieshengLoginConfigurer; import com.tiesheng.login.config.token.bean.TokenBean; +import com.tiesheng.login.pojos.DoLoginInfo; +import com.tiesheng.login.service.TieshengLoginConfigurer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -24,11 +25,18 @@ public class CorePlatformUniqueService extends TsServiceBase queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("app_id", appId); - queryWrapper.eq("unique_id", uniqueId); - queryWrapper.eq("platform", platform); - queryWrapper.last("limit 1"); - CorePlatformUnique platformUnique = getOne(queryWrapper); - if (platformUnique == null) { - platformUnique = new CorePlatformUnique(); - platformUnique.setAppId(appId); - platformUnique.setUniqueId(uniqueId); - platformUnique.setPlatform(platform); - } - return platformUnique; + public void onLoginRedirect(TokenBean bean, String to, String extra, HttpServletResponse response) { + tieshengWebConfigurer.loginConfigurer().redirect(bean, to, extra, response); } diff --git a/springboot-web/src/main/java/com/tiesheng/core/service/TieshengWebConfigurer.java b/springboot-web/src/main/java/com/tiesheng/core/service/TieshengWebConfigurer.java index 311e1cc..40c3ee6 100644 --- a/springboot-web/src/main/java/com/tiesheng/core/service/TieshengWebConfigurer.java +++ b/springboot-web/src/main/java/com/tiesheng/core/service/TieshengWebConfigurer.java @@ -71,7 +71,7 @@ public interface TieshengWebConfigurer { * @param platformUnique * @return */ - TokenBean doLogin(CorePlatformUnique platformUnique); + TokenBean doLogin(CorePlatformUnique platformUnique, String to); /** @@ -81,7 +81,7 @@ public interface TieshengWebConfigurer { * @param extra * @param response */ - void redirect(TokenBean bean, String extra, HttpServletResponse response); + void redirect(TokenBean bean, String to, String extra, HttpServletResponse response); }