Files
wenzi/src/main/java/com/mosquito/project/permission/UserController.java

67 lines
2.0 KiB
Java
Raw Normal View History

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<List<String>> getUserRoles(@PathVariable Long userId) {
List<Long> roleIds = userRoleRepository.findRoleIdsByUserId(userId);
List<String> 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<Void> 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<Long> roleIds;
public List<Long> getRoleIds() { return roleIds; }
public void setRoleIds(List<Long> roleIds) { this.roleIds = roleIds; }
}
}