package com.oying.modules.security.service;
|
|
import cn.hutool.core.util.RandomUtil;
|
import com.oying.modules.security.service.dto.JwtUserDto;
|
import com.oying.modules.security.config.LoginProperties;
|
import com.oying.utils.RedisUtils;
|
import com.oying.utils.StringUtils;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.stereotype.Component;
|
import javax.annotation.Resource;
|
|
/**
|
* @author Z
|
* @description 用户缓存管理
|
* @date 2022-05-26
|
**/
|
@Component
|
public class UserCacheManager {
|
|
@Resource
|
private RedisUtils redisUtils;
|
@Value("${login.user-cache.idle-time}")
|
private long idleTime;
|
|
/**
|
* 返回用户缓存
|
* @param userName 用户名
|
* @return JwtUserDto
|
*/
|
public JwtUserDto getUserCache(String userName) {
|
// 转小写
|
userName = StringUtils.lowerCase(userName);
|
if (StringUtils.isNotEmpty(userName)) {
|
// 获取数据
|
return redisUtils.get(LoginProperties.cacheKey + userName, JwtUserDto.class);
|
}
|
return null;
|
}
|
|
/**
|
* 添加缓存到Redis
|
* @param userName 用户名
|
*/
|
@Async
|
public void addUserCache(String userName, JwtUserDto user) {
|
// 转小写
|
userName = StringUtils.lowerCase(userName);
|
if (StringUtils.isNotEmpty(userName)) {
|
// 添加数据, 避免数据同时过期
|
long time = idleTime + RandomUtil.randomInt(900, 1800);
|
redisUtils.set(LoginProperties.cacheKey + userName, user, time);
|
}
|
}
|
|
/**
|
* 清理用户缓存信息
|
* 用户信息变更时
|
* @param userName 用户名
|
*/
|
@Async
|
public void cleanUserCache(String userName) {
|
// 转小写
|
userName = StringUtils.lowerCase(userName);
|
if (StringUtils.isNotEmpty(userName)) {
|
// 清除数据
|
redisUtils.del(LoginProperties.cacheKey + userName);
|
}
|
}
|
}
|