refactor(domain): 将领域模型移动到common模块

重构项目结构,将分散在各模块的领域模型统一移动到manage-common模块
更新相关依赖和引用路径
调整docker-compose配置和测试标记
添加新的Playwright测试配置
优化Dockerfile构建过程
This commit is contained in:
张翔
2026-03-13 19:58:57 +08:00
parent 9aed900408
commit dc53a233b9
174 changed files with 11206 additions and 2296 deletions
@@ -1,12 +1,16 @@
package cn.novalon.manage.sys;
import cn.novalon.manage.sys.config.JwtProperties;
import cn.novalon.manage.common.config.JwtProperties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.r2dbc.repository.config.EnableR2dbcRepositories;
@SpringBootApplication
@EnableConfigurationProperties(JwtProperties.class)
@ComponentScan(basePackages = {"cn.novalon.manage.sys", "cn.novalon.manage.db"})
@EnableR2dbcRepositories(basePackages = "cn.novalon.manage.db.dao")
public class ManageSysApplication {
public static void main(String[] args) {
SpringApplication.run(ManageSysApplication.class, args);
@@ -1,6 +1,6 @@
package cn.novalon.manage.sys.core.service;
import cn.novalon.manage.sys.core.domain.Dictionary;
import cn.novalon.manage.common.domain.Dictionary;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -1,6 +1,6 @@
package cn.novalon.manage.sys.core.service;
import cn.novalon.manage.sys.core.domain.OperationLog;
import cn.novalon.manage.common.domain.OperationLog;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -1,6 +1,6 @@
package cn.novalon.manage.sys.core.service;
import cn.novalon.manage.sys.core.domain.SysConfig;
import cn.novalon.manage.common.domain.SysConfig;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -1,6 +1,6 @@
package cn.novalon.manage.sys.core.service;
import cn.novalon.manage.sys.core.domain.SysDictData;
import cn.novalon.manage.common.domain.SysDictData;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -1,6 +1,6 @@
package cn.novalon.manage.sys.core.service;
import cn.novalon.manage.sys.core.domain.SysDictType;
import cn.novalon.manage.common.domain.SysDictType;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -1,8 +1,8 @@
package cn.novalon.manage.sys.core.service;
import cn.novalon.manage.sys.core.domain.SysExceptionLog;
import cn.novalon.manage.sys.dto.request.PageRequest;
import cn.novalon.manage.sys.dto.response.PageResponse;
import cn.novalon.manage.common.domain.SysExceptionLog;
import cn.novalon.manage.common.dto.PageRequest;
import cn.novalon.manage.common.dto.PageResponse;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -1,6 +1,6 @@
package cn.novalon.manage.sys.core.service;
import cn.novalon.manage.sys.core.domain.SysFile;
import cn.novalon.manage.common.domain.SysFile;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import org.springframework.http.codec.multipart.FilePart;
@@ -1,8 +1,8 @@
package cn.novalon.manage.sys.core.service;
import cn.novalon.manage.sys.core.domain.SysLoginLog;
import cn.novalon.manage.sys.dto.request.PageRequest;
import cn.novalon.manage.sys.dto.response.PageResponse;
import cn.novalon.manage.common.domain.SysLoginLog;
import cn.novalon.manage.common.dto.PageRequest;
import cn.novalon.manage.common.dto.PageResponse;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -1,6 +1,6 @@
package cn.novalon.manage.sys.core.service;
import cn.novalon.manage.sys.core.domain.SysMenu;
import cn.novalon.manage.common.domain.SysMenu;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -1,6 +1,6 @@
package cn.novalon.manage.sys.core.service;
import cn.novalon.manage.sys.core.domain.SysNotice;
import cn.novalon.manage.common.domain.SysNotice;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -1,8 +1,8 @@
package cn.novalon.manage.sys.core.service;
import cn.novalon.manage.sys.core.domain.SysRole;
import cn.novalon.manage.sys.dto.request.PageRequest;
import cn.novalon.manage.sys.dto.response.PageResponse;
import cn.novalon.manage.common.domain.SysRole;
import cn.novalon.manage.common.dto.PageRequest;
import cn.novalon.manage.common.dto.PageResponse;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -1,6 +1,6 @@
package cn.novalon.manage.sys.core.service;
import cn.novalon.manage.sys.core.domain.SysUserMessage;
import cn.novalon.manage.common.domain.SysUserMessage;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -1,8 +1,8 @@
package cn.novalon.manage.sys.core.service;
import cn.novalon.manage.sys.core.domain.SysUser;
import cn.novalon.manage.sys.dto.request.PageRequest;
import cn.novalon.manage.sys.dto.response.PageResponse;
import cn.novalon.manage.common.domain.SysUser;
import cn.novalon.manage.common.dto.PageRequest;
import cn.novalon.manage.common.dto.PageResponse;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -1,10 +1,9 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.sys.core.domain.Dictionary;
import cn.novalon.manage.common.domain.Dictionary;
import cn.novalon.manage.sys.core.exception.DictionaryAlreadyExistsException;
import cn.novalon.manage.db.repository.DictionaryRepository;
import cn.novalon.manage.sys.core.service.IDictionaryService;
import cn.novalon.manage.sys.infrastructure.db.converter.DictionaryConverter;
import cn.novalon.manage.sys.infrastructure.db.dao.DictionaryDao;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -14,37 +13,30 @@ import java.time.LocalDateTime;
@Service
public class DictionaryService implements IDictionaryService {
private final DictionaryDao dao;
private final DictionaryConverter converter;
private final DictionaryRepository repository;
public DictionaryService(DictionaryDao dao, DictionaryConverter converter) {
this.dao = dao;
this.converter = converter;
public DictionaryService(DictionaryRepository repository) {
this.repository = repository;
}
@Override
public Flux<Dictionary> findAll() {
return dao.findByDeletedAtIsNullOrderBySortAsc()
.map(converter::toDomain);
return repository.findAll();
}
@Override
public Mono<Dictionary> findById(Long id) {
return dao.findById(id)
.map(converter::toDomain);
return repository.findById(id);
}
@Override
public Flux<Dictionary> findByType(String type) {
return dao.findByType(type)
.map(converter::toDomain);
return repository.findByType(type);
}
@Override
public Mono<Boolean> checkTypeAndCodeExists(String type, String code) {
return dao.findByTypeAndCode(type, code)
.map(entity -> true)
.defaultIfEmpty(false);
return repository.existsByTypeAndCode(type, code);
}
@Override
@@ -57,18 +49,16 @@ public class DictionaryService implements IDictionaryService {
return Mono.error(new DictionaryAlreadyExistsException(dictionary.getType(), dictionary.getCode()));
}
dictionary.setUpdatedAt(LocalDateTime.now());
return dao.save(converter.toEntity(dictionary))
.map(converter::toDomain);
return repository.save(dictionary);
});
}
dictionary.setUpdatedAt(LocalDateTime.now());
return dao.save(converter.toEntity(dictionary))
.map(converter::toDomain);
return repository.save(dictionary);
}
@Override
public Mono<Dictionary> update(Long id, Dictionary dictionary) {
return dao.findById(id)
return repository.findById(id)
.flatMap(existing -> {
if (dictionary.getName() != null) {
existing.setName(dictionary.getName());
@@ -83,13 +73,12 @@ public class DictionaryService implements IDictionaryService {
existing.setSort(dictionary.getSort());
}
existing.setUpdatedAt(LocalDateTime.now());
return dao.save(existing);
})
.map(converter::toDomain);
return repository.save(existing);
});
}
@Override
public Mono<Void> deleteById(Long id) {
return dao.deleteByIdAndDeletedAtIsNull(id);
return repository.deleteById(id);
}
}
@@ -1,7 +1,7 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.sys.core.domain.OperationLog;
import cn.novalon.manage.sys.core.repository.IOperationLogRepository;
import cn.novalon.manage.common.domain.OperationLog;
import cn.novalon.manage.db.repository.OperationLogRepository;
import cn.novalon.manage.sys.core.service.IOperationLogService;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
@@ -12,9 +12,9 @@ import java.time.LocalDateTime;
@Service
public class OperationLogService implements IOperationLogService {
private final IOperationLogRepository logRepository;
private final OperationLogRepository logRepository;
public OperationLogService(IOperationLogRepository logRepository) {
public OperationLogService(OperationLogRepository logRepository) {
this.logRepository = logRepository;
}
@@ -1,9 +1,8 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.sys.core.domain.SysConfig;
import cn.novalon.manage.common.domain.SysConfig;
import cn.novalon.manage.db.repository.ISysConfigRepository;
import cn.novalon.manage.sys.core.service.ISysConfigService;
import cn.novalon.manage.sys.infrastructure.db.converter.SysConfigConverter;
import cn.novalon.manage.sys.infrastructure.db.dao.SysConfigDao;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -11,41 +10,35 @@ import reactor.core.publisher.Mono;
@Service
public class SysConfigService implements ISysConfigService {
private final SysConfigDao dao;
private final SysConfigConverter converter;
private final ISysConfigRepository repository;
public SysConfigService(SysConfigDao dao, SysConfigConverter converter) {
this.dao = dao;
this.converter = converter;
public SysConfigService(ISysConfigRepository repository) {
this.repository = repository;
}
@Override
public Flux<SysConfig> findAll() {
return dao.findByDeletedAtIsNull()
.map(converter::toDomain);
return repository.findByDeletedAtIsNull();
}
@Override
public Mono<SysConfig> findById(Long id) {
return dao.findById(id)
.map(converter::toDomain);
return repository.findById(id);
}
@Override
public Mono<SysConfig> findByConfigKey(String configKey) {
return dao.findByConfigKeyAndDeletedAtIsNull(configKey)
.map(converter::toDomain);
return repository.findByConfigKeyAndDeletedAtIsNull(configKey);
}
@Override
public Mono<SysConfig> save(SysConfig config) {
return dao.save(converter.toEntity(config))
.map(converter::toDomain);
return repository.save(config);
}
@Override
public Mono<Void> deleteById(Long id) {
return dao.deleteByIdAndDeletedAtIsNull(id);
return repository.deleteByIdAndDeletedAtIsNull(id);
}
@Override
@@ -1,9 +1,8 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.sys.core.domain.SysDictData;
import cn.novalon.manage.common.domain.SysDictData;
import cn.novalon.manage.db.repository.ISysDictDataRepository;
import cn.novalon.manage.sys.core.service.ISysDictDataService;
import cn.novalon.manage.sys.infrastructure.db.converter.SysDictDataConverter;
import cn.novalon.manage.sys.infrastructure.db.dao.SysDictDataDao;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -11,46 +10,39 @@ import reactor.core.publisher.Mono;
@Service
public class SysDictDataService implements ISysDictDataService {
private final SysDictDataDao dao;
private final SysDictDataConverter converter;
private final ISysDictDataRepository repository;
public SysDictDataService(SysDictDataDao dao, SysDictDataConverter converter) {
this.dao = dao;
this.converter = converter;
public SysDictDataService(ISysDictDataRepository repository) {
this.repository = repository;
}
@Override
public Flux<SysDictData> findAll() {
return dao.findByDeletedAtIsNull()
.map(converter::toDomain);
return repository.findByDeletedAtIsNull();
}
@Override
public Flux<SysDictData> findByDictType(String dictType) {
return dao.findByDictTypeAndDeletedAtIsNull(dictType)
.map(converter::toDomain);
return repository.findByDictTypeAndDeletedAtIsNull(dictType);
}
@Override
public Flux<SysDictData> findByDictTypeAndStatus(String dictType, String status) {
return dao.findByDictTypeAndStatusAndDeletedAtIsNull(dictType, status)
.map(converter::toDomain);
return repository.findByDictTypeAndStatusAndDeletedAtIsNull(dictType, status);
}
@Override
public Mono<SysDictData> findById(Long id) {
return dao.findById(id)
.map(converter::toDomain);
return repository.findById(id);
}
@Override
public Mono<SysDictData> save(SysDictData dictData) {
return dao.save(converter.toEntity(dictData))
.map(converter::toDomain);
return repository.save(dictData);
}
@Override
public Mono<Void> deleteById(Long id) {
return dao.deleteByIdAndDeletedAtIsNull(id);
return repository.deleteByIdAndDeletedAtIsNull(id);
}
}
@@ -1,9 +1,8 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.sys.core.domain.SysDictType;
import cn.novalon.manage.common.domain.SysDictType;
import cn.novalon.manage.db.repository.ISysDictTypeRepository;
import cn.novalon.manage.sys.core.service.ISysDictTypeService;
import cn.novalon.manage.sys.infrastructure.db.converter.SysDictTypeConverter;
import cn.novalon.manage.sys.infrastructure.db.dao.SysDictTypeDao;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -11,40 +10,34 @@ import reactor.core.publisher.Mono;
@Service
public class SysDictTypeService implements ISysDictTypeService {
private final SysDictTypeDao dao;
private final SysDictTypeConverter converter;
private final ISysDictTypeRepository repository;
public SysDictTypeService(SysDictTypeDao dao, SysDictTypeConverter converter) {
this.dao = dao;
this.converter = converter;
public SysDictTypeService(ISysDictTypeRepository repository) {
this.repository = repository;
}
@Override
public Flux<SysDictType> findAll() {
return dao.findByDeletedAtIsNull()
.map(converter::toDomain);
return repository.findByDeletedAtIsNull();
}
@Override
public Mono<SysDictType> findById(Long id) {
return dao.findById(id)
.map(converter::toDomain);
return repository.findById(id);
}
@Override
public Mono<SysDictType> findByDictType(String dictType) {
return dao.findByDictTypeAndDeletedAtIsNull(dictType)
.map(converter::toDomain);
return repository.findByDictTypeAndDeletedAtIsNull(dictType);
}
@Override
public Mono<SysDictType> save(SysDictType dictType) {
return dao.save(converter.toEntity(dictType))
.map(converter::toDomain);
return repository.save(dictType);
}
@Override
public Mono<Void> deleteById(Long id) {
return dao.deleteByIdAndDeletedAtIsNull(id);
return repository.deleteByIdAndDeletedAtIsNull(id);
}
}
@@ -1,11 +1,10 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.sys.core.domain.SysExceptionLog;
import cn.novalon.manage.common.domain.SysExceptionLog;
import cn.novalon.manage.db.repository.ISysExceptionLogRepository;
import cn.novalon.manage.sys.core.service.ISysExceptionLogService;
import cn.novalon.manage.sys.infrastructure.db.converter.SysExceptionLogConverter;
import cn.novalon.manage.sys.infrastructure.db.dao.SysExceptionLogDao;
import cn.novalon.manage.sys.dto.request.PageRequest;
import cn.novalon.manage.sys.dto.response.PageResponse;
import cn.novalon.manage.common.dto.PageRequest;
import cn.novalon.manage.common.dto.PageResponse;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -16,48 +15,40 @@ import java.util.List;
@Service
public class SysExceptionLogService implements ISysExceptionLogService {
private final SysExceptionLogDao dao;
private final SysExceptionLogConverter converter;
private final ISysExceptionLogRepository repository;
public SysExceptionLogService(SysExceptionLogDao dao, SysExceptionLogConverter converter) {
this.dao = dao;
this.converter = converter;
public SysExceptionLogService(ISysExceptionLogRepository repository) {
this.repository = repository;
}
@Override
public Flux<SysExceptionLog> findAll() {
return dao.findAllByOrderByCreateTimeDesc()
.map(converter::toDomain);
return repository.findAllByOrderByCreateTimeDesc();
}
@Override
public Flux<SysExceptionLog> findByUsername(String username) {
return dao.findByUsernameOrderByCreateTimeDesc(username)
.map(converter::toDomain);
return repository.findByUsernameOrderByCreateTimeDesc(username);
}
@Override
public Flux<SysExceptionLog> findByCreateTimeBetween(LocalDateTime startTime, LocalDateTime endTime) {
return dao.findByCreateTimeBetweenOrderByCreateTimeDesc(startTime, endTime)
.map(converter::toDomain);
return repository.findByCreateTimeBetweenOrderByCreateTimeDesc(startTime, endTime);
}
@Override
public Mono<SysExceptionLog> save(SysExceptionLog exceptionLog) {
return dao.save(converter.toEntity(exceptionLog))
.map(converter::toDomain);
return repository.save(exceptionLog);
}
@Override
public Mono<SysExceptionLog> findById(Long id) {
return dao.findById(id)
.map(converter::toDomain);
return repository.findById(id);
}
@Override
public Mono<PageResponse<SysExceptionLog>> findExceptionLogsByPage(PageRequest pageRequest) {
Flux<SysExceptionLog> allLogs = dao.findAllByOrderByCreateTimeDesc()
.map(converter::toDomain);
Flux<SysExceptionLog> allLogs = repository.findAllByOrderByCreateTimeDesc();
if (pageRequest.getKeyword() != null && !pageRequest.getKeyword().isEmpty()) {
String keyword = pageRequest.getKeyword().toLowerCase();
@@ -85,7 +76,7 @@ public class SysExceptionLogService implements ISysExceptionLogService {
}
return list;
})
.zipWith(dao.count())
.zipWith(repository.count())
.map(tuple -> {
List<SysExceptionLog> all = tuple.getT1();
long totalCount = tuple.getT2();
@@ -129,6 +120,6 @@ public class SysExceptionLogService implements ISysExceptionLogService {
@Override
public Mono<Long> count() {
return dao.count();
return repository.count();
}
}
@@ -1,9 +1,8 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.sys.core.domain.SysFile;
import cn.novalon.manage.common.domain.SysFile;
import cn.novalon.manage.db.repository.ISysFileRepository;
import cn.novalon.manage.sys.core.service.ISysFileService;
import cn.novalon.manage.sys.infrastructure.db.converter.SysFileConverter;
import cn.novalon.manage.sys.infrastructure.db.dao.SysFileDao;
import org.springframework.http.codec.multipart.FilePart;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
@@ -19,37 +18,31 @@ import java.util.UUID;
@Service
public class SysFileService implements ISysFileService {
private final SysFileDao dao;
private final SysFileConverter converter;
private final ISysFileRepository repository;
private final Path uploadPath = Paths.get("./uploads");
public SysFileService(SysFileDao dao, SysFileConverter converter) {
this.dao = dao;
this.converter = converter;
public SysFileService(ISysFileRepository repository) {
this.repository = repository;
}
@Override
public Flux<SysFile> findAll() {
return dao.findByDeletedAtIsNullOrderByCreatedAtDesc()
.map(converter::toDomain);
return repository.findByDeletedAtIsNullOrderByCreatedAtDesc();
}
@Override
public Flux<SysFile> findByCreateBy(String createBy) {
return dao.findByCreateByOrderByCreatedAtDesc(createBy)
.map(converter::toDomain);
return repository.findByCreateByOrderByCreatedAtDesc(createBy);
}
@Override
public Mono<SysFile> findById(Long id) {
return dao.findById(id)
.map(converter::toDomain);
return repository.findById(id);
}
@Override
public Mono<SysFile> findByFileName(String fileName) {
return dao.findByFilePathContaining(fileName)
.map(converter::toDomain)
return repository.findByFilePathContaining(fileName)
.next();
}
@@ -72,8 +65,7 @@ public class SysFileService implements ISysFileService {
sysFile.setCreateBy(createBy);
sysFile.setCreatedAt(LocalDateTime.now());
return dao.save(converter.toEntity(sysFile))
.map(converter::toDomain);
return repository.save(sysFile);
} catch (Exception e) {
return Mono.error(new RuntimeException("文件上传失败: " + e.getMessage()));
}
@@ -81,7 +73,7 @@ public class SysFileService implements ISysFileService {
@Override
public Mono<Void> deleteById(Long id) {
return dao.deleteByIdAndDeletedAtIsNull(id);
return repository.deleteByIdAndDeletedAtIsNull(id);
}
@Override
@@ -105,8 +97,7 @@ public class SysFileService implements ISysFileService {
sysFile.setCreatedAt(LocalDateTime.now());
return sysFile;
}))
.flatMap(sysFile -> dao.save(converter.toEntity(sysFile)))
.map(converter::toDomain);
.flatMap(sysFile -> repository.save(sysFile));
} catch (Exception e) {
return Mono.error(new RuntimeException("文件上传失败: " + e.getMessage()));
}
@@ -1,11 +1,10 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.sys.core.domain.SysLoginLog;
import cn.novalon.manage.common.domain.SysLoginLog;
import cn.novalon.manage.db.repository.SysLoginLogRepository;
import cn.novalon.manage.sys.core.service.ISysLoginLogService;
import cn.novalon.manage.sys.infrastructure.db.converter.SysLoginLogConverter;
import cn.novalon.manage.sys.infrastructure.db.dao.SysLoginLogDao;
import cn.novalon.manage.sys.dto.request.PageRequest;
import cn.novalon.manage.sys.dto.response.PageResponse;
import cn.novalon.manage.common.dto.PageRequest;
import cn.novalon.manage.common.dto.PageResponse;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -17,48 +16,40 @@ import java.util.List;
@Service
public class SysLoginLogService implements ISysLoginLogService {
private final SysLoginLogDao dao;
private final SysLoginLogConverter converter;
private final SysLoginLogRepository repository;
public SysLoginLogService(SysLoginLogDao dao, SysLoginLogConverter converter) {
this.dao = dao;
this.converter = converter;
public SysLoginLogService(SysLoginLogRepository repository) {
this.repository = repository;
}
@Override
public Flux<SysLoginLog> findAll() {
return dao.findAllByOrderByLoginTimeDesc()
.map(converter::toDomain);
return repository.findAllByOrderByLoginTimeDesc();
}
@Override
public Flux<SysLoginLog> findByUsername(String username) {
return dao.findByUsernameOrderByLoginTimeDesc(username)
.map(converter::toDomain);
return repository.findByUsernameOrderByLoginTimeDesc(username);
}
@Override
public Flux<SysLoginLog> findByLoginTimeBetween(LocalDateTime startTime, LocalDateTime endTime) {
return dao.findByLoginTimeBetweenOrderByLoginTimeDesc(startTime, endTime)
.map(converter::toDomain);
return repository.findByLoginTimeBetweenOrderByLoginTimeDesc(startTime, endTime);
}
@Override
public Mono<SysLoginLog> save(SysLoginLog loginLog) {
return dao.save(converter.toEntity(loginLog))
.map(converter::toDomain);
return repository.save(loginLog);
}
@Override
public Mono<SysLoginLog> findById(Long id) {
return dao.findById(id)
.map(converter::toDomain);
return repository.findById(id);
}
@Override
public Mono<PageResponse<SysLoginLog>> findLoginLogsByPage(PageRequest pageRequest) {
Flux<SysLoginLog> allLogs = dao.findAllByOrderByLoginTimeDesc()
.map(converter::toDomain);
Flux<SysLoginLog> allLogs = repository.findAllByOrderByLoginTimeDesc();
if (pageRequest.getKeyword() != null && !pageRequest.getKeyword().isEmpty()) {
String keyword = pageRequest.getKeyword().toLowerCase();
@@ -90,7 +81,7 @@ public class SysLoginLogService implements ISysLoginLogService {
return Mono.just(sortedList);
})
.zipWith(dao.count())
.zipWith(repository.count())
.map(tuple -> {
List<SysLoginLog> all = tuple.getT1();
long totalCount = tuple.getT2();
@@ -128,6 +119,6 @@ public class SysLoginLogService implements ISysLoginLogService {
@Override
public Mono<Long> count() {
return dao.count();
return repository.count();
}
}
@@ -1,7 +1,7 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.sys.core.domain.SysMenu;
import cn.novalon.manage.sys.core.repository.ISysMenuRepository;
import cn.novalon.manage.common.domain.SysMenu;
import cn.novalon.manage.db.repository.ISysMenuRepository;
import cn.novalon.manage.sys.core.service.ISysMenuService;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
@@ -1,10 +1,9 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.sys.core.domain.SysNotice;
import cn.novalon.manage.common.domain.SysNotice;
import cn.novalon.manage.db.repository.ISysNoticeRepository;
import cn.novalon.manage.sys.core.service.ISysNoticeService;
import cn.novalon.manage.sys.core.service.IWebSocketService;
import cn.novalon.manage.sys.infrastructure.db.converter.SysNoticeConverter;
import cn.novalon.manage.sys.infrastructure.db.dao.SysNoticeDao;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -12,48 +11,41 @@ import reactor.core.publisher.Mono;
@Service
public class SysNoticeService implements ISysNoticeService {
private final SysNoticeDao dao;
private final SysNoticeConverter converter;
private final ISysNoticeRepository repository;
private final IWebSocketService webSocketService;
public SysNoticeService(SysNoticeDao dao, SysNoticeConverter converter, IWebSocketService webSocketService) {
this.dao = dao;
this.converter = converter;
public SysNoticeService(ISysNoticeRepository repository, IWebSocketService webSocketService) {
this.repository = repository;
this.webSocketService = webSocketService;
}
@Override
public Flux<SysNotice> findAll() {
return dao.findByDeletedAtIsNull()
.map(converter::toDomain);
return repository.findByDeletedAtIsNull();
}
@Override
public Flux<SysNotice> findByStatus(String status) {
return dao.findByStatusAndDeletedAtIsNull(status)
.map(converter::toDomain);
return repository.findByStatusAndDeletedAtIsNull(status);
}
@Override
public Mono<SysNotice> findById(Long id) {
return dao.findById(id)
.map(converter::toDomain);
return repository.findById(id);
}
@Override
public Mono<SysNotice> save(SysNotice notice) {
return dao.save(converter.toEntity(notice))
.map(converter::toDomain)
return repository.save(notice)
.flatMap(savedNotice -> {
return webSocketService.notifyNewNotice(
savedNotice.getNoticeTitle(),
savedNotice.getNoticeContent()
).thenReturn(savedNotice);
savedNotice.getNoticeContent()).thenReturn(savedNotice);
});
}
@Override
public Mono<Void> deleteById(Long id) {
return dao.deleteByIdAndDeletedAtIsNull(id);
return repository.deleteByIdAndDeletedAtIsNull(id);
}
}
@@ -1,14 +1,14 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.sys.core.constants.StatusConstants;
import cn.novalon.manage.sys.core.domain.SysRole;
import cn.novalon.manage.sys.core.domain.query.SysRoleQuery;
import cn.novalon.manage.sys.core.repository.ISysRoleRepository;
import cn.novalon.manage.common.util.StatusConstants;
import cn.novalon.manage.common.domain.SysRole;
import cn.novalon.manage.common.domain.query.SysRoleQuery;
import cn.novalon.manage.db.repository.ISysRoleRepository;
import cn.novalon.manage.sys.core.service.ISysRoleService;
import cn.novalon.manage.sys.dto.request.PageRequest;
import cn.novalon.manage.sys.dto.response.PageResponse;
import cn.novalon.manage.sys.infrastructure.db.entity.query.SysRoleQueryCriteria;
import cn.novalon.manage.sys.infrastructure.db.utils.QueryUtil;
import cn.novalon.manage.common.dto.PageRequest;
import cn.novalon.manage.common.dto.PageResponse;
import cn.novalon.manage.db.dao.QueryUtil;
import cn.novalon.manage.db.entity.SysRoleQueryCriteria;
import org.springframework.data.relational.core.query.Query;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
@@ -38,17 +38,17 @@ public class SysRoleService implements ISysRoleService {
@Override
public Mono<PageResponse<SysRole>> findRolesByPage(PageRequest pageRequest) {
SysRoleQuery query = new SysRoleQuery();
if (pageRequest.getKeyword() != null && !pageRequest.getKeyword().isEmpty()) {
query.setRoleName(pageRequest.getKeyword());
query.setRoleKey(pageRequest.getKeyword());
}
SysRoleQueryCriteria criteria = new SysRoleQueryCriteria();
criteria.convert(query);
Query queryObj = QueryUtil.getQuery(criteria);
return roleRepository.findByQueryWithPagination(queryObj, pageRequest);
}
@@ -1,10 +1,9 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.sys.core.domain.SysUserMessage;
import cn.novalon.manage.common.domain.SysUserMessage;
import cn.novalon.manage.db.repository.ISysUserMessageRepository;
import cn.novalon.manage.sys.core.service.ISysUserMessageService;
import cn.novalon.manage.sys.core.service.IWebSocketService;
import cn.novalon.manage.sys.infrastructure.db.converter.SysUserMessageConverter;
import cn.novalon.manage.sys.infrastructure.db.dao.SysUserMessageDao;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -12,38 +11,33 @@ import reactor.core.publisher.Mono;
@Service
public class SysUserMessageService implements ISysUserMessageService {
private final SysUserMessageDao dao;
private final SysUserMessageConverter converter;
private final ISysUserMessageRepository repository;
private final IWebSocketService webSocketService;
public SysUserMessageService(SysUserMessageDao dao, SysUserMessageConverter converter,
public SysUserMessageService(ISysUserMessageRepository repository,
IWebSocketService webSocketService) {
this.dao = dao;
this.converter = converter;
this.repository = repository;
this.webSocketService = webSocketService;
}
@Override
public Flux<SysUserMessage> findByUserId(Long userId) {
return dao.findByUserIdOrderByCreateTimeDesc(userId)
.map(converter::toDomain);
return repository.findByUserIdOrderByCreateTimeDesc(userId);
}
@Override
public Flux<SysUserMessage> findByUserIdAndIsRead(Long userId, String isRead) {
return dao.findByUserIdAndIsReadOrderByCreateTimeDesc(userId, isRead)
.map(converter::toDomain);
return repository.findByUserIdAndIsReadOrderByCreateTimeDesc(userId, isRead);
}
@Override
public Mono<Long> countUnread(Long userId) {
return dao.countByUserIdAndIsRead(userId, "0");
return repository.countByUserIdAndIsRead(userId, "0");
}
@Override
public Mono<SysUserMessage> save(SysUserMessage message) {
return dao.save(converter.toEntity(message))
.map(converter::toDomain)
return repository.save(message)
.flatMap(savedMessage -> {
return webSocketService.notifyNewMessage(
savedMessage.getUserId(),
@@ -54,16 +48,16 @@ public class SysUserMessageService implements ISysUserMessageService {
@Override
public Mono<Void> markAsRead(Long id) {
return dao.findById(id)
return repository.findById(id)
.flatMap(entity -> {
entity.setIsRead("1");
return dao.save(entity);
return repository.save(entity);
})
.then();
}
@Override
public Mono<Void> deleteById(Long id) {
return dao.deleteById(id);
return repository.deleteById(id);
}
}
@@ -1,14 +1,14 @@
package cn.novalon.manage.sys.core.service.impl;
import cn.novalon.manage.sys.core.constants.StatusConstants;
import cn.novalon.manage.sys.core.domain.SysUser;
import cn.novalon.manage.sys.core.domain.query.SysUserQuery;
import cn.novalon.manage.sys.core.repository.ISysUserRepository;
import cn.novalon.manage.common.util.StatusConstants;
import cn.novalon.manage.common.domain.SysUser;
import cn.novalon.manage.common.domain.query.SysUserQuery;
import cn.novalon.manage.common.dto.PageRequest;
import cn.novalon.manage.common.dto.PageResponse;
import cn.novalon.manage.db.repository.ISysUserRepository;
import cn.novalon.manage.db.dao.QueryUtil;
import cn.novalon.manage.db.entity.SysUserQueryCriteria;
import cn.novalon.manage.sys.core.service.ISysUserService;
import cn.novalon.manage.sys.dto.request.PageRequest;
import cn.novalon.manage.sys.dto.response.PageResponse;
import cn.novalon.manage.sys.infrastructure.db.entity.query.SysUserQueryCriteria;
import cn.novalon.manage.sys.infrastructure.db.utils.QueryUtil;
import org.springframework.data.relational.core.query.Query;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
@@ -68,7 +68,7 @@ public class UserResponse {
this.updatedAt = updatedAt;
}
public static UserResponse fromDomain(cn.novalon.manage.sys.core.domain.SysUser user) {
public static UserResponse fromDomain(cn.novalon.manage.common.domain.SysUser user) {
UserResponse response = new UserResponse();
response.setId(user.getId());
response.setUsername(user.getUsername());
@@ -1,6 +1,6 @@
package cn.novalon.manage.sys.handler;
import cn.novalon.manage.sys.core.domain.SysExceptionLog;
import cn.novalon.manage.common.domain.SysExceptionLog;
import cn.novalon.manage.sys.core.exception.DictionaryAlreadyExistsException;
import cn.novalon.manage.sys.core.service.ISysExceptionLogService;
import org.slf4j.Logger;
@@ -4,7 +4,7 @@ import cn.novalon.manage.sys.dto.request.LoginRequest;
import cn.novalon.manage.sys.dto.request.UserRegisterRequest;
import cn.novalon.manage.sys.dto.response.AuthResponse;
import cn.novalon.manage.sys.security.JwtTokenProvider;
import cn.novalon.manage.sys.core.domain.SysUser;
import cn.novalon.manage.common.domain.SysUser;
import cn.novalon.manage.sys.core.service.ISysUserService;
import org.springframework.http.HttpStatus;
import org.springframework.security.crypto.password.PasswordEncoder;
@@ -1,6 +1,6 @@
package cn.novalon.manage.sys.handler.config;
import cn.novalon.manage.sys.core.domain.SysConfig;
import cn.novalon.manage.common.domain.SysConfig;
import cn.novalon.manage.sys.core.service.ISysConfigService;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
@@ -1,7 +1,7 @@
package cn.novalon.manage.sys.handler.dict;
import cn.novalon.manage.sys.core.domain.SysDictType;
import cn.novalon.manage.sys.core.domain.SysDictData;
import cn.novalon.manage.common.domain.SysDictType;
import cn.novalon.manage.common.domain.SysDictData;
import cn.novalon.manage.sys.core.service.ISysDictTypeService;
import cn.novalon.manage.sys.core.service.ISysDictDataService;
import org.springframework.http.HttpStatus;
@@ -1,6 +1,6 @@
package cn.novalon.manage.sys.handler.dictionary;
import cn.novalon.manage.sys.core.domain.Dictionary;
import cn.novalon.manage.common.domain.Dictionary;
import cn.novalon.manage.sys.core.service.IDictionaryService;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
@@ -1,6 +1,6 @@
package cn.novalon.manage.sys.handler.file;
import cn.novalon.manage.sys.core.domain.SysFile;
import cn.novalon.manage.common.domain.SysFile;
import cn.novalon.manage.sys.core.service.ISysFileService;
import cn.novalon.manage.sys.dto.response.FilePreviewResponse;
import org.springframework.core.io.Resource;
@@ -1,10 +1,10 @@
package cn.novalon.manage.sys.handler.log;
import cn.novalon.manage.sys.core.domain.SysLoginLog;
import cn.novalon.manage.sys.core.domain.SysExceptionLog;
import cn.novalon.manage.common.domain.SysLoginLog;
import cn.novalon.manage.common.domain.SysExceptionLog;
import cn.novalon.manage.sys.core.service.ISysLoginLogService;
import cn.novalon.manage.sys.core.service.ISysExceptionLogService;
import cn.novalon.manage.sys.dto.request.PageRequest;
import cn.novalon.manage.common.dto.PageRequest;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.function.server.ServerRequest;
@@ -1,6 +1,6 @@
package cn.novalon.manage.sys.handler.message;
import cn.novalon.manage.sys.core.domain.SysUserMessage;
import cn.novalon.manage.common.domain.SysUserMessage;
import cn.novalon.manage.sys.core.service.ISysUserMessageService;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
@@ -1,6 +1,6 @@
package cn.novalon.manage.sys.handler.notice;
import cn.novalon.manage.sys.core.domain.SysNotice;
import cn.novalon.manage.common.domain.SysNotice;
import cn.novalon.manage.sys.core.service.ISysNoticeService;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
@@ -1,8 +1,8 @@
package cn.novalon.manage.sys.handler.role;
import cn.novalon.manage.sys.core.domain.SysRole;
import cn.novalon.manage.common.domain.SysRole;
import cn.novalon.manage.sys.core.service.ISysRoleService;
import cn.novalon.manage.sys.dto.request.PageRequest;
import cn.novalon.manage.common.dto.PageRequest;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.HttpStatus;
@@ -1,8 +1,8 @@
package cn.novalon.manage.sys.handler.user;
import cn.novalon.manage.sys.core.domain.SysUser;
import cn.novalon.manage.common.domain.SysUser;
import cn.novalon.manage.sys.core.service.ISysUserService;
import cn.novalon.manage.sys.dto.request.PageRequest;
import cn.novalon.manage.common.dto.PageRequest;
import cn.novalon.manage.sys.dto.request.PasswordChangeRequest;
import cn.novalon.manage.sys.dto.request.UserUpdateRequest;
import io.swagger.v3.oas.annotations.Operation;
@@ -1,19 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.mapper;
import cn.novalon.manage.sys.core.domain.Dictionary;
import cn.novalon.manage.sys.infrastructure.db.entity.DictionaryEntity;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper(componentModel = "spring")
public interface DictionaryMapper {
Dictionary toDomain(DictionaryEntity entity);
DictionaryEntity toEntity(Dictionary domain);
List<Dictionary> toDomainList(List<DictionaryEntity> entities);
List<DictionaryEntity> toEntityList(List<Dictionary> domains);
}
@@ -1,19 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.mapper;
import cn.novalon.manage.sys.core.domain.OperationLog;
import cn.novalon.manage.sys.infrastructure.db.entity.OperationLogEntity;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper(componentModel = "spring")
public interface OperationLogMapper {
OperationLog toDomain(OperationLogEntity entity);
OperationLogEntity toEntity(OperationLog domain);
List<OperationLog> toDomainList(List<OperationLogEntity> entities);
List<OperationLogEntity> toEntityList(List<OperationLog> domains);
}
@@ -1,19 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.mapper;
import cn.novalon.manage.sys.core.domain.SysConfig;
import cn.novalon.manage.sys.infrastructure.db.entity.SysConfigEntity;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper(componentModel = "spring")
public interface SysConfigMapper {
SysConfig toDomain(SysConfigEntity entity);
SysConfigEntity toEntity(SysConfig domain);
List<SysConfig> toDomainList(List<SysConfigEntity> entities);
List<SysConfigEntity> toEntityList(List<SysConfig> domains);
}
@@ -1,19 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.mapper;
import cn.novalon.manage.sys.core.domain.SysDictData;
import cn.novalon.manage.sys.infrastructure.db.entity.SysDictDataEntity;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper(componentModel = "spring")
public interface SysDictDataMapper {
SysDictData toDomain(SysDictDataEntity entity);
SysDictDataEntity toEntity(SysDictData domain);
List<SysDictData> toDomainList(List<SysDictDataEntity> entities);
List<SysDictDataEntity> toEntityList(List<SysDictData> domains);
}
@@ -1,19 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.mapper;
import cn.novalon.manage.sys.core.domain.SysDictType;
import cn.novalon.manage.sys.infrastructure.db.entity.SysDictTypeEntity;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper(componentModel = "spring")
public interface SysDictTypeMapper {
SysDictType toDomain(SysDictTypeEntity entity);
SysDictTypeEntity toEntity(SysDictType domain);
List<SysDictType> toDomainList(List<SysDictTypeEntity> entities);
List<SysDictTypeEntity> toEntityList(List<SysDictType> domains);
}
@@ -1,19 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.mapper;
import cn.novalon.manage.sys.core.domain.SysExceptionLog;
import cn.novalon.manage.sys.infrastructure.db.entity.SysExceptionLogEntity;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper(componentModel = "spring")
public interface SysExceptionLogMapper {
SysExceptionLog toDomain(SysExceptionLogEntity entity);
SysExceptionLogEntity toEntity(SysExceptionLog domain);
List<SysExceptionLog> toDomainList(List<SysExceptionLogEntity> entities);
List<SysExceptionLogEntity> toEntityList(List<SysExceptionLog> domains);
}
@@ -1,19 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.mapper;
import cn.novalon.manage.sys.core.domain.SysFile;
import cn.novalon.manage.sys.infrastructure.db.entity.SysFileEntity;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper(componentModel = "spring")
public interface SysFileMapper {
SysFile toDomain(SysFileEntity entity);
SysFileEntity toEntity(SysFile domain);
List<SysFile> toDomainList(List<SysFileEntity> entities);
List<SysFileEntity> toEntityList(List<SysFile> domains);
}
@@ -1,19 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.mapper;
import cn.novalon.manage.sys.core.domain.SysLoginLog;
import cn.novalon.manage.sys.infrastructure.db.entity.SysLoginLogEntity;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper(componentModel = "spring")
public interface SysLoginLogMapper {
SysLoginLog toDomain(SysLoginLogEntity entity);
SysLoginLogEntity toEntity(SysLoginLog domain);
List<SysLoginLog> toDomainList(List<SysLoginLogEntity> entities);
List<SysLoginLogEntity> toEntityList(List<SysLoginLog> domains);
}
@@ -1,67 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.mapper;
import cn.novalon.manage.sys.core.domain.SysMenu;
import cn.novalon.manage.sys.infrastructure.db.entity.SysMenuEntity;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class SysMenuMapper {
private static final SysMenuMapper INSTANCE = new SysMenuMapper();
public static SysMenuMapper getInstance() {
return INSTANCE;
}
public SysMenu toDomain(SysMenuEntity entity) {
if (entity == null) {
return null;
}
SysMenu domain = new SysMenu();
domain.setId(entity.getId());
domain.setMenuName(entity.getMenuName());
domain.setParentId(entity.getParentId());
domain.setOrderNum(entity.getOrderNum());
domain.setMenuType(entity.getMenuType());
domain.setPerms(entity.getPerms());
domain.setComponent(entity.getComponent());
domain.setStatus(entity.getStatus());
domain.setCreateBy(entity.getCreateBy());
domain.setUpdateBy(entity.getUpdateBy());
domain.setCreatedAt(entity.getCreatedAt());
domain.setUpdatedAt(entity.getUpdatedAt());
domain.setDeletedAt(entity.getDeletedAt());
return domain;
}
public SysMenuEntity toEntity(SysMenu domain) {
if (domain == null) {
return null;
}
SysMenuEntity entity = new SysMenuEntity();
entity.setId(domain.getId());
entity.setMenuName(domain.getMenuName());
entity.setParentId(domain.getParentId());
entity.setOrderNum(domain.getOrderNum());
entity.setMenuType(domain.getMenuType());
entity.setPerms(domain.getPerms());
entity.setComponent(domain.getComponent());
entity.setStatus(domain.getStatus());
entity.setCreateBy(domain.getCreateBy());
entity.setUpdateBy(domain.getUpdateBy());
entity.setCreatedAt(domain.getCreatedAt());
entity.setUpdatedAt(domain.getUpdatedAt());
entity.setDeletedAt(domain.getDeletedAt());
return entity;
}
public List<SysMenu> toDomainList(List<SysMenuEntity> entities) {
return entities.stream().map(this::toDomain).toList();
}
public List<SysMenuEntity> toEntityList(List<SysMenu> domains) {
return domains.stream().map(this::toEntity).toList();
}
}
@@ -1,19 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.mapper;
import cn.novalon.manage.sys.core.domain.SysNotice;
import cn.novalon.manage.sys.infrastructure.db.entity.SysNoticeEntity;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper(componentModel = "spring")
public interface SysNoticeMapper {
SysNotice toDomain(SysNoticeEntity entity);
SysNoticeEntity toEntity(SysNotice domain);
List<SysNotice> toDomainList(List<SysNoticeEntity> entities);
List<SysNoticeEntity> toEntityList(List<SysNotice> domains);
}
@@ -1,19 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.mapper;
import cn.novalon.manage.sys.core.domain.SysRole;
import cn.novalon.manage.sys.infrastructure.db.entity.SysRoleEntity;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper(componentModel = "spring")
public interface SysRoleMapper {
SysRole toDomain(SysRoleEntity entity);
SysRoleEntity toEntity(SysRole domain);
List<SysRole> toDomainList(List<SysRoleEntity> entities);
List<SysRoleEntity> toEntityList(List<SysRole> domains);
}
@@ -1,19 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.mapper;
import cn.novalon.manage.sys.core.domain.SysUser;
import cn.novalon.manage.sys.infrastructure.db.entity.SysUserEntity;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper(componentModel = "spring")
public interface SysUserMapper {
SysUser toDomain(SysUserEntity entity);
SysUserEntity toEntity(SysUser domain);
List<SysUser> toDomainList(List<SysUserEntity> entities);
List<SysUserEntity> toEntityList(List<SysUser> domains);
}
@@ -1,19 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.mapper;
import cn.novalon.manage.sys.core.domain.SysUserMessage;
import cn.novalon.manage.sys.infrastructure.db.entity.SysUserMessageEntity;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper(componentModel = "spring")
public interface SysUserMessageMapper {
SysUserMessage toDomain(SysUserMessageEntity entity);
SysUserMessageEntity toEntity(SysUserMessage domain);
List<SysUserMessage> toDomainList(List<SysUserMessageEntity> entities);
List<SysUserMessageEntity> toEntityList(List<SysUserMessage> domains);
}
@@ -1,49 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.repository;
import cn.novalon.manage.sys.core.domain.Dictionary;
import cn.novalon.manage.sys.infrastructure.db.dao.DictionaryDao;
import cn.novalon.manage.sys.infrastructure.db.mapper.DictionaryMapper;
import org.springframework.stereotype.Repository;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@Repository
public class DictionaryRepository {
private final DictionaryDao dao;
private final DictionaryMapper mapper;
public DictionaryRepository(DictionaryDao dao, DictionaryMapper mapper) {
this.dao = dao;
this.mapper = mapper;
}
public Flux<Dictionary> findByType(String type) {
return dao.findByType(type)
.map(mapper::toDomain);
}
public Mono<Dictionary> findByTypeAndCode(String type, String code) {
return dao.findByTypeAndCode(type, code)
.map(mapper::toDomain);
}
public Flux<Dictionary> findAll() {
return dao.findByDeletedAtIsNullOrderBySortAsc()
.map(mapper::toDomain);
}
public Mono<Dictionary> findById(Long id) {
return dao.findById(id)
.map(mapper::toDomain);
}
public Mono<Dictionary> save(Dictionary dictionary) {
return dao.save(mapper.toEntity(dictionary))
.map(mapper::toDomain);
}
public Mono<Void> deleteById(Long id) {
return dao.deleteByIdAndDeletedAtIsNull(id);
}
}
@@ -1,67 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.repository;
import cn.novalon.manage.sys.core.domain.OperationLog;
import cn.novalon.manage.sys.core.repository.IOperationLogRepository;
import cn.novalon.manage.sys.infrastructure.db.converter.OperationLogConverter;
import cn.novalon.manage.sys.infrastructure.db.dao.OperationLogDao;
import org.springframework.stereotype.Repository;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.time.LocalDateTime;
@Repository
public class OperationLogRepository implements IOperationLogRepository {
private final OperationLogDao dao;
private final OperationLogConverter converter;
public OperationLogRepository(OperationLogDao dao, OperationLogConverter converter) {
this.dao = dao;
this.converter = converter;
}
@Override
public Mono<OperationLog> findById(Long id) {
return dao.findById(id)
.map(converter::toDomain);
}
@Override
public Mono<OperationLog> save(OperationLog operationLog) {
return dao.save(converter.toEntity(operationLog))
.map(converter::toDomain);
}
@Override
public Mono<Void> deleteById(Long id) {
return dao.findById(id)
.flatMap(entity -> {
entity.setDeletedAt(LocalDateTime.now());
return dao.save(entity);
})
.then();
}
@Override
public Flux<OperationLog> findAll() {
return dao.findByDeletedAtIsNull()
.map(converter::toDomain);
}
@Override
public Flux<OperationLog> findByUsername(String username) {
return dao.findByUsernameAndDeletedAtIsNull(username)
.map(converter::toDomain);
}
@Override
public Mono<Long> count() {
return dao.countByDeletedAtIsNull();
}
@Override
public Mono<Long> countByCreatedAtAfter(LocalDateTime dateTime) {
return dao.countByCreatedAtAfterAndDeletedAtIsNull(dateTime);
}
}
@@ -1,80 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.repository;
import cn.novalon.manage.sys.core.domain.SysConfig;
import cn.novalon.manage.sys.infrastructure.db.mapper.SysConfigMapper;
import cn.novalon.manage.sys.infrastructure.db.dao.SysConfigDao;
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 SysConfigRepository {
private final SysConfigDao dao;
private final SysConfigMapper mapper;
public SysConfigRepository(SysConfigDao dao, SysConfigMapper mapper) {
this.dao = dao;
this.mapper = mapper;
}
public Mono<SysConfig> findByConfigKey(String configKey) {
return dao.findByConfigKeyAndDeletedAtIsNull(configKey)
.map(mapper::toDomain);
}
public Mono<SysConfig> findById(Long id) {
return dao.findById(id)
.filter(entity -> entity.getDeletedAt() == null)
.map(mapper::toDomain);
}
public Mono<SysConfig> save(SysConfig sysConfig) {
return dao.save(mapper.toEntity(sysConfig))
.map(mapper::toDomain);
}
public Mono<Void> deleteById(Long id) {
return dao.findById(id)
.flatMap(entity -> {
entity.setDeletedAt(LocalDateTime.now());
return dao.save(entity);
})
.then();
}
public Flux<SysConfig> findAll() {
return dao.findByDeletedAtIsNull()
.map(mapper::toDomain);
}
public Flux<SysConfig> findAll(Sort sort) {
return dao.findByDeletedAtIsNull(sort)
.map(mapper::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();
}
}
@@ -1,85 +0,0 @@
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 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();
}
}
@@ -1,80 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.repository;
import cn.novalon.manage.sys.core.domain.SysDictType;
import cn.novalon.manage.sys.infrastructure.db.converter.SysDictTypeConverter;
import cn.novalon.manage.sys.infrastructure.db.dao.SysDictTypeDao;
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 SysDictTypeRepository {
private final SysDictTypeDao dao;
private final SysDictTypeConverter converter;
public SysDictTypeRepository(SysDictTypeDao dao, SysDictTypeConverter converter) {
this.dao = dao;
this.converter = converter;
}
public Mono<SysDictType> findByDictType(String dictType) {
return dao.findByDictTypeAndDeletedAtIsNull(dictType)
.map(converter::toDomain);
}
public Mono<SysDictType> findById(Long id) {
return dao.findById(id)
.filter(entity -> entity.getDeletedAt() == null)
.map(converter::toDomain);
}
public Mono<SysDictType> save(SysDictType sysDictType) {
return dao.save(converter.toEntity(sysDictType))
.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<SysDictType> findAll() {
return dao.findByDeletedAtIsNull()
.map(converter::toDomain);
}
public Flux<SysDictType> 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();
}
}
@@ -1,69 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.repository;
import cn.novalon.manage.sys.core.domain.SysExceptionLog;
import cn.novalon.manage.sys.infrastructure.db.converter.SysExceptionLogConverter;
import cn.novalon.manage.sys.infrastructure.db.dao.SysExceptionLogDao;
import org.springframework.stereotype.Repository;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.time.LocalDateTime;
@Repository
public class SysExceptionLogRepository {
private final SysExceptionLogDao dao;
private final SysExceptionLogConverter converter;
public SysExceptionLogRepository(SysExceptionLogDao dao, SysExceptionLogConverter converter) {
this.dao = dao;
this.converter = converter;
}
public Mono<SysExceptionLog> findById(Long id) {
return dao.findById(id)
.map(converter::toDomain);
}
public Mono<SysExceptionLog> save(SysExceptionLog sysExceptionLog) {
return dao.save(converter.toEntity(sysExceptionLog))
.map(converter::toDomain);
}
public Mono<Void> deleteById(Long id) {
return dao.deleteById(id);
}
public Flux<SysExceptionLog> findAll() {
return dao.findAll()
.map(converter::toDomain);
}
public Flux<SysExceptionLog> findByUsername(String username) {
return dao.findByUsername(username)
.map(converter::toDomain);
}
public Flux<SysExceptionLog> findByUsernameOrderByCreateTimeDesc(String username) {
return dao.findByUsernameOrderByCreateTimeDesc(username)
.map(converter::toDomain);
}
public Flux<SysExceptionLog> findByCreateTimeBetweenOrderByCreateTimeDesc(LocalDateTime startTime, LocalDateTime endTime) {
return dao.findByCreateTimeBetweenOrderByCreateTimeDesc(startTime, endTime)
.map(converter::toDomain);
}
public Flux<SysExceptionLog> findAllByOrderByCreateTimeDesc() {
return dao.findAllByOrderByCreateTimeDesc()
.map(converter::toDomain);
}
public Mono<Long> countByUsername(String username) {
return dao.countByUsername(username);
}
public Mono<Long> count() {
return dao.count();
}
}
@@ -1,95 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.repository;
import cn.novalon.manage.sys.core.domain.SysFile;
import cn.novalon.manage.sys.infrastructure.db.mapper.SysFileMapper;
import cn.novalon.manage.sys.infrastructure.db.dao.SysFileDao;
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 SysFileRepository {
private final SysFileDao dao;
private final SysFileMapper mapper;
public SysFileRepository(SysFileDao dao, SysFileMapper mapper) {
this.dao = dao;
this.mapper = mapper;
}
public Mono<SysFile> findById(Long id) {
return dao.findById(id)
.filter(entity -> entity.getDeletedAt() == null)
.map(mapper::toDomain);
}
public Mono<SysFile> save(SysFile sysFile) {
return dao.save(mapper.toEntity(sysFile))
.map(mapper::toDomain);
}
public Mono<Void> deleteById(Long id) {
return dao.findById(id)
.flatMap(entity -> {
entity.setDeletedAt(LocalDateTime.now());
return dao.save(entity);
})
.then();
}
public Flux<SysFile> findByCreateBy(String createBy) {
return dao.findByCreateBy(createBy)
.map(mapper::toDomain);
}
public Flux<SysFile> findByCreateBy(String createBy, Sort sort) {
return dao.findByCreateBy(createBy, sort)
.map(mapper::toDomain);
}
public Flux<SysFile> findByCreateByOrderByCreatedAtDesc(String createBy) {
return dao.findByCreateByOrderByCreatedAtDesc(createBy)
.map(mapper::toDomain);
}
public Flux<SysFile> findAll() {
return dao.findByDeletedAtIsNull()
.map(mapper::toDomain);
}
public Flux<SysFile> findAll(Sort sort) {
return dao.findByDeletedAtIsNull(sort)
.map(mapper::toDomain);
}
public Flux<SysFile> findAllByOrderByCreatedAtDesc() {
return dao.findByDeletedAtIsNullOrderByCreatedAtDesc()
.map(mapper::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();
}
}
@@ -1,69 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.repository;
import cn.novalon.manage.sys.core.domain.SysLoginLog;
import cn.novalon.manage.sys.infrastructure.db.converter.SysLoginLogConverter;
import cn.novalon.manage.sys.infrastructure.db.dao.SysLoginLogDao;
import org.springframework.stereotype.Repository;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.time.LocalDateTime;
@Repository
public class SysLoginLogRepository {
private final SysLoginLogDao dao;
private final SysLoginLogConverter converter;
public SysLoginLogRepository(SysLoginLogDao dao, SysLoginLogConverter converter) {
this.dao = dao;
this.converter = converter;
}
public Mono<SysLoginLog> findById(Long id) {
return dao.findById(id)
.map(converter::toDomain);
}
public Mono<SysLoginLog> save(SysLoginLog sysLoginLog) {
return dao.save(converter.toEntity(sysLoginLog))
.map(converter::toDomain);
}
public Mono<Void> deleteById(Long id) {
return dao.deleteById(id);
}
public Flux<SysLoginLog> findAll() {
return dao.findAll()
.map(converter::toDomain);
}
public Flux<SysLoginLog> findByUsername(String username) {
return dao.findByUsername(username)
.map(converter::toDomain);
}
public Flux<SysLoginLog> findByUsernameOrderByLoginTimeDesc(String username) {
return dao.findByUsernameOrderByLoginTimeDesc(username)
.map(converter::toDomain);
}
public Flux<SysLoginLog> findByLoginTimeBetweenOrderByLoginTimeDesc(LocalDateTime startTime, LocalDateTime endTime) {
return dao.findByLoginTimeBetweenOrderByLoginTimeDesc(startTime, endTime)
.map(converter::toDomain);
}
public Flux<SysLoginLog> findAllByOrderByLoginTimeDesc() {
return dao.findAllByOrderByLoginTimeDesc()
.map(converter::toDomain);
}
public Mono<Long> countByUsername(String username) {
return dao.countByUsername(username);
}
public Mono<Long> count() {
return dao.count();
}
}
@@ -1,57 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.repository;
import cn.novalon.manage.sys.core.domain.SysMenu;
import cn.novalon.manage.sys.core.repository.ISysMenuRepository;
import cn.novalon.manage.sys.infrastructure.db.converter.SysMenuConverter;
import cn.novalon.manage.sys.infrastructure.db.dao.SysMenuDao;
import org.springframework.stereotype.Repository;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.time.LocalDateTime;
@Repository
public class SysMenuRepository implements ISysMenuRepository {
private final SysMenuDao dao;
private final SysMenuConverter converter;
public SysMenuRepository(SysMenuDao dao, SysMenuConverter converter) {
this.dao = dao;
this.converter = converter;
}
@Override
public Mono<SysMenu> findById(Long id) {
return dao.findByIdAndDeletedAtIsNull(id)
.map(converter::toDomain);
}
@Override
public Flux<SysMenu> findAll() {
return dao.findByDeletedAtIsNull()
.map(converter::toDomain);
}
@Override
public Flux<SysMenu> findByParentId(Long parentId) {
return dao.findByParentIdAndDeletedAtIsNull(parentId)
.map(converter::toDomain);
}
@Override
public Mono<SysMenu> save(SysMenu sysMenu) {
return dao.save(converter.toEntity(sysMenu))
.map(converter::toDomain);
}
@Override
public Mono<Void> deleteById(Long id) {
return dao.findByIdAndDeletedAtIsNull(id)
.flatMap(entity -> {
entity.setDeletedAt(LocalDateTime.now());
return dao.save(entity);
})
.then();
}
}
@@ -1,85 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.repository;
import cn.novalon.manage.sys.core.domain.SysNotice;
import cn.novalon.manage.sys.infrastructure.db.mapper.SysNoticeMapper;
import cn.novalon.manage.sys.infrastructure.db.dao.SysNoticeDao;
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 SysNoticeRepository {
private final SysNoticeDao dao;
private final SysNoticeMapper mapper;
public SysNoticeRepository(SysNoticeDao dao, SysNoticeMapper mapper) {
this.dao = dao;
this.mapper = mapper;
}
public Mono<SysNotice> findById(Long id) {
return dao.findById(id)
.filter(entity -> entity.getDeletedAt() == null)
.map(mapper::toDomain);
}
public Mono<SysNotice> save(SysNotice sysNotice) {
return dao.save(mapper.toEntity(sysNotice))
.map(mapper::toDomain);
}
public Mono<Void> deleteById(Long id) {
return dao.findById(id)
.flatMap(entity -> {
entity.setDeletedAt(LocalDateTime.now());
return dao.save(entity);
})
.then();
}
public Flux<SysNotice> findByStatus(String status) {
return dao.findByStatusAndDeletedAtIsNull(status)
.map(mapper::toDomain);
}
public Flux<SysNotice> findByStatus(String status, Sort sort) {
return dao.findByStatusAndDeletedAtIsNull(status, sort)
.map(mapper::toDomain);
}
public Flux<SysNotice> findAll() {
return dao.findByDeletedAtIsNull()
.map(mapper::toDomain);
}
public Flux<SysNotice> findAll(Sort sort) {
return dao.findByDeletedAtIsNull(sort)
.map(mapper::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();
}
}
@@ -1,133 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.repository;
import cn.novalon.manage.sys.core.domain.SysRole;
import cn.novalon.manage.sys.core.repository.ISysRoleRepository;
import cn.novalon.manage.sys.dto.request.PageRequest;
import cn.novalon.manage.sys.dto.response.PageResponse;
import cn.novalon.manage.sys.infrastructure.db.mapper.SysRoleMapper;
import cn.novalon.manage.sys.infrastructure.db.dao.SysRoleDao;
import cn.novalon.manage.sys.infrastructure.db.entity.SysRoleEntity;
import org.springframework.data.domain.Sort;
import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
import org.springframework.data.relational.core.query.Query;
import org.springframework.stereotype.Repository;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.time.LocalDateTime;
@Repository
public class SysRoleRepository implements ISysRoleRepository {
private final SysRoleDao dao;
private final SysRoleMapper mapper;
private final R2dbcEntityTemplate template;
public SysRoleRepository(SysRoleDao dao, SysRoleMapper mapper, R2dbcEntityTemplate template) {
this.dao = dao;
this.mapper = mapper;
this.template = template;
}
@Override
public Mono<SysRole> findById(Long id) {
return dao.findByIdAndDeletedAtIsNull(id)
.map(mapper::toDomain);
}
@Override
public Mono<SysRole> findByIdIncludingDeleted(Long id) {
return dao.findById(id)
.map(mapper::toDomain);
}
@Override
public Mono<SysRole> save(SysRole sysRole) {
return dao.save(mapper.toEntity(sysRole))
.map(mapper::toDomain);
}
@Override
public Mono<Void> deleteById(Long id) {
return dao.findById(id)
.flatMap(entity -> {
entity.setDeletedAt(LocalDateTime.now());
return dao.save(entity);
})
.then();
}
@Override
public Flux<SysRole> findAll() {
return dao.findByDeletedAtIsNull()
.map(mapper::toDomain);
}
@Override
public Flux<SysRole> findAll(Sort sort) {
return dao.findByDeletedAtIsNull(sort)
.map(mapper::toDomain);
}
@Override
public Flux<SysRole> findByRoleNameLikeOrRoleKeyLike(String roleName, String roleKey, Sort sort) {
return dao.findByRoleNameLikeAndRoleKeyLikeAndDeletedAtIsNull(roleName, roleKey, sort)
.map(mapper::toDomain);
}
@Override
public Mono<Long> count() {
return dao.countByDeletedAtIsNull();
}
@Override
public Mono<Long> countByRoleNameLikeOrRoleKeyLike(String roleName, String roleKey) {
return dao.countByRoleNameLikeAndRoleKeyLikeAndDeletedAtIsNull(roleName, roleKey);
}
@Override
public Mono<PageResponse<SysRole>> findByQueryWithPagination(Query query, PageRequest pageRequest) {
Sort sort = Sort.by(
pageRequest.getOrder().equalsIgnoreCase("desc") ? Sort.Direction.DESC : Sort.Direction.ASC,
pageRequest.getSort());
org.springframework.data.domain.Pageable pageable = org.springframework.data.domain.PageRequest.of(
pageRequest.getPage(),
pageRequest.getSize(),
sort);
return template.select(SysRoleEntity.class)
.matching(query.with(pageable))
.all()
.collectList()
.zipWith(template.count(query, SysRoleEntity.class))
.map(tuple -> {
long totalCount = tuple.getT2();
int totalPages = (int) Math.ceil((double) totalCount / pageRequest.getSize());
return new PageResponse<SysRole>(
tuple.getT1().stream().map(mapper::toDomain).toList(),
totalPages,
totalCount,
pageRequest.getPage(),
pageRequest.getSize());
});
}
@Override
public Mono<SysRole> findByRoleName(String roleName) {
return dao.findByRoleNameAndDeletedAtIsNull(roleName)
.map(mapper::toDomain);
}
@Override
public Mono<Boolean> existsByRoleName(String roleName) {
return dao.existsByRoleNameAndDeletedAtIsNull(roleName);
}
@Override
public Mono<SysRole> updateRole(SysRole role) {
SysRoleEntity entity = mapper.toEntity(role);
return template.update(entity)
.thenReturn(role);
}
}
@@ -1,57 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.repository;
import cn.novalon.manage.sys.core.domain.SysUserMessage;
import cn.novalon.manage.sys.infrastructure.db.converter.SysUserMessageConverter;
import cn.novalon.manage.sys.infrastructure.db.dao.SysUserMessageDao;
import org.springframework.stereotype.Repository;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@Repository
public class SysUserMessageRepository {
private final SysUserMessageDao dao;
private final SysUserMessageConverter converter;
public SysUserMessageRepository(SysUserMessageDao dao, SysUserMessageConverter converter) {
this.dao = dao;
this.converter = converter;
}
public Mono<SysUserMessage> findById(Long id) {
return dao.findById(id)
.map(converter::toDomain);
}
public Mono<SysUserMessage> save(SysUserMessage sysUserMessage) {
return dao.save(converter.toEntity(sysUserMessage))
.map(converter::toDomain);
}
public Mono<Void> deleteById(Long id) {
return dao.deleteById(id);
}
public Flux<SysUserMessage> findByUserIdAndIsReadOrderByCreateTimeDesc(Long userId, String isRead) {
return dao.findByUserIdAndIsReadOrderByCreateTimeDesc(userId, isRead)
.map(converter::toDomain);
}
public Flux<SysUserMessage> findByUserIdOrderByCreateTimeDesc(Long userId) {
return dao.findByUserIdOrderByCreateTimeDesc(userId)
.map(converter::toDomain);
}
public Flux<SysUserMessage> findAll() {
return dao.findAll()
.map(converter::toDomain);
}
public Mono<Long> countByUserIdAndIsRead(Long userId, String isRead) {
return dao.countByUserIdAndIsRead(userId, isRead);
}
public Mono<Long> count() {
return dao.count();
}
}
@@ -1,184 +0,0 @@
package cn.novalon.manage.sys.infrastructure.db.repository;
import cn.novalon.manage.sys.core.domain.SysUser;
import cn.novalon.manage.sys.core.repository.ISysUserRepository;
import cn.novalon.manage.sys.dto.request.PageRequest;
import cn.novalon.manage.sys.dto.response.PageResponse;
import cn.novalon.manage.sys.infrastructure.db.mapper.SysUserMapper;
import cn.novalon.manage.sys.infrastructure.db.dao.SysUserDao;
import cn.novalon.manage.sys.infrastructure.db.entity.SysUserEntity;
import org.springframework.data.domain.Sort;
import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
import org.springframework.data.relational.core.query.Query;
import org.springframework.r2dbc.core.DatabaseClient;
import org.springframework.stereotype.Repository;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.time.LocalDateTime;
import java.util.List;
@Repository
public class SysUserRepository implements ISysUserRepository {
private final SysUserDao dao;
private final SysUserMapper mapper;
private final R2dbcEntityTemplate template;
private final DatabaseClient databaseClient;
public SysUserRepository(SysUserDao dao, SysUserMapper mapper,
R2dbcEntityTemplate template, DatabaseClient databaseClient) {
this.dao = dao;
this.mapper = mapper;
this.template = template;
this.databaseClient = databaseClient;
}
@Override
public Mono<SysUser> findByUsername(String username) {
return dao.findByUsernameAndDeletedAtIsNull(username)
.map(mapper::toDomain);
}
@Override
public Mono<SysUser> findById(Long id) {
return dao.findById(id)
.filter(entity -> entity.getDeletedAt() == null)
.map(mapper::toDomain);
}
@Override
public Mono<SysUser> findByIdIncludingDeleted(Long id) {
return dao.findById(id)
.map(mapper::toDomain);
}
@Override
public Mono<SysUser> save(SysUser sysUser) {
return dao.save(mapper.toEntity(sysUser))
.map(mapper::toDomain);
}
@Override
public Mono<Void> deleteById(Long id) {
return dao.findById(id)
.flatMap(entity -> {
entity.setDeletedAt(LocalDateTime.now());
return dao.save(entity);
})
.then();
}
@Override
public Flux<SysUser> findAll() {
return dao.findAll()
.map(mapper::toDomain);
}
@Override
public Flux<SysUser> findAll(Sort sort) {
return dao.findAll(sort)
.map(mapper::toDomain);
}
@Override
public Mono<Long> count() {
return dao.countByDeletedAtIsNull();
}
@Override
public Mono<PageResponse<SysUser>> findByQueryWithPagination(Query query, PageRequest pageRequest) {
Sort sort = Sort.by(
pageRequest.getOrder().equalsIgnoreCase("desc") ? Sort.Direction.DESC : Sort.Direction.ASC,
pageRequest.getSort());
org.springframework.data.domain.Pageable pageable = org.springframework.data.domain.PageRequest.of(
pageRequest.getPage(),
pageRequest.getSize(),
sort);
return template.select(SysUserEntity.class)
.matching(query.with(pageable))
.all()
.collectList()
.zipWith(template.count(query, SysUserEntity.class))
.map(tuple -> {
long totalCount = tuple.getT2();
int totalPages = (int) Math.ceil((double) totalCount / pageRequest.getSize());
return new PageResponse<SysUser>(
tuple.getT1().stream().map(mapper::toDomain).toList(),
totalPages,
totalCount,
pageRequest.getPage(),
pageRequest.getSize());
});
}
@Override
public Flux<SysUser> findByDeletedAtIsNull() {
return dao.findByDeletedAtIsNull()
.map(mapper::toDomain);
}
@Override
public Flux<SysUser> findByDeletedAtIsNull(Sort sort) {
return dao.findByDeletedAtIsNull(sort)
.map(mapper::toDomain);
}
@Override
public Mono<SysUser> findByEmail(String email) {
return dao.findByEmailAndDeletedAtIsNull(email)
.map(mapper::toDomain);
}
@Override
public Mono<Boolean> existsByUsername(String username) {
return dao.findByUsernameAndDeletedAtIsNull(username)
.map(user -> user != null)
.defaultIfEmpty(false);
}
@Override
public Mono<Boolean> existsByEmail(String email) {
return dao.findByEmailAndDeletedAtIsNull(email)
.map(user -> user != null)
.defaultIfEmpty(false);
}
@Override
public Mono<Void> logicalDeleteById(Long id) {
return databaseClient.sql("UPDATE users SET deleted_at = CURRENT_TIMESTAMP WHERE id = $1")
.bind("$1", id)
.fetch()
.rowsUpdated()
.then();
}
@Override
public Mono<Void> logicalDeleteByIds(List<Long> ids) {
return databaseClient.sql("UPDATE users SET deleted_at = CURRENT_TIMESTAMP WHERE id = ANY($1)")
.bind("$1", ids.toArray())
.fetch()
.rowsUpdated()
.then();
}
@Override
public Mono<Void> restoreById(Long id) {
return databaseClient.sql("UPDATE users SET deleted_at = NULL WHERE id = $1")
.bind("$1", id)
.fetch()
.rowsUpdated()
.then();
}
@Override
public Mono<Void> restoreByIds(List<Long> ids) {
return databaseClient.sql("UPDATE users SET deleted_at = NULL WHERE id = ANY($1)")
.bind("$1", ids.toArray())
.fetch()
.rowsUpdated()
.then();
}
}
@@ -1,6 +1,6 @@
package cn.novalon.manage.sys.security;
import cn.novalon.manage.sys.config.JwtProperties;
import cn.novalon.manage.common.config.JwtProperties;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;