package com.xiaopeng.account.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.xiaopeng.account.mapper.SysRoleMenuMapper; import com.xiaopeng.account.service.ISysDeptService; import com.xiaopeng.account.service.ISysRoleBakService; import com.xiaopeng.account.service.ISysUserRoleService; import com.xiaopeng.account.service.ISysUserService; import com.xiaopeng.account.vo.RoleAddDto; import com.xiaopeng.account.vo.RoleInfoVo; import com.xiaopeng.account.vo.RoleUpdateDto; import com.xiaopeng.api.model.account.*; import com.xiaopeng.common.core.utils.StringUtils; import com.xiaopeng.common.core.web.controller.BaseController; import com.xiaopeng.common.core.web.domain.AjaxResult; import com.xiaopeng.common.core.web.page.BasePage; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.common.core.web.page.TableDataInfo; import com.xiaopeng.common.log.annotation.Log; import com.xiaopeng.common.log.enums.BusinessType; import com.xiaopeng.common.security.annotation.Logical; import com.xiaopeng.common.security.annotation.RequiresPermissions; import com.xiaopeng.common.security.utils.SecurityUtils; import io.swagger.annotations.ApiOperation; import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * 角色信息 * * @author ruoyi */ @RestController @RequestMapping("/role") public class SysRoleBakController extends BaseController { @Resource private ISysRoleBakService roleService; @Resource private ISysUserService userService; @Resource private ISysDeptService deptService; @Resource private SysRoleMenuMapper sysRoleMenuMapper; @Resource private ISysUserRoleService sysUserRoleService; @ApiOperation(value = "获取角色列表", tags = {"管理后台-系统用户管理"}) @GetMapping("/list") public AjaxResult list() { List list = roleService.list(new LambdaQueryWrapper().eq(SysRoleBak::getDelFlag, 0).eq(SysRoleBak::getStatus, 0)); return AjaxResult.success(list); } @ResponseBody @GetMapping("/listPage") public AjaxResult listPage(String name, BasePage basePage) { PageInfo pageInfo = new PageInfo<>(basePage.getPageNum(), basePage.getPageSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper().eq(SysRoleBak::getStatus, 0).eq(SysRoleBak::getDelFlag, 0); if (StringUtils.isNotEmpty(name)) { wrapper.like(SysRoleBak::getRoleName, name); } PageInfo page = roleService.page(pageInfo, wrapper.orderByDesc(SysRoleBak::getCreateTime)); for (SysRoleBak record : page.getRecords()) { long count = sysUserRoleService.count(new LambdaQueryWrapper().eq(SysUserRole::getRoleId, record.getRoleId())); record.setNumber(count); } return AjaxResult.success(page); } @ResponseBody @PostMapping("/roleAdd") @ApiOperation(value = "添加角色", tags = {"管理后台-角色管理"}) public AjaxResult roleAdd(@Validated @RequestBody RoleAddDto dto) { SysRoleBak role = new SysRoleBak(); role.setRoleName(dto.getRoleName()); long count = roleService.count(Wrappers.lambdaQuery(SysRoleBak.class) .eq(SysRoleBak::getRoleName, dto.getRoleName())); if (count > 0) { return AjaxResult.error("角色已存在,请重新输入"); } List menuIds1 = dto.getMenuIds(); if (CollectionUtils.isEmpty(menuIds1)) { return AjaxResult.error("菜单id不能为空"); } role.setMenuIds(dto.getMenuIds().toArray((new Long[dto.getMenuIds().size()]))); // 添加角色 role.setRemark(dto.getRemark()); role.setCreateBy(SecurityUtils.getUsername()); role.setCreateTime(new Date()); roleService.insertRole(role); return AjaxResult.success(); } @GetMapping("/roleInfo") public AjaxResult roleInfo(@RequestParam Long id) { SysRoleBak role = roleService.selectRoleById(id); RoleInfoVo roleInfoVo = new RoleInfoVo(); roleInfoVo.setRoleId(role.getRoleId()); roleInfoVo.setRoleName(role.getRoleName()); // 获取当前角色的菜单id List menusId = sysRoleMenuMapper.selectList(new LambdaQueryWrapper().eq(SysRoleMenu::getRoleId, id)).stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList()); if (menusId.size() == 0) { return AjaxResult.success(new ArrayList<>()); } //获取当前的权限菜单 // List all = menuMapper.getAllInIds(menusId); // 第三级 // List s3 = all.stream().filter(e -> e.getMenuType().equals("F")).collect(Collectors.toList()); // // 第二级 // List s2 = all.stream().filter(e -> e.getMenuType().equals("C")).collect(Collectors.toList()); // // 第一级 // List s1 = all.stream().filter(e -> e.getMenuType().equals("M")).collect(Collectors.toList()); // for (SysMenus menus : s2) { // List collect = s3.stream().filter(e -> e.getParentId().equals(menus.getMenuId())).collect(Collectors.toList()); // menus.setChildren(collect); // } // // for (SysMenus menus : s1) { // List collect = s2.stream().filter(e -> e.getParentId().equals(menus.getMenuId())).collect(Collectors.toList()); // menus.setChildren(collect); // } roleInfoVo.setMenus(menusId); roleInfoVo.setRemark(role.getRemark()); return AjaxResult.success(roleInfoVo); } @PostMapping("/roleUpdate") public AjaxResult roleUpdate(@Validated @RequestBody RoleUpdateDto dto) { SysRoleBak role = new SysRoleBak(); role.setRoleName(dto.getRoleName()); SysRoleBak one = roleService.getOne(new LambdaQueryWrapper().eq(SysRoleBak::getRoleName, dto.getRoleName())); if (null != one && !one.getRoleId().equals(dto.getRoleId())) { return AjaxResult.error("角色已存在,请重新输入"); } role.setRemark(dto.getRemark()); role.setUpdateBy(SecurityUtils.getUsername()); role.setUpdateTime(new Date()); role.setRoleId(dto.getRoleId()); roleService.updateRole(role); ArrayList sysRoleMenus = new ArrayList<>(); List menuIds = dto.getMenuIds(); // 移除原来的权限菜单 if (menuIds.contains(1061L)) { sysRoleMenuMapper.delete(new LambdaQueryWrapper() .eq(SysRoleMenu::getRoleId, dto.getRoleId())); } else { sysRoleMenuMapper.delete(new LambdaQueryWrapper() .eq(SysRoleMenu::getRoleId, dto.getRoleId()) .ne(SysRoleMenu::getMenuId, 1061L) .ne(SysRoleMenu::getMenuId, 1062L) .ne(SysRoleMenu::getMenuId, 1065L) .ne(SysRoleMenu::getMenuId, 1073L) .ne(SysRoleMenu::getMenuId, 1161L) .ne(SysRoleMenu::getMenuId, 1203L) ); } for (Long menuId : menuIds) { SysRoleMenu sysRoleMenu = new SysRoleMenu(); sysRoleMenu.setMenuId(menuId); sysRoleMenu.setRoleId(role.getRoleId()); sysRoleMenus.add(sysRoleMenu); } sysRoleMenuMapper.batchRoleMenu(sysRoleMenus); return AjaxResult.success(); } /** * 删除角色 */ @DeleteMapping("/{roleIds}") public AjaxResult remove(@PathVariable Long[] roleIds) { return toAjax(roleService.deleteRoleByIds(roleIds)); } /** * 查询已分配用户角色列表 */ @GetMapping("/authUser/allocatedList") public TableDataInfo allocatedList(SysUser user) { startPage(); List list = userService.selectAllocatedList(user); return getDataTable(list); } /** * 查询未分配用户角色列表 */ @GetMapping("/authUser/unallocatedList") public TableDataInfo unallocatedList(SysUser user) { startPage(); List list = userService.selectUnallocatedList(user); return getDataTable(list); } /** * 获取对应角色部门树列表 */ @RequiresPermissions("") @GetMapping(value = "/deptTree/{roleId}") public AjaxResult deptTree(@PathVariable("roleId") Long roleId) { AjaxResult ajax = AjaxResult.success(); ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId)); ajax.put("depts", deptService.selectDeptTreeList(new SysDept())); return ajax; } }