From 1a16c058cdf8ce9bfdad4853e518d521b29a87e6 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 25 八月 2023 13:52:30 +0800
Subject: [PATCH] 修复bug

---
 server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java |   24 +++++++++++++++++++-----
 server/src/main/java/doumeemes/service/system/WxLoginService.java          |    2 +-
 server/src/main/java/doumeemes/api/system/SystemController.java            |    4 ++--
 3 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/server/src/main/java/doumeemes/api/system/SystemController.java b/server/src/main/java/doumeemes/api/system/SystemController.java
index d500555..61dc7cb 100644
--- a/server/src/main/java/doumeemes/api/system/SystemController.java
+++ b/server/src/main/java/doumeemes/api/system/SystemController.java
@@ -78,8 +78,8 @@
     @PreventRepeat(limit = 10, lockTime = 10000)
     @ApiOperation("寰俊灏忕▼搴忕櫥褰�")
     @GetMapping("/wxProgramLogin")
-    public ApiResponse<WxLoginVO> wxProgramLogin (@RequestParam String unionId,@RequestParam String openId, HttpServletRequest request) {
-        return ApiResponse.success(wxLoginService.wxProgramLogin(unionId,openId, request));
+    public ApiResponse<WxLoginVO> wxProgramLogin (@RequestParam String code, HttpServletRequest request) {
+        return ApiResponse.success(wxLoginService.wxProgramLogin(code, request));
     }
 
     @PreventRepeat(limit = 10, lockTime = 10000)
diff --git a/server/src/main/java/doumeemes/service/system/WxLoginService.java b/server/src/main/java/doumeemes/service/system/WxLoginService.java
index 6d01141..67c24aa 100644
--- a/server/src/main/java/doumeemes/service/system/WxLoginService.java
+++ b/server/src/main/java/doumeemes/service/system/WxLoginService.java
@@ -22,5 +22,5 @@
 
     void wxLoginOut(WxLoginOutDTO wxLoginOutDTO);
 
-    WxLoginVO wxProgramLogin(String unionId, String openId,HttpServletRequest request);
+    WxLoginVO wxProgramLogin(String code,HttpServletRequest request);
 }
diff --git a/server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java b/server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java
index c61c7a0..2c8fba5 100644
--- a/server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/system/impl/WxLoginServiceImpl.java
@@ -104,6 +104,25 @@
 
     }
 
+
+    @Override
+    public WxLoginVO wxProgramLogin(String code, HttpServletRequest request) {
+        //TODO---------------浠诲悍
+        String appId = systemDictDataBiz.queryByCode(Constants.WX_CONFIG,Constants.APPID).getCode();
+        String appSecret = systemDictDataBiz.queryByCode(Constants.WX_CONFIG,Constants.APPSECRET).getCode();
+        String getTokenUrl = GET_ACCESS_TOKEN_URL.replace("CODE", code).replace("APPID", appId).replace("SECRET", appSecret);
+        JSONObject tokenJson = JSONObject.parseObject(HttpsUtil.get(getTokenUrl,true));
+        if(Objects.isNull(tokenJson.get("access_token"))){
+            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),tokenJson.getString("errmsg"));
+        }
+        String accessToken = tokenJson.getString("access_token");
+        String openId = tokenJson.getString("openid");
+        String getUserInfoUrl = GET_USER_INFO_URL.replace("ACCESS_TOKEN", accessToken).replace("OPENID", openId);
+        JSONObject userInfoJson = JSONObject.parseObject(HttpsUtil.get(getUserInfoUrl,true));
+
+        return  loginByUnionIdAndReturn(userInfoJson.getString("unionid"),openId,request);
+
+    }
     private WxLoginVO loginByUnionIdAndReturn(String unionid,String openId,HttpServletRequest request) {
         WxLoginVO wxLoginVO = new WxLoginVO();
         wxLoginVO.setOpenid(openId);
@@ -176,11 +195,6 @@
         }
     }
 
-    @Override
-    public WxLoginVO wxProgramLogin(String unionId,String openId, HttpServletRequest request) {
-        return  loginByUnionIdAndReturn(unionId,openId,request);
-
-    }
 
 
 

--
Gitblit v1.9.3