From 24cbd183de9946a52f6a4261334a89e1cecd9ff8 Mon Sep 17 00:00:00 2001 From: callmeyan Date: Mon, 21 Nov 2022 15:54:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E8=BF=9E=E7=BB=AD=E5=A4=A9?= =?UTF-8?q?=E6=95=B0=E7=9A=84=E5=88=A4=E6=96=AD=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../point/api/controller/SignController.java | 3 +++ .../service/impl/SignRecordServiceImpl.java | 8 +++++++ .../me/xiaoyan/point/api/util/DateUtils.java | 23 +++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/api/src/main/java/me/xiaoyan/point/api/controller/SignController.java b/api/src/main/java/me/xiaoyan/point/api/controller/SignController.java index be6b06f..54de16c 100644 --- a/api/src/main/java/me/xiaoyan/point/api/controller/SignController.java +++ b/api/src/main/java/me/xiaoyan/point/api/controller/SignController.java @@ -7,10 +7,13 @@ import me.xiaoyan.point.api.service.SignRecordService; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; + @RestController @RequestMapping("sign") public class SignController { + @Resource private SignRecordService signRecordService; @ApiOperation("今日签到") diff --git a/api/src/main/java/me/xiaoyan/point/api/service/impl/SignRecordServiceImpl.java b/api/src/main/java/me/xiaoyan/point/api/service/impl/SignRecordServiceImpl.java index 05351b6..d4e2ab5 100644 --- a/api/src/main/java/me/xiaoyan/point/api/service/impl/SignRecordServiceImpl.java +++ b/api/src/main/java/me/xiaoyan/point/api/service/impl/SignRecordServiceImpl.java @@ -51,6 +51,14 @@ public class SignRecordServiceImpl extends ServiceImpl dates = new ArrayList<>(); if (isSign) { dates.add(new Date()); + }else{ + // 没有记录直接返回0 + if(signRecords.size() == 0) return 0; + Date firstDate = signRecords.get(0).getCreateTime(); + // 第一个记录是否是今天 + if(!DateUtils.isToday(firstDate) && !DateUtils.isYesterday(firstDate)){ + return 0; + } } signRecords.forEach(it -> dates.add(it.getCreateTime())); Date[] dateArr = new Date[dates.size()]; diff --git a/api/src/main/java/me/xiaoyan/point/api/util/DateUtils.java b/api/src/main/java/me/xiaoyan/point/api/util/DateUtils.java index 389691c..575ac14 100644 --- a/api/src/main/java/me/xiaoyan/point/api/util/DateUtils.java +++ b/api/src/main/java/me/xiaoyan/point/api/util/DateUtils.java @@ -2,6 +2,7 @@ package me.xiaoyan.point.api.util; import lombok.SneakyThrows; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @@ -31,6 +32,9 @@ public class DateUtils { } public static int continuousDays(Date[] dates) { + if(dates.length == 0){ + return 0; + } int totalDays = 1; for (int i = 1;i < dates.length; i ++){ Date d1 = dates[i-1]; @@ -43,6 +47,25 @@ public class DateUtils { return totalDays; } + public static boolean isToday(String d){ + try { + return isToday(full.parse(d)); + } catch (ParseException e) { + return false; + } + } + public static boolean isToday(Date d){ + if(d == null) return false; + return today().equalsIgnoreCase(formatDate(d)); + } + + public static boolean isYesterday(Date d){ + if(d == null) return false; + Date today = new Date(); // 今天 + if(today.getTime() < d.getTime()) return false; + return isBetween(today,d); + } + public static boolean isBetween(Date d1,Date d2){ // 直接获取两个日期之间的毫秒,计算 Date date1 = parse(formatDate(d1) + " 00:00:00");