resource module API
DELETE /resource
DELETE /resource/like
DELETE /resource/collection
Change-Id: Icd5a47ae44c33727597d30a93bc1ab849edebc41
diff --git a/src/main/java/com/g9/g9backend/controller/ResourceController.java b/src/main/java/com/g9/g9backend/controller/ResourceController.java
index b6726cf..c9a573c 100644
--- a/src/main/java/com/g9/g9backend/controller/ResourceController.java
+++ b/src/main/java/com/g9/g9backend/controller/ResourceController.java
@@ -8,6 +8,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.*;
@@ -223,4 +224,64 @@
return ResponseEntity.ok("");
}
+
+ /**
+ * 删除资源
+ *
+ * @param resourceId 资源id
+ * @param userId 用户id
+ * @param password 密码
+ * @return 删除资源结果
+ */
+ @DeleteMapping
+ @ResponseStatus(HttpStatus.NO_CONTENT)
+ public ResponseEntity<String> userDelete(@RequestParam int resourceId, @RequestParam int userId, @RequestParam String password) {
+ logger.warn("Delete resource with id: {}", resourceId);
+ // 根据用户id查询该用户
+ QueryWrapper<User> userQuery = new QueryWrapper<>();
+ userQuery.eq("user_id", userId);
+ User userCheck = userService.getOne(userQuery);
+
+ // 只允许在用户上传资源页进行删除操作,所以不需要验证该资源是由该用户上传的
+ if (userCheck.getPassword().equals(password)) {
+ // 删除资源
+ resourceService.removeById(resourceId);
+ return ResponseEntity.noContent().build();
+ } else {
+ logger.warn("Delete failed. Incorrect password for account: {}", password);
+ return ResponseEntity.status(408).body("");
+ }
+ }
+
+ /**
+ * 取消点赞
+ *
+ * @param userId 用户id
+ * @param resourceId 资源id
+ * @return 取消点赞结果
+ */
+ @DeleteMapping("like")
+ @ResponseStatus(HttpStatus.NO_CONTENT)
+ public ResponseEntity<String> likeDelete(@RequestParam int userId, @RequestParam int resourceId) {
+ QueryWrapper<UserLike> userLikeQuery = new QueryWrapper<>();
+ userLikeQuery.eq("user_id", userId).eq("resource_id", resourceId);
+ userLikeService.remove(userLikeQuery);
+ return ResponseEntity.noContent().build();
+ }
+
+ /**
+ * 取消收藏
+ *
+ * @param userId 用户id
+ * @param resourceId 资源id
+ * @return 取消收藏结果
+ */
+ @DeleteMapping("collection")
+ @ResponseStatus(HttpStatus.NO_CONTENT)
+ public ResponseEntity<String> collectionDelete(@RequestParam int userId, @RequestParam int resourceId) {
+ QueryWrapper<UserCollection> userCollectionQuery = new QueryWrapper<>();
+ userCollectionQuery.eq("user_id", userId).eq("resource_id", resourceId);
+ userCollectionService.remove(userCollectionQuery);
+ return ResponseEntity.noContent().build();
+ }
}
\ No newline at end of file