user module API
DELETE /user
DELETE /user/search
DELETE /user/subscription
Change-Id: I4d6dfa5da5ed782c6fd78b8324191fd60bf8cfff
diff --git a/src/main/java/com/g9/g9backend/controller/UserController.java b/src/main/java/com/g9/g9backend/controller/UserController.java
index 1be4222..48ec0cd 100644
--- a/src/main/java/com/g9/g9backend/controller/UserController.java
+++ b/src/main/java/com/g9/g9backend/controller/UserController.java
@@ -7,6 +7,7 @@
import com.g9.g9backend.service.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@@ -25,10 +26,13 @@
private final SubscriptionService subscriptionService;
- public UserController(UserService userService, InvitationService invitationService, SubscriptionService subscriptionService) {
+ private final SearchHistoryService searchHistoryService;
+
+ public UserController(UserService userService, InvitationService invitationService, SubscriptionService subscriptionService, SearchHistoryService searchHistoryService) {
this.userService = userService;
this.invitationService = invitationService;
this.subscriptionService = subscriptionService;
+ this.searchHistoryService = searchHistoryService;
}
private final Logger logger = LoggerFactory.getLogger(UserController.class);
@@ -82,9 +86,9 @@
User userGetId = userService.getOne(userQuery);
int newUserId = userGetId.getUserId();
- UpdateWrapper<Invitation> updateWrapper = new UpdateWrapper<>();
- updateWrapper.eq("invitation_code", invitationCode).set("invitee_id", newUserId);
- invitationService.update(updateWrapper);
+ UpdateWrapper<Invitation> invitationUpdate = new UpdateWrapper<>();
+ invitationUpdate.eq("invitation_code", invitationCode).set("invitee_id", newUserId);
+ invitationService.update(invitationUpdate);
// 生成五个邀请码并分配给新用户
String[] invitationCodes = invitationService.generateInvitationCode();
@@ -143,4 +147,60 @@
subscriptionService.save(subscription);
return ResponseEntity.ok("");
}
+
+ /**
+ * 注销账户
+ *
+ * @param userId 用户id
+ * @param password 密码
+ * @return 注销结果
+ */
+ @DeleteMapping
+ @ResponseStatus(HttpStatus.NO_CONTENT)
+ public ResponseEntity<String> userDelete(@RequestParam int userId, @RequestParam String password) {
+ logger.warn("Delete user with id: {}", userId);
+ // 根据用户id查询该用户
+ QueryWrapper<User> userQuery = new QueryWrapper<>();
+ userQuery.eq("user_id", userId);
+ User userCheck = userService.getOne(userQuery);
+
+ if (userCheck.getPassword().equals(password)) {
+ // 注销账户(自动清除与该用户相关的记录,注意会回收分配给该用户的邀请码)
+ userService.remove(userQuery);
+
+ return ResponseEntity.noContent().build();
+ } else {
+ logger.warn("Delete failed. Incorrect password for account: {}", password);
+ return ResponseEntity.status(408).body("");
+ }
+ }
+
+ /**
+ * 删除用户搜索历史
+ *
+ * @param searchHistoryId 搜索历史id
+ * @return 删除用户搜索历史结果
+ */
+ @DeleteMapping("/search")
+ @ResponseStatus(HttpStatus.NO_CONTENT)
+ public ResponseEntity<String> searchDelete(@RequestParam int searchHistoryId) {
+ searchHistoryService.removeById(searchHistoryId);
+ return ResponseEntity.noContent().build();
+ }
+
+ /**
+ * 取消关注
+ *
+ * @param userId 被关注者id
+ * @param followerId 关注被人者id
+ * @return 取消关注结果
+ */
+ @DeleteMapping("/subscription")
+ @ResponseStatus(HttpStatus.NO_CONTENT)
+ public ResponseEntity<String> subscriptionDelete(@RequestParam int userId, @RequestParam int followerId) {
+ QueryWrapper<Subscription> subscriptionQuery = new QueryWrapper<>();
+ subscriptionQuery.eq("user_id", userId).eq("follower_id", followerId);
+ subscriptionService.remove(subscriptionQuery);
+ return ResponseEntity.noContent().build();
+ }
}
\ No newline at end of file