feat(user): 新增根据用户ID查询用户信息接口

- 新增 FindUserByIdReqDTO 请求参数类
- 新增 FindUserByIdRspDTO 响应结果类
- 在 UserController 中添加 findById 接口
- 在 UserService 中定义 findById 方法
- 在 UserServiceImpl 中实现 findById 逻辑
- 支持根据用户 ID 查询用户昵称和头像信息
- 添加用户不存在时的异常处理逻辑
This commit is contained in:
Hanserwei
2025-10-08 19:44:42 +08:00
parent dd63d30792
commit fcdbda4c56
5 changed files with 89 additions and 2 deletions

View File

@@ -0,0 +1,21 @@
package com.hanserwei.hannote.user.dto.req;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class FindUserByIdReqDTO {
/**
* 用户ID
*/
@NotNull(message = "用户 ID 不能为空")
private Long id;
}

View File

@@ -0,0 +1,28 @@
package com.hanserwei.hannote.user.dto.resp;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class FindUserByIdRspDTO {
/**
* 用户 ID
*/
private Long id;
/**
* 昵称
*/
private String nickName;
/**
* 头像
*/
private String avatar;
}

View File

@@ -5,9 +5,11 @@ import com.hanserwei.framework.common.response.Response;
import com.hanserwei.hannote.user.biz.model.vo.UpdateUserInfoReqVO; import com.hanserwei.hannote.user.biz.model.vo.UpdateUserInfoReqVO;
import com.hanserwei.hannote.user.biz.service.UserService; import com.hanserwei.hannote.user.biz.service.UserService;
import com.hanserwei.hannote.user.dto.req.FindUserByEmailReqDTO; import com.hanserwei.hannote.user.dto.req.FindUserByEmailReqDTO;
import com.hanserwei.hannote.user.dto.req.FindUserByIdReqDTO;
import com.hanserwei.hannote.user.dto.req.RegisterUserReqDTO; import com.hanserwei.hannote.user.dto.req.RegisterUserReqDTO;
import com.hanserwei.hannote.user.dto.req.UpdateUserPasswordReqDTO; import com.hanserwei.hannote.user.dto.req.UpdateUserPasswordReqDTO;
import com.hanserwei.hannote.user.dto.resp.FindUserByEmailRspDTO; import com.hanserwei.hannote.user.dto.resp.FindUserByEmailRspDTO;
import com.hanserwei.hannote.user.dto.resp.FindUserByIdRspDTO;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
@@ -27,7 +29,7 @@ public class UserController {
/** /**
* 用户信息修改 * 用户信息修改
* *
* @param updateUserInfoReqVO 修改信息请求 * @param updateUserInfoReqVO 修改信息请求
* @return 响应 * @return 响应
*/ */
@@ -55,4 +57,10 @@ public class UserController {
return userService.updatePassword(updateUserPasswordReqDTO); return userService.updatePassword(updateUserPasswordReqDTO);
} }
@PostMapping("/findById")
@ApiOperationLog(description = "查询用户信息")
public Response<FindUserByIdRspDTO> findById(@Validated @RequestBody FindUserByIdReqDTO findUserByIdReqDTO) {
return userService.findById(findUserByIdReqDTO);
}
} }

View File

@@ -5,9 +5,11 @@ import com.hanserwei.framework.common.response.Response;
import com.hanserwei.hannote.user.biz.domain.dataobject.UserDO; import com.hanserwei.hannote.user.biz.domain.dataobject.UserDO;
import com.hanserwei.hannote.user.biz.model.vo.UpdateUserInfoReqVO; import com.hanserwei.hannote.user.biz.model.vo.UpdateUserInfoReqVO;
import com.hanserwei.hannote.user.dto.req.FindUserByEmailReqDTO; import com.hanserwei.hannote.user.dto.req.FindUserByEmailReqDTO;
import com.hanserwei.hannote.user.dto.req.FindUserByIdReqDTO;
import com.hanserwei.hannote.user.dto.req.RegisterUserReqDTO; import com.hanserwei.hannote.user.dto.req.RegisterUserReqDTO;
import com.hanserwei.hannote.user.dto.req.UpdateUserPasswordReqDTO; import com.hanserwei.hannote.user.dto.req.UpdateUserPasswordReqDTO;
import com.hanserwei.hannote.user.dto.resp.FindUserByEmailRspDTO; import com.hanserwei.hannote.user.dto.resp.FindUserByEmailRspDTO;
import com.hanserwei.hannote.user.dto.resp.FindUserByIdRspDTO;
public interface UserService extends IService<UserDO> { public interface UserService extends IService<UserDO> {
@@ -42,4 +44,12 @@ public interface UserService extends IService<UserDO> {
* @return 响应结果 * @return 响应结果
*/ */
Response<?> updatePassword(UpdateUserPasswordReqDTO updateUserPasswordReqDTO); Response<?> updatePassword(UpdateUserPasswordReqDTO updateUserPasswordReqDTO);
/**
* 根据用户 ID 查询用户信息
*
* @param findUserByIdReqDTO 查询用户信息请求参数
* @return 响应结果
*/
Response<FindUserByIdRspDTO> findById(FindUserByIdReqDTO findUserByIdReqDTO);
} }

View File

@@ -25,9 +25,11 @@ import com.hanserwei.hannote.user.biz.rpc.DistributedIdGeneratorRpcService;
import com.hanserwei.hannote.user.biz.rpc.OssRpcService; import com.hanserwei.hannote.user.biz.rpc.OssRpcService;
import com.hanserwei.hannote.user.biz.service.UserService; import com.hanserwei.hannote.user.biz.service.UserService;
import com.hanserwei.hannote.user.dto.req.FindUserByEmailReqDTO; import com.hanserwei.hannote.user.dto.req.FindUserByEmailReqDTO;
import com.hanserwei.hannote.user.dto.req.FindUserByIdReqDTO;
import com.hanserwei.hannote.user.dto.req.RegisterUserReqDTO; import com.hanserwei.hannote.user.dto.req.RegisterUserReqDTO;
import com.hanserwei.hannote.user.dto.req.UpdateUserPasswordReqDTO; import com.hanserwei.hannote.user.dto.req.UpdateUserPasswordReqDTO;
import com.hanserwei.hannote.user.dto.resp.FindUserByEmailRspDTO; import com.hanserwei.hannote.user.dto.resp.FindUserByEmailRspDTO;
import com.hanserwei.hannote.user.dto.resp.FindUserByIdRspDTO;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -204,7 +206,7 @@ public class UserServiceImpl extends ServiceImpl<UserDOMapper, UserDO> implement
public Response<FindUserByEmailRspDTO> findByEmail(FindUserByEmailReqDTO findUserByEmailReqDTO) { public Response<FindUserByEmailRspDTO> findByEmail(FindUserByEmailReqDTO findUserByEmailReqDTO) {
String email = findUserByEmailReqDTO.getEmail(); String email = findUserByEmailReqDTO.getEmail();
UserDO userDO = this.getOne(new QueryWrapper<UserDO>().eq("email", email)); UserDO userDO = this.getOne(new QueryWrapper<UserDO>().eq("email", email));
if (Objects.isNull(userDO)){ if (Objects.isNull(userDO)) {
throw new ApiException(ResponseCodeEnum.USER_NOT_FOUND); throw new ApiException(ResponseCodeEnum.USER_NOT_FOUND);
} }
// 构建返参 // 构建返参
@@ -229,5 +231,23 @@ public class UserServiceImpl extends ServiceImpl<UserDOMapper, UserDO> implement
// 更新用户密码 // 更新用户密码
return updateById(userDO) ? Response.success() : Response.fail(); return updateById(userDO) ? Response.success() : Response.fail();
} }
@Override
public Response<FindUserByIdRspDTO> findById(FindUserByIdReqDTO findUserByIdReqDTO) {
Long userId = findUserByIdReqDTO.getId();
UserDO userDO = this.getOne(new QueryWrapper<UserDO>().eq("id", userId));
// 判空
if (Objects.isNull(userDO)) {
throw new ApiException(ResponseCodeEnum.USER_NOT_FOUND);
}
// 构建返参
FindUserByIdRspDTO findUserByIdRspDTO = FindUserByIdRspDTO.builder()
.id(userDO.getId())
.nickName(userDO.getNickname())
.avatar(userDO.getAvatar())
.build();
return Response.success(findUserByIdRspDTO);
}
} }