package com.mosquito.project.permission; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; /** * 用户权限控制器 - 处理用户角色分配 */ @RestController @RequestMapping("/api/users") public class UserController { private final UserRoleRepository userRoleRepository; private final RoleRepository roleRepository; public UserController(UserRoleRepository userRoleRepository, RoleRepository roleRepository) { this.userRoleRepository = userRoleRepository; this.roleRepository = roleRepository; } /** * 获取用户角色 */ @GetMapping("/{userId}/roles") public ResponseEntity> getUserRoles(@PathVariable Long userId) { List roleIds = userRoleRepository.findRoleIdsByUserId(userId); List roleCodes = roleIds.stream() .map(id -> roleRepository.findById(id)) .filter(java.util.Optional::isPresent) .map(java.util.Optional::get) .map(SysRole::getRoleCode) .toList(); return ResponseEntity.ok(roleCodes); } /** * 分配角色给用户 */ @PostMapping("/{userId}/roles") public ResponseEntity assignRoles(@PathVariable Long userId, @RequestBody AssignRolesRequest request) { // 删除现有角色关联 userRoleRepository.deleteByUserId(userId); // 创建新的角色关联 for (Long roleId : request.getRoleIds()) { SysUserRole userRole = new SysUserRole(); userRole.setUserId(userId); userRole.setRoleId(roleId); userRoleRepository.save(userRole); } return ResponseEntity.ok().build(); } /** * 角色分配请求 */ public static class AssignRolesRequest { private List roleIds; public List getRoleIds() { return roleIds; } public void setRoleIds(List roleIds) { this.roleIds = roleIds; } } }