diff --git a/common/common-core/src/main/java/com/tacit/common/utils/RedisConfig.java b/common/common-core/src/main/java/com/tacit/common/utils/RedisConfig.java deleted file mode 100644 index d35619d..0000000 --- a/common/common-core/src/main/java/com/tacit/common/utils/RedisConfig.java +++ /dev/null @@ -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 redisTemplate(RedisConnectionFactory factory) { - RedisTemplate template = new RedisTemplate<>(); - template.setConnectionFactory(factory); - - // key 使用 String 序列化 - template.setKeySerializer(new StringRedisSerializer()); - template.setHashKeySerializer(new StringRedisSerializer()); - - // value 使用 JSON 序列化 - Jackson2JsonRedisSerializer 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; - } -} diff --git a/common/common-core/src/main/java/com/tacit/common/utils/RedisUtils.java b/common/common-core/src/main/java/com/tacit/common/utils/RedisUtils.java deleted file mode 100644 index 946c08e..0000000 --- a/common/common-core/src/main/java/com/tacit/common/utils/RedisUtils.java +++ /dev/null @@ -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 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); - } -} diff --git a/common/common-model/src/main/java/com/tacit/common/entity/Base.java b/common/common-model/src/main/java/com/tacit/common/entity/Base.java index 51cd8fc..98c0b13 100644 --- a/common/common-model/src/main/java/com/tacit/common/entity/Base.java +++ b/common/common-model/src/main/java/com/tacit/common/entity/Base.java @@ -10,8 +10,7 @@ import java.time.LocalDateTime; @Data public class Base implements Serializable { - @TableId(type = IdType.AUTO) - private Long id; + private LocalDateTime createTime; private LocalDateTime updateTime; private Integer delFlag; diff --git a/common/pom.xml b/common/pom.xml index 62b21f1..b2c2f32 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -24,6 +24,7 @@ common-model common-feign common-core + common-redis xxljob diff --git a/tacit-admin/pom.xml b/tacit-admin/pom.xml index c5cd6a7..05d78ea 100644 --- a/tacit-admin/pom.xml +++ b/tacit-admin/pom.xml @@ -76,6 +76,11 @@ common-core ${project.parent.version} + + com.tacit + common-redis + ${project.parent.version} + com.tacit @@ -94,15 +99,6 @@ org.springframework.cloud spring-cloud-starter-bootstrap - - - org.springframework.boot - spring-boot-starter-data-redis - - - redis.clients - jedis - diff --git a/tacit-admin/src/main/java/com/tacit/admin/config/SecurityConfig.java b/tacit-admin/src/main/java/com/tacit/admin/config/SecurityConfig.java index c2ee957..4d698ef 100644 --- a/tacit-admin/src/main/java/com/tacit/admin/config/SecurityConfig.java +++ b/tacit-admin/src/main/java/com/tacit/admin/config/SecurityConfig.java @@ -3,7 +3,7 @@ package com.tacit.admin.config; import com.tacit.common.constant.CommonConstant; import com.tacit.common.utils.AesPasswordEncoder; import com.tacit.common.utils.JwtUtils; -import com.tacit.common.utils.RedisUtils; +import com.tacit.common.redis.utils.RedisUtils; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; diff --git a/tacit-admin/src/main/java/com/tacit/admin/entity/RoleMenu.java b/tacit-admin/src/main/java/com/tacit/admin/entity/RoleMenu.java new file mode 100644 index 0000000..a4a4227 --- /dev/null +++ b/tacit-admin/src/main/java/com/tacit/admin/entity/RoleMenu.java @@ -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; + +} diff --git a/tacit-admin/src/main/java/com/tacit/admin/entity/User.java b/tacit-admin/src/main/java/com/tacit/admin/entity/User.java index 7e210d0..e23c0a0 100644 --- a/tacit-admin/src/main/java/com/tacit/admin/entity/User.java +++ b/tacit-admin/src/main/java/com/tacit/admin/entity/User.java @@ -14,7 +14,8 @@ import java.time.LocalDateTime; public class User extends Base implements Serializable { private static final long serialVersionUID = 1L; - + @TableId(type = IdType.AUTO) + private Long id; private String username; private String password; private String nickname; diff --git a/tacit-admin/src/main/java/com/tacit/admin/mapper/MenuMapper.java b/tacit-admin/src/main/java/com/tacit/admin/mapper/MenuMapper.java new file mode 100644 index 0000000..9026db8 --- /dev/null +++ b/tacit-admin/src/main/java/com/tacit/admin/mapper/MenuMapper.java @@ -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 { +} diff --git a/tacit-admin/src/main/java/com/tacit/admin/mapper/RoleMenuMapper.java b/tacit-admin/src/main/java/com/tacit/admin/mapper/RoleMenuMapper.java new file mode 100644 index 0000000..4da5333 --- /dev/null +++ b/tacit-admin/src/main/java/com/tacit/admin/mapper/RoleMenuMapper.java @@ -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 { +} diff --git a/tacit-admin/src/main/java/com/tacit/admin/service/MenuService.java b/tacit-admin/src/main/java/com/tacit/admin/service/MenuService.java new file mode 100644 index 0000000..a25fe22 --- /dev/null +++ b/tacit-admin/src/main/java/com/tacit/admin/service/MenuService.java @@ -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 { + //根据角色id获取菜单列表 + List getMenuListByRoleId(Long roleId); +} + + diff --git a/tacit-admin/src/main/java/com/tacit/admin/service/RoleService.java b/tacit-admin/src/main/java/com/tacit/admin/service/RoleService.java new file mode 100644 index 0000000..1852341 --- /dev/null +++ b/tacit-admin/src/main/java/com/tacit/admin/service/RoleService.java @@ -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 { + //根据用户id获取角色 + Role getRoleByUserId(Long userId); +} + + diff --git a/tacit-admin/src/main/java/com/tacit/admin/service/impl/MenuServiceImpl.java b/tacit-admin/src/main/java/com/tacit/admin/service/impl/MenuServiceImpl.java new file mode 100644 index 0000000..5b07c84 --- /dev/null +++ b/tacit-admin/src/main/java/com/tacit/admin/service/impl/MenuServiceImpl.java @@ -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 implements MenuService { + + @Resource + private RedisUtils redisUtils; + @Resource + private RoleMenuMapper roleMenuMapper; + @Resource + private MenuMapper menuMapper; + + @Override + public List getMenuListByRoleId(Long roleId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("role_id", roleId); + List roleMenuList = roleMenuMapper.selectList(queryWrapper); + if (roleMenuList != null && roleMenuList.size() > 0) { + // 获取菜单id + List menuIdList = roleMenuList.stream().map(RoleMenu::getMenuId).collect(Collectors.toList()); + List menuList = menuMapper.selectBatchIds(menuIdList); + // 需要将MenuList转换成树形结构 + menuList = Menu.buildTree(menuList); + return menuList; + } + return null; + } +} diff --git a/tacit-admin/src/main/java/com/tacit/admin/service/impl/RoleServiceImpl.java b/tacit-admin/src/main/java/com/tacit/admin/service/impl/RoleServiceImpl.java new file mode 100644 index 0000000..fe11c95 --- /dev/null +++ b/tacit-admin/src/main/java/com/tacit/admin/service/impl/RoleServiceImpl.java @@ -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 implements RoleService { + + @Resource + private RedisUtils redisUtils; + @Resource + private RoleMapper roleMapper; + @Resource + private UserRoleMapper userRoleMapper; + + @Override + public Role getRoleByUserId(Long userId) { + // 根据用户ID 获取角色id + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("user_id", userId); + UserRole userRole = userRoleMapper.selectOne(queryWrapper); + if (userRole != null) { + // 根据角色id 获取角色信息 + return roleMapper.selectById(userRole.getRoleId()); + } + // 角色不存在 + return null; + } +} diff --git a/tacit-admin/src/main/java/com/tacit/admin/service/impl/UserServiceImpl.java b/tacit-admin/src/main/java/com/tacit/admin/service/impl/UserServiceImpl.java index c1325e8..a1ed7b2 100644 --- a/tacit-admin/src/main/java/com/tacit/admin/service/impl/UserServiceImpl.java +++ b/tacit-admin/src/main/java/com/tacit/admin/service/impl/UserServiceImpl.java @@ -9,7 +9,7 @@ import com.tacit.admin.entity.dto.RegisterRequest; import com.tacit.admin.mapper.UserMapper; import com.tacit.admin.service.UserService; import com.tacit.common.utils.JwtUtils; -import com.tacit.common.utils.RedisUtils; +import com.tacit.common.redis.utils.RedisUtils; import jakarta.annotation.Resource; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; diff --git a/tacit-app-api/pom.xml b/tacit-app-api/pom.xml index eb9fe0d..26af427 100644 --- a/tacit-app-api/pom.xml +++ b/tacit-app-api/pom.xml @@ -91,6 +91,12 @@ org.springframework.cloud spring-cloud-starter-bootstrap + + com.tacit + common-redis + 1.0.0-SNAPSHOT + compile + diff --git a/tacit-app-api/src/main/java/com/tacit/app/config/AppSecurityConfig.java b/tacit-app-api/src/main/java/com/tacit/app/config/AppSecurityConfig.java index 26b701f..ab54def 100644 --- a/tacit-app-api/src/main/java/com/tacit/app/config/AppSecurityConfig.java +++ b/tacit-app-api/src/main/java/com/tacit/app/config/AppSecurityConfig.java @@ -1,9 +1,9 @@ package com.tacit.app.config; import com.tacit.common.constant.CommonConstant; +import com.tacit.common.redis.utils.RedisUtils; import com.tacit.common.utils.AesPasswordEncoder; import com.tacit.common.utils.JwtUtils; -import com.tacit.common.utils.RedisUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/tacit-gateway/pom.xml b/tacit-gateway/pom.xml index 6699776..c60ed13 100644 --- a/tacit-gateway/pom.xml +++ b/tacit-gateway/pom.xml @@ -62,15 +62,6 @@ com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery - - - org.springframework.boot - spring-boot-starter-data-redis - - - redis.clients - jedis -