update redis调整
This commit is contained in:
parent
2506d9265f
commit
42543ce7c7
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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> {
|
||||||
|
}
|
||||||
|
|
@ -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> {
|
||||||
|
}
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue