mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 22:57:17 +08:00 
			
		
		
		
	修复:删除部门及角色时,新增检测是否存在关联用户
This commit is contained in:
		| @@ -0,0 +1,29 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |  * you may not use this file except in compliance with the License. | ||||||
|  |  * You may obtain a copy of the License at | ||||||
|  |  * | ||||||
|  |  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  |  * | ||||||
|  |  * Unless required by applicable law or agreed to in writing, software | ||||||
|  |  * distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |  * See the License for the specific language governing permissions and | ||||||
|  |  * limitations under the License. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | package top.charles7c.cnadmin.system.mapper; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||||||
|  |  | ||||||
|  | import top.charles7c.cnadmin.system.model.entity.UserRoleDO; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 用户和角色 Mapper | ||||||
|  |  * | ||||||
|  |  * @author Charles7c | ||||||
|  |  * @since 2023/2/13 23:13 | ||||||
|  |  */ | ||||||
|  | public interface UserRoleMapper extends BaseMapper<UserRoleDO> {} | ||||||
| @@ -0,0 +1,46 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |  * you may not use this file except in compliance with the License. | ||||||
|  |  * You may obtain a copy of the License at | ||||||
|  |  * | ||||||
|  |  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  |  * | ||||||
|  |  * Unless required by applicable law or agreed to in writing, software | ||||||
|  |  * distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |  * See the License for the specific language governing permissions and | ||||||
|  |  * limitations under the License. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | package top.charles7c.cnadmin.system.model.entity; | ||||||
|  |  | ||||||
|  | import java.io.Serializable; | ||||||
|  |  | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableName; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 用户和角色实体 | ||||||
|  |  * | ||||||
|  |  * @author Charles7c | ||||||
|  |  * @since 2023/2/13 23:13 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @TableName("sys_user_role") | ||||||
|  | public class UserRoleDO implements Serializable { | ||||||
|  |  | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 用户 ID | ||||||
|  |      */ | ||||||
|  |     private Long userId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 角色 ID | ||||||
|  |      */ | ||||||
|  |     private Long roleId; | ||||||
|  | } | ||||||
| @@ -16,6 +16,8 @@ | |||||||
|  |  | ||||||
| package top.charles7c.cnadmin.system.service; | package top.charles7c.cnadmin.system.service; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| import org.springframework.web.multipart.MultipartFile; | import org.springframework.web.multipart.MultipartFile; | ||||||
|  |  | ||||||
| import top.charles7c.cnadmin.system.model.entity.UserDO; | import top.charles7c.cnadmin.system.model.entity.UserDO; | ||||||
| @@ -88,4 +90,22 @@ public interface UserService { | |||||||
|      * @return 用户信息 |      * @return 用户信息 | ||||||
|      */ |      */ | ||||||
|     UserDO getById(Long userId); |     UserDO getById(Long userId); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 根据部门 ID 列表查询 | ||||||
|  |      * | ||||||
|  |      * @param deptIds | ||||||
|  |      *            部门 ID 列表 | ||||||
|  |      * @return 用户数量 | ||||||
|  |      */ | ||||||
|  |     Long countByDeptIds(List<Long> deptIds); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 根据角色 ID 列表查询 | ||||||
|  |      * | ||||||
|  |      * @param roleIds | ||||||
|  |      *            角色 ID 列表 | ||||||
|  |      * @return 用户数量 | ||||||
|  |      */ | ||||||
|  |     Long countByRoleIds(List<Long> roleIds); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -43,6 +43,7 @@ import top.charles7c.cnadmin.system.model.request.DeptRequest; | |||||||
| import top.charles7c.cnadmin.system.model.vo.DeptDetailVO; | import top.charles7c.cnadmin.system.model.vo.DeptDetailVO; | ||||||
| import top.charles7c.cnadmin.system.model.vo.DeptVO; | import top.charles7c.cnadmin.system.model.vo.DeptVO; | ||||||
| import top.charles7c.cnadmin.system.service.DeptService; | import top.charles7c.cnadmin.system.service.DeptService; | ||||||
|  | import top.charles7c.cnadmin.system.service.UserService; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 部门业务实现类 |  * 部门业务实现类 | ||||||
| @@ -55,6 +56,8 @@ import top.charles7c.cnadmin.system.service.DeptService; | |||||||
| public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO, DeptDetailVO, DeptQuery, DeptRequest> | public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO, DeptDetailVO, DeptQuery, DeptRequest> | ||||||
|     implements DeptService { |     implements DeptService { | ||||||
|  |  | ||||||
|  |     private final UserService userService; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     @Transactional(rollbackFor = Exception.class) |     @Transactional(rollbackFor = Exception.class) | ||||||
|     public Long create(DeptRequest request) { |     public Long create(DeptRequest request) { | ||||||
| @@ -80,6 +83,7 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO, | |||||||
|     @Override |     @Override | ||||||
|     @Transactional(rollbackFor = Exception.class) |     @Transactional(rollbackFor = Exception.class) | ||||||
|     public void delete(List<Long> ids) { |     public void delete(List<Long> ids) { | ||||||
|  |         CheckUtils.throwIf(() -> userService.countByDeptIds(ids) > 0, "所选部门存在用户关联,请解除关联后重试"); | ||||||
|         super.delete(ids); |         super.delete(ids); | ||||||
|         baseMapper.delete(Wrappers.<DeptDO>lambdaQuery().in(DeptDO::getParentId, ids)); |         baseMapper.delete(Wrappers.<DeptDO>lambdaQuery().in(DeptDO::getParentId, ids)); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -16,6 +16,8 @@ | |||||||
|  |  | ||||||
| package top.charles7c.cnadmin.system.service.impl; | package top.charles7c.cnadmin.system.service.impl; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||||
|  |  | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| @@ -33,6 +35,7 @@ import top.charles7c.cnadmin.system.model.request.RoleRequest; | |||||||
| import top.charles7c.cnadmin.system.model.vo.RoleDetailVO; | import top.charles7c.cnadmin.system.model.vo.RoleDetailVO; | ||||||
| import top.charles7c.cnadmin.system.model.vo.RoleVO; | import top.charles7c.cnadmin.system.model.vo.RoleVO; | ||||||
| import top.charles7c.cnadmin.system.service.RoleService; | import top.charles7c.cnadmin.system.service.RoleService; | ||||||
|  | import top.charles7c.cnadmin.system.service.UserService; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 角色业务实现类 |  * 角色业务实现类 | ||||||
| @@ -45,6 +48,8 @@ import top.charles7c.cnadmin.system.service.RoleService; | |||||||
| public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO, RoleDetailVO, RoleQuery, RoleRequest> | public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO, RoleDetailVO, RoleQuery, RoleRequest> | ||||||
|     implements RoleService { |     implements RoleService { | ||||||
|  |  | ||||||
|  |     private final UserService userService; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     @Transactional(rollbackFor = Exception.class) |     @Transactional(rollbackFor = Exception.class) | ||||||
|     public Long create(RoleRequest request) { |     public Long create(RoleRequest request) { | ||||||
| @@ -67,6 +72,13 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO, | |||||||
|         super.update(request); |         super.update(request); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     @Transactional(rollbackFor = Exception.class) | ||||||
|  |     public void delete(List<Long> ids) { | ||||||
|  |         CheckUtils.throwIf(() -> userService.countByRoleIds(ids) > 0, "所选角色存在用户关联,请解除关联后重试"); | ||||||
|  |         super.delete(ids); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 检查名称是否存在 |      * 检查名称是否存在 | ||||||
|      * |      * | ||||||
|   | |||||||
| @@ -18,6 +18,7 @@ package top.charles7c.cnadmin.system.service.impl; | |||||||
|  |  | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||||
|  |  | ||||||
| @@ -42,7 +43,9 @@ import top.charles7c.cnadmin.common.util.SecureUtils; | |||||||
| import top.charles7c.cnadmin.common.util.helper.LoginHelper; | import top.charles7c.cnadmin.common.util.helper.LoginHelper; | ||||||
| import top.charles7c.cnadmin.common.util.validate.CheckUtils; | import top.charles7c.cnadmin.common.util.validate.CheckUtils; | ||||||
| import top.charles7c.cnadmin.system.mapper.UserMapper; | import top.charles7c.cnadmin.system.mapper.UserMapper; | ||||||
|  | import top.charles7c.cnadmin.system.mapper.UserRoleMapper; | ||||||
| import top.charles7c.cnadmin.system.model.entity.UserDO; | import top.charles7c.cnadmin.system.model.entity.UserDO; | ||||||
|  | import top.charles7c.cnadmin.system.model.entity.UserRoleDO; | ||||||
| import top.charles7c.cnadmin.system.service.UserService; | import top.charles7c.cnadmin.system.service.UserService; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -56,6 +59,7 @@ import top.charles7c.cnadmin.system.service.UserService; | |||||||
| public class UserServiceImpl implements UserService, CommonUserService { | public class UserServiceImpl implements UserService, CommonUserService { | ||||||
|  |  | ||||||
|     private final UserMapper userMapper; |     private final UserMapper userMapper; | ||||||
|  |     private final UserRoleMapper userRoleMapper; | ||||||
|     private final LocalStorageProperties localStorageProperties; |     private final LocalStorageProperties localStorageProperties; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
| @@ -157,6 +161,16 @@ public class UserServiceImpl implements UserService, CommonUserService { | |||||||
|         return userDO; |         return userDO; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public Long countByDeptIds(List<Long> deptIds) { | ||||||
|  |         return userMapper.selectCount(Wrappers.<UserDO>lambdaQuery().in(UserDO::getDeptId, deptIds)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public Long countByRoleIds(List<Long> roleIds) { | ||||||
|  |         return userRoleMapper.selectCount(Wrappers.<UserRoleDO>lambdaQuery().in(UserRoleDO::getRoleId, roleIds)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public String getNicknameById(Long userId) { |     public String getNicknameById(Long userId) { | ||||||
|         return this.getById(userId).getNickname(); |         return this.getById(userId).getNickname(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user