diff --git a/src/main/java/com/example/myproject/controller/TorrentController.java b/src/main/java/com/example/myproject/controller/TorrentController.java
index 4229fc4..c0e4e86 100644
--- a/src/main/java/com/example/myproject/controller/TorrentController.java
+++ b/src/main/java/com/example/myproject/controller/TorrentController.java
@@ -45,6 +45,7 @@
 import java.net.URLDecoder;
 import java.nio.ByteBuffer;
 import java.nio.charset.StandardCharsets;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.Collections;
 import java.util.HashMap;
@@ -292,12 +293,14 @@
             Long torrentId = torrent.getId();
             String peerId = trackerProtocol.getPeer_id();
 
+
             if (torrent == null) {
                 throw new RuntimeException("种子不存在");
             }
             Integer userId = trackerProtocol.getUserId();
             double uploaded = trackerProtocol.getUploaded();
             double downloaded = trackerProtocol.getDownloaded();
+            torrentService.processUploadDownload(Long.valueOf(userId),peerId, infoHash,torrentId,uploaded,downloaded);
             /**
              *更新种子上传量，下载量, 更新用户上传量下载量
              * 为了总量检测作弊，种子的上传量和下载量是真实的
@@ -310,11 +313,11 @@
                     .torrentId(torrent.getId())
                     .peerId(trackerProtocol.getPeer_id())
                     .infoHash(infoHash)
+                    .reportTime(LocalDateTime.now())
                     .build();
             BeanUtils.copyProperties(trackerProtocol, report);
             torrentReportRepository.save(report);
 synchronized (this){
-             torrentService.processUploadDownload(Long.valueOf(userId),peerId, infoHash,torrentId,uploaded,downloaded);
             boolean isAdded = peers.stream().anyMatch(m -> {
                 try{
                     Map<String, BEValue> map1 = m.getMap();
diff --git a/src/main/java/com/example/myproject/dto/PromotionCreateDTO.java b/src/main/java/com/example/myproject/dto/PromotionCreateDTO.java
index ca710d0..01dac2d 100644
--- a/src/main/java/com/example/myproject/dto/PromotionCreateDTO.java
+++ b/src/main/java/com/example/myproject/dto/PromotionCreateDTO.java
@@ -21,7 +21,6 @@
     private LocalDateTime endTime;
     
     @NotNull(message = "折扣比例不能为空")
-    @Min(value = 0, message = "折扣比例不能小于0")
     @Max(value = 100, message = "折扣比例不能大于100")
     private double discountPercentage;
     
diff --git a/src/main/java/com/example/myproject/entity/BannedUser.java b/src/main/java/com/example/myproject/entity/BannedUser.java
index a9aa2da..78a097c 100644
--- a/src/main/java/com/example/myproject/entity/BannedUser.java
+++ b/src/main/java/com/example/myproject/entity/BannedUser.java
@@ -8,6 +8,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.time.LocalDateTime;
 import java.util.Date;
 @Data
 @TableName("ba")
@@ -23,5 +24,5 @@
     private String reason;
     @JsonProperty("createTime")
     @TableField("create_time")
-    private Date createTime;
+    private LocalDateTime createTime;
 }
diff --git a/src/main/java/com/example/myproject/entity/SuspiciousUser.java b/src/main/java/com/example/myproject/entity/SuspiciousUser.java
index 8b15f08..033a1e1 100644
--- a/src/main/java/com/example/myproject/entity/SuspiciousUser.java
+++ b/src/main/java/com/example/myproject/entity/SuspiciousUser.java
@@ -11,6 +11,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.time.LocalDateTime;
 import java.util.Date;
 
 @Data
@@ -31,5 +32,5 @@
     private String reason;
     @JsonProperty("createTime")
     @TableField("create_time")
-    private Date createTime;
+    private LocalDateTime createTime;
 }
\ No newline at end of file
diff --git a/src/main/java/com/example/myproject/entity/TorrentReport.java b/src/main/java/com/example/myproject/entity/TorrentReport.java
index 80cda28..534b6b3 100644
--- a/src/main/java/com/example/myproject/entity/TorrentReport.java
+++ b/src/main/java/com/example/myproject/entity/TorrentReport.java
@@ -32,10 +32,6 @@
     private Integer port;
 
     private LocalDateTime reportTime;
-    @PrePersist
-    public void prePersist() {
-        this.reportTime = LocalDateTime.now();
-    }
 
 
 }
diff --git a/src/main/java/com/example/myproject/service/AuditService.java b/src/main/java/com/example/myproject/service/AuditService.java
index 16bb42f..5b8f720 100644
--- a/src/main/java/com/example/myproject/service/AuditService.java
+++ b/src/main/java/com/example/myproject/service/AuditService.java
@@ -33,6 +33,7 @@
         user.setUserId(userId);
         user.setReason(reason);
         user.setSpeedKBs(speedKBs);
+        user.setCreateTime(LocalDateTime.now());
         suspiciousUserMapper.insert(user);
     }
 
@@ -41,6 +42,7 @@
         BannedUser bannedUser = new BannedUser();
         bannedUser.setUserId(userId);
         bannedUser.setReason(reason);
+        bannedUser.setCreateTime(LocalDateTime.now());
         bannedUserMapper.insert(bannedUser);
     }
 }
