【7.6.0】【sys】【role】更新删除角色的接口

pull/55/MERGE
fengshuonan 2023-06-12 21:09:24 +08:00
parent 45eac5e7d4
commit 4a6bcd80b6
7 changed files with 109 additions and 10 deletions

View File

@ -6,6 +6,7 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
import cn.stylefeng.roses.kernel.sys.api.callback.RemoveRoleCallbackApi;
import cn.stylefeng.roses.kernel.sys.api.callback.RemoveUserCallbackApi;
import cn.stylefeng.roses.kernel.sys.modular.user.entity.SysUserRole;
import cn.stylefeng.roses.kernel.sys.modular.user.enums.SysUserRoleExceptionEnum;
@ -29,7 +30,7 @@ import java.util.Set;
* @date 2023/06/10 21:26
*/
@Service
public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements SysUserRoleService, RemoveUserCallbackApi {
public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements SysUserRoleService, RemoveUserCallbackApi, RemoveRoleCallbackApi {
@Override
public void add(SysUserRoleRequest sysUserRoleRequest) {
@ -101,6 +102,18 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
this.remove(sysUserRoleLambdaQueryWrapper);
}
@Override
public void validateHaveRoleBind(Set<Long> beRemovedRoleIdList) {
// none
}
@Override
public void removeRoleAction(Set<Long> beRemovedRoleIdList) {
LambdaQueryWrapper<SysUserRole> wrapper = new LambdaQueryWrapper<>();
wrapper.in(SysUserRole::getRoleId, beRemovedRoleIdList);
this.remove(wrapper);
}
/**
*
*

View File

@ -21,7 +21,12 @@ public enum SysRoleExceptionEnum implements AbstractExceptionEnum {
/**
*
*/
SUPER_ADMIN_ROLE_CODE_ERROR(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10002", "角色编码不能被修改");
SUPER_ADMIN_ROLE_CODE_ERROR(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10002", "角色编码不能被修改"),
/**
*
*/
SYSTEM_ROLE_CANT_DELETE(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10003", "系统角色不能被删除");
/**
*

View File

@ -6,6 +6,7 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
import cn.stylefeng.roses.kernel.sys.api.callback.RemoveRoleCallbackApi;
import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleDataScope;
import cn.stylefeng.roses.kernel.sys.modular.role.enums.SysRoleDataScopeExceptionEnum;
import cn.stylefeng.roses.kernel.sys.modular.role.mapper.SysRoleDataScopeMapper;
@ -17,6 +18,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
/**
*
@ -25,9 +27,9 @@ import java.util.List;
* @date 2023/06/10 21:29
*/
@Service
public class SysRoleDataScopeServiceImpl extends ServiceImpl<SysRoleDataScopeMapper, SysRoleDataScope> implements SysRoleDataScopeService {
public class SysRoleDataScopeServiceImpl extends ServiceImpl<SysRoleDataScopeMapper, SysRoleDataScope> implements SysRoleDataScopeService, RemoveRoleCallbackApi {
@Override
@Override
public void add(SysRoleDataScopeRequest sysRoleDataScopeRequest) {
SysRoleDataScope sysRoleDataScope = new SysRoleDataScope();
BeanUtil.copyProperties(sysRoleDataScopeRequest, sysRoleDataScope);
@ -65,6 +67,18 @@ public class SysRoleDataScopeServiceImpl extends ServiceImpl<SysRoleDataScopeMap
return this.list(wrapper);
}
@Override
public void validateHaveRoleBind(Set<Long> beRemovedRoleIdList) {
// none
}
@Override
public void removeRoleAction(Set<Long> beRemovedRoleIdList) {
LambdaQueryWrapper<SysRoleDataScope> sysRoleDataScopeLambdaQueryWrapper = new LambdaQueryWrapper<>();
sysRoleDataScopeLambdaQueryWrapper.in(SysRoleDataScope::getRoleId, beRemovedRoleIdList);
this.remove(sysRoleDataScopeLambdaQueryWrapper);
}
/**
*
*

View File

@ -6,6 +6,7 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
import cn.stylefeng.roses.kernel.sys.api.callback.RemoveRoleCallbackApi;
import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleMenuOptions;
import cn.stylefeng.roses.kernel.sys.modular.role.enums.SysRoleMenuOptionsExceptionEnum;
import cn.stylefeng.roses.kernel.sys.modular.role.mapper.SysRoleMenuOptionsMapper;
@ -17,6 +18,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
/**
*
@ -25,9 +27,9 @@ import java.util.List;
* @date 2023/06/10 21:29
*/
@Service
public class SysRoleMenuOptionsServiceImpl extends ServiceImpl<SysRoleMenuOptionsMapper, SysRoleMenuOptions> implements SysRoleMenuOptionsService {
public class SysRoleMenuOptionsServiceImpl extends ServiceImpl<SysRoleMenuOptionsMapper, SysRoleMenuOptions> implements SysRoleMenuOptionsService, RemoveRoleCallbackApi {
@Override
@Override
public void add(SysRoleMenuOptionsRequest sysRoleMenuOptionsRequest) {
SysRoleMenuOptions sysRoleMenuOptions = new SysRoleMenuOptions();
BeanUtil.copyProperties(sysRoleMenuOptionsRequest, sysRoleMenuOptions);
@ -65,6 +67,18 @@ public class SysRoleMenuOptionsServiceImpl extends ServiceImpl<SysRoleMenuOption
return this.list(wrapper);
}
@Override
public void validateHaveRoleBind(Set<Long> beRemovedRoleIdList) {
// none
}
@Override
public void removeRoleAction(Set<Long> beRemovedRoleIdList) {
LambdaQueryWrapper<SysRoleMenuOptions> wrapper = new LambdaQueryWrapper<>();
wrapper.in(SysRoleMenuOptions::getRoleId, beRemovedRoleIdList);
this.remove(wrapper);
}
/**
*
*

View File

@ -6,6 +6,7 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
import cn.stylefeng.roses.kernel.sys.api.callback.RemoveRoleCallbackApi;
import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleMenu;
import cn.stylefeng.roses.kernel.sys.modular.role.enums.SysRoleMenuExceptionEnum;
import cn.stylefeng.roses.kernel.sys.modular.role.mapper.SysRoleMenuMapper;
@ -17,6 +18,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
/**
*
@ -25,9 +27,9 @@ import java.util.List;
* @date 2023/06/10 21:29
*/
@Service
public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRoleMenu> implements SysRoleMenuService {
public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRoleMenu> implements SysRoleMenuService, RemoveRoleCallbackApi {
@Override
@Override
public void add(SysRoleMenuRequest sysRoleMenuRequest) {
SysRoleMenu sysRoleMenu = new SysRoleMenu();
BeanUtil.copyProperties(sysRoleMenuRequest, sysRoleMenu);
@ -65,6 +67,18 @@ public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRo
return this.list(wrapper);
}
@Override
public void validateHaveRoleBind(Set<Long> beRemovedRoleIdList) {
// none
}
@Override
public void removeRoleAction(Set<Long> beRemovedRoleIdList) {
LambdaQueryWrapper<SysRoleMenu> wrapper = new LambdaQueryWrapper<>();
wrapper.in(SysRoleMenu::getRoleId, beRemovedRoleIdList);
this.remove(wrapper);
}
/**
*
*

View File

@ -6,6 +6,7 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
import cn.stylefeng.roses.kernel.sys.api.callback.RemoveRoleCallbackApi;
import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleResource;
import cn.stylefeng.roses.kernel.sys.modular.role.enums.SysRoleResourceExceptionEnum;
import cn.stylefeng.roses.kernel.sys.modular.role.mapper.SysRoleResourceMapper;
@ -17,6 +18,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
/**
*
@ -25,9 +27,9 @@ import java.util.List;
* @date 2023/06/10 21:29
*/
@Service
public class SysRoleResourceServiceImpl extends ServiceImpl<SysRoleResourceMapper, SysRoleResource> implements SysRoleResourceService {
public class SysRoleResourceServiceImpl extends ServiceImpl<SysRoleResourceMapper, SysRoleResource> implements SysRoleResourceService, RemoveRoleCallbackApi {
@Override
@Override
public void add(SysRoleResourceRequest sysRoleResourceRequest) {
SysRoleResource sysRoleResource = new SysRoleResource();
BeanUtil.copyProperties(sysRoleResourceRequest, sysRoleResource);
@ -65,6 +67,18 @@ public class SysRoleResourceServiceImpl extends ServiceImpl<SysRoleResourceMappe
return this.list(wrapper);
}
@Override
public void validateHaveRoleBind(Set<Long> beRemovedRoleIdList) {
// none
}
@Override
public void removeRoleAction(Set<Long> beRemovedRoleIdList) {
LambdaQueryWrapper<SysRoleResource> wrapper = new LambdaQueryWrapper<>();
wrapper.in(SysRoleResource::getRoleId, beRemovedRoleIdList);
this.remove(wrapper);
}
/**
*
*

View File

@ -1,13 +1,17 @@
package cn.stylefeng.roses.kernel.sys.modular.role.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.extra.spring.SpringUtil;
import cn.stylefeng.roses.kernel.auth.api.enums.DataScopeTypeEnum;
import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
import cn.stylefeng.roses.kernel.sys.api.callback.RemoveRoleCallbackApi;
import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRole;
import cn.stylefeng.roses.kernel.sys.modular.role.enums.SysRoleExceptionEnum;
import cn.stylefeng.roses.kernel.sys.modular.role.mapper.SysRoleMapper;
@ -17,8 +21,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
/**
*
@ -41,8 +47,27 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
}
@Override
@Transactional(rollbackFor = Exception.class)
public void del(SysRoleRequest sysRoleRequest) {
SysRole sysRole = this.querySysRole(sysRoleRequest);
// 系统角色不能被删除
if (YesOrNotEnum.Y.getCode().equals(sysRole.getRoleSystemFlag())) {
throw new ServiceException(SysRoleExceptionEnum.SYSTEM_ROLE_CANT_DELETE);
}
// 执行角色相关的校验
Map<String, RemoveRoleCallbackApi> callbackApiMap = SpringUtil.getBeansOfType(RemoveRoleCallbackApi.class);
for (RemoveRoleCallbackApi removeRoleCallbackApi : callbackApiMap.values()) {
removeRoleCallbackApi.validateHaveRoleBind(CollectionUtil.set(false, sysRole.getRoleId()));
}
// 执行角色相关关联业务的删除操作
for (RemoveRoleCallbackApi removeRoleCallbackApi : callbackApiMap.values()) {
removeRoleCallbackApi.removeRoleAction(CollectionUtil.set(false, sysRole.getRoleId()));
}
// 删除角色
this.removeById(sysRole.getRoleId());
}