| | |
| | | package com.mes.role.controller; |
| | | |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.mes.entity.request.GeneralRequest; |
| | | import com.mes.role.entity.SysRole; |
| | | import com.mes.role.entity.SysRoleMenu; |
| | | import com.mes.userinfo.entity.SysUserRole; |
| | | import com.mes.role.entity.vo.SysRoleVO; |
| | | import com.mes.role.service.SysRoleService; |
| | | import com.mes.utils.Result; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | | * 角色表 前端控制器 |
| | | * </p> |
| | | * |
| | | * @author zhoush |
| | | * @since 2024-04-11 |
| | | */ |
| | | @Api(description = "角色管理") |
| | | @RestController |
| | | @RequestMapping("/role/sys-role") |
| | | @RequestMapping("/sys/role") |
| | | public class SysRoleController { |
| | | @PreAuthorize("hasAuthority('sys:role:list')") |
| | | @GetMapping("/info/{id}") |
| | | public Result info(@PathVariable("id") Long id) { |
| | | |
| | | SysRole sysRole = sysRoleService.getById(id); |
| | | @Autowired |
| | | private SysRoleService sysRoleService; |
| | | |
| | | // 获取角色相关联的菜单id |
| | | List<SysRoleMenu> roleMenus = sysRoleMenuService.list(new QueryWrapper<SysRoleMenu>().eq("role_id", id)); |
| | | List<Long> menuIds = roleMenus.stream().map(p -> p.getMenuId()).collect(Collectors.toList()); |
| | | |
| | | sysRole.setMenuIds(menuIds); |
| | | return Result.success(sysRole); |
| | | @ApiOperation("新增角色及角色下的权限信息") |
| | | @PostMapping("/saveRole") |
| | | // @PreAuthorize("hasAuthority('sys:role:save')") |
| | | public Result<SysRole> saveRole(@Validated @RequestBody SysRoleVO sysRoleVO) { |
| | | return Result.success(sysRoleService.saveRole(sysRoleVO)); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('sys:role:list')") |
| | | @GetMapping("/list") |
| | | public Result list(String name) { |
| | | |
| | | Page<SysRole> pageData = sysRoleService.page(getPage(), |
| | | new QueryWrapper<SysRole>() |
| | | .like(StrUtil.isNotBlank(name), "name", name) |
| | | ); |
| | | |
| | | return Result.success(pageData); |
| | | @ApiOperation("编辑角色及角色下的权限信息") |
| | | @PostMapping("/updateRole") |
| | | // @PreAuthorize("hasAuthority('sys:role:save')") |
| | | public Result<String> updateRole(@Validated @RequestBody SysRoleVO sysRoleVO) { |
| | | return Result.success(sysRoleService.updateRole(sysRoleVO)); |
| | | } |
| | | |
| | | @PostMapping("/save") |
| | | @PreAuthorize("hasAuthority('sys:role:save')") |
| | | public Result save(@Validated @RequestBody SysRole sysRole) { |
| | | |
| | | sysRole.setCreated(LocalDateTime.now()); |
| | | sysRole.setStatu(Const.STATUS_ON); |
| | | |
| | | sysRoleService.save(sysRole); |
| | | return Result.success(sysRole); |
| | | @ApiOperation("查询角色及角色下的权限信息") |
| | | @PostMapping("/queryRole") |
| | | // @PreAuthorize("hasAuthority('sys:role:save')") |
| | | public Result<List<SysRoleVO>> queryRole(@Validated @RequestBody GeneralRequest request) { |
| | | return Result.success(sysRoleService.queryRole(request)); |
| | | } |
| | | |
| | | @PostMapping("/update") |
| | | @PreAuthorize("hasAuthority('sys:role:update')") |
| | | public Result update(@Validated @RequestBody SysRole sysRole) { |
| | | |
| | | sysRole.setUpdated(LocalDateTime.now()); |
| | | |
| | | sysRoleService.updateById(sysRole); |
| | | |
| | | // 更新缓存 |
| | | sysUserService.clearUserAuthorityInfoByRoleId(sysRole.getId()); |
| | | |
| | | return Result.success(sysRole); |
| | | } |
| | | |
| | | @ApiOperation("删除角色及角色下的权限信息") |
| | | @PostMapping("/delete") |
| | | @PreAuthorize("hasAuthority('sys:role:delete')") |
| | | // @PreAuthorize("hasAuthority('sys:role:delete')") |
| | | @Transactional |
| | | public Result info(@RequestBody Long[] ids) { |
| | | |
| | | sysRoleService.removeByIds(Arrays.asList(ids)); |
| | | |
| | | // 删除中间表 |
| | | sysUserRoleService.remove(new QueryWrapper<SysUserRole>().in("role_id", ids)); |
| | | sysRoleMenuService.remove(new QueryWrapper<SysRoleMenu>().in("role_id", ids)); |
| | | |
| | | // 缓存同步删除 |
| | | Arrays.stream(ids).forEach(id -> { |
| | | // 更新缓存 |
| | | sysUserService.clearUserAuthorityInfoByRoleId(id); |
| | | }); |
| | | |
| | | return Result.success(""); |
| | | public Result<String> deleteRole(@RequestBody List<Long> ids) { |
| | | return Result.success(sysRoleService.deleteRole(ids)); |
| | | } |
| | | |
| | | @Transactional |
| | | @PostMapping("/perm/{roleId}") |
| | | @PreAuthorize("hasAuthority('sys:role:perm')") |
| | | public Result info(@PathVariable("roleId") Long roleId, @RequestBody Long[] menuIds) { |
| | | |
| | | List<SysRoleMenu> sysRoleMenus = new ArrayList<>(); |
| | | |
| | | Arrays.stream(menuIds).forEach(menuId -> { |
| | | SysRoleMenu roleMenu = new SysRoleMenu(); |
| | | roleMenu.setMenuId(menuId); |
| | | roleMenu.setRoleId(roleId); |
| | | |
| | | sysRoleMenus.add(roleMenu); |
| | | }); |
| | | |
| | | // 先删除原来的记录,再保存新的 |
| | | sysRoleMenuService.remove(new QueryWrapper<SysRoleMenu>().eq("role_id", roleId)); |
| | | sysRoleMenuService.saveBatch(sysRoleMenus); |
| | | |
| | | // 删除缓存 |
| | | sysUserService.clearUserAuthorityInfoByRoleId(roleId); |
| | | |
| | | return Result.success(menuIds); |
| | | } |
| | | } |
| | | |
| | | } |