From 79ef40bd3474faa22e1c6ca5d04b84eac84ab67d Mon Sep 17 00:00:00 2001 From: Chaos Date: Wed, 26 Nov 2025 06:25:31 +0800 Subject: [PATCH] =?UTF-8?q?feat(role):=20=E6=96=B0=E5=A2=9E=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=94=A8=E6=88=B7=E8=A7=92=E8=89=B2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在RoleController中新增getUserRole方法,用于获取所有用户角色 - 添加RoleService接口及其实现类RoleServiceImpl - 创建RoleResponse DTO并优化UserProfileResponse中的角色映射逻辑 - 引入RoleService依赖并配置相关注解以支持新功能 - 实现角色数据的查询与转换,返回标准ApiResult格式结果 --- .../chaos_api/dto/response/RoleResponse.java | 7 +++++++ .../dto/response/UserProfileResponse.java | 9 +++------ .../cn/nopj/chaos_api/service/RoleService.java | 13 +++++++++++++ .../service/impl/RoleServiceImpl.java | 18 ++++++++++++++++++ .../chaos_api/controller/RoleController.java | 17 +++++++++++++++++ 5 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 chaos_api_interface/src/main/java/cn/nopj/chaos_api/service/RoleService.java create mode 100644 chaos_api_service/src/main/java/cn/nopj/chaos_api/service/impl/RoleServiceImpl.java diff --git a/chaos_api_domain/src/main/java/cn/nopj/chaos_api/dto/response/RoleResponse.java b/chaos_api_domain/src/main/java/cn/nopj/chaos_api/dto/response/RoleResponse.java index 27c5738..48d3308 100644 --- a/chaos_api_domain/src/main/java/cn/nopj/chaos_api/dto/response/RoleResponse.java +++ b/chaos_api_domain/src/main/java/cn/nopj/chaos_api/dto/response/RoleResponse.java @@ -1,8 +1,15 @@ package cn.nopj.chaos_api.dto.response; +import cn.nopj.chaos_api.domain.entity.Role; import lombok.Data; @Data public class RoleResponse { private Long id; private String name; + + + public RoleResponse(Role role){ + this.id = role.getId(); + this.name = role.getName(); + } } diff --git a/chaos_api_domain/src/main/java/cn/nopj/chaos_api/dto/response/UserProfileResponse.java b/chaos_api_domain/src/main/java/cn/nopj/chaos_api/dto/response/UserProfileResponse.java index e64eb05..b1322c6 100644 --- a/chaos_api_domain/src/main/java/cn/nopj/chaos_api/dto/response/UserProfileResponse.java +++ b/chaos_api_domain/src/main/java/cn/nopj/chaos_api/dto/response/UserProfileResponse.java @@ -10,17 +10,14 @@ public class UserProfileResponse { private Long id; private String username; private String nickname; + private String avatar; private List roles; public UserProfileResponse(User user) { this.id = user.getId(); this.username = user.getUsername(); this.nickname = user.getNickname(); - this.roles = user.getRoles().stream().map(role -> { - RoleResponse roleResponse = new RoleResponse(); - roleResponse.setId(role.getId()); - roleResponse.setName(role.getName()); - return roleResponse; - }).toList(); + this.avatar = user.getAvatar(); + this.roles = user.getRoles().stream().map(RoleResponse::new).toList(); } } diff --git a/chaos_api_interface/src/main/java/cn/nopj/chaos_api/service/RoleService.java b/chaos_api_interface/src/main/java/cn/nopj/chaos_api/service/RoleService.java new file mode 100644 index 0000000..6760e70 --- /dev/null +++ b/chaos_api_interface/src/main/java/cn/nopj/chaos_api/service/RoleService.java @@ -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 getAllRoles(); +} diff --git a/chaos_api_service/src/main/java/cn/nopj/chaos_api/service/impl/RoleServiceImpl.java b/chaos_api_service/src/main/java/cn/nopj/chaos_api/service/impl/RoleServiceImpl.java new file mode 100644 index 0000000..66500eb --- /dev/null +++ b/chaos_api_service/src/main/java/cn/nopj/chaos_api/service/impl/RoleServiceImpl.java @@ -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 implements RoleService { + @Override + public List getAllRoles() { + return this.baseMapper.selectList(null).stream().map(RoleResponse::new).toList(); + } +} diff --git a/chaos_api_web/src/main/java/cn/nopj/chaos_api/controller/RoleController.java b/chaos_api_web/src/main/java/cn/nopj/chaos_api/controller/RoleController.java index c4aed12..9bfb477 100644 --- a/chaos_api_web/src/main/java/cn/nopj/chaos_api/controller/RoleController.java +++ b/chaos_api_web/src/main/java/cn/nopj/chaos_api/controller/RoleController.java @@ -2,16 +2,21 @@ package cn.nopj.chaos_api.controller; 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.service.RoleService; import cn.nopj.chaos_api.service.UserRoleService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; 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.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** * 角色管理 @@ -24,6 +29,9 @@ public class RoleController { @Autowired private UserRoleService userRoleService; + @Autowired + private RoleService roleService; + /** * 设置用户角色 * @param request 请求参数 @@ -45,4 +53,13 @@ public class RoleController { public ApiResult revokeRolesFromUser(@RequestBody @Validated SetUserRoleRequest request) { return ApiResult.success("用户角色取消成功",userRoleService.revokeRolesFromUser(request)); } + + /** + * 获取用户角色 + */ + @PreAuthorize("hasAuthority('admin')") + @GetMapping("/") + public ApiResult> getUserRole() { + return ApiResult.success(roleService.getAllRoles()); + } }