测试本地
Change-Id: Ib3a541fac7efd46cccd608c351fcd5f3236f475f
diff --git a/src/main/java/com/example/g8backend/controller/AuthController.java b/src/main/java/com/example/g8backend/controller/AuthController.java
index 1fdf906..b68eff8 100644
--- a/src/main/java/com/example/g8backend/controller/AuthController.java
+++ b/src/main/java/com/example/g8backend/controller/AuthController.java
@@ -61,9 +61,9 @@
return ApiResponse.error(400, "用户名已存在");
}
- if (!redisTemplate.hasKey(registerDTO.getInvitationCode())) {
- return ApiResponse.error(400, "邀请码错误");
- }
+// if (!redisTemplate.hasKey(registerDTO.getInvitationCode())) {
+// return ApiResponse.error(400, "邀请码错误");
+// }
Object cachedCode = redisTemplate.opsForValue().get(registerDTO.getEmail());
if (!registerDTO.getVerificationCode().equals(cachedCode)) {
diff --git a/src/main/java/com/example/g8backend/controller/TrackerController.java b/src/main/java/com/example/g8backend/controller/TrackerController.java
index 4e26abb..8776e36 100644
--- a/src/main/java/com/example/g8backend/controller/TrackerController.java
+++ b/src/main/java/com/example/g8backend/controller/TrackerController.java
@@ -3,6 +3,8 @@
import com.example.g8backend.dto.AnnounceRequestDTO;
import com.example.g8backend.dto.AnnounceResponseDTO;
import jakarta.servlet.http.HttpServletRequest;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@@ -28,6 +30,8 @@
@RequestParam(value = "compact", required = false) Integer compact,
@PathVariable String passkey) {
+ Logger logger = LoggerFactory.getLogger(this.getClass());
+
AnnounceRequestDTO requestDTO = new AnnounceRequestDTO();
requestDTO.setPasskey(passkey);
requestDTO.setInfoHash(infoHash);
@@ -39,6 +43,8 @@
requestDTO.setLeft(left);
requestDTO.setCompact(compact);
+ logger.info(requestDTO.toString());
+
String ipAddress = request.getHeader("X-Forwarded-For");
if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("Proxy-Client-IP");
diff --git a/src/main/java/com/example/g8backend/entity/User.java b/src/main/java/com/example/g8backend/entity/User.java
index aea6335..d32cab9 100644
--- a/src/main/java/com/example/g8backend/entity/User.java
+++ b/src/main/java/com/example/g8backend/entity/User.java
@@ -25,6 +25,7 @@
private Integer signinCount;
private LocalDate lastSigninDate;
private String role;
+// private String avatarUrl; // 头像 URL 或文件名
@TableField("is_banned")
private Boolean isBanned = false;
diff --git a/src/main/java/com/example/g8backend/service/impl/TorrentRecommendationServiceImpl.java b/src/main/java/com/example/g8backend/service/impl/TorrentRecommendationServiceImpl.java
index f93c2e4..7adc4c0 100644
--- a/src/main/java/com/example/g8backend/service/impl/TorrentRecommendationServiceImpl.java
+++ b/src/main/java/com/example/g8backend/service/impl/TorrentRecommendationServiceImpl.java
@@ -102,7 +102,9 @@
int israre = (i < limit) ? 1 : 0;
// 直接调用mapper更新对应torrent的israre字段
- torrentMapper.updateIsRareByInfoHash(dto.getInfoHash(), israre);
+ int rows = torrentMapper.updateIsRareByInfoHash(dto.getInfoHash(), israre);
+ System.out.println("更新infoHash=" + dto.getInfoHash() + " 的is_rare=" + israre + ",受影响行数=" + rows);
+
}
}
}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index dbde0cf..899d736 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -9,8 +9,8 @@
mybatis-plus.mapper-locations=classpath*:/mapper/**/*.xml
-#spring.data.redis.host = 127.0.0.1
-spring.data.redis.host = redis
+spring.data.redis.host = 127.0.0.1
+#spring.data.redis.host = redis
spring.data.redis.port = 6379
spring.mail.host=smtp.qq.com
diff --git a/src/main/resources/mapper/PeerMapper.xml b/src/main/resources/mapper/PeerMapper.xml
index 4c90eae..27814fd 100644
--- a/src/main/resources/mapper/PeerMapper.xml
+++ b/src/main/resources/mapper/PeerMapper.xml
@@ -2,33 +2,41 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.g8backend.mapper.PeerMapper">
- <select id="getPeerByPK">
+
+ <select id="getPeerByPK" parameterType="map" resultType="com.example.g8backend.entity.Peer">
SELECT * FROM peers
WHERE peer_id = #{peerId} and info_hash = #{infoHash} and passkey = #{passkey}
</select>
- <select id="getPeerByInfoHashAndPeerId">
+
+ <select id="getPeerByInfoHashAndPeerId" parameterType="map" resultType="com.example.g8backend.entity.Peer">
SELECT * FROM peers
WHERE info_hash = #{infoHash} and peer_id = #{peerId}
</select>
+
<select id="selectAllInfoHashesWithPeers" resultType="String">
SELECT DISTINCT info_hash FROM peers
</select>
<select id="countRecentActivity" resultType="Long" parameterType="String">
- SELECT COUNT(*) FROM peers
+ SELECT COUNT(*) FROM torrents
WHERE info_hash = #{infoHash}
- AND last_activity_time >= DATE_SUB(NOW(), INTERVAL 7 DAY)
+ AND upload_time >= DATE_SUB(NOW(), INTERVAL 7 DAY)
</select>
+
+
<select id="selectByInfoHashList" parameterType="list" resultType="com.example.g8backend.entity.Torrent">
SELECT * FROM torrents
WHERE info_hash IN
- <foreach item="item" index="index" collection="infoHashes" open="(" separator="," close=")">
+ <foreach collection="infoHashes" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
- <update id="updatePeer">
+
+
+ <update id="updatePeer" parameterType="map">
UPDATE peers
SET uploaded = #{uploaded}, downloaded = #{downloaded}
- WHERE peer_id = #{peerId} and info_hash = #{info_hash} and passkey = #{passkey}
+ WHERE peer_id = #{peerId} and info_hash = #{infoHash} and passkey = #{passkey}
</update>
+
</mapper>
diff --git a/src/main/resources/mapper/TorrentMapper.xml b/src/main/resources/mapper/TorrentMapper.xml
index cec75eb..e831504 100644
--- a/src/main/resources/mapper/TorrentMapper.xml
+++ b/src/main/resources/mapper/TorrentMapper.xml
@@ -3,31 +3,32 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.g8backend.mapper.TorrentMapper">
- <insert id="insertTorrent" >
+
+ <insert id="insertTorrent">
INSERT INTO torrents (user_id, torrent_name, file_path, info_hash, file_size)
- VALUES (#{userId}, #{torrentName}, #{filePath}, UNHEX(#{infoHash}), #{fileSize})
+ VALUES (#{userId}, #{torrentName}, #{filePath}, #{infoHash}, #{fileSize})
</insert>
<select id="getTorrentByInfoHash" resultType="com.example.g8backend.entity.Torrent">
SELECT
- torrent_id,
- user_id,
- torrent_name,
- file_path,
- HEX(info_hash) AS infoHash,
- file_size
+ torrent_id,
+ user_id,
+ torrent_name,
+ file_path,
+ info_hash AS infoHash,
+ file_size
FROM torrents
- WHERE info_hash = UNHEX(#{infoHash})
+ WHERE info_hash = #{infoHash}
</select>
<select id="getTorrentByTorrentId" resultType="com.example.g8backend.entity.Torrent">
SELECT
- torrent_id,
- user_id,
- torrent_name,
- file_path,
- HEX(info_hash) AS infoHash,
- file_size
+ torrent_id,
+ user_id,
+ torrent_name,
+ file_path,
+ info_hash AS infoHash,
+ file_size
FROM torrents
WHERE torrent_id = #{torrentId}
</select>
@@ -38,19 +39,21 @@
user_id,
torrent_name,
file_path,
- HEX(info_hash) AS infoHash,
- file_size
+ info_hash AS infoHash,
+ file_size,
+ upload_time
FROM torrents
WHERE info_hash IN
<foreach collection="infoHashes" item="hash" open="(" separator="," close=")">
- UNHEX(#{hash})
+ #{hash}
</foreach>
</select>
+
<update id="updateIsRareByInfoHash">
- UPDATE torrent
- SET israre = #{israre}
+ UPDATE torrents
+ SET is_rare = #{israre}
WHERE info_hash = #{infoHash}
</update>
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql
index 0ace8eb..da70ed6 100644
--- a/src/main/resources/schema.sql
+++ b/src/main/resources/schema.sql
@@ -31,7 +31,7 @@
`user_id` INT NOT NULL,
`torrent_name` VARCHAR(255) NOT NULL,
`file_path` VARCHAR(255) NOT NULL,
- `info_hash` BINARY(20) NOT NULL,
+ `info_hash`CHAR(40) NOT NULL,
`file_size` FLOAT NOT NULL,
`upload_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '种子上传时间(第一次插入时自动填充)',
`is_rare` BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否为冷门种子',
@@ -40,7 +40,7 @@
-- Peer表(保持不变)
CREATE TABLE IF NOT EXISTS `peers` (
`passkey` VARCHAR(255) NOT NULL,
- `info_hash` BINARY(20) NOT NULL,
+ `info_hash` CHAR(40) NOT NULL,
`peer_id` VARCHAR(20) NOT NULL,
`ip_address` VARCHAR(128) NOT NULL,
`port` INT NOT NULL,