From ccb39e91f2feaeafa2d89440c84d14db22bf856f Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期四, 22 五月 2025 10:47:01 +0800
Subject: [PATCH] FastJson的Configuration中去掉不推荐应用的JSONWriter.Feature.MapSortField(对map进行排序)

---
 pms-parent/pms-web-wechat/src/main/java/com/dy/pmsWechat/login/WeChatService.java |   36 ++++++++++++++++++++++++++++++++++--
 1 files changed, 34 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..983e4d9 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,11 +1,16 @@
 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.JwtUtil;
 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;
 
 import java.io.IOException;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -21,10 +26,22 @@
     @Value("${wechat.loginUrl}")
     private String loginUrl;
 
+    @Value("${wechat.jwt.secret-key}")
+    private String secretKey;
+
+    @Value("${wechat.jwt.ttl}")
+    private  long  ttlMillis;
+
     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 +51,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);
+        String openId = wxMpUser.get("openid").toString();
+        //鑾峰彇寰俊淇℃伅娣诲姞鍒版暟鎹簱  //鍏堟牴鎹畂penid鏌ヨ鐢ㄦ埛淇℃伅
+        MpOpenId userInfo = mpOpenIdDao.getInfoByOpenId(openId);
+        if(userInfo == null){ //鏁版嵁搴撴病鏈夋椂娣诲姞鍒版暟鎹簱涓�
+            userInfo = new MpOpenId();
+            userInfo.setOpenId(openId);
+            userInfo.setCreateTime(new Date());
+            mpOpenIdDao.insert(userInfo);
+        }
+        //鎺堟潈瀹屾垚涔嬪悗锛岃烦杞埌鍏蜂綋鐨勫姛鑳介〉闈�
+        //鐢熸垚token,鎸夌収涓�瀹氳鍒欑敓鎴愬瓧绗︿覆锛屽彲浠ュ寘鍚敤鎴蜂俊鎭�
+        //鐧婚檰controller涓敓鎴愶紝杩斿洖缁欏鎴风
+        Map<String, Object> claims = new HashMap<>();
+        claims.put("openId",openId);
+        String token = JwtUtil.createJwt(secretKey,ttlMillis,claims);
+        return new JSONObject().fluentPut("token",token);
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0