package net.maku.system.controller; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; import net.maku.framework.common.page.PageResult; import net.maku.framework.common.utils.Result; import net.maku.framework.security.user.SecurityUser; import net.maku.framework.security.user.UserDetail; import net.maku.system.convert.SysRoleConvert; import net.maku.system.entity.SysRoleEntity; import net.maku.system.service.SysMenuService; import net.maku.system.service.SysRoleDataScopeService; import net.maku.system.service.SysRoleMenuService; import net.maku.system.service.SysRoleService; import net.maku.system.vo.SysMenuVO; import net.maku.system.query.SysRoleQuery; import net.maku.system.vo.SysRoleDataScopeVO; import net.maku.system.vo.SysRoleVO; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; /** * 角色管理 * * @author 阿沐 babamu@126.com */ @RestController @RequestMapping("sys/role") @Tag(name="角色管理") @AllArgsConstructor public class SysRoleController { private final SysRoleService sysRoleService; private final SysRoleMenuService sysRoleMenuService; private final SysRoleDataScopeService sysRoleDataScopeService; private final SysMenuService sysMenuService; @GetMapping("page") @Operation(summary = "分页") @PreAuthorize("hasAuthority('sys:role:page')") public Result> page(@Valid SysRoleQuery query){ PageResult page = sysRoleService.page(query); return Result.ok(page); } @GetMapping("list") @Operation(summary = "列表") @PreAuthorize("hasAuthority('sys:role:list')") public Result> list(){ List list = sysRoleService.getList(new SysRoleQuery()); return Result.ok(list); } @GetMapping("{id}") @Operation(summary = "信息") @PreAuthorize("hasAuthority('sys:role:info')") public Result get(@PathVariable("id") Long id){ SysRoleEntity entity = sysRoleService.getById(id); // 转换对象 SysRoleVO role = SysRoleConvert.INSTANCE.convert(entity); // 查询角色对应的菜单 List menuIdList = sysRoleMenuService.getMenuIdList(id); role.setMenuIdList(menuIdList); // 查询角色对应的数据权限 List orgIdList = sysRoleDataScopeService.getOrgIdList(id); role.setOrgIdList(orgIdList); return Result.ok(role); } @PostMapping @Operation(summary = "保存", hidden = true) @PreAuthorize("hasAuthority('sys:role:save')") public Result save(@RequestBody @Valid SysRoleVO vo){ sysRoleService.save(vo); return Result.ok(); } @PutMapping @Operation(summary = "修改") @PreAuthorize("hasAuthority('sys:role:update')") public Result update(@RequestBody @Valid SysRoleVO vo){ sysRoleService.update(vo); return Result.ok(); } @PutMapping("data-scope") @Operation(summary = "数据权限") @PreAuthorize("hasAuthority('sys:role:update')") public Result dataScope(@RequestBody @Valid SysRoleDataScopeVO vo){ sysRoleService.dataScope(vo); return Result.ok(); } @DeleteMapping @Operation(summary = "删除") @PreAuthorize("hasAuthority('sys:role:delete')") public Result delete(@RequestBody List idList){ sysRoleService.delete(idList); return Result.ok(); } @GetMapping("menu") @Operation(summary = "角色菜单") @PreAuthorize("hasAuthority('sys:role:menu')") public Result> menu(){ UserDetail user = SecurityUser.getUser(); List list = sysMenuService.getUserMenuList(user, null); return Result.ok(list); } }