|
@@ -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));
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}
|