Browse Source

1、获取登录用户对应员工的权限信息调整

dongpo 1 year ago
parent
commit
8f5b32eee8

+ 5 - 0
yudao-module-personnel/yudao-module-employee-api/src/main/java/cn/iocoder/yudao/module/employee/api/dto/EmployeeRespDTO.java

@@ -28,6 +28,11 @@ public class EmployeeRespDTO {
      */
     private String name;
 
+    /**
+     * 员工头像
+     */
+    private String avatar;
+
     /**
      * 部门ID
      */

+ 6 - 4
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/service/info/EmployeeInfoServiceImpl.java

@@ -63,18 +63,20 @@ public class EmployeeInfoServiceImpl implements EmployeeInfoService {
     @Override
     public EmployeeInfoDO getEmployeeByUserId(Long userId) {
         // 检查用户ID是否为空
+        // 如果用户ID为空,则不执行任何操作,返回null
         if (userId == null) {
-            // 如果用户ID为空,返回一个空的EmployeeInfoDO对象
-            return EmployeeInfoDO.builder().build();
+            return null;
         }
+
         // 创建查询包装器,用于查询特定用户ID的员工信息
         LambdaQueryWrapper<EmployeeInfoDO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(EmployeeInfoDO::getUserId, userId);
         // 使用包装器查询员工信息
         EmployeeInfoDO employeeInfoDO = infoMapper.selectOne(lambdaQueryWrapper);
-        // 如果查询不到员工信息,抛出异常
+        // 检查员工信息对象是否为空
         if (employeeInfoDO == null) {
-            throw exception(EMPLOYEE_INFO_NOT_EXISTS);
+            // 如果为空,则返回null,表示无法继续处理
+            return null;
         }
 
         // 如果部门ID不为空,则尝试获取部门详细信息

+ 25 - 3
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java

@@ -8,6 +8,8 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.security.config.SecurityProperties;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
+import cn.iocoder.yudao.module.employee.api.EmployeeApi;
+import cn.iocoder.yudao.module.employee.api.dto.EmployeeRespDTO;
 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import cn.iocoder.yudao.module.system.controller.admin.auth.vo.*;
 import cn.iocoder.yudao.module.system.convert.auth.AuthConvert;
@@ -68,6 +70,9 @@ public class AuthController {
     @Resource
     private TenantService tenantService;
 
+    @Resource
+    private EmployeeApi employeeApi;
+
     @PostMapping("/login")
     @PermitAll
     @Operation(summary = "使用账号密码登录")
@@ -96,7 +101,7 @@ public class AuthController {
     }
 
     @GetMapping("/get-permission-info")
-    @Operation(summary = "获取登录用户的权限信息")
+    @Operation(summary = "获取登录用户对应员工的权限信息")
     public CommonResult<AuthPermissionInfoRespVO> getPermissionInfo() {
         // 1.1 获得用户信息
         AdminUserDO user = userService.getUser(getLoginUserId());
@@ -104,14 +109,31 @@ public class AuthController {
             return success(null);
         }
         AdminUserRespDTO dto = BeanUtils.toBean(user, AdminUserRespDTO.class);
-        TenantDO tenantDO = tenantService.getTenant(user.getTenantId()); // 获得租户信息,用于判断是否需要切换租户
+        // 根据用户ID查询员工信息
+        EmployeeRespDTO employee = employeeApi.getEmployeeByUserId(user.getId());
+        if (employee != null) {
+            // 设置员工ID
+            dto.setId(employee.getId());
+            // 设置员工昵称
+            dto.setNickname(employee.getName());
+            // 设置员工头像
+            dto.setAvatar(employee.getAvatar());
+            // 设置员工部门ID
+            dto.setDeptId(employee.getDeptId());
+            // 设置员工手机号
+            dto.setMobile(employee.getPhone());
+        } else {
+            return success(null, "员工信息为空");
+        }
+
+        TenantDO tenantDO = tenantService.getTenant(dto.getTenantId()); // 获得租户信息,用于判断是否需要切换租户
         if (tenantDO != null && tenantDO.getName() != null) {
             dto.setTenantName(tenantDO.getName());
             dto.setCorpId(tenantDO.getCorpId());
         }
 
         // 1.2 获得角色列表
-        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(getLoginUserId());
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(dto.getId());
         if (CollUtil.isEmpty(roleIds)) {
             return success(AuthConvert.INSTANCE.convert(dto, Collections.emptyList(), Collections.emptyList()));
         }