From 40c2da044a60d0ffe870e2ddd1f8ad6ba4e0d3cd Mon Sep 17 00:00:00 2001 From: kkunkka Date: Tue, 14 Oct 2025 22:45:42 +0800 Subject: [PATCH] =?UTF-8?q?add:=20=E8=8E=B7=E5=8F=96=E6=9C=AA=E6=9D=A5?= =?UTF-8?q?=E7=9A=84=E9=87=8D=E8=A6=81=E6=97=A5=E5=AD=90=EF=BC=8C=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E8=BF=87=E5=8E=BB=E7=9A=84=E9=87=8D=E8=A6=81=E6=97=A5?= =?UTF-8?q?=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AnniversaryController.java | 18 ++++-- .../nexus/entity/vo/AnniversaryRecord.java | 4 -- .../dota/nexus/entity/vo/AnniversaryVO.java | 6 +- .../nexus/service/AnniversaryService.java | 6 +- .../service/impl/AnniversaryServiceImpl.java | 61 +++++++++++-------- 5 files changed, 55 insertions(+), 40 deletions(-) delete mode 100644 src/main/java/com/dota/nexus/entity/vo/AnniversaryRecord.java diff --git a/src/main/java/com/dota/nexus/controller/AnniversaryController.java b/src/main/java/com/dota/nexus/controller/AnniversaryController.java index b05c2f7..fd3f955 100644 --- a/src/main/java/com/dota/nexus/controller/AnniversaryController.java +++ b/src/main/java/com/dota/nexus/controller/AnniversaryController.java @@ -15,16 +15,24 @@ public class AnniversaryController { } /** - * 获取所有周年日和纪念日 + * 获取未来所有周年日和纪念日 */ - @GetMapping - public R get() { - return R.ok(anniversaryService.getAll()); + @GetMapping("future") + public R getFuture() { + return R.ok(anniversaryService.getFuture()); + } + + /** + * 获取过去的纪念日 + */ + @GetMapping("past") + public R getPast() { + return R.ok(anniversaryService.getPast()); } @PostMapping public R add(Anniversary anniversary) { - anniversaryService.save(anniversary); + anniversaryService.saveOrUpdate(anniversary); return R.ok(); } diff --git a/src/main/java/com/dota/nexus/entity/vo/AnniversaryRecord.java b/src/main/java/com/dota/nexus/entity/vo/AnniversaryRecord.java deleted file mode 100644 index 71299ff..0000000 --- a/src/main/java/com/dota/nexus/entity/vo/AnniversaryRecord.java +++ /dev/null @@ -1,4 +0,0 @@ -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 index 56f9071..bb002bb 100644 --- a/src/main/java/com/dota/nexus/entity/vo/AnniversaryVO.java +++ b/src/main/java/com/dota/nexus/entity/vo/AnniversaryVO.java @@ -1,6 +1,4 @@ package com.dota.nexus.entity.vo; -import java.util.List; - -public record AnniversaryVO (List anniversaryList, List commemorationList){ -} \ No newline at end of file +public record AnniversaryVO(String name, String date, int distance) { +} diff --git a/src/main/java/com/dota/nexus/service/AnniversaryService.java b/src/main/java/com/dota/nexus/service/AnniversaryService.java index e3d14a0..38c3038 100644 --- a/src/main/java/com/dota/nexus/service/AnniversaryService.java +++ b/src/main/java/com/dota/nexus/service/AnniversaryService.java @@ -4,6 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.dota.nexus.entity.Anniversary; import com.dota.nexus.entity.vo.AnniversaryVO; +import java.util.List; + public interface AnniversaryService extends IService { - AnniversaryVO getAll(); + List getFuture(); + + List getPast(); } 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 4950d63..96c1612 100644 --- a/src/main/java/com/dota/nexus/service/impl/AnniversaryServiceImpl.java +++ b/src/main/java/com/dota/nexus/service/impl/AnniversaryServiceImpl.java @@ -1,9 +1,9 @@ package com.dota.nexus.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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; @@ -12,35 +12,44 @@ import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; @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); - } + @Override + public List getFuture() { + var anniversaries = this.baseMapper.selectList(null); + var list = new ArrayList(); + 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(now, date))); - } else if (anniversary.getType() == AnniversaryEnum.COMMEMORATION) { - bList.add(new AnniversaryRecord(anniversary.getName(), anniversary.getDate().toString(), (int) ChronoUnit.DAYS.between(anniversary.getDate(), now))); - } - } + list.add(new AnniversaryVO(anniversary.getName(), date.toString(), (int) ChronoUnit.DAYS.between(now, date))); + } else if (anniversary.getType() == AnniversaryEnum.COMMEMORATION && !anniversary.getDate().isBefore(now)) { + list.add(new AnniversaryVO(anniversary.getName(), anniversary.getDate().toString(), (int) ChronoUnit.DAYS.between(now, anniversary.getDate()))); + } + } + list.sort(Comparator.comparingInt(AnniversaryVO::distance)); - return res; - } + return list; + } + + + @Override + public List getPast() { + var q = new LambdaQueryWrapper(); + q.eq(Anniversary::getType, AnniversaryEnum.COMMEMORATION); + var anniversaries = this.baseMapper.selectList(q); + var now = LocalDate.now(); + return anniversaries.stream().map(a -> new AnniversaryVO(a.getName(), a.getDate().toString(), (int) ChronoUnit.DAYS.between(now, a.getDate()))).sorted((a,b)->b.distance()-a.distance()).collect(Collectors.toList()); + } }