package com.tcm.training.admin.user.controller; import com.tcm.training.admin.common.ApiResponse; import com.tcm.training.admin.common.PageResponse; import com.tcm.training.admin.user.dto.RoleSaveRequest; import com.tcm.training.admin.user.service.RoleAppService; import com.tcm.training.admin.user.vo.PermissionTreeNodeVO; import com.tcm.training.admin.user.vo.RoleDetailVO; import com.tcm.training.admin.user.vo.RoleListItemVO; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; import java.util.List; @Validated @RestController @RequestMapping({"/api/v1", "/api"}) public class RoleController { private final RoleAppService roleAppService; public RoleController(RoleAppService roleAppService) { this.roleAppService = roleAppService; } @GetMapping("/roles") public ApiResponse> page( @RequestParam(required = false, defaultValue = "1") int page, @RequestParam(required = false, defaultValue = "10") int pageSize, @RequestParam(required = false) String roleName ) { return ApiResponse.ok(roleAppService.page(page, pageSize, roleName)); } @GetMapping("/roles/{id}") public ApiResponse detail(@PathVariable("id") Long id) { return ApiResponse.ok(roleAppService.detail(id)); } @GetMapping("/roles/permission-tree") public ApiResponse> permissionTree() { return ApiResponse.ok(roleAppService.permissionTree()); } @PostMapping("/roles") public ApiResponse create(@Valid @RequestBody RoleSaveRequest req) { return ApiResponse.ok(roleAppService.create(req)); } @PutMapping("/roles/{id}") public ApiResponse update( @PathVariable("id") Long id, @Valid @RequestBody RoleSaveRequest req ) { return ApiResponse.ok(roleAppService.update(id, req)); } @DeleteMapping("/roles/{id}") public ApiResponse delete(@PathVariable("id") Long id) { roleAppService.delete(id); return ApiResponse.ok(null); } }