From 43001fca86f95fbea75a2ab38e0c3b1847b1717d Mon Sep 17 00:00:00 2001 From: s2042968 Date: Thu, 24 Apr 2025 13:53:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/service/EdFileRelationService.java | 7 ++++ .../service/FileTagRelationService.java | 9 +++++ .../manage/service/RolePermissionService.java | 13 +++++++ .../manage/service/UserRoleService.java | 11 ++++++ .../EdFileFavoriteServiceImpl.java | 10 +++-- .../serviceimpl/EdFileInfoServiceImpl.java | 28 +++++++++++++ .../EdFileRelationServiceImpl.java | 19 +++++++++ .../serviceimpl/EdTagLibraryServiceImpl.java | 18 ++++----- .../FileTagRelationServiceImpl.java | 20 ++++++++++ .../RolePermissionServiceImpl.java | 26 +++++++++++++ .../service/serviceimpl/RoleServiceImpl.java | 39 +++++-------------- .../serviceimpl/UserRoleServiceImpl.java | 29 ++++++++++++++ .../service/serviceimpl/UserServiceImpl.java | 11 ++++-- 13 files changed, 192 insertions(+), 48 deletions(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileRelationService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileRelationService.java index a1c9d6d..8f6627f 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileRelationService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileRelationService.java @@ -38,4 +38,11 @@ public interface EdFileRelationService extends IService { */ Boolean checkNameExist(CheckNameUniqueRequest checkNameUniqueRequest); + /** + * 逻辑删除文件关系 + * @param fileId 文件主键id + * @return + */ + boolean logicRemove (String fileId); + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/FileTagRelationService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/FileTagRelationService.java index d65df75..4d85374 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/FileTagRelationService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/FileTagRelationService.java @@ -34,4 +34,13 @@ public interface FileTagRelationService extends IService { */ List getFileIdsByTagIds(List tagIds); + /** + * 逻辑删除文件标签关系 + * + * @param fileId + * @param tagId + * @return + */ + boolean logicRemove(String fileId, String tagId); + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/RolePermissionService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/RolePermissionService.java index 16fe9da..f01cb95 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/RolePermissionService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/RolePermissionService.java @@ -1,9 +1,12 @@ package com.electromagnetic.industry.software.manage.service; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.IService; +import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; import com.electromagnetic.industry.software.manage.pojo.models.RolePermission; import com.electromagnetic.industry.software.manage.pojo.req.PublishedFileDTO; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -41,4 +44,14 @@ public interface RolePermissionService extends IService { * @param prjId */ void syncPermissionsAfterTreeUpdate(List files, String prjId); + + /** + * 逻辑删除 + * + * @param roleId + * @param fileId + * @return + */ + + boolean logicRemove (String roleId, String fileId); } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/UserRoleService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/UserRoleService.java index e635082..1119600 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/UserRoleService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/UserRoleService.java @@ -2,6 +2,17 @@ package com.electromagnetic.industry.software.manage.service; import com.baomidou.mybatisplus.extension.service.IService; import com.electromagnetic.industry.software.manage.pojo.models.UserRole; +import org.springframework.transaction.annotation.Transactional; public interface UserRoleService extends IService { + + /** + * 逻辑删除用户-角色关联关系 + * @param userId 用户ID(可选) + * @param roleId 角色ID(可选) + * @return 操作是否成功 + * @throws IllegalArgumentException 参数校验失败时抛出 + */ + boolean logicRemove (String userId, String roleId); + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileFavoriteServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileFavoriteServiceImpl.java index d1eca95..34bc5eb 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileFavoriteServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileFavoriteServiceImpl.java @@ -20,10 +20,14 @@ public class EdFileFavoriteServiceImpl extends ServiceImpl updateWrapper = Wrappers.lambdaUpdate(EdFileFavorite.class) - .eq(EdFileFavorite::getUserId, userId) - .eq(EdFileFavorite::getFileId, fileId) - .set(EdFileFavorite::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code); + .set(EdFileFavorite::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code) + .eq(userId != null, EdFileFavorite::getUserId, userId) + .eq(fileId != null, EdFileFavorite::getFileId, fileId) + .eq(EdFileFavorite::getEffectFlag, EffectFlagEnum.EFFECT.code); return update(updateWrapper); } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index 30504f3..6adfadf 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -40,6 +40,7 @@ import com.electromagnetic.industry.software.manage.pojo.resp.UploadRecordVO; import com.electromagnetic.industry.software.manage.service.*; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpHeaders; @@ -83,6 +84,8 @@ public class EdFileInfoServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(EdFileInfo::getFileId, fileId); + List fileInfos =this.list(queryWrapper); + + for (EdFileInfo file : fileInfos) { + String id = file.getId(); + // 逻辑删除 文件收藏关系 + fileFavoriteService.logicRemove(null, id); + // 逻辑删除 文件权限关系 + rolePermissionService.logicRemove(null, id); + // 逻辑删除 文件关联关系 + edFileRelationService.logicRemove(id); + } + // 逻辑删除 文件标签关系 + fileTagRelationService.logicRemove(fileId, null); + } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java index bcb7834..b2d8ab2 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java @@ -2,7 +2,9 @@ package com.electromagnetic.industry.software.manage.service.serviceimpl; import cn.hutool.core.lang.Assert; import cn.hutool.core.text.StrFormatter; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; @@ -177,6 +179,23 @@ public class EdFileRelationServiceImpl extends ServiceImpl 0; } + /** + * 逻辑删除文件关系 + * @param fileId 文件主键id + * @return + */ + @Override + public boolean logicRemove (String fileId) { + Assert.notNull(fileId, "参数不能为空"); + return this.update( new LambdaUpdateWrapper() + .set(EdFileRelation::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code) + .and(wrapper -> wrapper + .eq(EdFileRelation::getId1, fileId) + .or() + .eq(EdFileRelation::getId2, fileId)) + .eq(EdFileRelation::getEffectFlag, EffectFlagEnum.EFFECT.code)); + } + private List getEdges(String id) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdTagLibraryServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdTagLibraryServiceImpl.java index 027d3c5..c0f519b 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdTagLibraryServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdTagLibraryServiceImpl.java @@ -33,7 +33,8 @@ import java.util.stream.Collectors; public class EdTagLibraryServiceImpl extends ServiceImpl implements EdTagLibraryService { @Resource - FileTagRelationMapper fileTagRelationMapper; + FileTagRelationService fileTagRelationService; + /** * 新建标签组 @@ -208,11 +209,9 @@ public class EdTagLibraryServiceImpl extends ServiceImpl() + .set(FileTagRelation::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code) + .eq(fileId != null, FileTagRelation::getFileId, fileId) + .eq(tagId != null, FileTagRelation::getTagId, tagId) + .eq(FileTagRelation::getEffectFlag, EffectFlagEnum.EFFECT.code) + ); + } } \ No newline at end of file diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/RolePermissionServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/RolePermissionServiceImpl.java index b582427..3c7b6a4 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/RolePermissionServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/RolePermissionServiceImpl.java @@ -9,6 +9,7 @@ import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; import com.electromagnetic.industry.software.manage.mapper.RolePermissionMapper; import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; import com.electromagnetic.industry.software.manage.pojo.models.RolePermission; +import com.electromagnetic.industry.software.manage.pojo.models.UserRole; import com.electromagnetic.industry.software.manage.pojo.req.PublishedFileDTO; import com.electromagnetic.industry.software.manage.service.RolePermissionService; import jakarta.annotation.Resource; @@ -156,4 +157,29 @@ public class RolePermissionServiceImpl extends ServiceImpl() + .set(RolePermission::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code) + .eq(fileId != null, RolePermission::getFileId, fileId) + .eq(roleId != null, RolePermission::getRoleId, roleId) + .eq(RolePermission::getEffectFlag, EffectFlagEnum.EFFECT.code) + ); + } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/RoleServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/RoleServiceImpl.java index f9a25c2..19228da 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/RoleServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/RoleServiceImpl.java @@ -100,10 +100,8 @@ public class RoleServiceImpl extends ServiceImpl implements Ro .set(Role::getRoleName, roleDTO.getRoleName()) .set(Role::getRoleDesc, roleDTO.getRoleDesc()); this.update(updateWrapper); - // 失效角色关联的旧权限 - disableRolePermission(roleDTO.getRoleId()); - + rolePermissionService.logicRemove(roleDTO.getRoleId(), null); // 插入/激活新权限信息 List data = roleDTO.getData(); List list = flattenTree(data, roleDTO.getRoleId()); @@ -123,17 +121,18 @@ public class RoleServiceImpl extends ServiceImpl implements Ro @Override public Boolean deleteRole(String roleId) { - // 失效角色权限关联表 - disableRolePermission(roleId); - - // 失效用户角色关联表 - disableUserRole(roleId); - // 失效角色 LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(Role::getId, roleId) .set(Role::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code); - this.update(updateWrapper); + boolean isUpdated =this.update(updateWrapper); + + if (isUpdated) { + // 失效角色权限关联表 + rolePermissionService.logicRemove(roleId, null); + // 失效用户角色关联表 + userRoleService.logicRemove(null, roleId); + } UserThreadLocal.setSuccessInfo("", roleId, "删除了角色"); return true; @@ -393,25 +392,5 @@ public class RoleServiceImpl extends ServiceImpl implements Ro return infos; } - /** - * 失效角色权限关系 - */ - private void disableRolePermission(String roleId) { - // 失效旧权限信息 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(RolePermission::getRoleId, roleId); - List oldPermissions = rolePermissionService.list(queryWrapper); - rolePermissionService.disableOldPermissions(oldPermissions); - } - - /** - * 失效角色用户关系 - */ - private void disableUserRole(String roleId) { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(UserRole::getRoleId, roleId) - .set(UserRole::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code); - userRoleService.update(updateWrapper); - } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserRoleServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserRoleServiceImpl.java index 57d236e..5b159df 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserRoleServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserRoleServiceImpl.java @@ -1,11 +1,40 @@ package com.electromagnetic.industry.software.manage.service.serviceimpl; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; import com.electromagnetic.industry.software.manage.mapper.UserRoleMapper; import com.electromagnetic.industry.software.manage.pojo.models.UserRole; import com.electromagnetic.industry.software.manage.service.UserRoleService; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + @Service public class UserRoleServiceImpl extends ServiceImpl implements UserRoleService { + + /** + * 逻辑删除用户-角色关联关系 + * @param userId 用户ID(可选) + * @param roleId 角色ID(可选) + * @return 操作是否成功 + * @throws IllegalArgumentException 参数校验失败时抛出 + */ + @Transactional + @Override + public boolean logicRemove (String userId, String roleId) { + // 参数校验 + if (userId == null && roleId == null) { + throw new IllegalArgumentException("必须提供至少一个参数"); + } + // 执行逻辑删除 + return this.update( + new LambdaUpdateWrapper() + .set(UserRole::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code) + .eq(userId != null, UserRole::getUserId, userId) + .eq(roleId != null, UserRole::getRoleId, roleId) + .eq(UserRole::getEffectFlag, EffectFlagEnum.EFFECT.code) + ); + } } + diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java index 6cc6d18..5bec5a8 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/UserServiceImpl.java @@ -33,6 +33,7 @@ import com.electromagnetic.industry.software.manage.pojo.other.SingleUserRespons import com.electromagnetic.industry.software.manage.pojo.req.*; import com.electromagnetic.industry.software.manage.pojo.resp.UserLoginResponse; import com.electromagnetic.industry.software.manage.pojo.resp.UserSearchResponse; +import com.electromagnetic.industry.software.manage.service.EdFileFavoriteService; import com.electromagnetic.industry.software.manage.service.UserRoleService; import com.electromagnetic.industry.software.manage.service.UserService; import io.jsonwebtoken.Jwts; @@ -58,6 +59,8 @@ public class UserServiceImpl extends ServiceImpl implements Us private UserRoleService userRoleService; @Resource private RoleMapper roleMapper; + @Resource + private EdFileFavoriteService edFileFavoriteService; /** * 用户登录 @@ -272,11 +275,11 @@ public class UserServiceImpl extends ServiceImpl implements Us .eq(User::getId, userId) .set(User::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code)); - // 2. 级联失效用户角色关系 if (success) { - userRoleService.update(new LambdaUpdateWrapper() - .eq(UserRole::getUserId, userId) - .set(UserRole::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code)); + // 级联失效用户角色关系 + userRoleService.logicRemove(userId, null); + // 级联失效用户文件收藏关系 + edFileFavoriteService.logicRemove(userId, null); } UserThreadLocal.setSuccessInfo("", "", StrFormatter.format("删除了用户 {} ", user.getUserName()));