feat(role): 新增获取用户角色接口

- 在RoleController中新增getUserRole方法,用于获取所有用户角色
- 添加RoleService接口及其实现类RoleServiceImpl
- 创建RoleResponse DTO并优化UserProfileResponse中的角色映射逻辑
- 引入RoleService依赖并配置相关注解以支持新功能
- 实现角色数据的查询与转换,返回标准ApiResult格式结果
This commit is contained in:
Chaos
2025-11-26 06:25:31 +08:00
parent 2a94f493e6
commit 79ef40bd34
5 changed files with 58 additions and 6 deletions

View File

@@ -1,8 +1,15 @@
package cn.nopj.chaos_api.dto.response; package cn.nopj.chaos_api.dto.response;
import cn.nopj.chaos_api.domain.entity.Role;
import lombok.Data; import lombok.Data;
@Data @Data
public class RoleResponse { public class RoleResponse {
private Long id; private Long id;
private String name; private String name;
public RoleResponse(Role role){
this.id = role.getId();
this.name = role.getName();
}
} }

View File

@@ -10,17 +10,14 @@ public class UserProfileResponse {
private Long id; private Long id;
private String username; private String username;
private String nickname; private String nickname;
private String avatar;
private List<RoleResponse> roles; private List<RoleResponse> roles;
public UserProfileResponse(User user) { public UserProfileResponse(User user) {
this.id = user.getId(); this.id = user.getId();
this.username = user.getUsername(); this.username = user.getUsername();
this.nickname = user.getNickname(); this.nickname = user.getNickname();
this.roles = user.getRoles().stream().map(role -> { this.avatar = user.getAvatar();
RoleResponse roleResponse = new RoleResponse(); this.roles = user.getRoles().stream().map(RoleResponse::new).toList();
roleResponse.setId(role.getId());
roleResponse.setName(role.getName());
return roleResponse;
}).toList();
} }
} }

View File

@@ -0,0 +1,13 @@
package cn.nopj.chaos_api.service;
import cn.nopj.chaos_api.dto.response.RoleResponse;
import java.util.List;
public interface RoleService {
/**
* 获取所有角色
* @return 所有角色
*/
List<RoleResponse> getAllRoles();
}

View File

@@ -0,0 +1,18 @@
package cn.nopj.chaos_api.service.impl;
import cn.nopj.chaos_api.domain.entity.Role;
import cn.nopj.chaos_api.dto.response.RoleResponse;
import cn.nopj.chaos_api.mapper.RoleMapper;
import cn.nopj.chaos_api.service.RoleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService {
@Override
public List<RoleResponse> getAllRoles() {
return this.baseMapper.selectList(null).stream().map(RoleResponse::new).toList();
}
}

View File

@@ -2,16 +2,21 @@ package cn.nopj.chaos_api.controller;
import cn.nopj.chaos_api.dto.request.SetUserRoleRequest; import cn.nopj.chaos_api.dto.request.SetUserRoleRequest;
import cn.nopj.chaos_api.dto.response.RoleResponse;
import cn.nopj.chaos_api.model.ApiResult; import cn.nopj.chaos_api.model.ApiResult;
import cn.nopj.chaos_api.service.RoleService;
import cn.nopj.chaos_api.service.UserRoleService; import cn.nopj.chaos_api.service.UserRoleService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/** /**
* 角色管理 * 角色管理
@@ -24,6 +29,9 @@ public class RoleController {
@Autowired @Autowired
private UserRoleService userRoleService; private UserRoleService userRoleService;
@Autowired
private RoleService roleService;
/** /**
* 设置用户角色 * 设置用户角色
* @param request 请求参数 * @param request 请求参数
@@ -45,4 +53,13 @@ public class RoleController {
public ApiResult<?> revokeRolesFromUser(@RequestBody @Validated SetUserRoleRequest request) { public ApiResult<?> revokeRolesFromUser(@RequestBody @Validated SetUserRoleRequest request) {
return ApiResult.success("用户角色取消成功",userRoleService.revokeRolesFromUser(request)); return ApiResult.success("用户角色取消成功",userRoleService.revokeRolesFromUser(request));
} }
/**
* 获取用户角色
*/
@PreAuthorize("hasAuthority('admin')")
@GetMapping("/")
public ApiResult<List<RoleResponse>> getUserRole() {
return ApiResult.success(roleService.getAllRoles());
}
} }