package com.youlai.system.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.youlai.system.enums.LogModuleEnum; import com.youlai.system.plugin.norepeat.annotation.PreventRepeatSubmit; import com.youlai.system.common.model.Option; import com.youlai.system.common.result.PageResult; import com.youlai.system.common.result.Result; import com.youlai.system.model.form.RoleForm; import com.youlai.system.model.query.RolePageQuery; import com.youlai.system.model.vo.RolePageVO; import com.youlai.system.plugin.syslog.annotation.LogAnnotation; import com.youlai.system.service.SysRoleService; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import jakarta.validation.Valid; import java.util.List; /** * 角色控制层 * * @author Ray * @since 2022/10/16 */ @Tag(name = "03.角色接口") @RestController @RequestMapping("/api/v1/roles") @RequiredArgsConstructor public class SysRoleController { private final SysRoleService roleService; @Operation(summary = "角色分页列表") @GetMapping("/page") @LogAnnotation( value = "角色分页列表",module = LogModuleEnum.ROLE) public PageResult getRolePage( RolePageQuery queryParams ) { Page result = roleService.getRolePage(queryParams); return PageResult.success(result); } @Operation(summary = "角色下拉列表") @GetMapping("/options") public Result>> listRoleOptions() { List> list = roleService.listRoleOptions(); return Result.success(list); } @Operation(summary = "新增角色") @PostMapping @PreAuthorize("@ss.hasPerm('sys:role:add')") @PreventRepeatSubmit public Result addRole(@Valid @RequestBody RoleForm roleForm) { boolean result = roleService.saveRole(roleForm); return Result.judge(result); } @Operation(summary = "角色表单数据") @GetMapping("/{roleId}/form") public Result getRoleForm( @Parameter(description = "角色ID") @PathVariable Long roleId ) { RoleForm roleForm = roleService.getRoleForm(roleId); return Result.success(roleForm); } @Operation(summary = "修改角色") @PutMapping(value = "/{id}") @PreAuthorize("@ss.hasPerm('sys:role:edit')") public Result updateRole(@Valid @RequestBody RoleForm roleForm) { boolean result = roleService.saveRole(roleForm); return Result.judge(result); } @Operation(summary = "删除角色") @DeleteMapping("/{ids}") @PreAuthorize("@ss.hasPerm('sys:role:delete')") public Result deleteRoles( @Parameter(description = "删除角色,多个以英文逗号(,)拼接") @PathVariable String ids ) { boolean result = roleService.deleteRoles(ids); return Result.judge(result); } @Operation(summary = "修改角色状态") @PutMapping(value = "/{roleId}/status") public Result updateRoleStatus( @Parameter(description = "角色ID") @PathVariable Long roleId, @Parameter(description = "状态(1:启用;0:禁用)") @RequestParam Integer status ) { boolean result = roleService.updateRoleStatus(roleId, status); return Result.judge(result); } @Operation(summary = "获取角色的菜单ID集合") @GetMapping("/{roleId}/menuIds") public Result> getRoleMenuIds( @Parameter(description = "角色ID") @PathVariable Long roleId ) { List menuIds = roleService.getRoleMenuIds(roleId); return Result.success(menuIds); } @Operation(summary = "分配菜单(包括按钮权限)给角色") @PutMapping("/{roleId}/menus") public Result assignMenusToRole( @PathVariable Long roleId, @RequestBody List menuIds ) { boolean result = roleService.assignMenusToRole(roleId, menuIds); return Result.judge(result); } }