From 4e9065bda03bc7b2c81916fcef0578e7fc062a9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Thu, 12 Mar 2026 07:28:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0SysDictDataRepository?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=AE=BF=E9=97=AE=E5=B1=82~?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infrastructure/db/dao/SysDictDataDao.java | 7 ++ .../db/repository/SysDictDataRepository.java | 86 +++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/infrastructure/db/repository/SysDictDataRepository.java diff --git a/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/infrastructure/db/dao/SysDictDataDao.java b/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/infrastructure/db/dao/SysDictDataDao.java index fc22e1f..d7fcffc 100644 --- a/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/infrastructure/db/dao/SysDictDataDao.java +++ b/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/infrastructure/db/dao/SysDictDataDao.java @@ -1,6 +1,7 @@ package cn.novalon.manage.sys.infrastructure.db.dao; import cn.novalon.manage.sys.infrastructure.db.entity.SysDictDataEntity; +import org.springframework.data.domain.Sort; import org.springframework.data.r2dbc.repository.R2dbcRepository; import org.springframework.stereotype.Repository; import reactor.core.publisher.Flux; @@ -13,7 +14,13 @@ public interface SysDictDataDao extends R2dbcRepository Flux findByDictTypeAndDeletedAtIsNull(String dictType); + Flux findByDictTypeAndDeletedAtIsNull(String dictType, Sort sort); + Flux findByDeletedAtIsNull(); + Flux findByDeletedAtIsNull(Sort sort); + + Mono countByDeletedAtIsNull(); + Mono deleteByIdAndDeletedAtIsNull(Long id); } diff --git a/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/infrastructure/db/repository/SysDictDataRepository.java b/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/infrastructure/db/repository/SysDictDataRepository.java new file mode 100644 index 0000000..1b79921 --- /dev/null +++ b/novalon-manage-api/manage-sys/src/main/java/cn/novalon/manage/sys/infrastructure/db/repository/SysDictDataRepository.java @@ -0,0 +1,86 @@ +package cn.novalon.manage.sys.infrastructure.db.repository; + +import cn.novalon.manage.sys.core.domain.SysDictData; +import cn.novalon.manage.sys.infrastructure.db.converter.SysDictDataConverter; +import cn.novalon.manage.sys.infrastructure.db.dao.SysDictDataDao; +import cn.novalon.manage.sys.infrastructure.db.entity.SysDictDataEntity; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Repository; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.time.LocalDateTime; + +@Repository +public class SysDictDataRepository { + + private final SysDictDataDao dao; + private final SysDictDataConverter converter; + + public SysDictDataRepository(SysDictDataDao dao, SysDictDataConverter converter) { + this.dao = dao; + this.converter = converter; + } + + public Mono findById(Long id) { + return dao.findById(id) + .filter(entity -> entity.getDeletedAt() == null) + .map(converter::toDomain); + } + + public Mono save(SysDictData sysDictData) { + return dao.save(converter.toEntity(sysDictData)) + .map(converter::toDomain); + } + + public Mono deleteById(Long id) { + return dao.findById(id) + .flatMap(entity -> { + entity.setDeletedAt(LocalDateTime.now()); + return dao.save(entity); + }) + .then(); + } + + public Flux findByDictType(String dictType) { + return dao.findByDictTypeAndDeletedAtIsNull(dictType) + .map(converter::toDomain); + } + + public Flux findByDictType(String dictType, Sort sort) { + return dao.findByDictTypeAndDeletedAtIsNull(dictType, sort) + .map(converter::toDomain); + } + + public Flux findAll() { + return dao.findByDeletedAtIsNull() + .map(converter::toDomain); + } + + public Flux findAll(Sort sort) { + return dao.findByDeletedAtIsNull(sort) + .map(converter::toDomain); + } + + public Mono count() { + return dao.countByDeletedAtIsNull(); + } + + public Mono logicalDeleteById(Long id) { + return dao.findById(id) + .flatMap(entity -> { + entity.setDeletedAt(LocalDateTime.now()); + return dao.save(entity); + }) + .then(); + } + + public Mono restoreById(Long id) { + return dao.findById(id) + .flatMap(entity -> { + entity.setDeletedAt(null); + return dao.save(entity); + }) + .then(); + } +}