ソースを参照

合并碧合与微信登录接口

huyy 7 年 前
コミット
0894f5616f
21 ファイル変更266 行追加103 行削除
  1. 0 28
      sso-server/src/main/java/com/uas/sso/bihe/service/BiHeService.java
  2. 59 10
      sso-server/src/main/java/com/uas/sso/controller/LoginController.java
  3. 2 2
      sso-server/src/main/java/com/uas/sso/controller/PersonalRegisterController.java
  4. 2 2
      sso-server/src/main/java/com/uas/sso/controller/UserspaceRegisterController.java
  5. 41 0
      sso-server/src/main/java/com/uas/sso/foreign/ForeignFactory.java
  6. 14 0
      sso-server/src/main/java/com/uas/sso/foreign/ForeignInfo.java
  7. 25 0
      sso-server/src/main/java/com/uas/sso/foreign/ForeignService.java
  8. 6 10
      sso-server/src/main/java/com/uas/sso/foreign/bihe/controller/BiHeController.java
  9. 19 2
      sso-server/src/main/java/com/uas/sso/foreign/bihe/entity/BiHeInfo.java
  10. 1 1
      sso-server/src/main/java/com/uas/sso/foreign/bihe/entity/BiHeResult.java
  11. 1 1
      sso-server/src/main/java/com/uas/sso/foreign/bihe/entity/BiHeUserInfo.java
  12. 15 0
      sso-server/src/main/java/com/uas/sso/foreign/bihe/service/BiHeService.java
  13. 18 12
      sso-server/src/main/java/com/uas/sso/foreign/bihe/service/impl/BiHeServiceImpl.java
  14. 6 5
      sso-server/src/main/java/com/uas/sso/foreign/weixin/controller/WeChatController.java
  15. 19 2
      sso-server/src/main/java/com/uas/sso/foreign/weixin/entity/OAuthInfo.java
  16. 1 1
      sso-server/src/main/java/com/uas/sso/foreign/weixin/entity/UserInfo.java
  17. 14 0
      sso-server/src/main/java/com/uas/sso/foreign/weixin/service/WeChatService.java
  18. 6 6
      sso-server/src/main/java/com/uas/sso/foreign/weixin/service/impl/WeChatServiceImpl.java
  19. 3 0
      sso-server/src/main/java/com/uas/sso/service/UserService.java
  20. 14 0
      sso-server/src/main/java/com/uas/sso/service/impl/UserServiceImpl.java
  21. 0 21
      sso-server/src/main/java/com/uas/sso/weixin/service/WeChatService.java

+ 0 - 28
sso-server/src/main/java/com/uas/sso/bihe/service/BiHeService.java

@@ -1,28 +0,0 @@
-package com.uas.sso.bihe.service;
-
-import com.uas.sso.bihe.entity.BiHeInfo;
-import com.uas.sso.bihe.entity.BiHeResult;
-import com.uas.sso.bihe.entity.BiHeUserInfo;
-import org.springframework.stereotype.Service;
-
-/**
- * @author: huyy
- * @date: 2018/7/18 10:54
- */
-@Service
-public interface BiHeService {
-    /**
-     * 获取accessToken接口
-     * @param code
-     * @return
-     */
-    BiHeResult<BiHeInfo> getOAuthInfoByCode(String code);
-
-    /**
-     * 获取用户信息
-     * @param accessToken
-     * @param openId
-     * @return
-     */
-    BiHeResult<BiHeUserInfo> getUserInfoByAccessToken(String accessToken, String openId);
-}

+ 59 - 10
sso-server/src/main/java/com/uas/sso/controller/LoginController.java

@@ -4,9 +4,12 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.account.AccountConfig;
 import com.uas.sso.*;
-import com.uas.sso.bihe.entity.BiHeInfo;
-import com.uas.sso.bihe.entity.BiHeResult;
-import com.uas.sso.bihe.service.BiHeService;
+import com.uas.sso.foreign.ForeignFactory;
+import com.uas.sso.foreign.ForeignInfo;
+import com.uas.sso.foreign.ForeignService;
+import com.uas.sso.foreign.bihe.entity.BiHeInfo;
+import com.uas.sso.foreign.bihe.entity.BiHeResult;
+import com.uas.sso.foreign.bihe.service.BiHeService;
 import com.uas.sso.common.util.HttpUtil;
 import com.uas.sso.core.Const;
 import com.uas.sso.entity.*;
@@ -14,8 +17,8 @@ import com.uas.sso.entity.Token;
 import com.uas.sso.service.*;
 import com.uas.sso.util.*;
 import com.uas.sso.web.waf.request.WafRequestWrapper;
-import com.uas.sso.weixin.entity.OAuthInfo;
-import com.uas.sso.weixin.service.WeChatService;
+import com.uas.sso.foreign.weixin.entity.OAuthInfo;
+import com.uas.sso.foreign.weixin.service.WeChatService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.Assert;
@@ -842,9 +845,9 @@ public class LoginController extends BaseController {
     public ModelMap bhLogin(@RequestParam(defaultValue = "city") String appId, String code) {
         // 获取用户信息
         User user = null;
-        BiHeResult<BiHeInfo> oAuthInfo = biHeService.getOAuthInfoByCode(code);
+        BiHeInfo oAuthInfo = biHeService.getOAuthInfoByCode(code);
 
-        String accessToken = Optional.ofNullable(oAuthInfo).map(BiHeResult::getData).map(BiHeInfo::getAccessToken).orElse(null);
+        String accessToken = Optional.ofNullable(oAuthInfo).map(BiHeInfo::getAccessToken).orElse(null);
         if (StringUtils.isEmpty(accessToken)) {
             Long userUU = (Long) request.getSession().getAttribute("userUU");
             if (userUU == null) {
@@ -852,13 +855,59 @@ public class LoginController extends BaseController {
             }
             user = new User(userUU);
         } else {
-            user = userService.findByBhOpenId(oAuthInfo.getData().getOpenId());
+            user = userService.findByBhOpenId(oAuthInfo.getOpenId());
             // user为空提示未注册,不为空则放入session绑定用户使用
             if (user == null) {
                 // 提示前端用户微信未绑定账号
-                ModelMap map = new ModelMap("data", oAuthInfo.getData());
+                ModelMap map = new ModelMap("data", oAuthInfo);
+                map.put("type", "bihe");
+                Token token = new Token(map, oAuthInfo.getExpires_in());
+                tokenService.save(token);
+                ModelMap data = new ModelMap("hasRegister", false);
+                data.put("token", token.getId());
+                return success(data);
+            }
+            request.getSession().setAttribute("userUU", user.getUserUU());
+        }
+
+        // 登录
+        WafRequestWrapper wr = new WafRequestWrapper(request);
+        String spaceUU = wr.getParameter("spaceUU");
+        String returnUrl = wr.getParameter("returnUrl");
+        String baseUrl = wr.getParameter("baseUrl");
+        request.getSession().setAttribute("baseUrl", baseUrl);
+        return success(login(user.getUserUU(), appId, spaceUU, returnUrl));
+    }
+
+
+    /**
+     * 碧合登录接口
+     * @param appId 应用id(优软云应用id)
+     * @param code 第三方获取用户信息code
+     * @return
+     */
+    @RequestMapping(value = "/foreignLogin", method = RequestMethod.POST)
+    public ModelMap foreignLogin(@RequestParam(defaultValue = "city") String appId, String code, String type) {
+        // 获取用户信息
+        User user = null;
+        ForeignService foreignService = ForeignFactory.getForeignService(type);
+        ForeignInfo foreignInfo = foreignService.getOAuthInfoByCode(code);
+
+        String accessToken = Optional.ofNullable(foreignInfo).map(ForeignInfo::getForeignAccessToken).orElse(null);
+        if (StringUtils.isEmpty(accessToken)) {
+            Long userUU = (Long) request.getSession().getAttribute("userUU");
+            if (userUU == null) {
+                return error("验证信息过期");
+            }
+            user = new User(userUU);
+        } else {
+            user = userService.findByForeignId(foreignInfo);
+            // user为空提示未注册,不为空则放入session绑定用户使用
+            if (user == null) {
+                // 提示前端用户微信未绑定账号
+                ModelMap map = new ModelMap("data", foreignInfo);
                 map.put("type", "bihe");
-                Token token = new Token(map, oAuthInfo.getData().getExpires_in());
+                Token token = new Token(map, foreignInfo.getForeignExpiresIn());
                 tokenService.save(token);
                 ModelMap data = new ModelMap("hasRegister", false);
                 data.put("token", token.getId());

+ 2 - 2
sso-server/src/main/java/com/uas/sso/controller/PersonalRegisterController.java

@@ -3,7 +3,7 @@ package com.uas.sso.controller;
 import com.alibaba.fastjson.JSON;
 import com.uas.sso.SSOHelper;
 import com.uas.sso.SSOToken;
-import com.uas.sso.bihe.entity.BiHeInfo;
+import com.uas.sso.foreign.bihe.entity.BiHeInfo;
 import com.uas.sso.core.Step;
 import com.uas.sso.core.Type;
 import com.uas.sso.core.PasswordStrength;
@@ -17,7 +17,7 @@ import com.uas.sso.service.AppService;
 import com.uas.sso.service.PersonalAccountService;
 import com.uas.sso.service.UserService;
 import com.uas.sso.util.PasswordLevelUtils;
-import com.uas.sso.weixin.entity.OAuthInfo;
+import com.uas.sso.foreign.weixin.entity.OAuthInfo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;

+ 2 - 2
sso-server/src/main/java/com/uas/sso/controller/UserspaceRegisterController.java

@@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.uas.sso.AccountConfig;
 import com.uas.sso.SSOHelper;
 import com.uas.sso.SSOToken;
-import com.uas.sso.bihe.entity.BiHeInfo;
+import com.uas.sso.foreign.bihe.entity.BiHeInfo;
 import com.uas.sso.core.PasswordStrength;
 import com.uas.sso.core.Status;
 import com.uas.sso.core.Step;
@@ -17,7 +17,7 @@ import com.uas.sso.service.UserAccountService;
 import com.uas.sso.service.UserService;
 import com.uas.sso.service.UserspaceService;
 import com.uas.sso.util.PasswordLevelUtils;
-import com.uas.sso.weixin.entity.OAuthInfo;
+import com.uas.sso.foreign.weixin.entity.OAuthInfo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;

+ 41 - 0
sso-server/src/main/java/com/uas/sso/foreign/ForeignFactory.java

@@ -0,0 +1,41 @@
+package com.uas.sso.foreign;
+
+import com.uas.sso.exception.VisibleError;
+import com.uas.sso.foreign.bihe.service.BiHeService;
+import com.uas.sso.foreign.weixin.service.WeChatService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+/**
+ * @author: huyy
+ * @date: 2018/7/26 16:07
+ */
+@Component
+public class ForeignFactory {
+
+    @Autowired
+    private BiHeService biHeService;
+
+    @Autowired
+    private WeChatService weChatService;
+
+    private static ForeignFactory foreignFactory;
+
+    @PostConstruct
+    public void init() {
+        foreignFactory = this;
+    }
+
+    public static ForeignService getForeignService(String type) {
+        switch (type) {
+            case "bh":
+                return foreignFactory.biHeService;
+            case "wx":
+                return foreignFactory.weChatService;
+            default:
+                throw new VisibleError("类型错误");
+        }
+    }
+}

+ 14 - 0
sso-server/src/main/java/com/uas/sso/foreign/ForeignInfo.java

@@ -0,0 +1,14 @@
+package com.uas.sso.foreign;
+
+/**
+ * @author: huyy
+ * @date: 2018/7/26 16:22
+ */
+public abstract class ForeignInfo {
+
+    public abstract String getForeignId();
+
+    public abstract String getForeignAccessToken();
+
+    public abstract int getForeignExpiresIn();
+}

+ 25 - 0
sso-server/src/main/java/com/uas/sso/foreign/ForeignService.java

@@ -0,0 +1,25 @@
+package com.uas.sso.foreign;
+
+import com.uas.sso.foreign.weixin.entity.OAuthInfo;
+import com.uas.sso.foreign.weixin.entity.UserInfo;
+
+/**
+ * @author: huyy
+ * @date: 2018/7/26 15:40
+ */
+public interface ForeignService<T extends ForeignInfo, V> {
+
+    /**
+     *
+     * @param code
+     * @return
+     */
+    T getOAuthInfoByCode(String code);
+
+    /**
+     *
+     * @param oAuthInfo
+     * @return
+     */
+    V findUserByUnionid(T oAuthInfo);
+}

+ 6 - 10
sso-server/src/main/java/com/uas/sso/bihe/controller/BiHeController.java → sso-server/src/main/java/com/uas/sso/foreign/bihe/controller/BiHeController.java

@@ -1,9 +1,8 @@
-package com.uas.sso.bihe.controller;
+package com.uas.sso.foreign.bihe.controller;
 
-import com.uas.sso.bihe.entity.BiHeInfo;
-import com.uas.sso.bihe.entity.BiHeResult;
-import com.uas.sso.bihe.entity.BiHeUserInfo;
-import com.uas.sso.bihe.service.BiHeService;
+import com.uas.sso.foreign.bihe.entity.BiHeInfo;
+import com.uas.sso.foreign.bihe.entity.BiHeUserInfo;
+import com.uas.sso.foreign.bihe.service.BiHeService;
 import com.uas.sso.controller.BaseController;
 import com.uas.sso.entity.Token;
 import com.uas.sso.entity.User;
@@ -80,10 +79,7 @@ public class BiHeController extends BaseController {
         }
 
         // 根据AccessToken获取用户信息
-        BiHeResult<BiHeUserInfo> userRoot = biHeService.getUserInfoByAccessToken(biHeInfo.get().getAccessToken(), biHeInfo.get().getOpenId());
-        if (!BiHeResult.Code.OK.getCode().equals(userRoot.getCode())) {
-            return error(userRoot.getMsg());
-        }
-        return success(userRoot.getData());
+        BiHeUserInfo userRoot = biHeService.findUserByUnionid(biHeInfo.get());
+        return success(userRoot);
     }
 }

+ 19 - 2
sso-server/src/main/java/com/uas/sso/bihe/entity/BiHeInfo.java → sso-server/src/main/java/com/uas/sso/foreign/bihe/entity/BiHeInfo.java

@@ -1,4 +1,6 @@
-package com.uas.sso.bihe.entity;
+package com.uas.sso.foreign.bihe.entity;
+
+import com.uas.sso.foreign.ForeignInfo;
 
 import java.io.Serializable;
 
@@ -7,7 +9,7 @@ import java.io.Serializable;
  * @author: huyy
  * @date: 2018/7/18 10:57
  */
-public class BiHeInfo implements Serializable {
+public class BiHeInfo extends ForeignInfo implements Serializable {
 
     private static final long serialVersionUID = 1896122107098294138L;
 
@@ -50,4 +52,19 @@ public class BiHeInfo implements Serializable {
     public void setOpenId(String openId) {
         this.openId = openId;
     }
+
+    @Override
+    public String getForeignId() {
+        return this.getOpenId();
+    }
+
+    @Override
+    public String getForeignAccessToken() {
+        return this.getAccessToken();
+    }
+
+    @Override
+    public int getForeignExpiresIn() {
+        return this.getExpires_in();
+    }
 }

+ 1 - 1
sso-server/src/main/java/com/uas/sso/bihe/entity/BiHeResult.java → sso-server/src/main/java/com/uas/sso/foreign/bihe/entity/BiHeResult.java

@@ -1,4 +1,4 @@
-package com.uas.sso.bihe.entity;
+package com.uas.sso.foreign.bihe.entity;
 
 /**
  * 获取令牌access_token

+ 1 - 1
sso-server/src/main/java/com/uas/sso/bihe/entity/BiHeUserInfo.java → sso-server/src/main/java/com/uas/sso/foreign/bihe/entity/BiHeUserInfo.java

@@ -1,4 +1,4 @@
-package com.uas.sso.bihe.entity;
+package com.uas.sso.foreign.bihe.entity;
 
 import java.io.Serializable;
 

+ 15 - 0
sso-server/src/main/java/com/uas/sso/foreign/bihe/service/BiHeService.java

@@ -0,0 +1,15 @@
+package com.uas.sso.foreign.bihe.service;
+
+import com.uas.sso.foreign.ForeignService;
+import com.uas.sso.foreign.bihe.entity.BiHeInfo;
+import com.uas.sso.foreign.bihe.entity.BiHeUserInfo;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author: huyy
+ * @date: 2018/7/18 10:54
+ */
+@Service
+public interface BiHeService extends ForeignService<BiHeInfo, BiHeUserInfo> {
+
+}

+ 18 - 12
sso-server/src/main/java/com/uas/sso/bihe/service/impl/BiHeServiceImpl.java → sso-server/src/main/java/com/uas/sso/foreign/bihe/service/impl/BiHeServiceImpl.java

@@ -1,11 +1,11 @@
-package com.uas.sso.bihe.service.impl;
+package com.uas.sso.foreign.bihe.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.TypeReference;
-import com.uas.sso.bihe.entity.BiHeInfo;
-import com.uas.sso.bihe.entity.BiHeResult;
-import com.uas.sso.bihe.entity.BiHeUserInfo;
-import com.uas.sso.bihe.service.BiHeService;
+import com.uas.sso.foreign.bihe.entity.BiHeInfo;
+import com.uas.sso.foreign.bihe.entity.BiHeResult;
+import com.uas.sso.foreign.bihe.entity.BiHeUserInfo;
+import com.uas.sso.foreign.bihe.service.BiHeService;
 import com.uas.sso.core.BHParam;
 import com.uas.sso.exception.VisibleError;
 import com.uas.sso.util.HttpUtil;
@@ -26,7 +26,7 @@ public class BiHeServiceImpl implements BiHeService {
      * @return
      */
     @Override
-    public BiHeResult<BiHeInfo> getOAuthInfoByCode(String code){
+    public BiHeInfo getOAuthInfoByCode(String code){
         String url = "https://opengwtest.bgycc.com/open/oauth/token";
         Map<String, String> map = new HashMap<>(3);
         map.put("code", code);
@@ -39,20 +39,23 @@ public class BiHeServiceImpl implements BiHeService {
             throw new VisibleError(e.getMessage());
         }
         BiHeResult<BiHeInfo> biHeResult = JSON.parseObject(content, new TypeReference<BiHeResult<BiHeInfo>>() {});
-        return biHeResult;
+        if (!BiHeResult.Code.OK.getCode().equals(biHeResult.getCode())) {
+            throw new VisibleError(biHeResult.getMsg());
+        }
+        return biHeResult.getData();
     }
 
     /**
      * 获取用户信息
-     * @param accessToken
+     * @param
      * @return
      */
     @Override
-    public BiHeResult<BiHeUserInfo> getUserInfoByAccessToken(String accessToken, String openId) {
+    public BiHeUserInfo findUserByUnionid(BiHeInfo bihinfo) {
         String url = "https://opengwtest.bgycc.com/open/open/user";
         Map<String, String>map = new HashMap<>(3);
-        map.put("accessToken", accessToken);
-        map.put("openId", openId);
+        map.put("accessToken", bihinfo.getAccessToken());
+        map.put("openId", bihinfo.getOpenId());
         map.put("appId", BHParam.DEFAULT_APPID);
         String content;
         try{
@@ -61,7 +64,10 @@ public class BiHeServiceImpl implements BiHeService {
             throw new VisibleError(e.getMessage());
         }
         BiHeResult<BiHeUserInfo> userRoot = JSON.parseObject(content, BiHeResult.class);
-        return userRoot;
+        if (!BiHeResult.Code.OK.getCode().equals(userRoot.getCode())) {
+            throw new VisibleError(userRoot.getMsg());
+        }
+        return userRoot.getData();
     }
 
 

+ 6 - 5
sso-server/src/main/java/com/uas/sso/weixin/controller/WeChatController.java → sso-server/src/main/java/com/uas/sso/foreign/weixin/controller/WeChatController.java

@@ -1,15 +1,15 @@
-package com.uas.sso.weixin.controller;
+package com.uas.sso.foreign.weixin.controller;
 
 import com.uas.sso.controller.BaseController;
 import com.uas.sso.core.WXParam;
 import com.uas.sso.entity.App;
 import com.uas.sso.entity.User;
 import com.uas.sso.service.AppService;
-import com.uas.sso.weixin.entity.OAuthInfo;
+import com.uas.sso.foreign.weixin.entity.OAuthInfo;
 import com.uas.sso.entity.Token;
 import com.uas.sso.service.UserService;
-import com.uas.sso.weixin.entity.UserInfo;
-import com.uas.sso.weixin.service.WeChatService;
+import com.uas.sso.foreign.weixin.entity.UserInfo;
+import com.uas.sso.foreign.weixin.service.WeChatService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.Assert;
@@ -43,6 +43,7 @@ public class WeChatController extends BaseController {
     @RequestMapping("/getQrUrl")
     public ModelMap getQrUrl(@RequestParam(defaultValue = "sso") String appId, @RequestParam String url) {
         try {
+            url = url + (url.contains("?") ?  "&" : "?") + "type=wx";
             url = URLEncoder.encode(url, "utf8");
         } catch (UnsupportedEncodingException e) {
             throw new RuntimeException("程序编码异常");
@@ -107,7 +108,7 @@ public class WeChatController extends BaseController {
             return error("参数错误,绑定失败");
         }
 
-        UserInfo userInfo = weChatService.findUserByUnionid(oAuthInfo.get().getUnionid(), oAuthInfo.get().getAccess_token());
+        UserInfo userInfo = weChatService.findUserByUnionid(oAuthInfo.get());
         return success(userInfo);
     }
 }

+ 19 - 2
sso-server/src/main/java/com/uas/sso/weixin/entity/OAuthInfo.java → sso-server/src/main/java/com/uas/sso/foreign/weixin/entity/OAuthInfo.java

@@ -1,4 +1,6 @@
-package com.uas.sso.weixin.entity;
+package com.uas.sso.foreign.weixin.entity;
+
+import com.uas.sso.foreign.ForeignInfo;
 
 import java.io.Serializable;
 
@@ -7,7 +9,7 @@ import java.io.Serializable;
  * @create 2018-06-28 14:18
  * @desc 微信用户登录信息
  **/
-public class OAuthInfo implements Serializable{
+public class OAuthInfo extends ForeignInfo implements Serializable{
 
     private static final long serialVersionUID = 1L;
 
@@ -70,4 +72,19 @@ public class OAuthInfo implements Serializable{
     public void setUnionid(String unionid) {
         this.unionid = unionid;
     }
+
+    @Override
+    public String getForeignId() {
+        return this.getUnionid();
+    }
+
+    @Override
+    public String getForeignAccessToken() {
+        return this.getAccess_token();
+    }
+
+    @Override
+    public int getForeignExpiresIn() {
+        return this.getExpires_in();
+    }
 }

+ 1 - 1
sso-server/src/main/java/com/uas/sso/weixin/entity/UserInfo.java → sso-server/src/main/java/com/uas/sso/foreign/weixin/entity/UserInfo.java

@@ -1,4 +1,4 @@
-package com.uas.sso.weixin.entity;
+package com.uas.sso.foreign.weixin.entity;
 
 import java.util.List;
 

+ 14 - 0
sso-server/src/main/java/com/uas/sso/foreign/weixin/service/WeChatService.java

@@ -0,0 +1,14 @@
+package com.uas.sso.foreign.weixin.service;
+
+import com.uas.sso.foreign.ForeignService;
+import com.uas.sso.foreign.weixin.entity.OAuthInfo;
+import com.uas.sso.foreign.weixin.entity.UserInfo;
+
+/**
+ * @author wangmh
+ * @create 2018-06-11 16:54
+ * @desc 微信服务
+ **/
+public interface WeChatService extends ForeignService<OAuthInfo, UserInfo> {
+
+}

+ 6 - 6
sso-server/src/main/java/com/uas/sso/weixin/service/impl/WeChatServiceImpl.java → sso-server/src/main/java/com/uas/sso/foreign/weixin/service/impl/WeChatServiceImpl.java

@@ -1,11 +1,11 @@
-package com.uas.sso.weixin.service.impl;
+package com.uas.sso.foreign.weixin.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.uas.sso.common.util.HttpUtil;
 import com.uas.sso.core.WXParam;
-import com.uas.sso.weixin.entity.OAuthInfo;
-import com.uas.sso.weixin.entity.UserInfo;
-import com.uas.sso.weixin.service.WeChatService;
+import com.uas.sso.foreign.weixin.entity.OAuthInfo;
+import com.uas.sso.foreign.weixin.entity.UserInfo;
+import com.uas.sso.foreign.weixin.service.WeChatService;
 import org.springframework.stereotype.Service;
 
 import static com.uas.sso.common.util.HttpUtil.doGet;
@@ -38,9 +38,9 @@ public class WeChatServiceImpl implements WeChatService {
     }
 
     @Override
-    public UserInfo findUserByUnionid(String unionid, String access_token) {
+    public UserInfo findUserByUnionid(OAuthInfo oAuthInfo) {
         String url = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID";
-        url = url.replace("ACCESS_TOKEN", access_token).replace("OPENID", unionid);
+        url = url.replace("ACCESS_TOKEN", oAuthInfo.getAccess_token()).replace("OPENID", oAuthInfo.getOpenid());
         try {
             HttpUtil.ResponseWrap res = HttpUtil.doGet(url);
             if (res.getContent() != null) {

+ 3 - 0
sso-server/src/main/java/com/uas/sso/service/UserService.java

@@ -4,6 +4,7 @@ import com.uas.sso.entity.User;
 import com.uas.sso.entity.UserQuestion;
 import com.uas.sso.entity.UserRecord;
 import com.uas.sso.entity.UserSpaceDetailInfo;
+import com.uas.sso.foreign.ForeignInfo;
 import org.springframework.data.domain.Page;
 
 import java.sql.Timestamp;
@@ -357,4 +358,6 @@ public interface UserService {
      * @param openId 用户微信唯一标志
      */
     User bindBhOpenId(String username, String password, String openId);
+
+    User findByForeignId(ForeignInfo foreignInfo);
 }

+ 14 - 0
sso-server/src/main/java/com/uas/sso/service/impl/UserServiceImpl.java

@@ -11,6 +11,9 @@ import com.uas.sso.dao.UserDao;
 import com.uas.sso.dao.UserRecordDao;
 import com.uas.sso.entity.*;
 import com.uas.sso.exception.VisibleError;
+import com.uas.sso.foreign.ForeignInfo;
+import com.uas.sso.foreign.bihe.entity.BiHeInfo;
+import com.uas.sso.foreign.weixin.entity.OAuthInfo;
 import com.uas.sso.i.CountCallBack;
 import com.uas.sso.logging.LoggerManager;
 import com.uas.sso.logging.SyncBufferedLogger;
@@ -765,6 +768,17 @@ public class UserServiceImpl implements UserService {
         return user;
     }
 
+    @Override
+    public User findByForeignId(ForeignInfo foreignInfo) {
+        User user = null;
+        if (foreignInfo instanceof OAuthInfo) {
+            user = userDao.findByWxUnionid(foreignInfo.getForeignId());
+        } else if (foreignInfo instanceof BiHeInfo) {
+            user = userDao.findByBhOpenId(foreignInfo.getForeignId());
+        }
+        return user;
+    }
+
     /**
      * 同步用户信息到各个应用
      * @param user 用户信息

+ 0 - 21
sso-server/src/main/java/com/uas/sso/weixin/service/WeChatService.java

@@ -1,21 +0,0 @@
-package com.uas.sso.weixin.service;
-
-import com.uas.sso.weixin.entity.OAuthInfo;
-import com.uas.sso.weixin.entity.UserInfo;
-
-/**
- * @author wangmh
- * @create 2018-06-11 16:54
- * @desc 微信服务
- **/
-public interface WeChatService {
-
-    /**
-     * 根据code获取用户的信息
-     * @param code
-     * @return
-     */
-    OAuthInfo getOAuthInfoByCode(String code);
-
-    UserInfo findUserByUnionid(String unionid, String access_token);
-}