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;
+ }
}