Quellcode durchsuchen

角色权限查询

李进 vor 2 Jahren
Ursprung
Commit
a79a1451e7

+ 5 - 0
authorize-api-service/src/main/java/com/xy/entity/SysRole.java

@@ -45,4 +45,9 @@ public class SysRole extends BaseEntity2<SysRole> {
      */
     private Boolean status;
 
+    /**
+     * 是否预留角色
+     */
+    private Boolean isLeave;
+
 }

+ 8 - 0
authorize-api-service/src/main/java/com/xy/redis/RedisCache.java

@@ -148,4 +148,12 @@ public class RedisCache extends AuthorizeUtils {
         }
         return true;
     }
+
+    /**
+     * 判断数据查询权限
+     */
+    public static <T> boolean getDataAuth(Long systemId) {
+        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+        return authByData(systemId, request.getRequestURI());
+    }
 }

+ 33 - 69
authorize-api-service/src/main/java/com/xy/service/impl/SysRoleServiceImpl.java

@@ -1,7 +1,6 @@
 package com.xy.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -9,18 +8,19 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.dto.BatchDeleteDto;
 import com.xy.dto.CommDto;
 import com.xy.dto.SysRoleDto;
-import com.xy.entity.*;
+import com.xy.entity.SysDeptRole;
+import com.xy.entity.SysRole;
+import com.xy.entity.SysRoleMenu;
+import com.xy.entity.SysUserRole;
 import com.xy.mapper.SysRoleMapper;
-import com.xy.mapper.SysSystemMapper;
 import com.xy.redis.RedisCache;
 import com.xy.service.SysDeptRoleService;
 import com.xy.service.SysRoleMenuService;
 import com.xy.service.SysRoleService;
 import com.xy.service.SysUserRoleService;
+import com.xy.utils.MybatisPlusQuery;
 import com.xy.utils.PageBean;
 import com.xy.utils.R;
-import com.xy.vo.RoleMenuVo;
-import com.xy.vo.SysRoleGroupBySysVo;
 import com.xy.vo.SysRoleVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -30,10 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
-import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 
 import static com.xy.utils.Beans.copy;
 import static com.xy.utils.PlusBeans.toIPage;
@@ -52,11 +49,10 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
     private final SysRoleMenuService sysRoleMenuService;
     private final SysDeptRoleService sysDeptRoleService;
     private final SysUserRoleService sysUserRoleService;
-    private final SysSystemMapper sysSystemMapper;
 
     @ApiOperation(value = "新增、更新角色信息", notes = "新增、更新角色信息")
     @PostMapping("saveOrUpdate")
-    public R<Long> saveOrUpdate(@Valid @RequestBody SysRoleDto sysRoleDto) {
+    public R<Long> saveOrUpdate(@Valid @RequestBody SysRoleDto.SaveOrUpdate sysRoleDto) {
         Long id = sysRoleDto.getId();
         LambdaQueryWrapper<SysRole> lqw = new LambdaQueryWrapper<SysRole>()
                 .eq(SysRole::getCode, sysRoleDto.getCode())
@@ -64,12 +60,10 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
         if (id != null) {
             lqw.ne(SysRole::getId, id);
         }
-
         long count = count(lqw);
         if (count > 0) {
             return R.fail("此角色标识已存在");
         }
-
         SysRole sysRole = copy(SysRole.class, sysRoleDto).saveOrUpdate(RedisCache.getLoginId(Long.class), sysRoleDto.getSysId());
         saveOrUpdate(sysRole);
         return R.ok(sysRole.getId());
@@ -84,36 +78,9 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
                 deleteRoleById(new CommDto().setId(id));
             }
         }
-
         return R.ok(Boolean.TRUE);
     }
 
-    @ApiOperation(value = "获取角色详情", notes = "获取角色详情")
-    @GetMapping("{id}")
-    public R<SysRoleVo> getById(@PathVariable("id") Long id) {
-        SysRole role = super.getById(id);
-        SysRoleVo sysRoleVo = copy(SysRoleVo.class, role);
-        //角色菜单
-        sysRoleVo.setMenuIds(sysRoleMenuService.getRoleMenus(id));
-        return R.ok(sysRoleVo);
-    }
-
-    @ApiOperation(value = "分页获取角色信息", notes = "分页获取角色信息")
-    @GetMapping("page")
-    public R<PageBean<SysRoleVo>> getRolePage(PageBean pageBean, SysRoleDto sysRoleDto) {
-        IPage<SysRole> page = page(toIPage(pageBean), Wrappers.<SysRole>lambdaQuery()
-                .like(StrUtil.isNotBlank(sysRoleDto.getName()), SysRole::getName, sysRoleDto.getName())
-                .like(StrUtil.isNotBlank(sysRoleDto.getCode()), SysRole::getCode, sysRoleDto.getCode()));
-        return R.ok(toPageBean(SysRoleVo.class, page));
-
-    }
-
-    @ApiOperation(value = "编辑角色菜单", notes = "编辑角色菜单")
-    @PostMapping("saveRoleMenus")
-    public R<Boolean> saveRoleMenus(@RequestBody RoleMenuVo roleMenuVo) {
-        return R.ok(sysRoleMenuService.saveRoleMenus(roleMenuVo));
-    }
-
     @ApiOperation(value = "删除角色", notes = "删除角色")
     @DeleteMapping("deleteRoleById")
     @Transactional(rollbackFor = Exception.class)
@@ -130,38 +97,35 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
         return R.ok(Boolean.TRUE);
     }
 
-    @ApiOperation(value = "根据系统获取角色列表", notes = "根据系统获取角色列表")
-    @GetMapping("listBySys/{sysId}")
-    public R<List<SysRoleVo>> listBySysId(@PathVariable("sysId") Long sysId) {
-        List<SysRole> list = this.list(Wrappers.<SysRole>lambdaQuery().eq(SysRole::getSysId, sysId));
-        return R.ok(copy(SysRoleVo.class, list));
+    @ApiOperation(value = "获取角色详情", notes = "获取角色详情")
+    @GetMapping("{id}")
+    public R<SysRoleVo> getById(@PathVariable("id") Long id) {
+        SysRole role = super.getById(id);
+        SysRoleVo sysRoleVo = copy(SysRoleVo.class, role);
+        //角色菜单
+        sysRoleVo.setMenuIds(sysRoleMenuService.getRoleMenus(id));
+        return R.ok(sysRoleVo);
     }
 
-    @ApiOperation(value = "获取当前登录用户创建的角色列表", notes = "获取当前登录用户创建的角色列表")
-    @GetMapping("myCreatedRoles}")
-    public R<List<SysRoleGroupBySysVo>> myCreatedRoles() {
-        List<SysRoleGroupBySysVo> sysRoleGroupBySysVos = new ArrayList<>(16);
-        //当前用户创建的的角色列表
-        List<SysRole> sysRoleList = this.list(Wrappers.<SysRole>lambdaQuery().eq(SysRole::getCreateUser, RedisCache.getLoginId(Long.class)));
-        if (CollUtil.isNotEmpty(sysRoleList)) {
-            List<Long> sysIds = sysRoleList.stream().map(SysRole::getSysId).collect(Collectors.toList());
-            List<SysSystem> sysSystems = sysSystemMapper.selectBatchIds(sysIds);
-            //系统ID-系统名称映射
-            Map<Long, String> sysMap = sysSystems.stream().collect(Collectors.toMap(SysSystem::getId, SysSystem::getName));
-            //系统ID-系统角色映射
-            Map<Long, List<SysRole>> map = sysRoleList.stream().collect(Collectors.groupingBy(sysRole -> sysRole.getSysId()));
-            //按系统分组,封装角色信息
-            map.forEach((sysId, sysRoles) -> {
-                SysRoleGroupBySysVo sysRoleGroupBySysVo = new SysRoleGroupBySysVo();
-                sysRoleGroupBySysVo.setSysRoleVos(copy(SysRoleVo.class, sysRoles));
-                sysRoleGroupBySysVo.setSysId(sysId);
-                sysRoleGroupBySysVo.setName(sysMap.get(sysId));
-                sysRoleGroupBySysVos.add(sysRoleGroupBySysVo);
-            });
-
+    @ApiOperation(value = "分页获取角色信息", notes = "分页获取角色信息")
+    @PostMapping("page")
+    public R<PageBean<SysRoleVo>> getRolePage(@RequestBody SysRoleDto.Page sysRoleDto) {
+        PageBean pageBean = sysRoleDto.getPage();
+        LambdaQueryWrapper<SysRole> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(sysRoleDto, SysRole.class)
+                .like(SysRole::getName)
+                .like(SysRole::getDescription)
+                .build()
+                .orderByDesc(pageBean.getOrders().size() == 0, SysRole::getCreateTime);
+        boolean b = RedisCache.getDataAuth(sysRoleDto.getSysId());
+        //管理员查询权限查询所有,普通查询权限查询预留和自创建
+        if (!b) {
+            lambdaQueryWrapper.and(sysRoleLambdaQueryWrapper -> sysRoleLambdaQueryWrapper
+                    .eq(SysRole::getCreateTime, RedisCache.getLoginId(Long.class))
+                    .or()
+                    .eq(SysRole::getIsLeave, true)
+            );
         }
-        return R.ok(sysRoleGroupBySysVos);
+        IPage<SysRole> page = page(toIPage(pageBean), lambdaQueryWrapper);
+        return R.ok(toPageBean(SysRoleVo.class, page));
     }
-
-
 }

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

@@ -75,7 +75,7 @@ public class SysSystemServiceImpl extends ServiceImpl<SysSystemMapper, SysSystem
                 .create(RedisCache.getLoginId(Long.class));
         save(sysSystem);
         //增加管理员角色
-        R<Long> r = sysRoleService.saveOrUpdate(new SysRoleDto()
+        R<Long> r = sysRoleService.saveOrUpdate(new SysRoleDto.SaveOrUpdate()
                 .setSysId(sysSystem.getId())
                 .setCode(CommConsts.ADMIN_ROLE_CODE)
                 .setName("超级管理员")

+ 44 - 30
authorize-api/src/main/java/com/xy/dto/SysRoleDto.java

@@ -1,5 +1,6 @@
 package com.xy.dto;
 
+import com.xy.utils.PageBean;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -13,36 +14,49 @@ import javax.validation.constraints.Size;
 @Accessors(chain = true)
 public class SysRoleDto {
 
-    @ApiModelProperty(value = "角色ID", required = false)
-    private Long id;
-
-    @NotNull(message = "所属系统不可为空")
-    @ApiModelProperty(value = "系统", required = true)
-    private Long sysId;
-
-
-    @NotNull(message = "角色标识不可为空")
-    @Size(max = 64, min = 2, message = "角色标识长度需要在2-64之间")
-    @ApiModelProperty(value = "角色标识", required = true)
-    private String code;
-
-    @NotNull(message = "角色名称不能为空")
-    @Size(max = 64, min = 2, message = "角色名称长度需要在2-64之间")
-    @ApiModelProperty(value = "角色名称", required = true)
-    private String name;
-
-
-    @ApiModelProperty("描述")
-    @Size(max = 255, message = "描述不可超过255个字符")
-    private String description;
-
-
-    @ApiModelProperty("状态;true=启用(默认) false=禁用")
-    private Boolean status;
-
-
-    @ApiModelProperty("是否预留角色;true=是 false=否(默认)")
-    private Boolean isLeave;
+    @Data
+    @ApiModel
+    @Accessors(chain = true)
+    public static class SaveOrUpdate {
+        @ApiModelProperty(value = "角色ID")
+        private Long id;
+
+        @NotNull(message = "所属系统不可为空")
+        @ApiModelProperty(value = "系统", required = true)
+        private Long sysId;
+
+        @NotNull(message = "角色标识不可为空")
+        @Size(max = 64, min = 2, message = "角色标识长度需要在2-64之间")
+        @ApiModelProperty(value = "角色标识", required = true)
+        private String code;
+
+        @NotNull(message = "角色名称不能为空")
+        @Size(max = 64, min = 2, message = "角色名称长度需要在2-64之间")
+        @ApiModelProperty(value = "角色名称", required = true)
+        private String name;
+
+        @ApiModelProperty("描述")
+        @Size(max = 255, message = "描述不可超过255个字符")
+        private String description;
+
+        @ApiModelProperty("状态;true=启用(默认) false=禁用")
+        private Boolean status;
+
+        @ApiModelProperty("是否预留角色;true=是 false=否(默认)")
+        private Boolean isLeave;
+    }
+
+    @Data
+    @ApiModel
+    @Accessors(chain = true)
+    public static class Page extends SaveOrUpdate {
+        @NotNull(message = "所属系统不可为空")
+        @ApiModelProperty(value = "系统ID", required = true)
+        private Long sysId;
+
+        @ApiModelProperty(value = "分页对象")
+        private PageBean page;
+    }
 
 
 }