Revert "用户"

This reverts commit f6824511ca617c9421633c44830c938b862e75df.

Reason for revert: <撤销>

Change-Id: Ie4ee5bc5d3fa26981f61c52408ecf2d0a8e45243
diff --git a/target/classes/application.properties b/target/classes/application.properties
new file mode 100644
index 0000000..0590333
--- /dev/null
+++ b/target/classes/application.properties
@@ -0,0 +1,31 @@
+server.port=8080
+spring.datasource.url=jdbc:mysql://localhost:3306/pt
+spring.datasource.username=root
+spring.datasource.password=root
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+
+mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
+
+
+# Mail configuration
+spring.mail.password=tljnebonhzhqecda
+spring.mail.username=2370523716@qq.com
+spring.mail.host=smtp.qq.com
+spring.mail.properties.mail.smtp.ssl.enable=true
+spring.mail.properties.mail.smtp.auth=true
+spring.mail.properties.mail.smtp.starttls.enable=true
+
+
+spring.jpa.enabled=false
+spring.jpa.hibernate.ddl-auto=none
+spring.jpa.open-in-view=false
+
+# tracker??
+pt.tracker.port=6969
+
+pt.tracker.torrent-dir=${user.dir}/data/torrents
+
+pt.tracker.allow-foreign=false
+pt.tracker.announce-url=/custom-announce
+
+mybatis-plus.mapper-locations=classpath:/mapper/**/*.xml
diff --git a/target/classes/com/example/myproject/MyProjectApplication.class b/target/classes/com/example/myproject/MyProjectApplication.class
index 1ebd349..a1281a9 100644
--- a/target/classes/com/example/myproject/MyProjectApplication.class
+++ b/target/classes/com/example/myproject/MyProjectApplication.class
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/CommentController.class b/target/classes/com/example/myproject/controller/CommentController.class
deleted file mode 100644
index 8a43a45..0000000
--- a/target/classes/com/example/myproject/controller/CommentController.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/DynamicController.class b/target/classes/com/example/myproject/controller/DynamicController.class
deleted file mode 100644
index c760452..0000000
--- a/target/classes/com/example/myproject/controller/DynamicController.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/GroupController.class b/target/classes/com/example/myproject/controller/GroupController.class
deleted file mode 100644
index 931f773..0000000
--- a/target/classes/com/example/myproject/controller/GroupController.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/LevelController.class b/target/classes/com/example/myproject/controller/LevelController.class
deleted file mode 100644
index d4ce91e..0000000
--- a/target/classes/com/example/myproject/controller/LevelController.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/PostController.class b/target/classes/com/example/myproject/controller/PostController.class
deleted file mode 100644
index 2b5c472..0000000
--- a/target/classes/com/example/myproject/controller/PostController.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/TaskController.class b/target/classes/com/example/myproject/controller/TaskController.class
deleted file mode 100644
index 75d9b89..0000000
--- a/target/classes/com/example/myproject/controller/TaskController.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/UserController$EmailRequest.class b/target/classes/com/example/myproject/controller/UserController$EmailRequest.class
new file mode 100644
index 0000000..04ffd85
--- /dev/null
+++ b/target/classes/com/example/myproject/controller/UserController$EmailRequest.class
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/UserController$VerificationRequest.class b/target/classes/com/example/myproject/controller/UserController$VerificationRequest.class
new file mode 100644
index 0000000..272505e
--- /dev/null
+++ b/target/classes/com/example/myproject/controller/UserController$VerificationRequest.class
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/UserController.class b/target/classes/com/example/myproject/controller/UserController.class
index 77c1a9c..cd1ab13 100644
--- a/target/classes/com/example/myproject/controller/UserController.class
+++ b/target/classes/com/example/myproject/controller/UserController.class
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/UserFollowController.class b/target/classes/com/example/myproject/controller/UserFollowController.class
deleted file mode 100644
index f630e60..0000000
--- a/target/classes/com/example/myproject/controller/UserFollowController.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/UserMessageController.class b/target/classes/com/example/myproject/controller/UserMessageController.class
deleted file mode 100644
index 797258c..0000000
--- a/target/classes/com/example/myproject/controller/UserMessageController.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/Collections.class b/target/classes/com/example/myproject/entity/Collections.class
deleted file mode 100644
index ffb2c1b..0000000
--- a/target/classes/com/example/myproject/entity/Collections.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/Comments.class b/target/classes/com/example/myproject/entity/Comments.class
deleted file mode 100644
index 7aae61e..0000000
--- a/target/classes/com/example/myproject/entity/Comments.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/DynamicComment.class b/target/classes/com/example/myproject/entity/DynamicComment.class
deleted file mode 100644
index 7bcb0bf..0000000
--- a/target/classes/com/example/myproject/entity/DynamicComment.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/DynamicLikes.class b/target/classes/com/example/myproject/entity/DynamicLikes.class
deleted file mode 100644
index 4d8b010..0000000
--- a/target/classes/com/example/myproject/entity/DynamicLikes.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/ExperienceHistory.class b/target/classes/com/example/myproject/entity/ExperienceHistory.class
deleted file mode 100644
index cab0e4e..0000000
--- a/target/classes/com/example/myproject/entity/ExperienceHistory.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/FriendRelation.class b/target/classes/com/example/myproject/entity/FriendRelation.class
deleted file mode 100644
index 48ce2ae..0000000
--- a/target/classes/com/example/myproject/entity/FriendRelation.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/Group.class b/target/classes/com/example/myproject/entity/Group.class
deleted file mode 100644
index e53132e..0000000
--- a/target/classes/com/example/myproject/entity/Group.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/GroupComments.class b/target/classes/com/example/myproject/entity/GroupComments.class
deleted file mode 100644
index 3a4c88f..0000000
--- a/target/classes/com/example/myproject/entity/GroupComments.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/GroupMembers.class b/target/classes/com/example/myproject/entity/GroupMembers.class
deleted file mode 100644
index 8e73b86..0000000
--- a/target/classes/com/example/myproject/entity/GroupMembers.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/GroupPost.class b/target/classes/com/example/myproject/entity/GroupPost.class
deleted file mode 100644
index ff4b459..0000000
--- a/target/classes/com/example/myproject/entity/GroupPost.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/Level.class b/target/classes/com/example/myproject/entity/Level.class
deleted file mode 100644
index 83bc9b6..0000000
--- a/target/classes/com/example/myproject/entity/Level.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/Likes.class b/target/classes/com/example/myproject/entity/Likes.class
deleted file mode 100644
index a947d72..0000000
--- a/target/classes/com/example/myproject/entity/Likes.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/Post.class b/target/classes/com/example/myproject/entity/Post.class
deleted file mode 100644
index ff7b346..0000000
--- a/target/classes/com/example/myproject/entity/Post.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/Task.class b/target/classes/com/example/myproject/entity/Task.class
deleted file mode 100644
index 0d2fd8a..0000000
--- a/target/classes/com/example/myproject/entity/Task.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/UserDynamic.class b/target/classes/com/example/myproject/entity/UserDynamic.class
deleted file mode 100644
index 5278fed..0000000
--- a/target/classes/com/example/myproject/entity/UserDynamic.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/UserFollow.class b/target/classes/com/example/myproject/entity/UserFollow.class
deleted file mode 100644
index af021ef..0000000
--- a/target/classes/com/example/myproject/entity/UserFollow.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/UserInviteCode.class b/target/classes/com/example/myproject/entity/UserInviteCode.class
deleted file mode 100644
index 4dd4d67..0000000
--- a/target/classes/com/example/myproject/entity/UserInviteCode.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/UserMessages.class b/target/classes/com/example/myproject/entity/UserMessages.class
deleted file mode 100644
index ae014e1..0000000
--- a/target/classes/com/example/myproject/entity/UserMessages.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/UserTaskStatus.class b/target/classes/com/example/myproject/entity/UserTaskStatus.class
deleted file mode 100644
index ebe2959..0000000
--- a/target/classes/com/example/myproject/entity/UserTaskStatus.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/Users.class b/target/classes/com/example/myproject/entity/Users.class
deleted file mode 100644
index a1c3125..0000000
--- a/target/classes/com/example/myproject/entity/Users.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/CollectionsRepository.class b/target/classes/com/example/myproject/repository/CollectionsRepository.class
deleted file mode 100644
index 3a67c86..0000000
--- a/target/classes/com/example/myproject/repository/CollectionsRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/CommentRepository.class b/target/classes/com/example/myproject/repository/CommentRepository.class
deleted file mode 100644
index 3e39e08..0000000
--- a/target/classes/com/example/myproject/repository/CommentRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/DynamicCommentRepository.class b/target/classes/com/example/myproject/repository/DynamicCommentRepository.class
deleted file mode 100644
index 64ace32..0000000
--- a/target/classes/com/example/myproject/repository/DynamicCommentRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/DynamicLikesRepository.class b/target/classes/com/example/myproject/repository/DynamicLikesRepository.class
deleted file mode 100644
index c00b453..0000000
--- a/target/classes/com/example/myproject/repository/DynamicLikesRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/ExperienceHistoryRepository.class b/target/classes/com/example/myproject/repository/ExperienceHistoryRepository.class
deleted file mode 100644
index eb43307..0000000
--- a/target/classes/com/example/myproject/repository/ExperienceHistoryRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/FriendRelationRepository.class b/target/classes/com/example/myproject/repository/FriendRelationRepository.class
deleted file mode 100644
index eefce96..0000000
--- a/target/classes/com/example/myproject/repository/FriendRelationRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/GroupCommentsRepository.class b/target/classes/com/example/myproject/repository/GroupCommentsRepository.class
deleted file mode 100644
index 4b7123b..0000000
--- a/target/classes/com/example/myproject/repository/GroupCommentsRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/GroupMembersRepository.class b/target/classes/com/example/myproject/repository/GroupMembersRepository.class
deleted file mode 100644
index fbf8c8c..0000000
--- a/target/classes/com/example/myproject/repository/GroupMembersRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/GroupPostRepository.class b/target/classes/com/example/myproject/repository/GroupPostRepository.class
deleted file mode 100644
index 9a96f8a..0000000
--- a/target/classes/com/example/myproject/repository/GroupPostRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/GroupRepository.class b/target/classes/com/example/myproject/repository/GroupRepository.class
deleted file mode 100644
index 6fbf038..0000000
--- a/target/classes/com/example/myproject/repository/GroupRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/LevelRepository.class b/target/classes/com/example/myproject/repository/LevelRepository.class
deleted file mode 100644
index 7dd1782..0000000
--- a/target/classes/com/example/myproject/repository/LevelRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/LikesRepository.class b/target/classes/com/example/myproject/repository/LikesRepository.class
deleted file mode 100644
index c8bb4fc..0000000
--- a/target/classes/com/example/myproject/repository/LikesRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/PostRepository.class b/target/classes/com/example/myproject/repository/PostRepository.class
deleted file mode 100644
index a40ff35..0000000
--- a/target/classes/com/example/myproject/repository/PostRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/TaskRepository.class b/target/classes/com/example/myproject/repository/TaskRepository.class
deleted file mode 100644
index 3a654ae..0000000
--- a/target/classes/com/example/myproject/repository/TaskRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/UserDynamicRepository.class b/target/classes/com/example/myproject/repository/UserDynamicRepository.class
deleted file mode 100644
index cc49ee5..0000000
--- a/target/classes/com/example/myproject/repository/UserDynamicRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/UserFollowRepository.class b/target/classes/com/example/myproject/repository/UserFollowRepository.class
deleted file mode 100644
index dd01682..0000000
--- a/target/classes/com/example/myproject/repository/UserFollowRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/UserInviteCodeRepository.class b/target/classes/com/example/myproject/repository/UserInviteCodeRepository.class
deleted file mode 100644
index 8b7bb9f..0000000
--- a/target/classes/com/example/myproject/repository/UserInviteCodeRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/UserMessagesRepository.class b/target/classes/com/example/myproject/repository/UserMessagesRepository.class
deleted file mode 100644
index 604996a..0000000
--- a/target/classes/com/example/myproject/repository/UserMessagesRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/UserRepository.class b/target/classes/com/example/myproject/repository/UserRepository.class
deleted file mode 100644
index 4e1b3ad..0000000
--- a/target/classes/com/example/myproject/repository/UserRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/UserTaskStatusRepository.class b/target/classes/com/example/myproject/repository/UserTaskStatusRepository.class
deleted file mode 100644
index 67585b1..0000000
--- a/target/classes/com/example/myproject/repository/UserTaskStatusRepository.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/service/CommentService.class b/target/classes/com/example/myproject/service/CommentService.class
deleted file mode 100644
index 04df3f8..0000000
--- a/target/classes/com/example/myproject/service/CommentService.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/service/DynamicService.class b/target/classes/com/example/myproject/service/DynamicService.class
deleted file mode 100644
index 8d2de39..0000000
--- a/target/classes/com/example/myproject/service/DynamicService.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/service/GroupService.class b/target/classes/com/example/myproject/service/GroupService.class
deleted file mode 100644
index b1e30ce..0000000
--- a/target/classes/com/example/myproject/service/GroupService.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/service/LevelService.class b/target/classes/com/example/myproject/service/LevelService.class
deleted file mode 100644
index 7846dda..0000000
--- a/target/classes/com/example/myproject/service/LevelService.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/service/PostService.class b/target/classes/com/example/myproject/service/PostService.class
deleted file mode 100644
index 367023b..0000000
--- a/target/classes/com/example/myproject/service/PostService.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/service/TaskService.class b/target/classes/com/example/myproject/service/TaskService.class
deleted file mode 100644
index f19e0f6..0000000
--- a/target/classes/com/example/myproject/service/TaskService.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/service/UserFollowService.class b/target/classes/com/example/myproject/service/UserFollowService.class
deleted file mode 100644
index 55d5132..0000000
--- a/target/classes/com/example/myproject/service/UserFollowService.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/service/UserMessageService.class b/target/classes/com/example/myproject/service/UserMessageService.class
deleted file mode 100644
index 2ebaf89..0000000
--- a/target/classes/com/example/myproject/service/UserMessageService.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/service/UserService.class b/target/classes/com/example/myproject/service/UserService.class
index 003e042..242bb1c 100644
--- a/target/classes/com/example/myproject/service/UserService.class
+++ b/target/classes/com/example/myproject/service/UserService.class
Binary files differ
diff --git a/target/classes/com/example/myproject/service/serviceImpl/UserDetailsServiceImpl.class b/target/classes/com/example/myproject/service/serviceImpl/UserDetailsServiceImpl.class
new file mode 100644
index 0000000..57470ed
--- /dev/null
+++ b/target/classes/com/example/myproject/service/serviceImpl/UserDetailsServiceImpl.class
Binary files differ
diff --git a/target/classes/com/example/myproject/service/serviceImpl/UserServiceImpl.class b/target/classes/com/example/myproject/service/serviceImpl/UserServiceImpl.class
new file mode 100644
index 0000000..cd97158
--- /dev/null
+++ b/target/classes/com/example/myproject/service/serviceImpl/UserServiceImpl.class
Binary files differ
diff --git a/target/classes/com/example/myproject/utils/Result.class b/target/classes/com/example/myproject/utils/Result.class
deleted file mode 100644
index e5c5aa0..0000000
--- a/target/classes/com/example/myproject/utils/Result.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/files/files.torrent b/target/classes/files/files.torrent
new file mode 100644
index 0000000..e04974f
--- /dev/null
+++ b/target/classes/files/files.torrent
@@ -0,0 +1 @@
+d8:announce22:https://tracker.byr.pt10:created by21:qBittorrent v4.5.3.1013:creation datei1747717901e4:infod5:filesld6:lengthi173e4:pathl13:valid.torrenteee4:name5:files12:piece lengthi16384e6:pieces20:/ñíèEô5ã<òûìՄŸQ¡–ûee
\ No newline at end of file
diff --git a/target/classes/mapper/FavoriteMapper.xml b/target/classes/mapper/FavoriteMapper.xml
new file mode 100644
index 0000000..1048ec2
--- /dev/null
+++ b/target/classes/mapper/FavoriteMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.example.myproject.mapper.FavoriteMapper">
+ 
+</mapper>
diff --git a/target/classes/mapper/PromotionMapper.xml b/target/classes/mapper/PromotionMapper.xml
new file mode 100644
index 0000000..72ffd95
--- /dev/null
+++ b/target/classes/mapper/PromotionMapper.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.example.myproject.mapper.PromotionMapper">
+
+    <insert id="insert" parameterType="com.example.myproject.entity.Promotion">
+        INSERT INTO promotion (
+        name, description, start_time, end_time, discount_percentage, applicable_torrent_ids
+        ) VALUES (
+        #{name}, #{description}, #{startTime}, #{endTime}, #{discountPercentage}, #{applicableTorrentIds}
+        )
+    </insert>
+
+</mapper>
diff --git a/target/classes/mapper/TorrentMapper.xml b/target/classes/mapper/TorrentMapper.xml
new file mode 100644
index 0000000..d5f018e
--- /dev/null
+++ b/target/classes/mapper/TorrentMapper.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.example.myproject.mapper.TorrentMapper">
+    <resultMap id="BaseResultMap" type="com.example.myproject.entity.TorrentEntity">
+        <id column="info_hash" property="infoHash"/>
+        <result column="file_name" property="fileName"/>
+        <result column="uploader" property="uploader"/>
+        <result column="upload_time" property="uploadTime"/>
+        <result column="size" property="size"/>
+        <result column="title" property="title"/>
+        <result column="description" property="description"/>
+        <result column="category" property="category"/>
+        <result column="image_url" property="imageUrl"/>
+    </resultMap>
+
+    <select id="selectByInfoHash" resultMap="BaseResultMap">
+        SELECT * FROM torrent WHERE info_hash = #{infoHash}
+    </select>
+    <select id="selectBySeedId" resultMap="BaseResultMap">
+        SELECT * FROM torrent WHERE seed_id = #{seedId}
+    </select>
+
+
+
+
+    <update id="update" parameterType="com.example.myproject.entity.TorrentEntity">
+        UPDATE torrent
+        SET file_name = #{fileName},
+        uploader = #{uploader},
+        upload_time = #{uploadTime},
+        size = #{size},
+        title = #{title},
+        description = #{description},
+        category = #{category},
+        image_url = #{imageUrl}
+        WHERE info_hash = #{infoHash}
+    </update>
+    <select id="search" resultType="com.example.myproject.entity.TorrentEntity">
+        SELECT * FROM torrent
+        <where>
+            <if test="param.category != null">
+                AND category = #{param.category}
+            </if>
+
+            <!--        <if test="param.free != null and param.free != ''">-->
+            <!--            AND free = #{param.free}-->
+            <!--        </if>-->
+            <if test="param.free != null">
+            <choose>
+                <!-- 筛选“正在促销中”的种子 -->
+                <when test="param.free == true">
+                    AND EXISTS (
+                    SELECT 1 FROM promotion p
+                    WHERE
+                    JSON_CONTAINS(p.applicable_torrent_ids, JSON_ARRAY(t.id))
+                    AND NOW() BETWEEN p.start_time AND p.end_time
+                    AND p.is_deleted = 0
+                    )
+                </when>
+                <!-- 筛选“未在促销中”的种子 -->
+                <otherwise>
+                    AND NOT EXISTS (
+                    SELECT 1 FROM promotion p
+                    WHERE
+                    JSON_CONTAINS(p.applicable_torrent_ids, JSON_ARRAY(t.id))
+                    AND NOW() BETWEEN p.start_time AND p.end_time
+                    AND p.is_deleted = 0
+                    )
+                </otherwise>
+            </choose>
+            </if>
+
+            <if test="param.likeExpressions != null and param.likeExpressions.size > 0">
+                AND (
+                <foreach collection="param.likeExpressions" item="item" open="(" separator=" AND " close=")">
+
+                    ( title LIKE CONCAT('%', #{item}, '%') ) or ( description LIKE CONCAT('%', #{item}, '%') ) or ( tags LIKE CONCAT('%', #{item}, '%') )
+                </foreach>
+                )
+            </if>
+        </where>
+
+        <if test="param.prop != null and param.sort != null">
+            ORDER BY ${param.prop} ${param.sort}
+        </if>
+    </select>
+    <select id="checkFavorite" resultType="boolean">
+        SELECT COUNT(*) > 0
+        FROM favorite
+        WHERE seed_id = #{seedId} AND user_id = #{userId}
+    </select>
+    <insert id="addFavorite">
+        INSERT INTO favorite (seed_id, user_id)
+        VALUES (#{seedId}, #{userId})
+    </insert>
+    <delete id="removeFavorite">
+        DELETE FROM favorite
+        WHERE seed_id = #{seedId} AND user_id = #{userId}
+    </delete>
+
+
+</mapper>
\ No newline at end of file
diff --git a/target/classes/mapper/UserMapper.xml b/target/classes/mapper/UserMapper.xml
new file mode 100644
index 0000000..f03ab0a
--- /dev/null
+++ b/target/classes/mapper/UserMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.example.myproject.mapper.UserMapper">
+    <!-- 根据用户名查找用户 -->
+    <select id="selectByUsername" parameterType="string" resultType="com.example.myproject.entity.User">
+        SELECT * FROM user WHERE username = #{username}
+    </select>
+    <!-- 根据用户名和密码查找用户 -->
+    <select id="selectByUsernameAndPassword" parameterType="map" resultType="com.example.myproject.entity.User">
+        SELECT * FROM user WHERE username = #{username} AND password = #{password}
+    </select>
+    <!-- 根据邮箱查找用户 -->
+    <select id="selectByEmail" parameterType="string" resultType="com.example.myproject.entity.User">
+        SELECT * FROM user WHERE email = #{email}
+    </select>
+    <!-- 根据用户名包含查找用户 -->
+    <select id="selectByUsernameContaining" parameterType="string" resultType="com.example.myproject.entity.User">
+        SELECT * FROM user WHERE username LIKE CONCAT('%', #{name}, '%')
+    </select>
+</mapper>
diff --git a/target/classes/mapper/VerificationTokenMapper.xml b/target/classes/mapper/VerificationTokenMapper.xml
new file mode 100644
index 0000000..53b19a5
--- /dev/null
+++ b/target/classes/mapper/VerificationTokenMapper.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.example.myproject.mapper.VerificationTokenMapper">
+    <!-- 通过 token 和 email 查询 VerificationToken -->
+    <select id="findByTokenAndEmail" resultType="com.example.myproject.entity.VerificationToken">
+        SELECT * FROM verification_token
+        WHERE token = #{token} AND email = #{email}
+    </select>
+</mapper>
diff --git a/target/classes/output/valid.torrent b/target/classes/output/valid.torrent
new file mode 100644
index 0000000..6a90e52
--- /dev/null
+++ b/target/classes/output/valid.torrent
@@ -0,0 +1 @@
+d10:created by18:qBittorrent v5.1.013:creation datei1745948995e4:infod6:lengthi22e4:name15:example.torrent12:piece lengthi16384e6:pieces20:Fnð¶)ú<Ç	ŽæÂh£tl7:privatei1eee
\ No newline at end of file