From 3072378d2d594b1791996ef73efd5b336039f424 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Thu, 12 Mar 2026 07:44:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0SysNoticeHandler?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E7=AE=A1=E7=90=86API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/handler/notice/SysNoticeHandler.java | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/handler/notice/SysNoticeHandler.java diff --git a/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/handler/notice/SysNoticeHandler.java b/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/handler/notice/SysNoticeHandler.java new file mode 100644 index 0000000..87ae89a --- /dev/null +++ b/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/handler/notice/SysNoticeHandler.java @@ -0,0 +1,63 @@ +package cn.novalon.manage.sys.handler.notice; + +import cn.novalon.manage.sys.core.domain.SysNotice; +import cn.novalon.manage.sys.core.service.ISysNoticeService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +@RestController +@RequestMapping("/api/notices") +public class SysNoticeHandler { + + private final ISysNoticeService noticeService; + + public SysNoticeHandler(ISysNoticeService noticeService) { + this.noticeService = noticeService; + } + + @GetMapping + public Flux getAllNotices() { + return noticeService.findAll(); + } + + @GetMapping("/{id}") + public Mono> getNoticeById(@PathVariable Long id) { + return noticeService.findById(id) + .map(ResponseEntity::ok) + .defaultIfEmpty(ResponseEntity.notFound().build()); + } + + @GetMapping("/status/{status}") + public Flux getNoticesByStatus(@PathVariable String status) { + return noticeService.findByStatus(status); + } + + @PostMapping + public Mono> createNotice(@RequestBody SysNotice notice) { + return noticeService.save(notice) + .map(n -> ResponseEntity.status(HttpStatus.CREATED).body(n)); + } + + @PutMapping("/{id}") + public Mono> updateNotice(@PathVariable Long id, @RequestBody SysNotice notice) { + return noticeService.findById(id) + .flatMap(existing -> { + existing.setNoticeTitle(notice.getNoticeTitle()); + existing.setNoticeType(notice.getNoticeType()); + existing.setNoticeContent(notice.getNoticeContent()); + existing.setStatus(notice.getStatus()); + return noticeService.save(existing); + }) + .map(ResponseEntity::ok) + .defaultIfEmpty(ResponseEntity.notFound().build()); + } + + @DeleteMapping("/{id}") + public Mono> deleteNotice(@PathVariable Long id) { + return noticeService.deleteById(id) + .then(Mono.just(ResponseEntity.noContent().build())); + } +}