update redis调整

This commit is contained in:
小李 2026-01-08 16:13:36 +08:00
parent 2506d9265f
commit 42543ce7c7
18 changed files with 170 additions and 106 deletions

View File

@ -1,45 +0,0 @@
package com.tacit.common.utils;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
// key 使用 String 序列化
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
// value 使用 JSON 序列化
Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper mapper = new ObjectMapper();
// 设置字段可见性
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
// 新版 Jackson 安全的多态类型配置
mapper.activateDefaultTyping(
LaissezFaireSubTypeValidator.instance,
ObjectMapper.DefaultTyping.NON_FINAL
);
template.setValueSerializer(serializer);
template.setHashValueSerializer(serializer);
template.afterPropertiesSet();
return template;
}
}

View File

@ -1,37 +0,0 @@
package com.tacit.common.utils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import java.util.concurrent.TimeUnit;
/**
* @Description: redis工具类
* @Author: lidongjin
* @CreateTime: 2026-01-07 09:27
*/
@Slf4j
@Component
public class RedisUtils {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void setObject(String key, Object value, long expireTime, TimeUnit timeUnit) {
redisTemplate.opsForValue().set(key, value, expireTime, timeUnit);
}
public Boolean hasKey(String key) {
return redisTemplate.hasKey(key);
}
public void delete(String token) {
redisTemplate.delete(token);
}
}

View File

@ -10,8 +10,7 @@ import java.time.LocalDateTime;
@Data @Data
public class Base implements Serializable { public class Base implements Serializable {
@TableId(type = IdType.AUTO)
private Long id;
private LocalDateTime createTime; private LocalDateTime createTime;
private LocalDateTime updateTime; private LocalDateTime updateTime;
private Integer delFlag; private Integer delFlag;

View File

@ -24,6 +24,7 @@
<module>common-model</module> <module>common-model</module>
<module>common-feign</module> <module>common-feign</module>
<module>common-core</module> <module>common-core</module>
<module>common-redis</module>
<module>xxljob</module> <module>xxljob</module>
</modules> </modules>

View File

@ -76,6 +76,11 @@
<artifactId>common-core</artifactId> <artifactId>common-core</artifactId>
<version>${project.parent.version}</version> <version>${project.parent.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.tacit</groupId>
<artifactId>common-redis</artifactId>
<version>${project.parent.version}</version>
</dependency>
<!-- XXL Job --> <!-- XXL Job -->
<dependency> <dependency>
<groupId>com.tacit</groupId> <groupId>com.tacit</groupId>
@ -94,15 +99,6 @@
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId> <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency> </dependency>
<!-- 缓存及客户端 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -3,7 +3,7 @@ package com.tacit.admin.config;
import com.tacit.common.constant.CommonConstant; import com.tacit.common.constant.CommonConstant;
import com.tacit.common.utils.AesPasswordEncoder; import com.tacit.common.utils.AesPasswordEncoder;
import com.tacit.common.utils.JwtUtils; import com.tacit.common.utils.JwtUtils;
import com.tacit.common.utils.RedisUtils; import com.tacit.common.redis.utils.RedisUtils;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;

View File

@ -0,0 +1,25 @@
package com.tacit.admin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
@Data
@TableName("sys_role_menu")
public class RoleMenu implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
private Long id;
// 菜单ID
@TableField("menu_id")
private Long menuId;
// 角色ID
@TableField("role_id")
private Long roleId;
}

View File

@ -14,7 +14,8 @@ import java.time.LocalDateTime;
public class User extends Base implements Serializable { public class User extends Base implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
private Long id;
private String username; private String username;
private String password; private String password;
private String nickname; private String nickname;

View File

@ -0,0 +1,9 @@
package com.tacit.admin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tacit.admin.entity.Menu;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface MenuMapper extends BaseMapper<Menu> {
}

View File

@ -0,0 +1,9 @@
package com.tacit.admin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tacit.admin.entity.RoleMenu;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface RoleMenuMapper extends BaseMapper<RoleMenu> {
}

View File

@ -0,0 +1,13 @@
package com.tacit.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tacit.admin.entity.Menu;
import java.util.List;
public interface MenuService extends IService<Menu> {
//根据角色id获取菜单列表
List<Menu> getMenuListByRoleId(Long roleId);
}

View File

@ -0,0 +1,11 @@
package com.tacit.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tacit.admin.entity.Role;
public interface RoleService extends IService<Role> {
//根据用户id获取角色
Role getRoleByUserId(Long userId);
}

View File

@ -0,0 +1,47 @@
package com.tacit.admin.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tacit.admin.entity.Menu;
import com.tacit.admin.entity.Role;
import com.tacit.admin.entity.RoleMenu;
import com.tacit.admin.entity.UserRole;
import com.tacit.admin.mapper.MenuMapper;
import com.tacit.admin.mapper.RoleMapper;
import com.tacit.admin.mapper.RoleMenuMapper;
import com.tacit.admin.mapper.UserRoleMapper;
import com.tacit.admin.service.MenuService;
import com.tacit.admin.service.RoleService;
import com.tacit.common.redis.utils.RedisUtils;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements MenuService {
@Resource
private RedisUtils redisUtils;
@Resource
private RoleMenuMapper roleMenuMapper;
@Resource
private MenuMapper menuMapper;
@Override
public List<Menu> getMenuListByRoleId(Long roleId) {
QueryWrapper<RoleMenu> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("role_id", roleId);
List<RoleMenu> roleMenuList = roleMenuMapper.selectList(queryWrapper);
if (roleMenuList != null && roleMenuList.size() > 0) {
// 获取菜单id
List<Long> menuIdList = roleMenuList.stream().map(RoleMenu::getMenuId).collect(Collectors.toList());
List<Menu> menuList = menuMapper.selectBatchIds(menuIdList);
// 需要将MenuList转换成树形结构
menuList = Menu.buildTree(menuList);
return menuList;
}
return null;
}
}

View File

@ -0,0 +1,38 @@
package com.tacit.admin.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tacit.admin.entity.Role;
import com.tacit.admin.entity.User;
import com.tacit.admin.entity.UserRole;
import com.tacit.admin.mapper.RoleMapper;
import com.tacit.admin.mapper.UserRoleMapper;
import com.tacit.admin.service.RoleService;
import com.tacit.common.redis.utils.RedisUtils;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
@Service
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService {
@Resource
private RedisUtils redisUtils;
@Resource
private RoleMapper roleMapper;
@Resource
private UserRoleMapper userRoleMapper;
@Override
public Role getRoleByUserId(Long userId) {
// 根据用户ID 获取角色id
QueryWrapper<UserRole> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_id", userId);
UserRole userRole = userRoleMapper.selectOne(queryWrapper);
if (userRole != null) {
// 根据角色id 获取角色信息
return roleMapper.selectById(userRole.getRoleId());
}
// 角色不存在
return null;
}
}

View File

@ -9,7 +9,7 @@ import com.tacit.admin.entity.dto.RegisterRequest;
import com.tacit.admin.mapper.UserMapper; import com.tacit.admin.mapper.UserMapper;
import com.tacit.admin.service.UserService; import com.tacit.admin.service.UserService;
import com.tacit.common.utils.JwtUtils; import com.tacit.common.utils.JwtUtils;
import com.tacit.common.utils.RedisUtils; import com.tacit.common.redis.utils.RedisUtils;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@ -91,6 +91,12 @@
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId> <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.tacit</groupId>
<artifactId>common-redis</artifactId>
<version>1.0.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>

View File

@ -1,9 +1,9 @@
package com.tacit.app.config; package com.tacit.app.config;
import com.tacit.common.constant.CommonConstant; import com.tacit.common.constant.CommonConstant;
import com.tacit.common.redis.utils.RedisUtils;
import com.tacit.common.utils.AesPasswordEncoder; import com.tacit.common.utils.AesPasswordEncoder;
import com.tacit.common.utils.JwtUtils; import com.tacit.common.utils.JwtUtils;
import com.tacit.common.utils.RedisUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;

View File

@ -62,15 +62,6 @@
<groupId>com.alibaba.cloud</groupId> <groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency> </dependency>
<!-- 缓存及客户端 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>