优化用添加个人信息功能

This commit is contained in:
KilLze
2025-12-29 17:03:06 +08:00
parent a9730a8414
commit da66c3b048
6 changed files with 41 additions and 12 deletions

View File

@@ -71,10 +71,10 @@ public class UserController {
* @return 更新后的用户信息 * @return 更新后的用户信息
*/ */
@PostMapping("/info/update") @PostMapping("/info/update")
public Result userInfoUpdate(@RequestBody UserInfoUpdateDTO userInfoUpdateDTO) { public Result<UserInfoVO> userInfoUpdate(@RequestBody UserInfoUpdateDTO userInfoUpdateDTO) {
Long userId = UserContext.getUserId(); Long userId = UserContext.getUserId();
userInfoUpdateDTO.setUserId(userId); userInfoUpdateDTO.setUserId(userId);
userService.updateUserInfo(userInfoUpdateDTO); UserInfoVO userInfoVO =userService.updateUserInfo(userInfoUpdateDTO);
return Result.success(ResultCode.SUCCESS, "用户信息更新成功", null); return Result.success(ResultCode.SUCCESS, "用户信息更新成功", userInfoVO);
} }
} }

View File

@@ -9,6 +9,7 @@ import java.util.List;
@Data @Data
public class UserInfoUpdateDTO { public class UserInfoUpdateDTO {
private Long userId; private Long userId;
private String userName;
private String nickname; private String nickname;
private String avatarUrl; private String avatarUrl;
private String backgroundUrl; private String backgroundUrl;
@@ -17,4 +18,6 @@ public class UserInfoUpdateDTO {
private List<String> hobbies; private List<String> hobbies;
private String signature; private String signature;
private LocalDateTime updatedAt; private LocalDateTime updatedAt;
/** 需要清空的字段 */
private List<String> clearFields;
} }

View File

@@ -12,6 +12,7 @@ import java.util.List;
@Data @Data
public class UserInfoVO { public class UserInfoVO {
private Long userId; private Long userId;
private String userName;
private String nickname; private String nickname;
private String avatarUrl; private String avatarUrl;
private String backgroundUrl; private String backgroundUrl;

View File

@@ -41,5 +41,5 @@ public interface UserService {
* 更新用户信息 * 更新用户信息
* @param userInfoUpdateDTO 用户信息 * @param userInfoUpdateDTO 用户信息
*/ */
void updateUserInfo(UserInfoUpdateDTO userInfoUpdateDTO); UserInfoVO updateUserInfo(UserInfoUpdateDTO userInfoUpdateDTO);
} }

View File

@@ -8,7 +8,6 @@ import com.bao.dating.mapper.UserMapper;
import com.bao.dating.pojo.dto.UserInfoUpdateDTO; import com.bao.dating.pojo.dto.UserInfoUpdateDTO;
import com.bao.dating.pojo.dto.UserLoginDTO; import com.bao.dating.pojo.dto.UserLoginDTO;
import com.bao.dating.pojo.entity.User; import com.bao.dating.pojo.entity.User;
import com.bao.dating.pojo.vo.PostEditVO;
import com.bao.dating.pojo.vo.UserInfoVO; import com.bao.dating.pojo.vo.UserInfoVO;
import com.bao.dating.pojo.vo.UserLoginVO; import com.bao.dating.pojo.vo.UserLoginVO;
import com.bao.dating.service.UserService; import com.bao.dating.service.UserService;
@@ -18,7 +17,6 @@ import com.bao.dating.util.MD5Util;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@@ -30,6 +28,11 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
/**
* 用户服务实现类
*
* @author KilLze
*/
@Service @Service
public class UserServiceImpl implements UserService { public class UserServiceImpl implements UserService {
@@ -48,7 +51,7 @@ public class UserServiceImpl implements UserService {
/** /**
* 用户登录 * 用户登录
* *
* @param userLoginDTO * @param userLoginDTO 登录参数
* @return 登录信息 * @return 登录信息
*/ */
@Override @Override
@@ -84,7 +87,7 @@ public class UserServiceImpl implements UserService {
/** /**
* 获取用户信息 * 获取用户信息
* *
* @param userId * @param userId 用户ID
* @return 用户信息 * @return 用户信息
*/ */
@Override @Override
@@ -98,6 +101,12 @@ public class UserServiceImpl implements UserService {
return userInfoVO; return userInfoVO;
} }
/**
* 上传头像接口
*
* @param file 头像文件
* @return 上传后的文件URL
*/
@Override @Override
public String uploadAvatar(MultipartFile file) { public String uploadAvatar(MultipartFile file) {
// 参数校验 // 参数校验
@@ -137,6 +146,12 @@ public class UserServiceImpl implements UserService {
} }
} }
/**
* 上传背景图片
*
* @param file 背景图片文件
* @return 上传后的文件URL
*/
@Override @Override
public String uploadBackground(MultipartFile file) { public String uploadBackground(MultipartFile file) {
// 参数校验 // 参数校验
@@ -178,11 +193,10 @@ public class UserServiceImpl implements UserService {
/** /**
* 更新用户信息 * 更新用户信息
* *
* @param userInfoUpdateDTO * @param userInfoUpdateDTO 用户信息更新参数
* @return 用户信息
*/ */
@Override @Override
public void updateUserInfo(UserInfoUpdateDTO userInfoUpdateDTO) { public UserInfoVO updateUserInfo(UserInfoUpdateDTO userInfoUpdateDTO) {
Long userId = userInfoUpdateDTO.getUserId(); Long userId = userInfoUpdateDTO.getUserId();
User user = userMapper.selectByUserId(userId); User user = userMapper.selectByUserId(userId);
if (user == null) { if (user == null) {
@@ -247,10 +261,19 @@ public class UserServiceImpl implements UserService {
throw new RuntimeException("头像或背景图需要人工审核,暂无法修改"); throw new RuntimeException("头像或背景图需要人工审核,暂无法修改");
} }
} }
// 默认昵称兜底
if (userInfoUpdateDTO.getNickname() == null || userInfoUpdateDTO.getNickname().trim().isEmpty()) {
userInfoUpdateDTO.setNickname(user.getUserName());
}
userInfoUpdateDTO.setUpdatedAt(LocalDateTime.now()); userInfoUpdateDTO.setUpdatedAt(LocalDateTime.now());
// 更新数据库 // 更新数据库
userMapper.updateUserInfoByUserId(userInfoUpdateDTO); userMapper.updateUserInfoByUserId(userInfoUpdateDTO);
// 封装返回结果
User updatedUser = userMapper.selectByUserId(userInfoUpdateDTO.getUserId());
UserInfoVO userInfoVO = new UserInfoVO();
BeanUtils.copyProperties(updatedUser, userInfoVO);
return userInfoVO;
} }
} }

View File

@@ -18,6 +18,7 @@
<!--根据用户id查询用户信息--> <!--根据用户id查询用户信息-->
<resultMap id="UserResultMap" type="com.bao.dating.pojo.entity.User"> <resultMap id="UserResultMap" type="com.bao.dating.pojo.entity.User">
<id property="userId" column="user_id"/> <id property="userId" column="user_id"/>
<result property="userName" column="user_name"/>
<result property="nickname" column="nickname"/> <result property="nickname" column="nickname"/>
<result property="avatarUrl" column="avatar_url"/> <result property="avatarUrl" column="avatar_url"/>
<result property="backgroundUrl" column="background_url"/> <result property="backgroundUrl" column="background_url"/>
@@ -31,6 +32,7 @@
<select id="selectByUserId" resultMap="UserResultMap"> <select id="selectByUserId" resultMap="UserResultMap">
SELECT SELECT
user_id, user_id,
user_name,
nickname, nickname,
avatar_url, avatar_url,
background_url, background_url,