diff --git a/src/main/java/com/example/myproject/controller/PromotionController.java b/src/main/java/com/example/myproject/controller/PromotionController.java
index ed90bf7..145692c 100644
--- a/src/main/java/com/example/myproject/controller/PromotionController.java
+++ b/src/main/java/com/example/myproject/controller/PromotionController.java
@@ -34,45 +34,7 @@
     @Autowired
     private PromotionService promotionService;
 
-    @Autowired
-    private UserService userService;
-    @SaCheckLogin
-    @Operation(summary = "删除种子")
-    @DeleteMapping("/{torrentId}")
-    public Result deleteTorrent(@PathVariable Long torrentId) {
-        try {
-            //  验证用户权限
-            Long userId = StpUtil.getLoginIdAsLong();
-            if (!torrentService.canUserDeleteTorrent(torrentId, userId)) {
-                return Result.error("没有权限删除此种子");
-            }
 
-            torrentService.deleteTorrent(torrentId);
-            return Result.ok();
-        } catch (Exception e) {
-            return Result.error("删除失败: " + e.getMessage());
-        }
-    }
-
-    @SaCheckLogin
-    @Operation(summary = "修改种子信息")
-    @PutMapping("/{torrentId}")
-    public Result updateTorrent(
-            @PathVariable Long torrentId,
-            @RequestBody @Validated TorrentUpdateDTO updateDTO) {
-        try {
-            // 验证用户权限
-            Long userId = StpUtil.getLoginIdAsLong();
-            if (!torrentService.canUserUpdateTorrent(torrentId, userId)) {
-                return Result.error("没有权限修改此种子");
-            }
-
-            torrentService.updateTorrent(torrentId, updateDTO);
-            return Result.ok();
-        } catch (Exception e) {
-            return Result.error("更新失败: " + e.getMessage());
-        }
-    }
 
     @SaCheckLogin
     @Operation(summary = "创建促销活动")
@@ -90,6 +52,39 @@
             return Result.error("创建促销失败: " + e.getMessage());
         }
     }
+    @SaCheckLogin
+    @Operation(summary = "根据分类创建促销活动")
+    @PostMapping("/promotions/category")
+    public Result createPromotionByCategory(@RequestParam String category, @RequestBody @Validated PromotionCreateDTO promotionDTO) {
+        try {
+            // 校验权限
+//            Long userId = StpUtil.getLoginIdAsLong();
+//            var userOpt = userRepository.findById(userId);
+//            if (userOpt.isEmpty() || !"admin".equals(userOpt.get().getRole())) {
+//                return Result.error("没有权限创建促销活动");
+//            }
+
+            // 查询该分类下的所有种子
+            List<TorrentEntity> torrents = torrentService.getTorrentsByCategory(category);
+            if (torrents.isEmpty()) {
+                return Result.error("分类【" + category + "】下没有可用的资源");
+            }
+
+            // 提取所有种子的 ID
+            List<Long> ids = torrents.stream().map(TorrentEntity::getId).toList();
+
+            // 设置到 DTO 中
+            promotionDTO.setApplicableTorrentIds(ids);
+
+            // 创建促销
+            Promotion promotion = promotionService.createPromotion(promotionDTO);
+
+            return Result.ok("成功创建促销，适用于分类【" + category + "】的 " + ids.size() + " 个资源");
+        } catch (Exception e) {
+            return Result.error("分类创建促销失败: " + e.getMessage());
+        }
+    }
+
 
     @SaCheckLogin
     @Operation(summary = "获取促销活动列表")
diff --git a/src/main/java/com/example/myproject/controller/TorrentController.java b/src/main/java/com/example/myproject/controller/TorrentController.java
index fd79757..4229fc4 100644
--- a/src/main/java/com/example/myproject/controller/TorrentController.java
+++ b/src/main/java/com/example/myproject/controller/TorrentController.java
@@ -173,6 +173,7 @@
             @PathVariable("seed_id") Long seedId,
             @RequestParam("passkey") String passkey,
             HttpServletResponse response) throws IOException {
+        torrentService.incrementDownloadCount(seedId);
 
         // 获取种子实体
         TorrentEntity entity = torrentService.selectBySeedId(seedId);
@@ -205,6 +206,43 @@
         response.getOutputStream().write(torrentBytes);
         response.getOutputStream().flush();
     }
+    @SaCheckLogin
+    @Operation(summary = "修改种子信息")
+    @PutMapping("/{torrentId}")
+    public Result updateTorrent(
+            @PathVariable Long torrentId,
+            @RequestBody @Validated TorrentUpdateDTO updateDTO) {
+        try {
+            // 验证用户权限
+            Long userId = StpUtil.getLoginIdAsLong();
+            if (!torrentService.canUserUpdateTorrent(torrentId, userId)) {
+                return Result.error("没有权限修改此种子");
+            }
+
+            torrentService.updateTorrent(torrentId, updateDTO);
+            return Result.ok();
+        } catch (Exception e) {
+            return Result.error("更新失败: " + e.getMessage());
+        }
+    }
+    @SaCheckLogin
+    @Operation(summary = "删除种子")
+    @DeleteMapping("/{torrentId}")
+    public Result deleteTorrent(@PathVariable Long torrentId) {
+        try {
+            //  验证用户权限
+            Long userId = StpUtil.getLoginIdAsLong();
+            if (!torrentService.canUserDeleteTorrent(torrentId, userId)) {
+                return Result.error("没有权限删除此种子");
+            }
+
+            torrentService.deleteTorrent(torrentId);
+            return Result.ok();
+        } catch (Exception e) {
+            return Result.error("删除失败: " + e.getMessage());
+        }
+    }
+
 
     /**
      * 收藏或者取消收藏
diff --git a/src/main/java/com/example/myproject/dto/PromotionCreateDTO.java b/src/main/java/com/example/myproject/dto/PromotionCreateDTO.java
index 211979b..ca710d0 100644
--- a/src/main/java/com/example/myproject/dto/PromotionCreateDTO.java
+++ b/src/main/java/com/example/myproject/dto/PromotionCreateDTO.java
@@ -25,7 +25,7 @@
     @Max(value = 100, message = "折扣比例不能大于100")
     private double discountPercentage;
     
-    @NotEmpty(message = "适用种子列表不能为空")
+
     private List<Long> applicableTorrentIds;
     
     @AssertTrue(message = "结束时间必须晚于开始时间")
diff --git a/src/main/java/com/example/myproject/mapper/TorrentMapper.java b/src/main/java/com/example/myproject/mapper/TorrentMapper.java
index 3419938..28e4dfc 100644
--- a/src/main/java/com/example/myproject/mapper/TorrentMapper.java
+++ b/src/main/java/com/example/myproject/mapper/TorrentMapper.java
@@ -33,6 +33,12 @@
 
     void incrementViews(@Param("id") Long id);
     List<TorrentEntity> selectColdTorrents(@Param("threshold") int threshold);
+    @Select("SELECT * FROM torrent WHERE category = #{category}")
+    List<TorrentEntity> selectByCategory(@Param("category") String category);
+    @Update("UPDATE torrent SET leechers = leechers + 1 WHERE id = #{torrentId}")
+    void incrementDownloadCount(@Param("torrentId") Long torrentId);
+
+
 
 
 
diff --git a/src/main/java/com/example/myproject/service/PromotionService.java b/src/main/java/com/example/myproject/service/PromotionService.java
index b83bce5..2122411 100644
--- a/src/main/java/com/example/myproject/service/PromotionService.java
+++ b/src/main/java/com/example/myproject/service/PromotionService.java
@@ -18,4 +18,5 @@
     double getDownloadDiscount(Long torrentId);
 
 
-} 
\ No newline at end of file
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/myproject/service/TorrentService.java b/src/main/java/com/example/myproject/service/TorrentService.java
index 0baee2d..700b8ea 100644
--- a/src/main/java/com/example/myproject/service/TorrentService.java
+++ b/src/main/java/com/example/myproject/service/TorrentService.java
@@ -89,4 +89,8 @@
     //        return torrentMapper.selectColdTorrents(threshold);
     //    }
     List<TorrentEntity> getColdTorrents(int threshold);
+
+    List<TorrentEntity> getTorrentsByCategory(String category);
+
+    void incrementDownloadCount(Long torrentId);
 }
diff --git a/src/main/java/com/example/myproject/service/serviceImpl/PromotionServiceImpl.java b/src/main/java/com/example/myproject/service/serviceImpl/PromotionServiceImpl.java
index caec8e1..dccba96 100644
--- a/src/main/java/com/example/myproject/service/serviceImpl/PromotionServiceImpl.java
+++ b/src/main/java/com/example/myproject/service/serviceImpl/PromotionServiceImpl.java
@@ -3,12 +3,12 @@
 import com.example.myproject.entity.Promotion;
 import com.example.myproject.entity.TorrentEntity;
 import com.example.myproject.mapper.PromotionMapper;
+import com.example.myproject.mapper.TorrentMapper;
 import com.example.myproject.service.PromotionService;
 import com.example.myproject.dto.PromotionCreateDTO;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import io.swagger.models.auth.In;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -23,6 +23,9 @@
     @Autowired
     private PromotionMapper promotionMapper;
 
+    @Autowired
+    private TorrentMapper torrentMapper;
+
     @Override
     @Transactional
     public Promotion createPromotion(PromotionCreateDTO promotionDTO) {
@@ -165,4 +168,5 @@
                 .min()
                 .orElse(0.0);
     }
+
 }
diff --git a/src/main/java/com/example/myproject/service/serviceImpl/TorrentServiceImpl.java b/src/main/java/com/example/myproject/service/serviceImpl/TorrentServiceImpl.java
index 2fb4b4d..cf97746 100644
--- a/src/main/java/com/example/myproject/service/serviceImpl/TorrentServiceImpl.java
+++ b/src/main/java/com/example/myproject/service/serviceImpl/TorrentServiceImpl.java
@@ -606,5 +606,15 @@
     public List<TorrentEntity> getColdTorrents(int threshold) {
         return torrentMapper.selectColdTorrents(threshold);
     }
+    @Override
+    public List<TorrentEntity> getTorrentsByCategory(String category) {
+        return torrentMapper.selectByCategory(category);
+    }
+    @Override
+    public void incrementDownloadCount(Long torrentId) {
+        torrentMapper.incrementDownloadCount(torrentId);
+    }
+
+
 
 }
\ No newline at end of file
