upload功能

Change-Id: Iad725ce3e2edd913531bf11705bf51000dde010d
diff --git a/src/main/java/com/pt5/pthouduan/mapper/TorrentMapper.java b/src/main/java/com/pt5/pthouduan/mapper/TorrentMapper.java
index 9c7b608..e7ba2a3 100644
--- a/src/main/java/com/pt5/pthouduan/mapper/TorrentMapper.java
+++ b/src/main/java/com/pt5/pthouduan/mapper/TorrentMapper.java
@@ -3,6 +3,11 @@
 import com.pt5.pthouduan.entity.Torrent;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -14,5 +19,23 @@
  */
 @Mapper
 public interface TorrentMapper extends BaseMapper<Torrent> {
+    // 仅保留方法声明,移除所有SQL注解
+    List<Torrent> selectByUploaderId(@Param("uploaderId") Long uploaderId);
+    List<Torrent> searchByName(@Param("keyword") String keyword);
+    List<Torrent> selectTopPopular();
+    List<Torrent> getAllTorrents();
+    Integer existsByInfoHash(@Param("infoHash") String infoHash);
+    void incrementDownloadCount(@Param("id") Long id);
+    void save(Torrent entity);
+    List<Torrent> selectTorrentsByCategory(Integer category);
+    Torrent selectById(@Param("torrentid") Long id);
+    List<Torrent> searchByKeyword(String keyword);
 
+    void setFreePromotion();       // 免费下载
+    void setDoubleUpload();        // 上传加倍
+    void setHalfDownload();        // 下载减半
+    void clearPromotion();         // 恢复促销
+    Torrent selectByinfohash(@Param("infohash") String infohash);
+
+    List<Torrent> listByCategoryWithFilters(Integer categoryid, Map<String, String> filters, String extendTable);
 }
diff --git a/src/main/java/com/pt5/pthouduan/mapper/UserMapper.java b/src/main/java/com/pt5/pthouduan/mapper/UserMapper.java
index 89c37ab..2f96180 100644
--- a/src/main/java/com/pt5/pthouduan/mapper/UserMapper.java
+++ b/src/main/java/com/pt5/pthouduan/mapper/UserMapper.java
@@ -1,11 +1,21 @@
 package com.pt5.pthouduan.mapper;
 
+import com.pt5.pthouduan.entity.PeerInfo;
 import com.pt5.pthouduan.entity.User;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.*;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
 
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ljx
+ * @since 2025-04-14
+ */
 @Repository
 public interface UserMapper extends BaseMapper<User> {
     @Insert("INSERT INTO user(username, password, email, passkey) VALUES(#{username}, #{password}, #{email}, #{passkey})")
@@ -17,6 +27,15 @@
     @Select("SELECT * FROM User WHERE email = #{email}")
     User selectByEmail(String email);
 
+    @Select("SELECT credit FROM User WHERE username = #{username}")
+    int getcreditByUsername(String username);
+
+    @Update("UPDATE user SET credit = credit - #{price} WHERE username = #{username}")
+    int deductCreditByUsername(@Param("username") String username, @Param("price") int price);
+
+    @Update("UPDATE user SET upload = upload + #{upload} WHERE username = #{username}")
+    int increaseUploadByUsername(@Param("username") String username, @Param("upload") Integer upload);
+
     @Update("UPDATE user SET password = #{password} WHERE username = #{username}")
     int updatePassword(@Param("username") String username, @Param("password") String password);
 
@@ -28,4 +47,14 @@
 
     @Update("UPDATE user SET gradeId = #{gradeId} WHERE username = #{username}")
     int updateGrade(@Param("username") String username, @Param("gradeId") Integer gradeId);
+
+    @Update("UPDATE user SET decoration = CONCAT(IFNULL(decoration, ''), ' ', #{newDecoration}) WHERE username = #{username}")
+    int appendUserDecoration(@Param("username") String username, @Param("newDecoration") String newDecoration);
+
+    boolean existsByPasskey(String passkey);
+    void incrementUserTraffic( @Param("info_hash") String infoHash,@Param("passkey") String passkey, @Param("user_upload") long uploaded, @Param("user_download") long downloaded);
+
+    String getUsernameByPasskey(String passkey);
+
+    List<PeerInfo> findSeedersByInfoHash(@Param("infoHash") String infoHash);
 }