From 19321e1348baefa2a9f5211c42f8b797c0fcccd1 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 27 十月 2025 18:11:56 +0800
Subject: [PATCH] 登录验证

---
 server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java |   51 ++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 46 insertions(+), 5 deletions(-)

diff --git a/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java b/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
index fff1fdd..ec844c8 100644
--- a/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
+++ b/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
@@ -1,9 +1,11 @@
 package com.doumee.config.jwt;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.doumee.biz.system.SystemDictDataBiz;
-import com.doumee.core.model.LoginUserInfo;
+import com.doumee.dao.system.model.SystemDictData;
+import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.HttpsUtil;
 import com.doumee.dao.system.SystemUserMapper;
@@ -24,9 +26,7 @@
 
 import javax.annotation.Resource;
 import java.io.IOException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 
 @Component
@@ -153,7 +153,8 @@
             LoginUserInfo loginUserInfo = this.getUserInfoByToken(token);
             //鍒犻櫎鑰佺殑token
             redisTemplate.delete(Constants.REDIS_TOKEN_KEY+token);
-            systemUserMapper.update(null,new UpdateWrapper<SystemUser>().lambda().set(SystemUser::getOpenid,null).eq(SystemUser::getId,loginUserInfo.getId()));
+            systemUserMapper.update(null,new UpdateWrapper<SystemUser>().lambda().set(SystemUser::getOpenid,null)
+                    .eq(SystemUser::getId,loginUserInfo.getId()));
 
         } catch (Exception e) {
             e.printStackTrace();
@@ -213,6 +214,34 @@
                 .signWith(SignatureAlgorithm.HS512, jwtProperties.getSecret())
                 .compact();
         redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,JSONObject.toJSONString(userInfo),jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
+
+        String userTokenJsonStr = (String) redisTemplate.opsForValue().get(Constants.REDIS_USER_KEY+userInfo.getId());
+        if(StringUtils.isEmpty(userTokenJsonStr)){
+            redisTemplate.opsForValue().set(Constants.REDIS_USER_KEY+userInfo.getId(),Constants.REDIS_TOKEN_KEY+token);
+        }else{
+            List<String> list  = Arrays.asList(userTokenJsonStr.split(","));
+            SystemDictData jointAccount = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.OPEN_JOINT_ACCOUNT);
+            //鍏抽棴鍏辩敤璐︽埛 闇�瑕佹竻绌哄叾浠杢oken淇℃伅
+            if(Objects.nonNull(jointAccount)&&Constants.equalsInteger(Integer.valueOf(jointAccount.getCode()),Constants.ONE)){
+                for (String s:list) {
+                    redisTemplate.delete(s);
+                }
+                redisTemplate.delete(Constants.REDIS_USER_KEY+userInfo.getId());
+                redisTemplate.opsForValue().set(Constants.REDIS_USER_KEY+userInfo.getId(),Constants.REDIS_TOKEN_KEY+token);
+            }else{
+                Boolean isHave = false;
+                for (String s:list) {
+                    if(s.equals(Constants.REDIS_TOKEN_KEY+token)){
+                        isHave = true;
+                        break;
+                    }
+                }
+                if(!isHave){
+                    redisTemplate.opsForValue().set(Constants.REDIS_USER_KEY+userInfo.getId(),userTokenJsonStr + "," + Constants.REDIS_TOKEN_KEY+token);
+                }
+            }
+        }
+
         return token;
     }
 
@@ -228,9 +257,21 @@
         try {
             String userInfo = (String) redisTemplate.opsForValue().get(Constants.REDIS_TOKEN_KEY+token);
             claims = JSONObject.toJavaObject(JSONObject.parseObject(userInfo),LoginUserInfo.class);
+            refreshTokenTime(token);
         } catch (Exception e) {
             claims = null;
         }
         return claims;
     }
+
+    /**
+     * 鍚戝悗寤朵几鏈夋晥鏈熶繚鎸佷細璇濈户缁�
+     * @param token
+     */
+    public void refreshTokenTime(String token ) {
+        log.error("===============寮�濮嬪埛鏂扮櫥褰晅oken"+token);
+        redisTemplate.expire(Constants.REDIS_TOKEN_KEY+token,jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
+        log.error("===============缁撴潫鍒锋柊鐧诲綍token"+token);
+//        redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,usrerInfo,jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3