Pārlūkot izejas kodu

业务系统缓存

李进 2 gadi atpakaļ
vecāks
revīzija
637e7655ab

+ 2 - 2
authorize-api-service/src/main/java/com/xy/mapper/SysDeptMapper.java

@@ -1,7 +1,7 @@
 package com.xy.mapper;
 
 import com.xy.entity.SysDept;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import icu.mhb.mybatisplus.plugln.base.mapper.JoinBaseMapper;
 
 /**
  * <p>
@@ -11,6 +11,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @author lijin
  * @since 2022-12-09
  */
-public interface SysDeptMapper extends BaseMapper<SysDept> {
+public interface SysDeptMapper extends JoinBaseMapper<SysDept> {
 
 }

+ 2 - 2
authorize-api-service/src/main/java/com/xy/mapper/SysUserDeptMapper.java

@@ -1,7 +1,7 @@
 package com.xy.mapper;
 
 import com.xy.entity.SysUserDept;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import icu.mhb.mybatisplus.plugln.base.mapper.JoinBaseMapper;
 
 /**
  * <p>
@@ -11,6 +11,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @author lijin
  * @since 2022-12-09
  */
-public interface SysUserDeptMapper extends BaseMapper<SysUserDept> {
+public interface SysUserDeptMapper extends JoinBaseMapper<SysUserDept> {
 
 }

+ 2 - 2
authorize-api-service/src/main/java/com/xy/mapper/SysUserRoleMapper.java

@@ -1,7 +1,7 @@
 package com.xy.mapper;
 
 import com.xy.entity.SysUserRole;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import icu.mhb.mybatisplus.plugln.base.mapper.JoinBaseMapper;
 
 /**
  * <p>
@@ -11,6 +11,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @author lijin
  * @since 2022-12-09
  */
-public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
+public interface SysUserRoleMapper extends JoinBaseMapper<SysUserRole> {
 
 }

+ 2 - 2
authorize-api-service/src/main/java/com/xy/redis/RedisCache.java → authorize-api-service/src/main/java/com/xy/redis/SystemRedisCache.java

@@ -30,7 +30,7 @@ import java.util.Map;
  * 权限系统redis工具类
  */
 @Component
-public class RedisCache {
+public class SystemRedisCache {
 
     /**
      * 权限系统默认系统ID,代表本系统
@@ -42,7 +42,7 @@ public class RedisCache {
     }
 
     private static String getKey(Long loginId) {
-        return String.format("%s:%d", "menu", loginId);
+        return String.format("%s:%d", "system_menu", loginId);
     }
 
     /**

+ 86 - 0
authorize-api-service/src/main/java/com/xy/redis/WorkRedisCache.java

@@ -0,0 +1,86 @@
+package com.xy.redis;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.xy.collections.list.JArrayList;
+import com.xy.collections.list.JList;
+import com.xy.collections.map.JMap;
+import com.xy.entity.*;
+import com.xy.entity.join.SysMenuJoinSysRoleMenu;
+import com.xy.mapper.SysDeptMapper;
+import com.xy.mapper.SysMenuMapper;
+import com.xy.mapper.SysRoleMapper;
+import com.xy.mapper.SysSystemMapper;
+import com.xy.utils.Emptys;
+import com.xy.utils.SpringBeanUtils;
+import icu.mhb.mybatisplus.plugln.core.JoinLambdaWrapper;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 业务系统redis工具类
+ */
+@Component
+public class WorkRedisCache {
+
+    private static String getKey(Long loginId) {
+        return String.format("%s:%d", "work_menu", loginId);
+    }
+
+    /**
+     * 缓存权限相关到redis
+     *
+     * @param loginId 登录id
+     */
+    public static void cache(Long loginId) {
+        SysSystemMapper sysSystemMapper = SpringBeanUtils.getBean(SysSystemMapper.class);
+        SysRoleMapper sysRoleMapper = SpringBeanUtils.getBean(SysRoleMapper.class);
+        SysDeptMapper sysDeptMapper = SpringBeanUtils.getBean(SysDeptMapper.class);
+        SysMenuMapper sysMenuMapper = SpringBeanUtils.getBean(SysMenuMapper.class);
+        //获取登录人所有系统
+        List<SysSystem> sysSystems = sysSystemMapper.selectList(new LambdaQueryWrapper<SysSystem>()
+                .eq(SysSystem::getSysUserId, loginId)
+                .eq(SysSystem::getStatus, true)
+        );
+        if (!Emptys.check(sysSystems)) {
+            return;
+        }
+        //获取登录人所有角色
+        JoinLambdaWrapper<SysRole> sysRoleJoinLambdaWrapper = new JoinLambdaWrapper<>(SysRole.class)
+                .eq(SysRole::getStatus, true)
+                .innerJoin(SysUserRole.class, SysUserRole::getRoleId, SysRole::getId)
+                .eq(SysUserRole::getWorkUserId, loginId)
+                .end();
+        List<SysRole> sysRoles = sysRoleMapper.joinSelectList(sysRoleJoinLambdaWrapper, SysRole.class);
+        JList<Long> sysRoleIds = new JArrayList<>(sysRoles).getProperty(SysRole::getId);
+        if (sysRoleIds.size() == 0) {
+            return;
+        }
+        //获取登录人所有部门
+        JoinLambdaWrapper<SysDept> sysDeptJoinLambdaWrapper = new JoinLambdaWrapper<>(SysDept.class)
+                .eq(SysDept::getStatus, true)
+                .innerJoin(SysUserDept.class, SysUserDept::getDeptId, SysUserDept::getId)
+                .eq(SysUserDept::getWorkUserId, loginId)
+                .end();
+        List<SysDept> sysDepts = sysDeptMapper.joinSelectList(sysDeptJoinLambdaWrapper, SysDept.class);
+        JList<Long> sysDeptsIds = new JArrayList<>(sysDepts).getProperty(SysDept::getId);
+        //获取登录人所有部门角色
+        if (sysDeptsIds.size() > 0) {
+
+        }
+
+        //获取登录人所有角色菜单
+        JoinLambdaWrapper<SysMenu> sysMenuJoinLambdaWrapper = new JoinLambdaWrapper<>(SysMenu.class)
+                .eq(SysMenu::getStatus, true)
+                .innerJoin(SysRoleMenu.class, SysRoleMenu::getMenuId, SysMenu::getId)
+                .selectAs(cb -> cb
+                        .add(SysRoleMenu::getSelectIsAdmin)
+                        .add(SysRoleMenu::getRoleId)
+                )
+                .in(SysRoleMenu::getRoleId, sysRoleIds)
+                .end();
+        List<SysMenuJoinSysRoleMenu> sysMenus = sysMenuMapper.joinSelectList(sysMenuJoinLambdaWrapper, SysMenuJoinSysRoleMenu.class);
+        JMap<Long, List<SysMenuJoinSysRoleMenu>> sysMenuMaps = new JArrayList<>(sysMenus).toMap(SysMenuJoinSysRoleMenu::getRoleId).group();
+    }
+
+}

+ 1 - 1
authorize-api-service/src/main/java/com/xy/service/impl/SysMenuServiceImpl.java

@@ -1,9 +1,9 @@
 package com.xy.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.entity.SysMenu;
 import com.xy.mapper.SysMenuMapper;
 import com.xy.service.SysMenuService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
 /**

+ 2 - 2
authorize-api-service/src/main/java/com/xy/service/impl/SysSystemServiceImpl.java

@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.dto.SysSystemDto;
 import com.xy.entity.SysSystem;
 import com.xy.mapper.SysSystemMapper;
-import com.xy.redis.RedisCache;
+import com.xy.redis.SystemRedisCache;
 import com.xy.service.SysSystemService;
 import com.xy.utils.MybatisPlusQuery;
 import com.xy.utils.PageBean;
@@ -64,7 +64,7 @@ public class SysSystemServiceImpl extends ServiceImpl<SysSystemMapper, SysSystem
                 .like(SysSystem::getName)
                 .build();
         //判断数据权限
-        RedisCache.getDataAuth(Long.parseLong(SaTokenUtils.getId().toString()), lambdaQueryWrapper, SysSystem::getSysUserId);
+        SystemRedisCache.getDataAuth(Long.parseLong(SaTokenUtils.getId().toString()), lambdaQueryWrapper, SysSystem::getSysUserId);
         IPage<SysSystem> page = page(toIPage(select.getPage()), lambdaQueryWrapper);
         return R.ok(toPageBean(SysSystemDto.Vo.class, page));
     }

+ 2 - 2
authorize-api-service/src/main/java/com/xy/service/impl/SysSystemUserServiceImpl.java

@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.dto.SysSystemUserDto;
 import com.xy.entity.SysSystemUser;
 import com.xy.mapper.SysSystemUserMapper;
-import com.xy.redis.RedisCache;
+import com.xy.redis.SystemRedisCache;
 import com.xy.service.SysSystemUserService;
 import com.xy.utils.*;
 import io.swagger.annotations.Api;
@@ -59,7 +59,7 @@ public class SysSystemUserServiceImpl extends ServiceImpl<SysSystemUserMapper, S
         update.setId(sysSystemUser.getId());
         update(update);
         //缓存权限相关到redis
-        RedisCache.cache(sysSystemUser.getId());
+        SystemRedisCache.cache(sysSystemUser.getId());
         return R.ok(StpUtil.getTokenValue());
     }
 

+ 11 - 0
authorize-api/src/main/java/com/xy/dto/SysMenuDto.java

@@ -0,0 +1,11 @@
+package com.xy.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@ApiModel("菜单交互类")
+@Accessors(chain = true)
+public class SysMenuDto {
+}

+ 0 - 0
authorize-api-service/src/main/java/com/xy/service/SysMenuService.java → authorize-api/src/main/java/com/xy/service/SysMenuService.java