修复:删除部门及角色时,新增检测是否存在关联用户
This commit is contained in:
parent
68a1da687f
commit
fb740f2938
@ -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();
|
||||||
|
Loading…
Reference in New Issue
Block a user