user module API
PUT /user/signature
PUT /user/password
PUT /user/avatar
Change-Id: I67e030092bbcfeba6118b26b013b9735a09f2d93
diff --git a/src/main/java/com/g9/g9backend/controller/UserController.java b/src/main/java/com/g9/g9backend/controller/UserController.java
index 38b4586..9315e8e 100644
--- a/src/main/java/com/g9/g9backend/controller/UserController.java
+++ b/src/main/java/com/g9/g9backend/controller/UserController.java
@@ -488,4 +488,58 @@
GetUserDTO getUserDTO = new GetUserDTO(subscriberList);
return ResponseEntity.ok(getUserDTO);
}
+
+ /**
+ * 修改用户签名
+ *
+ * @param user 用户信息
+ * @return 用户签名修改结果
+ */
+ @PutMapping("/signature")
+ public ResponseEntity<String> modifySignature(@RequestBody User user) {
+ UpdateWrapper<User> userUpdate = new UpdateWrapper<>();
+ userUpdate.eq("user_id", user.getUserId()).set("signature", user.getSignature());
+ userService.update(userUpdate);
+
+ return ResponseEntity.ok("");
+ }
+
+ /**
+ * 修改用户密码
+ *
+ * @param modifyPasswordDTO 用户信息
+ * @return 用户密码修改结果
+ */
+ @PutMapping("/password")
+ public ResponseEntity<String> modifyPassword(@RequestBody ModifyPasswordDTO modifyPasswordDTO) {
+ // 检查密码是否正确
+ QueryWrapper<User> userQuery = new QueryWrapper<>();
+ userQuery.eq("user_id", modifyPasswordDTO.getUserId());
+ User user = userService.getOne(userQuery);
+ if (user.getPassword().equals(modifyPasswordDTO.getPassword())) {
+ UpdateWrapper<User> userUpdate = new UpdateWrapper<>();
+ userUpdate.eq("user_id", modifyPasswordDTO.getUserId()).set("password", modifyPasswordDTO.getNewPassword());
+ userService.update(userUpdate);
+ return ResponseEntity.ok("");
+ } else {
+ // 密码错误
+ logger.warn("Modify failed. Incorrect password for userID: {}", modifyPasswordDTO.getUserId());
+ return ResponseEntity.status(408).body("");
+ }
+ }
+
+ /**
+ * 修改用户头像
+ *
+ * @param user 用户信息
+ * @return 用户头像修改结果
+ */
+ @PutMapping("/avatar")
+ public ResponseEntity<String> modifyAvatar(@RequestBody User user) {
+ UpdateWrapper<User> userUpdate = new UpdateWrapper<>();
+ userUpdate.eq("user_id", user.getUserId()).set("avatar", user.getAvatar());
+ userService.update(userUpdate);
+
+ return ResponseEntity.ok("");
+ }
}
\ No newline at end of file
diff --git a/src/test/java/com/g9/g9backend/controller/UserControllerTest.java b/src/test/java/com/g9/g9backend/controller/UserControllerTest.java
index bec8b11..d390dea 100644
--- a/src/test/java/com/g9/g9backend/controller/UserControllerTest.java
+++ b/src/test/java/com/g9/g9backend/controller/UserControllerTest.java
@@ -405,4 +405,63 @@
.param("userId", "1"))
.andExpect(status().isOk());
}
+
+ // 修改签名
+ @Test
+ public void testModifySignature() throws Exception {
+
+ User user = new User();
+ user.setUserId(1);
+ user.setSignature("New Signature");
+
+ when(userService.update(any())).thenReturn(true);
+
+ mockMvc.perform(put("/user/signature")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(user)))
+ .andExpect(status().isOk());
+ }
+
+ // 修改密码
+ @Test
+ public void testModifyPassword_success() throws Exception {
+
+ // 密码正确
+ when(userService.getOne(any())).thenReturn(new User(1, "hcy", "oldPass", null, 0, 0, null, 0, 0, 0));
+ when(userService.update(any())).thenReturn(true);
+
+ mockMvc.perform(put("/user/password")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(new ModifyPasswordDTO(1, "oldPass", "newPass"))))
+ .andExpect(status().isOk());
+ }
+
+ @Test
+ public void testModifyPassword_wrongPassword() throws Exception {
+
+ // 密码错误
+ when(userService.getOne(any())).thenReturn(new User(1, "hcy", "oldPass", null, 0, 0, null, 0, 0, 0));
+
+ mockMvc.perform(put("/user/password")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(new ModifyPasswordDTO(1, "wrongPassword", "newPass"))))
+ .andExpect(status().is(408));
+ }
+
+ // 修改头像
+ @Test
+ public void testModifyAvatar() throws Exception {
+
+ // 设置请求参数
+ User user = new User();
+ user.setUserId(1);
+ user.setAvatar("avatar.png");
+
+ when(userService.update(any())).thenReturn(true);
+
+ mockMvc.perform(put("/user/avatar")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(objectMapper.writeValueAsString(user)))
+ .andExpect(status().isOk());
+ }
}
\ No newline at end of file