From 03d3ebdf05f2f95c68b7e25c1e4d5b46d373ee52 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 15 Jun 2025 18:43:50 +0800 Subject: [PATCH] =?UTF-8?q?review=EF=BC=9A=E3=80=90INFRA=20=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E8=AE=BE=E6=96=BD=E3=80=91=E6=89=B9=E9=87=8F=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mysql/codegen/CodegenColumnMapper.java | 7 +++- .../service/codegen/CodegenServiceImpl.java | 12 +------ .../service/config/ConfigServiceImpl.java | 15 ++------- .../db/DataSourceConfigServiceImpl.java | 7 ---- .../service/file/FileConfigServiceImpl.java | 16 ++-------- .../infra/service/file/FileServiceImpl.java | 32 +++++-------------- .../infra/service/job/JobServiceImpl.java | 11 +------ .../system/service/dept/PostServiceImpl.java | 1 - .../service/dict/DictDataServiceImpl.java | 7 ---- .../service/dict/DictTypeServiceImpl.java | 14 +++----- .../service/permission/MenuServiceImpl.java | 15 +++------ .../service/permission/RoleServiceImpl.java | 5 +-- 12 files changed, 30 insertions(+), 112 deletions(-) diff --git a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/codegen/CodegenColumnMapper.java b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/codegen/CodegenColumnMapper.java index ea5a9bb63..28a705ffe 100644 --- a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/codegen/CodegenColumnMapper.java +++ b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/codegen/CodegenColumnMapper.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.infra.dal.dataobject.codegen.CodegenColumnDO; import org.apache.ibatis.annotations.Mapper; +import java.util.Collection; import java.util.List; @Mapper @@ -17,8 +18,12 @@ public interface CodegenColumnMapper extends BaseMapperX { } default void deleteListByTableId(Long tableId) { + delete(CodegenColumnDO::getTableId, tableId); + } + + default void deleteListByTableId(Collection tableIds) { delete(new LambdaQueryWrapperX() - .eq(CodegenColumnDO::getTableId, tableId)); + .in(CodegenColumnDO::getTableId, tableIds)); } } diff --git a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/CodegenServiceImpl.java b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/CodegenServiceImpl.java index adeb41734..01efb65ca 100644 --- a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/CodegenServiceImpl.java +++ b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/CodegenServiceImpl.java @@ -225,20 +225,10 @@ public class CodegenServiceImpl implements CodegenService { @Override @Transactional(rollbackFor = Exception.class) public void deleteCodegenList(List tableIds) { - if (CollUtil.isEmpty(tableIds)) { - return; - } - - // 校验是否都存在 - List tables = codegenTableMapper.selectByIds(tableIds); - if (tables.size() != tableIds.size()) { - throw exception(CODEGEN_TABLE_NOT_EXISTS); - } - // 批量删除 table 表定义 codegenTableMapper.deleteByIds(tableIds); // 批量删除 column 字段定义 - tableIds.forEach(tableId -> codegenColumnMapper.deleteListByTableId(tableId)); + codegenColumnMapper.deleteListByTableId(tableIds); } @Override diff --git a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java index 14b93654c..d9005802c 100644 --- a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java +++ b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java @@ -1,6 +1,5 @@ package cn.iocoder.yudao.module.infra.service.config; -import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigPageReqVO; import cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigSaveReqVO; @@ -68,21 +67,13 @@ public class ConfigServiceImpl implements ConfigService { @Override public void deleteConfigList(List ids) { - if (CollUtil.isEmpty(ids)) { - return; - } - // 校验配置存在 - List configs = configMapper.selectByIds(ids); - if (configs.size() != ids.size()) { - throw exception(CONFIG_NOT_EXISTS); - } - // 校验是否有内置配置 - for (ConfigDO config : configs) { + List configs = configMapper.selectByIds(ids); + configs.forEach(config -> { if (ConfigTypeEnum.SYSTEM.getType().equals(config.getType())) { throw exception(CONFIG_CAN_NOT_DELETE_SYSTEM_TYPE); } - } + }); // 批量删除 configMapper.deleteByIds(ids); diff --git a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigServiceImpl.java b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigServiceImpl.java index 254176079..b39e21c40 100755 --- a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigServiceImpl.java +++ b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigServiceImpl.java @@ -1,6 +1,5 @@ package cn.iocoder.yudao.module.infra.service.db; -import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.mybatis.core.util.JdbcUtils; import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigSaveReqVO; @@ -66,12 +65,6 @@ public class DataSourceConfigServiceImpl implements DataSourceConfigService { @Override public void deleteDataSourceConfigList(List ids) { - if (CollUtil.isEmpty(ids)) { - return; - } - // 校验存在 - ids.forEach(this::validateDataSourceConfigExists); - // 批量删除 dataSourceConfigMapper.deleteByIds(ids); } diff --git a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileConfigServiceImpl.java b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileConfigServiceImpl.java index f3347d362..4e3bf8004 100755 --- a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileConfigServiceImpl.java +++ b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileConfigServiceImpl.java @@ -1,6 +1,5 @@ package cn.iocoder.yudao.module.infra.service.file; -import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.resource.ResourceUtil; import cn.hutool.core.util.IdUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -138,17 +137,8 @@ public class FileConfigServiceImpl implements FileConfigService { @Override public void deleteFileConfigList(List ids) { - if (CollUtil.isEmpty(ids)) { - return; - } - - // 校验存在 - List configs = fileConfigMapper.selectByIds(ids); - if (configs.size() != ids.size()) { - throw exception(FILE_CONFIG_NOT_EXISTS); - } - // 校验是否有主配置 + List configs = fileConfigMapper.selectByIds(ids); for (FileConfigDO config : configs) { if (Boolean.TRUE.equals(config.getMaster())) { throw exception(FILE_CONFIG_DELETE_FAIL_MASTER); @@ -159,9 +149,7 @@ public class FileConfigServiceImpl implements FileConfigService { fileConfigMapper.deleteByIds(ids); // 清空缓存 - for (Long id : ids) { - clearCache(id, null); - } + ids.forEach(id -> clearCache(id, null)); } /** diff --git a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java index 822be3fe9..98447fb37 100644 --- a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java +++ b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java @@ -1,6 +1,5 @@ package cn.iocoder.yudao.module.infra.service.file; -import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.Assert; @@ -22,8 +21,6 @@ import lombok.SneakyThrows; import org.springframework.stereotype.Service; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; import static cn.hutool.core.date.DatePattern.PURE_DATE_PATTERN; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -162,29 +159,16 @@ public class FileServiceImpl implements FileService { } @Override - public void deleteFileList(List ids) throws Exception { - if (CollUtil.isEmpty(ids)) { - return; - } - - // 校验存在 + @SneakyThrows + public void deleteFileList(List ids) { + // 删除文件 List files = fileMapper.selectByIds(ids); - if (files.size() != ids.size()) { - throw exception(FILE_NOT_EXISTS); - } - - // 按照配置分组,批量删除 - Map> configFiles = files.stream() - .collect(Collectors.groupingBy(FileDO::getConfigId)); - for (Map.Entry> entry : configFiles.entrySet()) { + for (FileDO file : files) { // 获取客户端 - FileClient client = fileConfigService.getFileClient(entry.getKey()); - Assert.notNull(client, "客户端({}) 不能为空", entry.getKey()); - - // 批量删除文件 - for (FileDO file : entry.getValue()) { - client.delete(file.getPath()); - } + FileClient client = fileConfigService.getFileClient(file.getConfigId()); + Assert.notNull(client, "客户端({}) 不能为空", file.getPath()); + // 删除文件 + client.delete(file.getPath()); } // 删除记录 diff --git a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/job/JobServiceImpl.java b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/job/JobServiceImpl.java index 85ea76a8c..10debe7f7 100644 --- a/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/job/JobServiceImpl.java +++ b/yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/job/JobServiceImpl.java @@ -172,17 +172,8 @@ public class JobServiceImpl implements JobService { @Override @Transactional(rollbackFor = Exception.class) public void deleteJobList(List ids) throws SchedulerException { - if (ids == null || ids.isEmpty()) { - return; - } - - // 校验存在 - List jobs = jobMapper.selectByIds(ids); - if (jobs.size() != ids.size()) { - throw exception(JOB_NOT_EXISTS); - } - // 批量删除 + List jobs = jobMapper.selectByIds(ids); jobMapper.deleteByIds(ids); // 删除 Job 到 Quartz 中 diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/dept/PostServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/dept/PostServiceImpl.java index aa5619080..c90308a11 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/dept/PostServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/dept/PostServiceImpl.java @@ -64,7 +64,6 @@ public class PostServiceImpl implements PostService { @Override public void deletePostList(List ids) { - // 删除岗位 postMapper.deleteByIds(ids); } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictDataServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictDataServiceImpl.java index 9248d2043..8ff9d26d9 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictDataServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictDataServiceImpl.java @@ -100,13 +100,6 @@ public class DictDataServiceImpl implements DictDataService { @Override public void deleteDictDataList(List ids) { - if (CollUtil.isEmpty(ids)) { - return; - } - // 校验是否存在 - ids.forEach(this::validateDictDataExists); - - // 批量删除字典数据 dictDataMapper.deleteByIds(ids); } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictTypeServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictTypeServiceImpl.java index 953ed5abf..1da442ea8 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictTypeServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictTypeServiceImpl.java @@ -89,21 +89,15 @@ public class DictTypeServiceImpl implements DictTypeService { @Override public void deleteDictTypeList(List ids) { - if (ids == null || ids.isEmpty()) { - return; - } - // 校验是否存在 - ids.forEach(this::validateDictTypeExists); - - // 校验是否有字典数据 + // 1. 校验是否有字典数据 List dictTypes = dictTypeMapper.selectByIds(ids); - for (DictTypeDO dictType : dictTypes) { + dictTypes.forEach(dictType -> { if (dictDataService.getDictDataCountByDictType(dictType.getType()) > 0) { throw exception(DICT_TYPE_HAS_CHILDREN); } - } + }); - // 批量删除字典类型 + // 2. 批量删除字典类型 LocalDateTime now = LocalDateTime.now(); ids.forEach(id -> dictTypeMapper.updateToDelete(id, now)); } diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/permission/MenuServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/permission/MenuServiceImpl.java index e79c3afa1..0d7536a1a 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/permission/MenuServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/permission/MenuServiceImpl.java @@ -106,22 +106,15 @@ public class MenuServiceImpl implements MenuService { @Override @Transactional(rollbackFor = Exception.class) - @CacheEvict(value = RedisKeyConstants.PERMISSION_MENU_ID_LIST, allEntries = true) + @CacheEvict(value = RedisKeyConstants.PERMISSION_MENU_ID_LIST, + allEntries = true) // allEntries 清空所有缓存,因为 Spring Cache 不支持按照 ids 批量删除 public void deleteMenuList(List ids) { - if (CollUtil.isEmpty(ids)) { - return; - } // 校验是否还有子菜单 - for (Long id : ids) { + ids.forEach(id -> { if (menuMapper.selectCountByParentId(id) > 0) { throw exception(MENU_EXISTS_CHILDREN); } - } - // 校验删除的菜单是否存在 - List menus = menuMapper.selectByIds(ids); - if (menus.size() != ids.size()) { - throw exception(MENU_NOT_EXISTS); - } + }); // 标记删除 menuMapper.deleteByIds(ids); diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java index 7a60d7819..576739ad5 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java @@ -125,10 +125,7 @@ public class RoleServiceImpl implements RoleService { @Override @Transactional(rollbackFor = Exception.class) public void deleteRoleList(List ids) { - if (CollUtil.isEmpty(ids)) { - return; - } - // 1. 校验是否可以更新 + // 1. 校验是否可以删除 ids.forEach(this::validateRoleForUpdate); // 2.1 标记删除