From ba4af275c3b8d073f863be7b12e43974b3ef14a2 Mon Sep 17 00:00:00 2001 From: liyong <18434998025@163.com> Date: 星期六, 12 七月 2025 10:27:06 +0800 Subject: [PATCH] Merge branch 'master' of http://114.132.189.42:9002/r/product-inventory-management-after into pim_ly --- src/main/java/com/ruoyi/framework/security/service/TokenService.java | 38 +++++++++++++++++++++++++++++++------- 1 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/ruoyi/framework/security/service/TokenService.java b/src/main/java/com/ruoyi/framework/security/service/TokenService.java index fbe84a2..5b7cf11 100644 --- a/src/main/java/com/ruoyi/framework/security/service/TokenService.java +++ b/src/main/java/com/ruoyi/framework/security/service/TokenService.java @@ -1,12 +1,21 @@ package com.ruoyi.framework.security.service; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ruoyi.project.system.domain.SysUserDept; +import com.ruoyi.project.system.mapper.SysUserDeptMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; +import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; @@ -19,6 +28,7 @@ import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; +import org.springframework.util.CollectionUtils; /** * token楠岃瘉澶勭悊 @@ -28,6 +38,8 @@ @Component public class TokenService { + private static final Logger log = LoggerFactory.getLogger(TokenService.class); + // 浠ょ墝鑷畾涔夋爣璇� @Value("${token.header}") private String header; @@ -44,7 +56,7 @@ protected static final long MILLIS_MINUTE = 60 * MILLIS_SECOND; - private static final Long MILLIS_MINUTE_TEN = 20 * 60 * 1000L; + private static final Long MILLIS_MINUTE_TWENTY = 20 * 60 * 1000L; @Autowired private RedisCache redisCache; @@ -71,6 +83,7 @@ } catch (Exception e) { + log.error("鑾峰彇鐢ㄦ埛淇℃伅寮傚父'{}'", e.getMessage()); } } return null; @@ -114,24 +127,28 @@ Map<String, Object> claims = new HashMap<>(); claims.put(Constants.LOGIN_USER_KEY, token); + claims.put(Constants.JWT_USERNAME, loginUser.getUsername()); return createToken(claims); } /** * 楠岃瘉浠ょ墝鏈夋晥鏈燂紝鐩稿樊涓嶈冻20鍒嗛挓锛岃嚜鍔ㄥ埛鏂扮紦瀛� * - * @param token 浠ょ墝 + * @param loginUser 鐧诲綍淇℃伅 * @return 浠ょ墝 */ public void verifyToken(LoginUser loginUser) { long expireTime = loginUser.getExpireTime(); long currentTime = System.currentTimeMillis(); - if (expireTime - currentTime <= MILLIS_MINUTE_TEN) + if (expireTime - currentTime <= MILLIS_MINUTE_TWENTY) { refreshToken(loginUser); } } + + @Autowired + private SysUserDeptMapper sysUserDeptMapper; /** * 鍒锋柊浠ょ墝鏈夋晥鏈� @@ -142,11 +159,18 @@ { loginUser.setLoginTime(System.currentTimeMillis()); loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE); + LambdaQueryWrapper<SysUserDept> sysUserDeptLambdaQueryWrapper = new LambdaQueryWrapper<>(); + sysUserDeptLambdaQueryWrapper.eq(SysUserDept::getUserId, loginUser.getUserId()); + List<SysUserDept> sysUserDept = sysUserDeptMapper.selectList(sysUserDeptLambdaQueryWrapper); + if(!CollectionUtils.isEmpty(sysUserDept)){ + List<Long> collect = sysUserDept.stream().map(SysUserDept::getDeptId).collect(Collectors.toList()); + loginUser.setDeptId(collect.toArray(new Long[0])); + } // 鏍规嵁uuid灏唋oginUser缂撳瓨 String userKey = getTokenKey(loginUser.getToken()); redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES); } - + /** * 璁剧疆鐢ㄦ埛浠g悊淇℃伅 * @@ -155,13 +179,13 @@ public void setUserAgent(LoginUser loginUser) { UserAgent userAgent = UserAgent.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent")); - String ip = IpUtils.getIpAddr(ServletUtils.getRequest()); + String ip = IpUtils.getIpAddr(); loginUser.setIpaddr(ip); loginUser.setLoginLocation(AddressUtils.getRealAddressByIP(ip)); loginUser.setBrowser(userAgent.getBrowser().getName()); loginUser.setOs(userAgent.getOperatingSystem().getName()); } - + /** * 浠庢暟鎹0鏄庣敓鎴愪护鐗� * @@ -220,6 +244,6 @@ private String getTokenKey(String uuid) { - return Constants.LOGIN_TOKEN_KEY + uuid; + return CacheConstants.LOGIN_TOKEN_KEY + uuid; } } -- Gitblit v1.9.3