luodangjia
2024-08-19 cb46cadf5a673f53a4ddcf93cadd1f376a9adeea
8.19.1
1个文件已添加
4个文件已修改
83 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserSign.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TIntegralRule.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TSystemConfiguration.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/SignDayUtil.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TNoticeController.java 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserSign.java
@@ -44,6 +44,9 @@
    @ApiModelProperty(value = "奖励积分")
    @TableField("reward_points")
    private Integer rewardPoints;
    @ApiModelProperty(value = "礼盒标记")
    @TableField("is_gift")
    private Integer isGift;
    @ApiModelProperty(value = "添加时间")
    @TableField("create_time")
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TIntegralRule.java
@@ -48,7 +48,7 @@
    @TableField("invite_users_to_earn_points")
    private String inviteUsersToEarnPoints;
    @ApiModelProperty(value = "签到得积分{\"num1\":1,\"num2\":[{\"num1\":1,\"num2\":1}]}")
    @ApiModelProperty(value = "签到得积分{\"num1\":1,\"num2\":[\"1(多少天),2(多少分)\"]}")
    @TableField("sign_in_for_points")
    private String signInForPoints;
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TSystemConfiguration.java
@@ -24,7 +24,7 @@
@EqualsAndHashCode(callSuper = false)
@TableName("t_system_configuration")
@ApiModel(value="TSystemConfiguration对象", description="")
public class TSystemConfiguration extends BasePojo {
public class TSystemConfiguration implements Serializable{
    private static final long serialVersionUID = 1L;
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/SignDayUtil.java
New file
@@ -0,0 +1,76 @@
package com.ruoyi.account.util;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.ruoyi.account.api.model.TAppUserSign;
import com.ruoyi.account.service.TAppUserSignService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Component
public class SignDayUtil {
    // 假设这是你的 signService 接口或者实现类
    @Resource
    private TAppUserSignService signService;
    /**
     * 计算用户的最近连续签到天数
     * @param userId 用户ID
     * @return 连续签到的最大天数
     */
    public int calculateContinuousSignDays(Long userId) {
        DateTime startOfMonth = DateUtil.beginOfMonth(new Date());
        DateTime endOfMonth = DateUtil.endOfMonth(new Date());
        // 获取用户的所有签到记录
        List<TAppUserSign> signRecords = signService.lambdaQuery()
                .between(TAppUserSign::getSignDay, startOfMonth, endOfMonth)
                .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 签到日期列表
     * @return 最大连续签到天数
     */
    private int calculateMaxContinuousSignDays(List<LocalDate> signDays) {
        int maxContinuousDays = 0;
        int currentContinuousDays = 0;
        LocalDate lastSignDay = null;
        for (LocalDate signDay : signDays) {
            if (lastSignDay != null && signDay.equals(lastSignDay.plusDays(1))) {
                currentContinuousDays++;
            } else {
                maxContinuousDays = Math.max(maxContinuousDays, currentContinuousDays);
                currentContinuousDays = 1;
            }
            lastSignDay = signDay;
        }
        // 更新最后的连续天数
        maxContinuousDays = Math.max(maxContinuousDays, currentContinuousDays);
        return maxContinuousDays;
    }
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TNoticeController.java