diff --git a/src/main/java/com/bao/dating/controller/UserController.java b/src/main/java/com/bao/dating/controller/UserController.java index d530366..355f8b7 100644 --- a/src/main/java/com/bao/dating/controller/UserController.java +++ b/src/main/java/com/bao/dating/controller/UserController.java @@ -3,6 +3,7 @@ package com.bao.dating.controller; import com.bao.dating.common.Result; import com.bao.dating.common.ResultCode; 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.entity.User; import com.bao.dating.pojo.vo.UserInfoVO; @@ -63,4 +64,17 @@ public class UserController { String fileUrl = userService.uploadBackground(file); return Result.success(ResultCode.SUCCESS_REVIEW, "背景上传成功", fileUrl); } + + /** + * 更新用户信息 + * @param userInfoUpdateDTO 用户信息更新参数 + * @return 更新后的用户信息 + */ + @PostMapping("/info/update") + public Result userInfoUpdate(@RequestBody UserInfoUpdateDTO userInfoUpdateDTO) { + Long userId = UserContext.getUserId(); + userInfoUpdateDTO.setUserId(userId); + UserInfoVO userInfoVO = userService.updateUserInfo(userInfoUpdateDTO); + return Result.success(ResultCode.SUCCESS_REVIEW, "用户信息更新成功", userInfoVO); + } } diff --git a/src/main/java/com/bao/dating/mapper/UserMapper.java b/src/main/java/com/bao/dating/mapper/UserMapper.java index 1e28552..8326914 100644 --- a/src/main/java/com/bao/dating/mapper/UserMapper.java +++ b/src/main/java/com/bao/dating/mapper/UserMapper.java @@ -1,8 +1,9 @@ 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 org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; @Mapper public interface UserMapper { @@ -22,4 +23,11 @@ public interface UserMapper { * @return 用户 */ User selectByUserId(Long userid); + + /** + * 更新用户信息 + * @param userInfoUpdateDTO + */ + void updateUserInfoByUserId(UserInfoUpdateDTO userInfoUpdateDTO); + } diff --git a/src/main/java/com/bao/dating/pojo/dto/UserInfoUpdateDTO.java b/src/main/java/com/bao/dating/pojo/dto/UserInfoUpdateDTO.java new file mode 100644 index 0000000..79df035 --- /dev/null +++ b/src/main/java/com/bao/dating/pojo/dto/UserInfoUpdateDTO.java @@ -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 hobbies; + private String signature; + private LocalDateTime updatedAt; +} diff --git a/src/main/java/com/bao/dating/pojo/entity/User.java b/src/main/java/com/bao/dating/pojo/entity/User.java index db16def..e668af5 100644 --- a/src/main/java/com/bao/dating/pojo/entity/User.java +++ b/src/main/java/com/bao/dating/pojo/entity/User.java @@ -5,6 +5,7 @@ import lombok.Data; import java.io.Serializable; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.List; /** * 用户表 @@ -31,7 +32,7 @@ public class User implements Serializable { private LocalDate birthday; - private String hobbies; + private List hobbies; private String signature; diff --git a/src/main/java/com/bao/dating/pojo/vo/UserInfoVO.java b/src/main/java/com/bao/dating/pojo/vo/UserInfoVO.java index 83fd640..8be5be1 100644 --- a/src/main/java/com/bao/dating/pojo/vo/UserInfoVO.java +++ b/src/main/java/com/bao/dating/pojo/vo/UserInfoVO.java @@ -19,6 +19,6 @@ public class UserInfoVO { private LocalDate birthday; private List hobbies; private String signature; - private LocalDateTime createdAt; private LocalDateTime updatedAt; + private LocalDateTime createdAt; } diff --git a/src/main/java/com/bao/dating/service/UserService.java b/src/main/java/com/bao/dating/service/UserService.java index ab5ed64..0eb9218 100644 --- a/src/main/java/com/bao/dating/service/UserService.java +++ b/src/main/java/com/bao/dating/service/UserService.java @@ -1,5 +1,6 @@ package com.bao.dating.service; +import com.bao.dating.pojo.dto.UserInfoUpdateDTO; import com.bao.dating.pojo.dto.UserLoginDTO; import com.bao.dating.pojo.vo.PostEditVO; import com.bao.dating.pojo.vo.UserInfoVO; @@ -35,4 +36,10 @@ public interface UserService { * @return 上传后的文件URL列表 */ String uploadBackground(MultipartFile file); + + /** + * 更新用户信息 + * @param userInfoUpdateDTO 用户信息 + */ + UserInfoVO updateUserInfo(UserInfoUpdateDTO userInfoUpdateDTO); } diff --git a/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java b/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java index 3aac7da..1481799 100644 --- a/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java +++ b/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java @@ -1,10 +1,14 @@ package com.bao.dating.service.impl; 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.mapper.UserMapper; +import com.bao.dating.pojo.dto.UserInfoUpdateDTO; import com.bao.dating.pojo.dto.UserLoginDTO; 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.UserLoginVO; 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.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import org.springframework.web.multipart.MultipartFile; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.Map; import java.util.UUID; @Service @@ -27,6 +34,12 @@ public class UserServiceImpl implements UserService { @Autowired private AliOssUtil ossUtil; + @Autowired + private GreenTextScan greenTextScan; + + @Autowired + private GreenImageScan greenImageScan; + @Autowired private UserMapper userMapper; @@ -157,4 +170,23 @@ public class UserServiceImpl implements UserService { 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; + } } diff --git a/src/main/resources/com/bao/dating/mapper/UserMapper.xml b/src/main/resources/com/bao/dating/mapper/UserMapper.xml index 6d6343a..fdcbcb4 100644 --- a/src/main/resources/com/bao/dating/mapper/UserMapper.xml +++ b/src/main/resources/com/bao/dating/mapper/UserMapper.xml @@ -43,4 +43,33 @@ FROM user WHERE user_id = #{userId} + + + UPDATE user + + + nickname = #{nickname}, + + + avatar_url = #{avatarUrl}, + + + background_url = #{backgroundUrl}, + + + gender = #{gender}, + + + birthday = #{birthday}, + + + hobbies = #{hobbies}, + + + signature = #{signature}, + + updated_at = #{updatedAt} + + WHERE user_id = #{userId} + \ No newline at end of file