mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 22:57:17 +08:00 
			
		
		
		
	refactor: 使用钩子方法优化部分增、删、改处理
This commit is contained in:
		| @@ -18,10 +18,8 @@ package top.charles7c.continew.admin.system.service.impl; | ||||
|  | ||||
| import cn.hutool.core.collection.CollUtil; | ||||
| import cn.hutool.core.util.ObjectUtil; | ||||
| import jakarta.annotation.Resource; | ||||
| import lombok.RequiredArgsConstructor; | ||||
| import org.springframework.stereotype.Service; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
| import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum; | ||||
| import top.charles7c.continew.admin.system.mapper.DeptMapper; | ||||
| import top.charles7c.continew.admin.system.model.entity.DeptDO; | ||||
| @@ -49,23 +47,20 @@ import java.util.Optional; | ||||
| @RequiredArgsConstructor | ||||
| public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptResp, DeptDetailResp, DeptQuery, DeptReq> implements DeptService { | ||||
|  | ||||
|     @Resource | ||||
|     private UserService userService; | ||||
|     private final UserService userService; | ||||
|     private final RoleDeptService roleDeptService; | ||||
|  | ||||
|     @Override | ||||
|     public Long add(DeptReq req) { | ||||
|     protected void beforeAdd(DeptReq req) { | ||||
|         String name = req.getName(); | ||||
|         boolean isExists = this.isNameExists(name, req.getParentId(), null); | ||||
|         CheckUtils.throwIf(isExists, "新增失败,[{}] 已存在", name); | ||||
|         req.setAncestors(this.getAncestors(req.getParentId())); | ||||
|         req.setStatus(DisEnableStatusEnum.DISABLE); | ||||
|         return super.add(req); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     @Transactional(rollbackFor = Exception.class) | ||||
|     public void update(DeptReq req, Long id) { | ||||
|     protected void beforeUpdate(DeptReq req, Long id) { | ||||
|         String name = req.getName(); | ||||
|         boolean isExists = this.isNameExists(name, req.getParentId(), id); | ||||
|         CheckUtils.throwIf(isExists, "修改失败,[{}] 已存在", name); | ||||
| @@ -97,12 +92,10 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptRes | ||||
|             // 更新子级的祖级列表 | ||||
|             this.updateChildrenAncestors(newAncestors, oldDept.getAncestors(), id); | ||||
|         } | ||||
|         super.update(req, id); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     @Transactional(rollbackFor = Exception.class) | ||||
|     public void delete(List<Long> ids) { | ||||
|     protected void beforeDelete(List<Long> ids) { | ||||
|         List<DeptDO> list = baseMapper.lambdaQuery() | ||||
|             .select(DeptDO::getName, DeptDO::getIsSystem) | ||||
|             .in(DeptDO::getId, ids) | ||||
| @@ -114,8 +107,6 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptRes | ||||
|         CheckUtils.throwIf(userService.countByDeptIds(ids) > 0, "所选部门存在用户关联,请解除关联后重试"); | ||||
|         // 删除角色和部门关联 | ||||
|         roleDeptService.deleteByDeptIds(ids); | ||||
|         // 删除部门 | ||||
|         super.delete(ids); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|   | ||||
| @@ -43,17 +43,15 @@ import java.util.List; | ||||
| public class DictItemServiceImpl extends BaseServiceImpl<DictItemMapper, DictItemDO, DictItemResp, DictItemDetailResp, DictItemQuery, DictItemReq> implements DictItemService { | ||||
|  | ||||
|     @Override | ||||
|     public Long add(DictItemReq req) { | ||||
|     protected void beforeAdd(DictItemReq req) { | ||||
|         String value = req.getValue(); | ||||
|         CheckUtils.throwIf(this.isValueExists(value, null, req.getDictId()), "新增失败,字典值 [{}] 已存在", value); | ||||
|         return super.add(req); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void update(DictItemReq req, Long id) { | ||||
|     protected void beforeUpdate(DictItemReq req, Long id) { | ||||
|         String value = req.getValue(); | ||||
|         CheckUtils.throwIf(this.isValueExists(value, id, req.getDictId()), "修改失败,字典值 [{}] 已存在", value); | ||||
|         super.update(req, id); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|   | ||||
| @@ -16,17 +16,9 @@ | ||||
|  | ||||
| package top.charles7c.continew.admin.system.service.impl; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| import java.util.Optional; | ||||
|  | ||||
| import jakarta.servlet.http.HttpServletResponse; | ||||
|  | ||||
| import lombok.RequiredArgsConstructor; | ||||
|  | ||||
| import org.springframework.stereotype.Service; | ||||
| import org.springframework.transaction.annotation.Transactional; | ||||
|  | ||||
| import top.charles7c.continew.admin.system.mapper.DictMapper; | ||||
| import top.charles7c.continew.admin.system.model.entity.DictDO; | ||||
| import top.charles7c.continew.admin.system.model.query.DictQuery; | ||||
| @@ -41,6 +33,10 @@ import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl; | ||||
| import top.charles7c.continew.starter.extension.crud.model.query.SortQuery; | ||||
| import top.charles7c.continew.starter.file.excel.util.ExcelUtils; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| import java.util.Optional; | ||||
|  | ||||
| /** | ||||
|  * 字典业务实现 | ||||
|  * | ||||
| @@ -54,16 +50,15 @@ public class DictServiceImpl extends BaseServiceImpl<DictMapper, DictDO, DictRes | ||||
|     private final DictItemService dictItemService; | ||||
|  | ||||
|     @Override | ||||
|     public Long add(DictReq req) { | ||||
|     protected void beforeAdd(DictReq req) { | ||||
|         String name = req.getName(); | ||||
|         CheckUtils.throwIf(this.isNameExists(name, null), "新增失败,[{}] 已存在", name); | ||||
|         String code = req.getCode(); | ||||
|         CheckUtils.throwIf(this.isCodeExists(code, null), "新增失败,[{}] 已存在", code); | ||||
|         return super.add(req); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void update(DictReq req, Long id) { | ||||
|     protected void beforeUpdate(DictReq req, Long id) { | ||||
|         String name = req.getName(); | ||||
|         CheckUtils.throwIf(this.isNameExists(name, id), "修改失败,[{}] 已存在", name); | ||||
|         String code = req.getCode(); | ||||
| @@ -72,12 +67,10 @@ public class DictServiceImpl extends BaseServiceImpl<DictMapper, DictDO, DictRes | ||||
|         if (oldDict.getIsSystem()) { | ||||
|             CheckUtils.throwIfNotEqual(req.getCode(), oldDict.getCode(), "[{}] 是系统内置字典,不允许修改字典编码", oldDict.getName()); | ||||
|         } | ||||
|         super.update(req, id); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     @Transactional(rollbackFor = Exception.class) | ||||
|     public void delete(List<Long> ids) { | ||||
|     protected void beforeDelete(List<Long> ids) { | ||||
|         List<DictDO> list = baseMapper.lambdaQuery() | ||||
|             .select(DictDO::getName, DictDO::getIsSystem) | ||||
|             .in(DictDO::getId, ids) | ||||
| @@ -86,7 +79,6 @@ public class DictServiceImpl extends BaseServiceImpl<DictMapper, DictDO, DictRes | ||||
|         CheckUtils.throwIf(isSystemData::isPresent, "所选字典 [{}] 是系统内置字典,不允许删除", isSystemData.orElseGet(DictDO::new) | ||||
|             .getName()); | ||||
|         dictItemService.deleteByDictIds(ids); | ||||
|         super.delete(ids); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|   | ||||
| @@ -62,7 +62,7 @@ public class FileServiceImpl extends BaseServiceImpl<FileMapper, FileDO, FileRes | ||||
|     private final FileStorageService fileStorageService; | ||||
|  | ||||
|     @Override | ||||
|     public void delete(List<Long> ids) { | ||||
|     protected void beforeDelete(List<Long> ids) { | ||||
|         List<FileDO> fileList = baseMapper.lambdaQuery().in(FileDO::getId, ids).list(); | ||||
|         Map<Long, List<FileDO>> fileListGroup = fileList.stream().collect(Collectors.groupingBy(FileDO::getStorageId)); | ||||
|         for (Map.Entry<Long, List<FileDO>> entry : fileListGroup.entrySet()) { | ||||
| @@ -72,7 +72,6 @@ public class FileServiceImpl extends BaseServiceImpl<FileMapper, FileDO, FileRes | ||||
|                 fileStorageService.delete(fileInfo); | ||||
|             } | ||||
|         } | ||||
|         super.delete(ids); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|   | ||||
| @@ -111,8 +111,7 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleRes | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     @Transactional(rollbackFor = Exception.class) | ||||
|     public void delete(List<Long> ids) { | ||||
|     protected void beforeDelete(List<Long> ids) { | ||||
|         List<RoleDO> list = baseMapper.lambdaQuery() | ||||
|             .select(RoleDO::getName, RoleDO::getIsSystem) | ||||
|             .in(RoleDO::getId, ids) | ||||
| @@ -125,8 +124,6 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleRes | ||||
|         roleMenuService.deleteByRoleIds(ids); | ||||
|         // 删除角色和部门关联 | ||||
|         roleDeptService.deleteByRoleIds(ids); | ||||
|         // 删除角色 | ||||
|         super.delete(ids); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|   | ||||
| @@ -16,25 +16,17 @@ | ||||
|  | ||||
| package top.charles7c.continew.admin.system.service.impl; | ||||
|  | ||||
| import java.util.Collections; | ||||
| import java.util.List; | ||||
| import java.util.concurrent.CopyOnWriteArrayList; | ||||
|  | ||||
| import cn.hutool.core.bean.BeanUtil; | ||||
| import cn.hutool.core.map.MapUtil; | ||||
| import cn.hutool.core.util.StrUtil; | ||||
| import cn.hutool.core.util.URLUtil; | ||||
| import jakarta.annotation.Resource; | ||||
|  | ||||
| import lombok.RequiredArgsConstructor; | ||||
|  | ||||
| import org.dromara.x.file.storage.core.FileStorageProperties; | ||||
| import org.dromara.x.file.storage.core.FileStorageService; | ||||
| import org.dromara.x.file.storage.core.FileStorageServiceBuilder; | ||||
| import org.dromara.x.file.storage.core.platform.FileStorage; | ||||
| import org.springframework.stereotype.Service; | ||||
|  | ||||
| import cn.hutool.core.bean.BeanUtil; | ||||
| import cn.hutool.core.map.MapUtil; | ||||
| import cn.hutool.core.util.StrUtil; | ||||
| import cn.hutool.core.util.URLUtil; | ||||
|  | ||||
| import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum; | ||||
| import top.charles7c.continew.admin.system.enums.StorageTypeEnum; | ||||
| import top.charles7c.continew.admin.system.mapper.StorageMapper; | ||||
| @@ -52,6 +44,10 @@ import top.charles7c.continew.starter.core.util.validate.CheckUtils; | ||||
| import top.charles7c.continew.starter.core.util.validate.ValidationUtils; | ||||
| import top.charles7c.continew.starter.extension.crud.base.BaseServiceImpl; | ||||
|  | ||||
| import java.util.Collections; | ||||
| import java.util.List; | ||||
| import java.util.concurrent.CopyOnWriteArrayList; | ||||
|  | ||||
| /** | ||||
|  * 存储库业务实现 | ||||
|  * | ||||
| @@ -67,17 +63,16 @@ public class StorageServiceImpl extends BaseServiceImpl<StorageMapper, StorageDO | ||||
|     private final FileStorageService fileStorageService; | ||||
|  | ||||
|     @Override | ||||
|     public Long add(StorageReq req) { | ||||
|     protected void beforeAdd(StorageReq req) { | ||||
|         CheckUtils.throwIf(Boolean.TRUE.equals(req.getIsDefault()) && this.isDefaultExists(null), "请先取消原有默认存储库"); | ||||
|         String code = req.getCode(); | ||||
|         CheckUtils.throwIf(this.isCodeExists(code, null), "新增失败,[{}] 已存在", code); | ||||
|         req.setStatus(DisEnableStatusEnum.ENABLE); | ||||
|         this.load(req); | ||||
|         return super.add(req); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void update(StorageReq req, Long id) { | ||||
|     protected void beforeUpdate(StorageReq req, Long id) { | ||||
|         String code = req.getCode(); | ||||
|         CheckUtils.throwIf(this.isCodeExists(code, id), "修改失败,[{}] 已存在", code); | ||||
|         DisEnableStatusEnum newStatus = req.getStatus(); | ||||
| @@ -95,18 +90,16 @@ public class StorageServiceImpl extends BaseServiceImpl<StorageMapper, StorageDO | ||||
|             CheckUtils.throwIf(!DisEnableStatusEnum.ENABLE.equals(oldStatus), "请先启用该存储库"); | ||||
|             CheckUtils.throwIf(this.isDefaultExists(id), "请先取消原有默认存储库"); | ||||
|         } | ||||
|         super.update(req, id); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void delete(List<Long> ids) { | ||||
|     protected void beforeDelete(List<Long> ids) { | ||||
|         CheckUtils.throwIf(fileService.countByStorageIds(ids) > 0, "所选存储库存在文件关联,请删除文件后重试"); | ||||
|         List<StorageDO> storageList = baseMapper.lambdaQuery().in(StorageDO::getId, ids).list(); | ||||
|         storageList.forEach(s -> { | ||||
|             CheckUtils.throwIfEqual(Boolean.TRUE, s.getIsDefault(), "[{}] 是默认存储库,不允许禁用", s.getName()); | ||||
|             this.unload(BeanUtil.copyProperties(s, StorageReq.class)); | ||||
|         }); | ||||
|         super.delete(ids); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|   | ||||
| @@ -81,17 +81,19 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     @Transactional(rollbackFor = Exception.class) | ||||
|     public Long add(UserReq req) { | ||||
|     protected void beforeAdd(UserReq req) { | ||||
|         String username = req.getUsername(); | ||||
|         CheckUtils.throwIf(this.isNameExists(username, null), "新增失败,[{}] 已存在", username); | ||||
|         String email = req.getEmail(); | ||||
|         CheckUtils.throwIf(StrUtil.isNotBlank(email) && this.isEmailExists(email, null), "新增失败,[{}] 已存在", email); | ||||
|         String phone = req.getPhone(); | ||||
|         CheckUtils.throwIf(StrUtil.isNotBlank(phone) && this.isPhoneExists(phone, null), "新增失败,[{}] 已存在", phone); | ||||
|         // 新增信息 | ||||
|         req.setStatus(DisEnableStatusEnum.ENABLE); | ||||
|         Long userId = super.add(req); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     protected void afterAdd(UserReq req, UserDO user) { | ||||
|         Long userId = user.getId(); | ||||
|         baseMapper.lambdaUpdate() | ||||
|             .set(UserDO::getPassword, SecureUtils.md5Salt(SysConstants.DEFAULT_PASSWORD, userId.toString())) | ||||
|             .set(UserDO::getPwdResetTime, LocalDateTime.now()) | ||||
| @@ -99,7 +101,6 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes | ||||
|             .update(); | ||||
|         // 保存用户和角色关联 | ||||
|         userRoleService.add(req.getRoleIds(), userId); | ||||
|         return userId; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|   | ||||
		Reference in New Issue
	
	Block a user