diff --git a/springboot-login/src/main/java/com/tiesheng/login/config/zust/CasLoginDTO.java b/springboot-login/src/main/java/com/tiesheng/login/config/zust/CasLoginDTO.java deleted file mode 100644 index 19d2bea..0000000 --- a/springboot-login/src/main/java/com/tiesheng/login/config/zust/CasLoginDTO.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.tiesheng.login.config.zust; - -public class CasLoginDTO { - - private String data; - - /** - * 工号 - */ - private String casUser; - - /** - * 用户容器 - */ - private String casUserContainerId; - - /** - * 用户姓名 - */ - private String casUserCn; - - /** - * 用户别名 - */ - private String casUserAlias; - /** - * 用户所在组 - */ - private String casUserMemberOf; - /** - * 用户性别 - */ - private String casUserGender; - - /////////////////////////////////////////////////////////////////////////// - // setter\getter - /////////////////////////////////////////////////////////////////////////// - - public String getData() { - return data; - } - - public void setData(String data) { - this.data = data; - } - - public String getCasUser() { - return casUser; - } - - public void setCasUser(String casUser) { - this.casUser = casUser; - } - - public String getCasUserContainerId() { - return casUserContainerId; - } - - public void setCasUserContainerId(String casUserContainerId) { - this.casUserContainerId = casUserContainerId; - } - - public String getCasUserCn() { - return casUserCn; - } - - public void setCasUserCn(String casUserCn) { - this.casUserCn = casUserCn; - } - - public String getCasUserAlias() { - return casUserAlias; - } - - public void setCasUserAlias(String casUserAlias) { - this.casUserAlias = casUserAlias; - } - - public String getCasUserMemberOf() { - return casUserMemberOf; - } - - public void setCasUserMemberOf(String casUserMemberOf) { - this.casUserMemberOf = casUserMemberOf; - } - - public String getCasUserGender() { - return casUserGender; - } - - public void setCasUserGender(String casUserGender) { - this.casUserGender = casUserGender; - } -} 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 72e5cec..8a2a62b 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 @@ -9,11 +9,14 @@ import com.tiesheng.login.config.token.bean.TokenBean; import com.tiesheng.login.pojos.CodeExtraDTO; import com.tiesheng.login.pojos.DoLoginInfo; import com.tiesheng.login.pojos.UniqueIndexDTO; +import com.tiesheng.login.pojos.WxminiLoginVo; import com.tiesheng.login.service.TieshengLoginConfigurer; import com.tiesheng.platform.config.ding.PlatformDingConfig; import com.tiesheng.platform.config.ding.bean.DingJsapiSignature; import com.tiesheng.platform.config.ding.bean.DingUserInfo; +import com.tiesheng.platform.config.wxmini.PlatformWxminiConfig; import com.tiesheng.platform.config.wxmp.PlatformWxmpConfig; +import com.tiesheng.platform.config.wxmp.bean.WxConfigBean; import com.tiesheng.platform.config.wxmp.bean.WxJsapiSignature; import com.tiesheng.platform.config.wxmp.bean.WxUserInfo; import com.tiesheng.util.config.GlobalConfig; @@ -40,6 +43,8 @@ public class LoginController { @Autowired PlatformDingConfig platformDingConfig; @Autowired + PlatformWxminiConfig platformWxminiConfig; + @Autowired TieshengLoginConfigurer tieshengLoginConfigurer; @Autowired GlobalConfig globalConfig; @@ -186,5 +191,30 @@ public class LoginController { return ApiResp.respOK(jsapiSignature); } + /////////////////////////////////////////////////////////////////////////// + // 小程序相关 + /////////////////////////////////////////////////////////////////////////// + + /** + * 微信小程序登录 + * + * @return + */ + @RequestMapping("/wxmini/index/{service}") + @TokenIgnore + public ApiResp wxminiIndex(@PathVariable String service, String code) { + String openid = platformWxminiConfig.jscode2session(service, code); + WxConfigBean configBean = platformWxminiConfig.getConfigBean(service); + TokenBean tokenBean = tieshengLoginConfigurer.doLogin(new DoLoginInfo(configBean.getAppId(), + openid, "wxmini", "mini", "{}")); + + WxminiLoginVo loginVo = new WxminiLoginVo(); + loginVo.setOpenid(openid); + if (tokenBean != null) { + loginVo.setToken(tokenBean.toToken()); + } + return ApiResp.respOK(loginVo); + } + } diff --git a/springboot-login/src/main/java/com/tiesheng/login/pojos/WxminiLoginVo.java b/springboot-login/src/main/java/com/tiesheng/login/pojos/WxminiLoginVo.java new file mode 100644 index 0000000..48db530 --- /dev/null +++ b/springboot-login/src/main/java/com/tiesheng/login/pojos/WxminiLoginVo.java @@ -0,0 +1,27 @@ +package com.tiesheng.login.pojos; + +public class WxminiLoginVo { + + private String openid; + private String token; + + /////////////////////////////////////////////////////////////////////////// + // setter\getter + /////////////////////////////////////////////////////////////////////////// + + public String getOpenid() { + return openid; + } + + public void setOpenid(String openid) { + this.openid = openid; + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } +} diff --git a/springboot-platform/src/main/java/com/tiesheng/platform/config/wxmini/PlatformWxminiConfig.java b/springboot-platform/src/main/java/com/tiesheng/platform/config/wxmini/PlatformWxminiConfig.java new file mode 100644 index 0000000..878aa7b --- /dev/null +++ b/springboot-platform/src/main/java/com/tiesheng/platform/config/wxmini/PlatformWxminiConfig.java @@ -0,0 +1,95 @@ +package com.tiesheng.platform.config.wxmini; + + +import cn.hutool.core.map.MapUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.tiesheng.platform.config.wxmp.bean.WxConfigBean; +import com.tiesheng.util.exception.ApiException; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +import java.util.Map; + +/** + * @author hao + */ +@Configuration +@ConfigurationProperties(prefix = "platform.wxmini") +public class PlatformWxminiConfig { + + private WxConfigBean global; + private Map configs = MapUtil.newHashMap(); + + /** + * 获取一个DingConfigBean + * + * @param service + * @return + */ + public WxConfigBean getConfigBean(String service) { + WxConfigBean bean = configs.get(service); + if (bean == null) { + bean = global; + } + if (bean == null) { + throw new ApiException("该服务未配置微信小程序授权"); + } + return bean; + } + + /////////////////////////////////////////////////////////////////////////// + // 业务逻辑 + /////////////////////////////////////////////////////////////////////////// + + /** + * 通过code获取openid + * + * @return + */ + public String jscode2session(String service, String code) { + WxConfigBean configBean = getConfigBean(service); + String body = HttpRequest.get("https://api.weixin.qq.com/sns/jscode2session" + + "?appid=" + configBean.getAppId() + + "&secret=" + configBean.getAppSecret() + + "&js_code=" + code + "&grant_type=authorization_code").execute().body(); + JSONObject object = JSONUtil.parseObj(body); + return object.getStr("openid"); + } + + /** + * 获取access_token + * + * @return + */ + public String getAccessToken(String service) { + WxConfigBean configBean = getConfigBean(service); + String body = HttpRequest.get("https://api.weixin.qq.com/cgi-bin/token" + + "?grant_type=client_credential&appid=" + configBean.getAppId() + + "&secret=" + configBean.getAppSecret()).execute().body(); + JSONObject object = JSONUtil.parseObj(body); + return object.getStr("access_token"); + } + + + /////////////////////////////////////////////////////////////////////////// + // setter\getter + /////////////////////////////////////////////////////////////////////////// + + public Map getConfigs() { + return configs; + } + + public void setConfigs(Map configs) { + this.configs = configs; + } + + public WxConfigBean getGlobal() { + return global; + } + + public void setGlobal(WxConfigBean global) { + this.global = global; + } +}