feat: 添加SysDictDataRepository数据访问层~

This commit is contained in:
张翔
2026-03-12 07:28:16 +08:00
parent 876290ac10
commit 4e9065bda0
2 changed files with 93 additions and 0 deletions
@@ -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<SysDictDataEntity, Long>
Flux<SysDictDataEntity> findByDictTypeAndDeletedAtIsNull(String dictType);
Flux<SysDictDataEntity> findByDictTypeAndDeletedAtIsNull(String dictType, Sort sort);
Flux<SysDictDataEntity> findByDeletedAtIsNull();
Flux<SysDictDataEntity> findByDeletedAtIsNull(Sort sort);
Mono<Long> countByDeletedAtIsNull();
Mono<Void> deleteByIdAndDeletedAtIsNull(Long id);
}
@@ -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<SysDictData> findById(Long id) {
return dao.findById(id)
.filter(entity -> entity.getDeletedAt() == null)
.map(converter::toDomain);
}
public Mono<SysDictData> save(SysDictData sysDictData) {
return dao.save(converter.toEntity(sysDictData))
.map(converter::toDomain);
}
public Mono<Void> deleteById(Long id) {
return dao.findById(id)
.flatMap(entity -> {
entity.setDeletedAt(LocalDateTime.now());
return dao.save(entity);
})
.then();
}
public Flux<SysDictData> findByDictType(String dictType) {
return dao.findByDictTypeAndDeletedAtIsNull(dictType)
.map(converter::toDomain);
}
public Flux<SysDictData> findByDictType(String dictType, Sort sort) {
return dao.findByDictTypeAndDeletedAtIsNull(dictType, sort)
.map(converter::toDomain);
}
public Flux<SysDictData> findAll() {
return dao.findByDeletedAtIsNull()
.map(converter::toDomain);
}
public Flux<SysDictData> findAll(Sort sort) {
return dao.findByDeletedAtIsNull(sort)
.map(converter::toDomain);
}
public Mono<Long> count() {
return dao.countByDeletedAtIsNull();
}
public Mono<Void> logicalDeleteById(Long id) {
return dao.findById(id)
.flatMap(entity -> {
entity.setDeletedAt(LocalDateTime.now());
return dao.save(entity);
})
.then();
}
public Mono<Void> restoreById(Long id) {
return dao.findById(id)
.flatMap(entity -> {
entity.setDeletedAt(null);
return dao.save(entity);
})
.then();
}
}