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