feat(新增): 完善角色,权限,用户,路由,部门删除功能

This commit is contained in:
Bunny 2024-10-05 23:42:53 +08:00
parent 6e58502586
commit dc772bd747
14 changed files with 179 additions and 12 deletions

View File

@ -4,6 +4,8 @@ import cn.bunny.dao.entity.system.RolePower;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/** /**
* <p> * <p>
* Mapper 接口 * Mapper 接口
@ -15,4 +17,17 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface RolePowerMapper extends BaseMapper<RolePower> { public interface RolePowerMapper extends BaseMapper<RolePower> {
/**
* * 根据权限id列表删除角色权限相关
*
* @param powerIds 权限id列表
*/
void deleteBatchPowerIdsWithPhysics(List<Long> powerIds);
/**
* * 根据角色id删除角色权限
*
* @param roleIds 角色
*/
void deleteBatchRoleIdsWithPhysics(List<Long> roleIds);
} }

View File

@ -4,6 +4,8 @@ import cn.bunny.dao.entity.system.RouterRole;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/** /**
* <p> * <p>
* Mapper 接口 * Mapper 接口
@ -18,7 +20,14 @@ public interface RouterRoleMapper extends BaseMapper<RouterRole> {
/** /**
* 根据路由id删除所有角色和路由信息 * 根据路由id删除所有角色和路由信息
* *
* @param routerId 路由id * @param routerIds 路由id
*/ */
void deleteBatchIdsWithPhysicsByRouterId(Long routerId); void deleteBatchIdsByRouterIdsWithPhysics(List<Long> routerIds);
/**
* * 根据角色id列表删除角色和路由相关
*
* @param roleIds 角色id列表
*/
void deleteBatchIdsByRoleIdsWithPhysics(List<Long> roleIds);
} }

View File

@ -4,6 +4,8 @@ import cn.bunny.dao.entity.system.UserDept;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/** /**
* <p> * <p>
* 部门用户关系表 Mapper 接口 * 部门用户关系表 Mapper 接口
@ -15,4 +17,17 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface UserDeptMapper extends BaseMapper<UserDept> { public interface UserDeptMapper extends BaseMapper<UserDept> {
/**
* * 根据部门id删除部门用户
*
* @param deptIds 部门id列表
*/
void deleteBatchIdsByDeptIdWithPhysics(List<Long> deptIds);
/**
* * 根据用户id删除用户部门
*
* @param userIds 用户id列表
*/
void deleteBatchIdsByUserIdWithPhysics(List<Long> userIds);
} }

View File

@ -4,6 +4,8 @@ import cn.bunny.dao.entity.system.UserRole;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/** /**
* <p> * <p>
* Mapper 接口 * Mapper 接口
@ -20,5 +22,12 @@ public interface UserRoleMapper extends BaseMapper<UserRole> {
* *
* @param userId 用户id * @param userId 用户id
*/ */
void deleteBatchIdsWithPhysicsByUserId(Long userId); void deleteBatchIdsByUserIdsWithPhysics(List<Long> userId);
/**
* * 根据角色id删除用户和角色
*
* @param roleIds 角色id列表
*/
void deleteBatchIdsByRoleIdsWithPhysics(List<Long> roleIds);
} }

View File

@ -7,13 +7,16 @@ import cn.bunny.dao.entity.system.Dept;
import cn.bunny.dao.pojo.result.PageResult; import cn.bunny.dao.pojo.result.PageResult;
import cn.bunny.dao.vo.system.dept.DeptVo; import cn.bunny.dao.vo.system.dept.DeptVo;
import cn.bunny.services.mapper.DeptMapper; import cn.bunny.services.mapper.DeptMapper;
import cn.bunny.services.mapper.UserDeptMapper;
import cn.bunny.services.service.DeptService; import cn.bunny.services.service.DeptService;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
@ -26,8 +29,12 @@ import java.util.List;
* @since 2024-10-04 10:39:08 * @since 2024-10-04 10:39:08
*/ */
@Service @Service
@Transactional
public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements DeptService { public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements DeptService {
@Autowired
private UserDeptMapper userDeptMapper;
/** /**
* * 部门 服务实现类 * * 部门 服务实现类
* *
@ -87,6 +94,9 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements De
*/ */
@Override @Override
public void deleteDept(List<Long> ids) { public void deleteDept(List<Long> ids) {
// 删除当前部门
baseMapper.deleteBatchIdsWithPhysics(ids); baseMapper.deleteBatchIdsWithPhysics(ids);
// 删除用户部门关联
userDeptMapper.deleteBatchIdsByDeptIdWithPhysics(ids);
} }
} }

View File

@ -8,12 +8,14 @@ import cn.bunny.dao.pojo.result.PageResult;
import cn.bunny.dao.vo.system.rolePower.PowerVo; import cn.bunny.dao.vo.system.rolePower.PowerVo;
import cn.bunny.services.factory.PowerFactory; import cn.bunny.services.factory.PowerFactory;
import cn.bunny.services.mapper.PowerMapper; import cn.bunny.services.mapper.PowerMapper;
import cn.bunny.services.mapper.RolePowerMapper;
import cn.bunny.services.service.PowerService; import cn.bunny.services.service.PowerService;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
@ -30,11 +32,11 @@ import java.util.List;
@Service @Service
public class PowerServiceImpl extends ServiceImpl<PowerMapper, Power> implements PowerService { public class PowerServiceImpl extends ServiceImpl<PowerMapper, Power> implements PowerService {
private final PowerFactory powerFactory; @Autowired
private PowerFactory powerFactory;
public PowerServiceImpl(PowerFactory powerFactory) { @Autowired
this.powerFactory = powerFactory; private RolePowerMapper rolePowerMapper;
}
/** /**
* * 权限 服务实现类 * * 权限 服务实现类
@ -95,7 +97,11 @@ public class PowerServiceImpl extends ServiceImpl<PowerMapper, Power> implements
*/ */
@Override @Override
public void deletePower(List<Long> ids) { public void deletePower(List<Long> ids) {
// 删除权限
baseMapper.deleteBatchIdsWithPhysics(ids); baseMapper.deleteBatchIdsWithPhysics(ids);
// 删除角色部门相关
rolePowerMapper.deleteBatchPowerIdsWithPhysics(ids);
} }
/** /**

View File

@ -7,12 +7,16 @@ import cn.bunny.dao.entity.system.Role;
import cn.bunny.dao.pojo.result.PageResult; import cn.bunny.dao.pojo.result.PageResult;
import cn.bunny.dao.vo.system.rolePower.RoleVo; import cn.bunny.dao.vo.system.rolePower.RoleVo;
import cn.bunny.services.mapper.RoleMapper; import cn.bunny.services.mapper.RoleMapper;
import cn.bunny.services.mapper.RolePowerMapper;
import cn.bunny.services.mapper.RouterRoleMapper;
import cn.bunny.services.mapper.UserRoleMapper;
import cn.bunny.services.service.RoleService; import cn.bunny.services.service.RoleService;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
@ -28,6 +32,16 @@ import java.util.List;
@Service @Service
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService { public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService {
@Autowired
private UserRoleMapper userRoleMapper;
@Autowired
private RolePowerMapper rolePowerMapper;
@Autowired
private RouterRoleMapper routerRoleMapper;
/** /**
* * 角色 服务实现类 * * 角色 服务实现类
* *
@ -87,7 +101,18 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
*/ */
@Override @Override
public void deleteRole(List<Long> ids) { public void deleteRole(List<Long> ids) {
// 删除角色
baseMapper.deleteBatchIdsWithPhysics(ids); baseMapper.deleteBatchIdsWithPhysics(ids);
// 删除角色权限相关
rolePowerMapper.deleteBatchRoleIdsWithPhysics(ids);
// 删除角色和用户相关
userRoleMapper.deleteBatchIdsByRoleIdsWithPhysics(ids);
// 删除角色和路由相关
routerRoleMapper.deleteBatchIdsByRoleIdsWithPhysics(ids);
} }
/** /**

View File

@ -46,7 +46,7 @@ public class RouterRoleServiceImpl extends ServiceImpl<RouterRoleMapper, RouterR
List<Long> roleIds = dto.getRoleIds(); List<Long> roleIds = dto.getRoleIds();
// 删除这个用户下所有已经分配好的角色内容 // 删除这个用户下所有已经分配好的角色内容
baseMapper.deleteBatchIdsWithPhysicsByRouterId(routerId); baseMapper.deleteBatchIdsByRouterIdsWithPhysics(List.of(routerId));
// 保存分配好的角色信息 // 保存分配好的角色信息
List<RouterRole> roleList = roleIds.stream().map(roleId -> { List<RouterRole> roleList = roleIds.stream().map(roleId -> {

View File

@ -54,7 +54,7 @@ public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRole> i
List<Long> roleIds = dto.getRoleIds(); List<Long> roleIds = dto.getRoleIds();
// 删除这个用户下所有已经分配好的角色内容 // 删除这个用户下所有已经分配好的角色内容
baseMapper.deleteBatchIdsWithPhysicsByUserId(userId); baseMapper.deleteBatchIdsByUserIdsWithPhysics(List.of(userId));
// 保存分配好的角色信息 // 保存分配好的角色信息
List<UserRole> roleList = roleIds.stream().map(roleId -> { List<UserRole> roleList = roleIds.stream().map(roleId -> {

View File

@ -21,7 +21,9 @@ import cn.bunny.dao.vo.system.user.UserVo;
import cn.bunny.services.factory.EmailFactory; import cn.bunny.services.factory.EmailFactory;
import cn.bunny.services.factory.UserFactory; import cn.bunny.services.factory.UserFactory;
import cn.bunny.services.mapper.EmailUsersMapper; import cn.bunny.services.mapper.EmailUsersMapper;
import cn.bunny.services.mapper.UserDeptMapper;
import cn.bunny.services.mapper.UserMapper; import cn.bunny.services.mapper.UserMapper;
import cn.bunny.services.mapper.UserRoleMapper;
import cn.bunny.services.service.FilesService; import cn.bunny.services.service.FilesService;
import cn.bunny.services.service.UserService; import cn.bunny.services.service.UserService;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -71,6 +73,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, AdminUser> implemen
@Autowired @Autowired
private FilesService filesService; private FilesService filesService;
@Autowired
private UserDeptMapper userDeptMapper;
@Autowired
private UserRoleMapper userRoleMapper;
/** /**
* 登录发送邮件验证码 * 登录发送邮件验证码
* *
@ -292,6 +300,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, AdminUser> implemen
*/ */
@Override @Override
public void deleteAdminUser(List<Long> ids) { public void deleteAdminUser(List<Long> ids) {
// 删除用户
baseMapper.deleteBatchIdsWithPhysics(ids); baseMapper.deleteBatchIdsWithPhysics(ids);
// 删除部门相关
userDeptMapper.deleteBatchIdsByUserIdWithPhysics(ids);
// 删除用户角色相关
userRoleMapper.deleteBatchIdsByUserIdsWithPhysics(ids);
} }
} }

View File

@ -19,4 +19,24 @@
id, role_id, power_id, create_time, update_time, create_user, update_user, is_deleted id, role_id, power_id, create_time, update_time, create_user, update_user, is_deleted
</sql> </sql>
<!-- 根据权限id列表删除角色权限相关 -->
<delete id="deleteBatchPowerIdsWithPhysics">
delete
from sys_role_power
where power_id in
<foreach collection="deptIds" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
<!-- 根据角色id删除角色权限 -->
<delete id="deleteBatchRoleIdsWithPhysics">
delete
from sys_role_power
where role_id in
<foreach collection="roleIds" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
</mapper> </mapper>

View File

@ -20,10 +20,23 @@
</sql> </sql>
<!-- 根据路由id删除所有角色和路由信息 --> <!-- 根据路由id删除所有角色和路由信息 -->
<delete id="deleteBatchIdsWithPhysicsByRouterId"> <delete id="deleteBatchIdsByRouterIdsWithPhysics">
delete delete
from sys_router_role from sys_router_role
where router_id = #{routerId} where router_id in
<foreach collection="routerIds" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
<!-- 根据角色id列表删除角色和路由相关 -->
<delete id="deleteBatchIdsByRoleIdsWithPhysics">
delete
from sys_router_role
where role_id in
<foreach collection="roleIds" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete> </delete>
</mapper> </mapper>

View File

@ -19,4 +19,24 @@
id, user_id, dept_id, create_time, update_time, create_user, update_user, is_deleted id, user_id, dept_id, create_time, update_time, create_user, update_user, is_deleted
</sql> </sql>
<!-- 根据部门id删除部门用户 -->
<delete id="deleteBatchIdsByDeptIdWithPhysics">
delete
from sys_user_dept
where dept_id in
<foreach collection="deptIds" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
<!-- 根据用户id删除用户部门 -->
<delete id="deleteBatchIdsByUserIdWithPhysics">
delete
from sys_user_dept
where user_id in
<foreach collection="userIds" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
</mapper> </mapper>

View File

@ -20,10 +20,20 @@
</sql> </sql>
<!-- 删除这个用户id下所有的角色信息 --> <!-- 删除这个用户id下所有的角色信息 -->
<delete id="deleteBatchIdsWithPhysicsByUserId"> <delete id="deleteBatchIdsByUserIdsWithPhysics">
delete delete
from sys_user_role from sys_user_role
where user_id = #{userId} where user_id = #{userId}
</delete> </delete>
<!-- 根据角色id删除用户和角色 -->
<delete id="deleteBatchIdsByRoleIdsWithPhysics">
delete
from sys_user_role
where role_id in
<foreach collection="roleIds" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
</mapper> </mapper>