增加付费片单,修复种子列表搜索排序

Change-Id: Ib645906c0f240f954676790daf2ff0e5f16f6e0a
diff --git a/src/main/java/com/example/myproject/service/UserService.java b/src/main/java/com/example/myproject/service/UserService.java
index 7f0b48a..ca16ddf 100644
--- a/src/main/java/com/example/myproject/service/UserService.java
+++ b/src/main/java/com/example/myproject/service/UserService.java
@@ -334,6 +334,7 @@
 import com.example.myproject.entity.Users;
 import com.example.myproject.entity.UserInviteCode;
 import com.example.myproject.repository.FriendRelationRepository;
+import com.example.myproject.repository.LoginLogRepository;
 import com.example.myproject.repository.UserRepository;
 import com.example.myproject.repository.UserInviteCodeRepository;
 import jakarta.transaction.Transactional;
@@ -344,6 +345,7 @@
 import javax.servlet.http.HttpServletRequest;
 import java.io.File;
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -363,6 +365,11 @@
 
     @Autowired
     private FriendRelationRepository friendRelationRepository;
+    private final LoginLogRepository loginLogRepository;
+
+    public UserService(LoginLogRepository loginLogRepository) {
+        this.loginLogRepository = loginLogRepository;
+    }
 
     // 生成邀请码
     public Map<String, Object> generateInviteCode(Long userId) {
@@ -445,8 +452,8 @@
             return "邀请码无效或已被使用";
         }
 
-        // 设置默认等级为2(由于邀请码有效)
-        Long level = 2L;
+        // 设置默认等级为1(由于邀请码有效)
+        Long level = 1L;
 
         // 设置默认头像 URL
         String avatarUrl = "https://example.com/default-avatar.jpg";  // 默认头像
@@ -722,13 +729,56 @@
         if (user == null) {
             return "用户不存在";
         }
-        // 累加money
-        Integer currentMoney = user.getMoney() == null ? 0 : user.getMoney();
-        user.setMoney(currentMoney + amount);
+        // 处理money为BigDecimal
+        BigDecimal currentMoney = user.getMoney() == null ? BigDecimal.ZERO : user.getMoney();
+        BigDecimal rechargeAmount = new BigDecimal(amount);
+        BigDecimal newMoney = currentMoney.add(rechargeAmount);
+
+        user.setMoney(newMoney);
         userRepository.save(user);
         return "充值成功,当前余额:" + user.getMoney();
     }
 
 
+    public Users getById(Long userId) {
+        return userRepository.findById(userId).orElse(null);
+    }
+
+
+    /**
+     * 检查用户是否有连续三天的登录记录
+     * @param userId 用户ID
+     * @return 是否有连续三天的登录记录
+     */
+    public boolean hasConsecutiveLoginDays(Long userId) {
+        // 获取用户的所有登录日期
+        List<LocalDateTime> loginDates = loginLogRepository.findDistinctLoginDates(userId);
+
+        if (loginDates.size() < 3) {
+            return false;
+        }
+
+        // 将日期转换为LocalDate并排序
+        List<LocalDate> dates = loginDates.stream()
+                .map(LocalDateTime::toLocalDate)
+                .distinct()
+                .sorted()
+                .toList();
+
+        // 检查是否有连续的三天
+        for (int i = 0; i < dates.size() - 2; i++) {
+            LocalDate date1 = dates.get(i);
+            LocalDate date2 = dates.get(i + 1);
+            LocalDate date3 = dates.get(i + 2);
+
+            if (date2.equals(date1.plusDays(1)) && date3.equals(date2.plusDays(1))) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+
 
 }