refactor: 获取当前登录用户信息优化

This commit is contained in:
Ray.Hao
2025-03-25 23:20:00 +08:00
parent 3244af424d
commit 505dcf1a73
5 changed files with 26 additions and 25 deletions

View File

@@ -19,7 +19,7 @@ import com.youlai.boot.system.model.dto.UserImportDTO;
import com.youlai.boot.system.model.entity.User; import com.youlai.boot.system.model.entity.User;
import com.youlai.boot.system.model.form.*; import com.youlai.boot.system.model.form.*;
import com.youlai.boot.system.model.query.UserPageQuery; import com.youlai.boot.system.model.query.UserPageQuery;
import com.youlai.boot.system.model.vo.UserInfoVO; import com.youlai.boot.system.model.dto.CurrentUserDTO;
import com.youlai.boot.system.model.vo.UserPageVO; import com.youlai.boot.system.model.vo.UserPageVO;
import com.youlai.boot.system.model.vo.UserProfileVO; import com.youlai.boot.system.model.vo.UserProfileVO;
import com.youlai.boot.system.service.UserService; import com.youlai.boot.system.service.UserService;
@@ -128,9 +128,9 @@ public class UserController {
@Operation(summary = "获取当前登录用户信息") @Operation(summary = "获取当前登录用户信息")
@GetMapping("/me") @GetMapping("/me")
@Log(value = "获取当前登录用户信息", module = LogModuleEnum.USER) @Log(value = "获取当前登录用户信息", module = LogModuleEnum.USER)
public Result<UserInfoVO> getCurrentUserInfo() { public Result<CurrentUserDTO> getCurrentUser() {
UserInfoVO userInfoVO = userService.getCurrentUserInfo(); CurrentUserDTO currentUserDTO = userService.getCurrentUser();
return Result.success(userInfoVO); return Result.success(currentUserDTO);
} }
@Operation(summary = "用户导入模板下载") @Operation(summary = "用户导入模板下载")

View File

@@ -3,7 +3,7 @@ package com.youlai.boot.system.converter;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.common.model.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.system.model.entity.User; import com.youlai.boot.system.model.entity.User;
import com.youlai.boot.system.model.vo.UserInfoVO; import com.youlai.boot.system.model.dto.CurrentUserDTO;
import com.youlai.boot.system.model.vo.UserPageVO; import com.youlai.boot.system.model.vo.UserPageVO;
import com.youlai.boot.system.model.vo.UserProfileVO; import com.youlai.boot.system.model.vo.UserProfileVO;
import com.youlai.boot.system.model.bo.UserBO; import com.youlai.boot.system.model.bo.UserBO;
@@ -38,12 +38,12 @@ public interface UserConverter {
@Mappings({ @Mappings({
@Mapping(target = "userId", source = "id") @Mapping(target = "userId", source = "id")
}) })
UserInfoVO toUserInfoVo(User entity); CurrentUserDTO toCurrentUserDto(User entity);
User toEntity(UserImportDTO vo); User toEntity(UserImportDTO vo);
UserProfileVO toProfileVO(UserBO bo); UserProfileVO toProfileVo(UserBO bo);
User toEntity(UserProfileForm formData); User toEntity(UserProfileForm formData);

View File

@@ -1,4 +1,4 @@
package com.youlai.boot.system.model.vo; package com.youlai.boot.system.model.dto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@@ -6,14 +6,14 @@ import lombok.Data;
import java.util.Set; import java.util.Set;
/** /**
* 用户登录视图对象 * 当前登录用户对象
* *
* @author haoxr * @author haoxr
* @since 2022/1/14 * @since 2022/1/14
*/ */
@Schema(description ="当前登录用户视图对象") @Schema(description ="当前登录用户对象")
@Data @Data
public class UserInfoVO { public class CurrentUserDTO {
@Schema(description="用户ID") @Schema(description="用户ID")
private Long userId; private Long userId;

View File

@@ -3,11 +3,11 @@ package com.youlai.boot.system.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.common.model.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.system.model.dto.CurrentUserDTO;
import com.youlai.boot.system.model.dto.UserAuthInfo; import com.youlai.boot.system.model.dto.UserAuthInfo;
import com.youlai.boot.system.model.dto.UserExportDTO; import com.youlai.boot.system.model.dto.UserExportDTO;
import com.youlai.boot.system.model.entity.User; import com.youlai.boot.system.model.entity.User;
import com.youlai.boot.system.model.query.UserPageQuery; import com.youlai.boot.system.model.query.UserPageQuery;
import com.youlai.boot.system.model.vo.UserInfoVO;
import com.youlai.boot.system.model.vo.UserPageVO; import com.youlai.boot.system.model.vo.UserPageVO;
import com.youlai.boot.system.model.vo.UserProfileVO; import com.youlai.boot.system.model.vo.UserProfileVO;
import com.youlai.boot.system.model.form.*; import com.youlai.boot.system.model.form.*;
@@ -87,9 +87,9 @@ public interface UserService extends IService<User> {
/** /**
* 获取登录用户信息 * 获取登录用户信息
* *
* @return {@link UserInfoVO} 登录用户信息 * @return {@link CurrentUserDTO} 登录用户信息
*/ */
UserInfoVO getCurrentUserInfo(); CurrentUserDTO getCurrentUser();
/** /**
* 获取个人中心用户信息 * 获取个人中心用户信息

View File

@@ -22,6 +22,7 @@ import com.youlai.boot.system.converter.UserConverter;
import com.youlai.boot.system.enums.DictCodeEnum; import com.youlai.boot.system.enums.DictCodeEnum;
import com.youlai.boot.system.mapper.UserMapper; import com.youlai.boot.system.mapper.UserMapper;
import com.youlai.boot.system.model.bo.UserBO; import com.youlai.boot.system.model.bo.UserBO;
import com.youlai.boot.system.model.dto.CurrentUserDTO;
import com.youlai.boot.system.model.dto.UserAuthInfo; import com.youlai.boot.system.model.dto.UserAuthInfo;
import com.youlai.boot.system.model.dto.UserExportDTO; import com.youlai.boot.system.model.dto.UserExportDTO;
import com.youlai.boot.system.model.entity.DictItem; import com.youlai.boot.system.model.entity.DictItem;
@@ -29,7 +30,6 @@ import com.youlai.boot.system.model.entity.User;
import com.youlai.boot.system.model.entity.UserRole; import com.youlai.boot.system.model.entity.UserRole;
import com.youlai.boot.system.model.form.*; import com.youlai.boot.system.model.form.*;
import com.youlai.boot.system.model.query.UserPageQuery; import com.youlai.boot.system.model.query.UserPageQuery;
import com.youlai.boot.system.model.vo.UserInfoVO;
import com.youlai.boot.system.model.vo.UserPageVO; import com.youlai.boot.system.model.vo.UserPageVO;
import com.youlai.boot.system.model.vo.UserProfileVO; import com.youlai.boot.system.model.vo.UserProfileVO;
import com.youlai.boot.system.service.*; import com.youlai.boot.system.service.*;
@@ -314,15 +314,15 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
/** /**
* 获取登录用户信息 * 获取登录用户信息
* *
* @return {@link UserInfoVO} 用户信息 * @return {@link CurrentUserDTO} 用户信息
*/ */
@Override @Override
public UserInfoVO getCurrentUserInfo() { public CurrentUserDTO getCurrentUser() {
String username = SecurityUtils.getUsername(); String username = SecurityUtils.getUsername();
// 获取登录用户基础信息 // 获取登录用户基础信息
User user = this.getOne(new LambdaQueryWrapper<User>() User user = this.lambdaQuery()
.eq(User::getUsername, username) .eq(User::getUsername, username)
.select( .select(
User::getId, User::getId,
@@ -330,20 +330,21 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
User::getNickname, User::getNickname,
User::getAvatar User::getAvatar
) )
); .oneOpt()
// entity->VO .orElseThrow(() -> new BusinessException("用户[" + username + "]不存在"));
UserInfoVO userInfoVO = userConverter.toUserInfoVo(user);
CurrentUserDTO currentUserDTO = userConverter.toCurrentUserDto(user);
// 用户角色集合 // 用户角色集合
Set<String> roles = SecurityUtils.getRoles(); Set<String> roles = SecurityUtils.getRoles();
userInfoVO.setRoles(roles); currentUserDTO.setRoles(roles);
// 用户权限集合 // 用户权限集合
if (CollectionUtil.isNotEmpty(roles)) { if (CollectionUtil.isNotEmpty(roles)) {
Set<String> perms = permissionService.getRolePermsFormCache(roles); Set<String> perms = permissionService.getRolePermsFormCache(roles);
userInfoVO.setPerms(perms); currentUserDTO.setPerms(perms);
} }
return userInfoVO; return currentUserDTO;
} }
/** /**
@@ -355,7 +356,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
@Override @Override
public UserProfileVO getUserProfile(Long userId) { public UserProfileVO getUserProfile(Long userId) {
UserBO entity = this.baseMapper.getUserProfile(userId); UserBO entity = this.baseMapper.getUserProfile(userId);
return userConverter.toProfileVO(entity); return userConverter.toProfileVo(entity);
} }
/** /**