完成对announce请求的处理,初步完成上传量和下载量的统计

Change-Id: Ief942d0364a11d945a10a5a58d7652a054bedaa4
diff --git a/src/test/java/com/example/g8backend/service/TrackerServiceTest.java b/src/test/java/com/example/g8backend/service/TrackerServiceTest.java
index 829fe15..e2bd4c9 100644
--- a/src/test/java/com/example/g8backend/service/TrackerServiceTest.java
+++ b/src/test/java/com/example/g8backend/service/TrackerServiceTest.java
@@ -4,12 +4,14 @@
 import com.example.g8backend.dto.AnnounceResponseDTO;
 import com.example.g8backend.entity.Peer;
 import com.example.g8backend.mapper.PeerMapper;
+import com.example.g8backend.mapper.UserStatsMapper;
 import com.example.g8backend.service.impl.TrackerServiceImpl;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.*;
 import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.data.redis.core.HashOperations;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.core.SetOperations;
 
@@ -29,9 +31,15 @@
     private PeerMapper peerMapper;
 
     @Mock
+    private UserStatsMapper userStatsMapper;
+
+    @Mock
     private RedisTemplate<String, Object> redisTemplate;
 
     @Mock
+    private HashOperations<String, Object, Object> hashOperations;
+
+    @Mock
     private SetOperations<String, Object> setOperations;
 
     @BeforeEach
@@ -100,12 +108,19 @@
         existing.setUploaded(1000.0);
         existing.setDownloaded(500.0);
 
+        Map<Object, Object> redisData = new HashMap<>();
+        redisData.put("uploaded", 1000.0);
+        redisData.put("downloaded", 500.0);
+
         when(peerMapper.getPeerByPK("peer2", "infohash", "key123")).thenReturn(existing);
-        when(setOperations.members("peers:infohash")).thenReturn(Set.of("peer2"));
         when(peerMapper.getPeerByInfoHashAndPeerId("infohash", "peer2")).thenReturn(List.of(new Peer() {{
             setIpAddress("192.168.1.1");
             setPort(6882);
         }}));
+        when(redisTemplate.opsForHash()).thenReturn(hashOperations);
+        when(hashOperations.entries("user:peer:key123:infohash:peer2")).thenReturn(redisData);
+        when(redisTemplate.opsForSet()).thenReturn(setOperations);
+        when(setOperations.members("peers:infohash")).thenReturn(Set.of("peer2"));
 
         AnnounceResponseDTO response = trackerService.handleAnnounce(requestDTO);