From d6c8f09fd628bd0111de4ee7071844465df9adb1 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 28 十月 2024 18:57:35 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile

---
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/SignDayUtil.java |   27 +++++++++++++++++++++++++++
 1 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/SignDayUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/SignDayUtil.java
index 3431f5f..f2f1b87 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/SignDayUtil.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/SignDayUtil.java
@@ -4,7 +4,9 @@
 import cn.hutool.core.date.DateUtil;
 import com.ruoyi.account.api.model.TAppUserSign;
 import com.ruoyi.account.service.TAppUserSignService;
+import org.springframework.cglib.core.Local;
 import org.springframework.stereotype.Component;
+import sun.rmi.server.LoaderHandler;
 
 import javax.annotation.Resource;
 import java.time.LocalDate;
@@ -48,6 +50,31 @@
         return calculateMaxContinuousSignDays(signDays);
     }
 
+    public int calculateContinuousSignDays1(Long userId, LocalDate date) {
+        DateTime startOfMonth = DateUtil.beginOfMonth(new Date());
+//        DateTime endOfMonth = DateUtil.endOfMonth(new Date());
+        // 获取用户的所有签到记录
+        List<TAppUserSign> signRecords = signService.lambdaQuery()
+                .between(TAppUserSign::getSignDay, startOfMonth, date)
+                .eq(TAppUserSign::getAppUserId, userId)
+                .orderByDesc(TAppUserSign::getSignDay)
+                .list();
+
+        // 如果没有签到记录,则返回0
+        if (signRecords.isEmpty()) {
+            return 0;
+        }
+
+        // 将签到日期转换为 LocalDate 列表,并按照日期排序
+        List<LocalDate> signDays = signRecords.stream()
+                .map(TAppUserSign::getSignDay)
+                .sorted()
+                .collect(Collectors.toList());
+
+        // 计算连续签到的最大天数
+        return calculateMaxContinuousSignDays(signDays);
+    }
+
     /**
      * 根据签到日期列表计算连续签到的最大天数
      * @param signDays 签到日期列表

--
Gitblit v1.7.1