From 7298d5354963a88643a543b51b90192dc9fc934c Mon Sep 17 00:00:00 2001 From: doum <doum> Date: 星期四, 11 九月 2025 18:43:14 +0800 Subject: [PATCH] 最新版本541200007 --- server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java | 88 ++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 84 insertions(+), 4 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 9198e09..910d2f9 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,29 +1,46 @@ package com.doumee.config.jwt; import com.alibaba.fastjson.JSONObject; -import com.doumee.core.model.LoginUserInfo; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.doumee.biz.system.SystemDictDataBiz; +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; +import com.doumee.dao.system.model.SystemUser; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.io.IOException; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; @Component +@Slf4j public class JwtTokenUtil { @Autowired private RedisTemplate<String,Object> redisTemplate; @Resource private JwtProperties jwtProperties; - - + @Autowired + private SystemDictDataBiz systemDictDataBiz ; + @Autowired + private SystemUserMapper systemUserMapper; /** * 鐢熸垚token浠ょ墝 * @@ -113,11 +130,61 @@ */ public void logout(String token) { try { - redisTemplate.delete(Constants.REDIS_TOKEN_KEY+token);//鍒犻櫎鑰佺殑token + //鐧诲嚭娴峰悍绯荤粺鏁版嵁 + LoginUserInfo loginUserInfo = this.getUserInfoByToken(token); + String url = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HTTPS).getCode() + + systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HOST).getCode() + + systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.LOGIN_OUT_URL).getCode(); + if(StringUtils.isNotBlank(loginUserInfo.getHkMenuToken())){ + log.info("璋冭捣娴峰悍閫�鍑虹櫥褰�=======================>"+url+"?token="+loginUserInfo.getHkMenuToken()); +// this.hkLoginOut(url+"?token="+loginUserInfo.getHkMenuToken()); + HttpsUtil.get(url+"?token="+loginUserInfo.getHkMenuToken(),true); + } + //鍒犻櫎鑰佺殑token + redisTemplate.delete(Constants.REDIS_TOKEN_KEY+token); } catch (Exception e) { e.printStackTrace(); } } + + public void logoutForH5(String token) { + try { + //鐧诲嚭娴峰悍绯荤粺鏁版嵁 + 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())); + + } catch (Exception e) { + e.printStackTrace(); + } + } + public void hkLoginOut(String url){ + try { + // 鍒涘缓HttpClient瀵硅薄 + HttpClient httpClient = HttpClientBuilder.create().build(); + // 鍒涘缓HttpGet瀵硅薄锛屾寚瀹氳璁块棶鐨刄RL鍦板潃 + HttpGet httpGet = new HttpGet(url); + // 鍙戦�丟ET璇锋眰锛岃幏鍙栧搷搴� + HttpResponse response = httpClient.execute(httpGet); + // 鑾峰彇鍝嶅簲鐘舵�佺爜 + int statusCode = response.getStatusLine().getStatusCode(); + // 鍒ゆ柇璇锋眰鏄惁鎴愬姛 + if (statusCode == 200) { + // 鑾峰彇鍝嶅簲鍐呭 + HttpEntity entity = response.getEntity(); + String responseContent = EntityUtils.toString(entity, "UTF-8"); + System.out.println(responseContent); + log.info("璋冭捣娴峰悍閫�鍑虹櫥褰曡繑鍥炰俊鎭�=======================>"+responseContent); + } else { + System.out.println("璇锋眰澶辫触锛屽搷搴旂爜锛�" + statusCode); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + /** * 楠岃瘉浠ょ墝 @@ -150,6 +217,7 @@ return token; } + /** * 浠庝护鐗屼腑鑾峰彇鏁版嵁澹版槑,楠岃瘉JWT绛惧悕 * @@ -161,9 +229,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