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");