Răsfoiți Sursa

feat: 用户添加角色

wanggaokun 3 săptămâni în urmă
părinte
comite
cda468dc68

+ 7 - 0
eco-nexus-core/nexus-core-biz/src/main/java/org/eco/vip/nexus/core/controller/user/UserController.java

@@ -21,6 +21,7 @@ import org.eco.vip.core.utils.ObjUtils;
 import org.eco.vip.core.utils.StrUtils;
 import org.eco.vip.nexus.core.domain.auth.pojo.LoginUserVO;
 import org.eco.vip.nexus.core.domain.user.pojo.UserBO;
+import org.eco.vip.nexus.core.domain.user.pojo.UserRoleVO;
 import org.eco.vip.nexus.core.domain.user.pojo.UserVO;
 import org.eco.vip.nexus.core.service.user.IUserService;
 import org.eco.vip.security.annotation.PermissionsResource;
@@ -80,6 +81,7 @@ public class UserController {
         }
         return success();
     }
+
     @PutMapping("/password/reset")
     @SaCheckPermission("system:user:edit")
     public CommonResult<String> passwordReset(@RequestBody @Valid UserBO userBO) {
@@ -120,4 +122,9 @@ public class UserController {
         loginUserVO.setRoleCodes(loginUserStorage.getRoleCodes());
         return success(loginUserVO);
     }
+
+    @GetMapping("/role/{id}")
+    public CommonResult<UserRoleVO> getRole(@PathVariable @Valid @NotBlank(message = "userId不能为空") String id) {
+        return success(userService.selectRoleByUserId(id));
+    }
 }

+ 27 - 0
eco-nexus-core/nexus-core-biz/src/main/java/org/eco/vip/nexus/core/domain/user/pojo/UserRoleVO.java

@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2025 GaoKunW
+ */
+
+package org.eco.vip.nexus.core.domain.user.pojo;
+
+
+import lombok.Builder;
+import lombok.Data;
+import org.eco.vip.nexus.core.domain.role.pojo.RoleVO;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @description UserRoleVO
+ *
+ * @author GaoKunW
+ * @date 2025/7/19 03:06
+ */
+@Data
+@Builder
+public class UserRoleVO implements Serializable {
+
+    private List<RoleVO> allRoles;
+    private List<String> hasRoles;
+}

+ 10 - 1
eco-nexus-core/nexus-core-biz/src/main/java/org/eco/vip/nexus/core/service/user/IUserService.java

@@ -6,11 +6,12 @@
 package org.eco.vip.nexus.core.service.user;
 
 
+import org.eco.vip.core.pojo.PageResult;
 import org.eco.vip.nexus.core.domain.user.User;
 import org.eco.vip.nexus.core.domain.user.UserRole;
 import org.eco.vip.nexus.core.domain.user.pojo.UserBO;
+import org.eco.vip.nexus.core.domain.user.pojo.UserRoleVO;
 import org.eco.vip.nexus.core.domain.user.pojo.UserVO;
-import org.eco.vip.core.pojo.PageResult;
 import org.eco.vip.orm.service.IBaseService;
 
 import java.util.List;
@@ -80,5 +81,13 @@ public interface IUserService extends IBaseService<User> {
      */
     List<String> selectRoleIdByUserId(String id);
 
+    /**
+     * 根据ID查询信息
+     *
+     ** @param id ID
+     * @return 结果
+     */
+    UserRoleVO selectRoleByUserId(String id);
+
     UserVO selectTenantUserByUserName(String tenantId, String username);
 }

+ 14 - 2
eco-nexus-core/nexus-core-biz/src/main/java/org/eco/vip/nexus/core/service/user/UserService.java

@@ -12,17 +12,20 @@ import com.mybatisflex.core.query.QueryMethods;
 import com.mybatisflex.core.query.QueryWrapper;
 import jakarta.annotation.Resource;
 import org.eco.vip.core.constant.Constants;
+import org.eco.vip.core.pojo.PageResult;
 import org.eco.vip.core.utils.ConfigUtils;
+import org.eco.vip.core.utils.MapstructUtils;
+import org.eco.vip.nexus.core.domain.role.pojo.RoleVO;
 import org.eco.vip.nexus.core.domain.user.User;
 import org.eco.vip.nexus.core.domain.user.UserRole;
 import org.eco.vip.nexus.core.domain.user.pojo.UserBO;
+import org.eco.vip.nexus.core.domain.user.pojo.UserRoleVO;
 import org.eco.vip.nexus.core.domain.user.pojo.UserVO;
 import org.eco.vip.nexus.core.mapper.UserMapper;
 import org.eco.vip.nexus.core.mapper.UserRoleMapper;
+import org.eco.vip.nexus.core.service.role.IRoleService;
 import org.eco.vip.orm.domain.PageQuery;
-import org.eco.vip.core.pojo.PageResult;
 import org.eco.vip.orm.service.BaseService;
-import org.eco.vip.core.utils.MapstructUtils;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -42,6 +45,8 @@ public class UserService extends BaseService<UserMapper, User> implements IUserS
     private UserMapper userMapper;
     @Resource
     private UserRoleMapper userRoleMapper;
+    @Resource
+    private IRoleService roleService;
 
     private QueryWrapper buildQueryWrapper(UserBO userBO) {
         return super.buildBaseQueryWrapper()
@@ -102,6 +107,13 @@ public class UserService extends BaseService<UserMapper, User> implements IUserS
         return userRoleMapper.selectListByQueryAs(QueryWrapper.create().select(QueryMethods.distinct(USER_ROLE.ROLE_ID)).where(USER_ROLE.USER_ID.eq(id)), String.class);
     }
 
+    @Override
+    public UserRoleVO selectRoleByUserId(String userId) {
+        List<String> roleIds = userRoleMapper.selectListWithRelationsByQueryAs(query().select(USER_ROLE.ROLE_ID).and(USER_ROLE.USER_ID.eq(userId)), String.class);
+        List<RoleVO> roleVOList = roleService.listAs(query(), RoleVO.class);
+        return UserRoleVO.builder().hasRoles(roleIds).allRoles(roleVOList).build();
+    }
+
     @Override
     public UserVO selectTenantUserByUserName(String tenantId, String account) {
         QueryWrapper queryWrapper = buildOneQueryWrapper()