| | |
| | | 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.role.entity.SysRole; |
| | | import com.mes.role.entity.SysRoleMenu; |
| | | import com.mes.userinfo.entity.SysUserRole; |
| | | import com.mes.utils.Result; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | import com.mes.base.BaseController; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/role/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); |
| | | |
| | | // 获取角色相关联的菜单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); |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | |
| | | @PostMapping("/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(""); |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | public class SysRoleController extends BaseController { |
| | | } |
| | | |