diff --git a/db/schema.sql b/db/schema.sql index c768053..b515d1f 100644 --- a/db/schema.sql +++ b/db/schema.sql @@ -34,6 +34,7 @@ create table habit_record id int unsigned auto_increment, create_time datetime null, update_time datetime null, + name varchar(100) not null, date date not null comment '重要的日期', type enum ('anniversary', 'commemoration') default 'anniversary' not null ) diff --git a/pom.xml b/pom.xml index dc28e6b..fbcf97e 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ - 21 + 17 diff --git a/src/main/java/com/dota/nexus/controller/AnniversaryController.java b/src/main/java/com/dota/nexus/controller/AnniversaryController.java index 80454d7..ca5d4cf 100644 --- a/src/main/java/com/dota/nexus/controller/AnniversaryController.java +++ b/src/main/java/com/dota/nexus/controller/AnniversaryController.java @@ -14,6 +14,15 @@ public class AnniversaryController { this.anniversaryService = anniversaryService; } + /** + * 获取所有周年日和纪念日 + * 周年日:还有几天 + */ + @GetMapping + public R get() { + return R.ok(anniversaryService.getAll()); + } + @PostMapping public R add(Anniversary anniversary) { anniversaryService.save(anniversary); diff --git a/src/main/java/com/dota/nexus/entity/Anniversary.java b/src/main/java/com/dota/nexus/entity/Anniversary.java index c1ce082..d9a2c02 100644 --- a/src/main/java/com/dota/nexus/entity/Anniversary.java +++ b/src/main/java/com/dota/nexus/entity/Anniversary.java @@ -1,5 +1,7 @@ package com.dota.nexus.entity; +import com.dota.nexus.entity.vo.AnniversaryRecord; +import com.dota.nexus.entity.vo.AnniversaryVO; import lombok.Data; import lombok.EqualsAndHashCode; @@ -8,7 +10,9 @@ import java.time.LocalDate; @Data @EqualsAndHashCode(callSuper = true) public class Anniversary extends Entity{ + private String name; + private LocalDate date; - private type; + private AnniversaryEnum type; } diff --git a/src/main/java/com/dota/nexus/entity/vo/AnniversaryRecord.java b/src/main/java/com/dota/nexus/entity/vo/AnniversaryRecord.java new file mode 100644 index 0000000..71299ff --- /dev/null +++ b/src/main/java/com/dota/nexus/entity/vo/AnniversaryRecord.java @@ -0,0 +1,4 @@ +package com.dota.nexus.entity.vo; + +public record AnniversaryRecord(String name, String date, int distance) { +} diff --git a/src/main/java/com/dota/nexus/entity/vo/AnniversaryVO.java b/src/main/java/com/dota/nexus/entity/vo/AnniversaryVO.java new file mode 100644 index 0000000..56f9071 --- /dev/null +++ b/src/main/java/com/dota/nexus/entity/vo/AnniversaryVO.java @@ -0,0 +1,6 @@ +package com.dota.nexus.entity.vo; + +import java.util.List; + +public record AnniversaryVO (List anniversaryList, List commemorationList){ +} \ No newline at end of file diff --git a/src/main/java/com/dota/nexus/service/AnniversaryService.java b/src/main/java/com/dota/nexus/service/AnniversaryService.java index 16c43b3..e3d14a0 100644 --- a/src/main/java/com/dota/nexus/service/AnniversaryService.java +++ b/src/main/java/com/dota/nexus/service/AnniversaryService.java @@ -2,6 +2,8 @@ package com.dota.nexus.service; import com.baomidou.mybatisplus.extension.service.IService; import com.dota.nexus.entity.Anniversary; +import com.dota.nexus.entity.vo.AnniversaryVO; public interface AnniversaryService extends IService { + AnniversaryVO getAll(); } diff --git a/src/main/java/com/dota/nexus/service/impl/AnniversaryServiceImpl.java b/src/main/java/com/dota/nexus/service/impl/AnniversaryServiceImpl.java index 8e7ad45..741b310 100644 --- a/src/main/java/com/dota/nexus/service/impl/AnniversaryServiceImpl.java +++ b/src/main/java/com/dota/nexus/service/impl/AnniversaryServiceImpl.java @@ -2,10 +2,45 @@ package com.dota.nexus.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dota.nexus.entity.Anniversary; +import com.dota.nexus.entity.AnniversaryEnum; +import com.dota.nexus.entity.vo.AnniversaryRecord; +import com.dota.nexus.entity.vo.AnniversaryVO; import com.dota.nexus.mapper.AnniversaryMapper; import com.dota.nexus.service.AnniversaryService; import org.springframework.stereotype.Service; +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; + @Service public class AnniversaryServiceImpl extends ServiceImpl implements AnniversaryService { + + /** + * + */ + @Override + public AnniversaryVO getAll() { + var aList = new ArrayList(); + var bList = new ArrayList(); + var res = new AnniversaryVO(aList, bList); + var anniversaries = this.baseMapper.selectList(null); + var now = LocalDate.now(); + for (Anniversary anniversary : anniversaries) { + // 周年,变成今年或者明年 + if (anniversary.getType() == AnniversaryEnum.ANNIVERSARY) { + LocalDate date = anniversary.getDate(); + date = date.withYear(now.getYear()); + if (date.isBefore(now)) { + date = date.withYear(now.getYear() + 1); + } + + aList.add(new AnniversaryRecord(anniversary.getName(), date.toString(), (int) ChronoUnit.DAYS.between(date, now))); + } else if (anniversary.getType() == AnniversaryEnum.COMMEMORATION) { + bList.add(new AnniversaryRecord(anniversary.getName(), anniversary.getDate().toString(), (int) ChronoUnit.DAYS.between(now, anniversary.getDate()))); + } + } + + return res; + } }