add CORS config; fix /resource/search

Change-Id: I3b6b80cd99b0e72e649e8d53b30f87469640c473
diff --git a/src/main/java/com/g9/g9backend/controller/FileController.java b/src/main/java/com/g9/g9backend/controller/FileController.java
index 7b4e339..313f61e 100644
--- a/src/main/java/com/g9/g9backend/controller/FileController.java
+++ b/src/main/java/com/g9/g9backend/controller/FileController.java
@@ -38,7 +38,7 @@
     @PostMapping
     public ResponseEntity<String> uploadFile(@RequestBody MultipartFile file) {
         // 相对路径(可在资源根路径创建 upload 文件夹)
-        String UPLOAD_DIR = "upload";
+        String UPLOAD_DIR = "D:/nginx/nginx-1.26.2/MCPT";
 
         // 获取原始文件名
         String originalFilename = file.getOriginalFilename();
diff --git a/src/main/java/com/g9/g9backend/controller/ResourceController.java b/src/main/java/com/g9/g9backend/controller/ResourceController.java
index f8d7723..79d9b84 100644
--- a/src/main/java/com/g9/g9backend/controller/ResourceController.java
+++ b/src/main/java/com/g9/g9backend/controller/ResourceController.java
@@ -55,6 +55,14 @@
 
     private final HotTrendService hotTrendService;
 
+    static Map<String, String> GAME_CLASSIFY = new HashMap() {{
+        put("模组", "mod");
+        put("地图", "map");
+        put("整合包", "modPack");
+        put("材质包", "resourcePack");
+    }};
+
+
     public ResourceController(ResourceService resourceService, GameplayService gameplayService, RewardService rewardService, UserUploadService userUploadService, CommunityService communityService, UserService userService, UserPurchaseService userPurchaseService, UserLikeService userLikeService, UserCollectionService userCollectionService, NotificationService notificationService, ResourceVersionService resourceVersionService, SearchHistoryService searchHistoryService, GameVersionService gameVersionService, TorrentRecordService torrentRecordService, HotTrendService hotTrendService) {
         this.resourceService = resourceService;
         this.gameplayService = gameplayService;
@@ -183,6 +191,8 @@
     @PostMapping("like")
     public ResponseEntity<String> likeResource(@RequestBody UserResourceDTO userResourceDTO) {
 
+        logger.info("User id: "+userResourceDTO.getUserId() + "Resource ID: " + userResourceDTO.getResourceId());
+
         QueryWrapper<User> userQuery = new QueryWrapper<>();
         userQuery.eq("user_id", userResourceDTO.getUserId());
         User user = userService.getOne(userQuery);
@@ -331,6 +341,7 @@
         QueryWrapper<Resource> resourceWrapper = new QueryWrapper<>();
         // 搜索名称字段不为空时,根据搜索名称进行模糊匹配,并将该次搜索存到搜索历史表
         if (!Objects.equals(searchValue, "")) {
+            logger.info("Filter by name: " + searchValue);
             resourceWrapper.like("resource_name", searchValue);
             SearchHistory searchHistory = new SearchHistory();
             searchHistory.setSearchContent(searchValue);
@@ -338,13 +349,16 @@
             searchHistoryService.save(searchHistory);
         }
         // 分类字段不为空时,根据类别筛选
-        if (!Objects.equals(classify, "")) {
-            resourceWrapper.eq("classify", classify);
+        logger.info("Classify: " + classify + " Mapped: " + GAME_CLASSIFY.get(classify));
+        if (!Objects.equals(GAME_CLASSIFY.get(classify), "")) {
+            logger.info("Filter by classify: " + classify);
+            resourceWrapper.eq("classify", GAME_CLASSIFY.get(classify));
         }
 
         // 主要玩法列表不为空时,根据主要玩法列表筛选(用户传入一个玩法列表,需要去 gameplay 表中查询该资源的所有玩法列表,只有当用户传入的玩法列表的每个值都在资源实际有的玩法列表中时,该资源才符合条件)
         if (gameplayList.length > 0) {
             // 该子查询统计了用户传入的玩法列表中有多少玩法是在资源的实际玩法列表中有的
+            logger.info("Filter by gameplay: " + Arrays.toString(gameplayList));
             String subQuery = "SELECT COUNT(*) " +
                     "FROM gameplay gp " +
                     "WHERE gp.resource_id = resource.resource_id " +
@@ -357,6 +371,7 @@
         // 游戏版本列表不为空时,根据游戏版本列表筛选
         if (gameVersionList.length > 0) {
             // 拼接游戏版本列表的 IN 子句
+            logger.info("Filter by game version: " + Arrays.toString(gameplayList));
             String gameVersionInClause = String.join(",", Arrays.stream(gameVersionList)
                     .map(v -> "'" + v + "'")
                     .toArray(String[]::new));
@@ -377,6 +392,7 @@
 
         IPage<Resource> resourcePage = resourceService.page(page, resourceWrapper);
         List<Resource> resourceList = resourcePage.getRecords();
+        logger.info("Resource list" + resourceList);
         long total = resourcePage.getTotal();
         long pages = resourcePage.getPages();
         long current = resourcePage.getCurrent();
@@ -468,7 +484,7 @@
     public ResponseEntity<GetResourcePageDTO> getHotResource(@RequestParam String classify, @RequestParam int pageNumber, @RequestParam int rows) {
         IPage<Resource> page = new Page<>(pageNumber, rows);
         QueryWrapper<Resource> resourceQuery = new QueryWrapper<>();
-        resourceQuery.eq("classify", classify);
+        resourceQuery.eq("classify", GAME_CLASSIFY.get(classify));
         // 动态计算热度并按降序排序
         resourceQuery.orderByDesc("(downloads * 0.25 + likes * 0.25 + collections * 0.25 + comments * 0.25)");
         IPage<Resource> resourcePage = resourceService.page(page, resourceQuery);