From 2c5f5e7091330a748257baab82e81038a0d22816 Mon Sep 17 00:00:00 2001
From: Fancy <Fancy.fx@outlook.com>
Date: 星期四, 26 十二月 2024 10:25:30 +0800
Subject: [PATCH] JWT have some error

---
 pms-parent/pms-web-wechat/src/main/java/com/dy/pmsWechat/login/WeChatService.java |   28 ++++++++++++++++++++++++++--
 1 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/pms-parent/pms-web-wechat/src/main/java/com/dy/pmsWechat/login/WeChatService.java b/pms-parent/pms-web-wechat/src/main/java/com/dy/pmsWechat/login/WeChatService.java
index ecc98e2..f912145 100644
--- a/pms-parent/pms-web-wechat/src/main/java/com/dy/pmsWechat/login/WeChatService.java
+++ b/pms-parent/pms-web-wechat/src/main/java/com/dy/pmsWechat/login/WeChatService.java
@@ -1,7 +1,10 @@
 package com.dy.pmsWechat.login;
 
 import com.alibaba.fastjson2.JSONObject;
+import com.dy.pmsGlobal.daoMp.MpOpenIdMapper;
+import com.dy.pmsGlobal.pojoMp.MpOpenId;
 import com.dy.pmsWechat.util.RestTemplateUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
@@ -22,9 +25,15 @@
     private String loginUrl;
 
     private final RestTemplateUtil restTemplateUtil;
+    private MpOpenIdMapper mpOpenIdDao;
 
     public WeChatService(RestTemplateUtil restTemplateUtil) {
         this.restTemplateUtil = restTemplateUtil;
+    }
+
+    @Autowired
+    private void setMpOpenIdDao(MpOpenIdMapper mpOpenIdDao) {
+        this.mpOpenIdDao = mpOpenIdDao;
     }
 
     public JSONObject login(String code) throws IOException {
@@ -34,7 +43,22 @@
         queryParams.put("js_code", code);
         queryParams.put("grant_type", "authorization_code");
         Map<String, String> headerParams = new HashMap<>();
-        return restTemplateUtil.get(loginUrl, queryParams, headerParams);
-
+        JSONObject  wxMpUser = restTemplateUtil.get(loginUrl, queryParams, headerParams);
+        //鑾峰彇寰俊淇℃伅娣诲姞鍒版暟鎹簱  //鍏堟牴鎹畂penid鏌ヨ鐢ㄦ埛淇℃伅
+        MpOpenId userInfo = mpOpenIdDao.getInfoByOpenId(wxMpUser.get("openid").toString());
+        if(userInfo == null){ //鏁版嵁搴撴病鏈夋椂娣诲姞鍒版暟鎹簱涓�
+            userInfo = new MpOpenId();
+            userInfo.setOpenId(wxMpUser.get("openid").toString());
+            mpOpenIdDao.insert(userInfo);
+        }
+        //鎺堟潈瀹屾垚涔嬪悗锛岃烦杞埌鍏蜂綋鐨勫姛鑳介〉闈�
+        //鐢熸垚token,鎸夌収涓�瀹氳鍒欑敓鎴愬瓧绗︿覆锛屽彲浠ュ寘鍚敤鎴蜂俊鎭�
+        String token= JwtHelper.createToken(userInfo.getId(),userInfo.getNickName());
+        //localhost:8080/weixin?a=1&token=222
+        if(returnUrl.indexOf("?")==-1){//鑻eturnUrl涓病鏈夊弬鏁�
+            return "redirect:"+returnUrl+"?token="+token;
+        }else{
+            return "redirect:"+returnUrl+"&token="+token;
+        }
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0