完成用户个人信息修改

This commit is contained in:
KilLze
2025-12-29 11:59:33 +08:00
parent aa16c30d57
commit 170ce83fe1
8 changed files with 114 additions and 3 deletions

View File

@@ -3,6 +3,7 @@ package com.bao.dating.controller;
import com.bao.dating.common.Result; import com.bao.dating.common.Result;
import com.bao.dating.common.ResultCode; import com.bao.dating.common.ResultCode;
import com.bao.dating.context.UserContext; import com.bao.dating.context.UserContext;
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.UserInfoVO; import com.bao.dating.pojo.vo.UserInfoVO;
@@ -63,4 +64,17 @@ public class UserController {
String fileUrl = userService.uploadBackground(file); String fileUrl = userService.uploadBackground(file);
return Result.success(ResultCode.SUCCESS_REVIEW, "背景上传成功", fileUrl); return Result.success(ResultCode.SUCCESS_REVIEW, "背景上传成功", fileUrl);
} }
/**
* 更新用户信息
* @param userInfoUpdateDTO 用户信息更新参数
* @return 更新后的用户信息
*/
@PostMapping("/info/update")
public Result<UserInfoVO> userInfoUpdate(@RequestBody UserInfoUpdateDTO userInfoUpdateDTO) {
Long userId = UserContext.getUserId();
userInfoUpdateDTO.setUserId(userId);
UserInfoVO userInfoVO = userService.updateUserInfo(userInfoUpdateDTO);
return Result.success(ResultCode.SUCCESS_REVIEW, "用户信息更新成功", userInfoVO);
}
} }

View File

@@ -1,8 +1,9 @@
package com.bao.dating.mapper; package com.bao.dating.mapper;
import com.bao.dating.pojo.dto.UserInfoUpdateDTO;
import com.bao.dating.pojo.entity.Post;
import com.bao.dating.pojo.entity.User; import com.bao.dating.pojo.entity.User;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper @Mapper
public interface UserMapper { public interface UserMapper {
@@ -22,4 +23,11 @@ public interface UserMapper {
* @return 用户 * @return 用户
*/ */
User selectByUserId(Long userid); User selectByUserId(Long userid);
/**
* 更新用户信息
* @param userInfoUpdateDTO
*/
void updateUserInfoByUserId(UserInfoUpdateDTO userInfoUpdateDTO);
} }

View File

@@ -0,0 +1,20 @@
package com.bao.dating.pojo.dto;
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class UserInfoUpdateDTO {
private Long userId;
private String nickname;
private String avatarUrl;
private String backgroundUrl;
private Integer gender;
private LocalDate birthday;
private List<String> hobbies;
private String signature;
private LocalDateTime updatedAt;
}

View File

@@ -5,6 +5,7 @@ import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
/** /**
* 用户表 * 用户表
@@ -31,7 +32,7 @@ public class User implements Serializable {
private LocalDate birthday; private LocalDate birthday;
private String hobbies; private List<String> hobbies;
private String signature; private String signature;

View File

@@ -19,6 +19,6 @@ public class UserInfoVO {
private LocalDate birthday; private LocalDate birthday;
private List<String> hobbies; private List<String> hobbies;
private String signature; private String signature;
private LocalDateTime createdAt;
private LocalDateTime updatedAt; private LocalDateTime updatedAt;
private LocalDateTime createdAt;
} }

View File

@@ -1,5 +1,6 @@
package com.bao.dating.service; package com.bao.dating.service;
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.vo.PostEditVO; import com.bao.dating.pojo.vo.PostEditVO;
import com.bao.dating.pojo.vo.UserInfoVO; import com.bao.dating.pojo.vo.UserInfoVO;
@@ -35,4 +36,10 @@ public interface UserService {
* @return 上传后的文件URL列表 * @return 上传后的文件URL列表
*/ */
String uploadBackground(MultipartFile file); String uploadBackground(MultipartFile file);
/**
* 更新用户信息
* @param userInfoUpdateDTO 用户信息
*/
UserInfoVO updateUserInfo(UserInfoUpdateDTO userInfoUpdateDTO);
} }

View File

@@ -1,10 +1,14 @@
package com.bao.dating.service.impl; package com.bao.dating.service.impl;
import com.bao.dating.common.aliyun.AliOssUtil; import com.bao.dating.common.aliyun.AliOssUtil;
import com.bao.dating.common.aliyun.GreenImageScan;
import com.bao.dating.common.aliyun.GreenTextScan;
import com.bao.dating.context.UserContext; import com.bao.dating.context.UserContext;
import com.bao.dating.mapper.UserMapper; import com.bao.dating.mapper.UserMapper;
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;
@@ -14,11 +18,14 @@ 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;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Map;
import java.util.UUID; import java.util.UUID;
@Service @Service
@@ -27,6 +34,12 @@ public class UserServiceImpl implements UserService {
@Autowired @Autowired
private AliOssUtil ossUtil; private AliOssUtil ossUtil;
@Autowired
private GreenTextScan greenTextScan;
@Autowired
private GreenImageScan greenImageScan;
@Autowired @Autowired
private UserMapper userMapper; private UserMapper userMapper;
@@ -157,4 +170,23 @@ public class UserServiceImpl implements UserService {
throw new RuntimeException("上传图片失败", e); throw new RuntimeException("上传图片失败", e);
} }
} }
@Override
public UserInfoVO updateUserInfo(UserInfoUpdateDTO userInfoUpdateDTO) {
Long userId = userInfoUpdateDTO.getUserId();
User user = userMapper.selectByUserId(userId);
if (user == null){
throw new RuntimeException("用户不存在");
}
userInfoUpdateDTO.setUpdatedAt(LocalDateTime.now());
// 更新数据库
userMapper.updateUserInfoByUserId(userInfoUpdateDTO);
// 返回动态详情
UserInfoVO userInfoVO = new UserInfoVO();
BeanUtils.copyProperties(user, userInfoVO);
return userInfoVO;
}
} }

View File

@@ -43,4 +43,33 @@
FROM user WHERE user_id = #{userId} FROM user WHERE user_id = #{userId}
</select> </select>
<!--根据ID更新动态-->
<update id="updateUserInfoByUserId">
UPDATE user
<set>
<if test="nickname != null">
nickname = #{nickname},
</if>
<if test="avatarUrl != null">
avatar_url = #{avatarUrl},
</if>
<if test="backgroundUrl != null">
background_url = #{backgroundUrl},
</if>
<if test="gender != null">
gender = #{gender},
</if>
<if test="birthday != null">
birthday = #{birthday},
</if>
<if test="hobbies != null">
hobbies = #{hobbies},
</if>
<if test="signature != null">
signature = #{signature},
</if>
updated_at = #{updatedAt}
</set>
WHERE user_id = #{userId}
</update>
</mapper> </mapper>