【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.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; 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.api.callback.RemoveUserCallbackApi;
import cn.stylefeng.roses.kernel.sys.modular.user.entity.SysUserRole; import cn.stylefeng.roses.kernel.sys.modular.user.entity.SysUserRole;
import cn.stylefeng.roses.kernel.sys.modular.user.enums.SysUserRoleExceptionEnum; import cn.stylefeng.roses.kernel.sys.modular.user.enums.SysUserRoleExceptionEnum;
@ -29,7 +30,7 @@ import java.util.Set;
* @date 2023/06/10 21:26 * @date 2023/06/10 21:26
*/ */
@Service @Service
public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements SysUserRoleService, RemoveUserCallbackApi { public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements SysUserRoleService, RemoveUserCallbackApi, RemoveRoleCallbackApi {
@Override @Override
public void add(SysUserRoleRequest sysUserRoleRequest) { public void add(SysUserRoleRequest sysUserRoleRequest) {
@ -101,6 +102,18 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
this.remove(sysUserRoleLambdaQueryWrapper); 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.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; 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.entity.SysRoleDataScope;
import cn.stylefeng.roses.kernel.sys.modular.role.enums.SysRoleDataScopeExceptionEnum; import cn.stylefeng.roses.kernel.sys.modular.role.enums.SysRoleDataScopeExceptionEnum;
import cn.stylefeng.roses.kernel.sys.modular.role.mapper.SysRoleDataScopeMapper; 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 org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* *
@ -25,9 +27,9 @@ import java.util.List;
* @date 2023/06/10 21:29 * @date 2023/06/10 21:29
*/ */
@Service @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) { public void add(SysRoleDataScopeRequest sysRoleDataScopeRequest) {
SysRoleDataScope sysRoleDataScope = new SysRoleDataScope(); SysRoleDataScope sysRoleDataScope = new SysRoleDataScope();
BeanUtil.copyProperties(sysRoleDataScopeRequest, sysRoleDataScope); BeanUtil.copyProperties(sysRoleDataScopeRequest, sysRoleDataScope);
@ -65,6 +67,18 @@ public class SysRoleDataScopeServiceImpl extends ServiceImpl<SysRoleDataScopeMap
return this.list(wrapper); 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.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; 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.entity.SysRoleMenuOptions;
import cn.stylefeng.roses.kernel.sys.modular.role.enums.SysRoleMenuOptionsExceptionEnum; import cn.stylefeng.roses.kernel.sys.modular.role.enums.SysRoleMenuOptionsExceptionEnum;
import cn.stylefeng.roses.kernel.sys.modular.role.mapper.SysRoleMenuOptionsMapper; 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 org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* *
@ -25,9 +27,9 @@ import java.util.List;
* @date 2023/06/10 21:29 * @date 2023/06/10 21:29
*/ */
@Service @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) { public void add(SysRoleMenuOptionsRequest sysRoleMenuOptionsRequest) {
SysRoleMenuOptions sysRoleMenuOptions = new SysRoleMenuOptions(); SysRoleMenuOptions sysRoleMenuOptions = new SysRoleMenuOptions();
BeanUtil.copyProperties(sysRoleMenuOptionsRequest, sysRoleMenuOptions); BeanUtil.copyProperties(sysRoleMenuOptionsRequest, sysRoleMenuOptions);
@ -65,6 +67,18 @@ public class SysRoleMenuOptionsServiceImpl extends ServiceImpl<SysRoleMenuOption
return this.list(wrapper); 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.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; 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.entity.SysRoleMenu;
import cn.stylefeng.roses.kernel.sys.modular.role.enums.SysRoleMenuExceptionEnum; import cn.stylefeng.roses.kernel.sys.modular.role.enums.SysRoleMenuExceptionEnum;
import cn.stylefeng.roses.kernel.sys.modular.role.mapper.SysRoleMenuMapper; 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 org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* *
@ -25,9 +27,9 @@ import java.util.List;
* @date 2023/06/10 21:29 * @date 2023/06/10 21:29
*/ */
@Service @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) { public void add(SysRoleMenuRequest sysRoleMenuRequest) {
SysRoleMenu sysRoleMenu = new SysRoleMenu(); SysRoleMenu sysRoleMenu = new SysRoleMenu();
BeanUtil.copyProperties(sysRoleMenuRequest, sysRoleMenu); BeanUtil.copyProperties(sysRoleMenuRequest, sysRoleMenu);
@ -65,6 +67,18 @@ public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRo
return this.list(wrapper); 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.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; 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.entity.SysRoleResource;
import cn.stylefeng.roses.kernel.sys.modular.role.enums.SysRoleResourceExceptionEnum; import cn.stylefeng.roses.kernel.sys.modular.role.enums.SysRoleResourceExceptionEnum;
import cn.stylefeng.roses.kernel.sys.modular.role.mapper.SysRoleResourceMapper; 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 org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* *
@ -25,9 +27,9 @@ import java.util.List;
* @date 2023/06/10 21:29 * @date 2023/06/10 21:29
*/ */
@Service @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) { public void add(SysRoleResourceRequest sysRoleResourceRequest) {
SysRoleResource sysRoleResource = new SysRoleResource(); SysRoleResource sysRoleResource = new SysRoleResource();
BeanUtil.copyProperties(sysRoleResourceRequest, sysRoleResource); BeanUtil.copyProperties(sysRoleResourceRequest, sysRoleResource);
@ -65,6 +67,18 @@ public class SysRoleResourceServiceImpl extends ServiceImpl<SysRoleResourceMappe
return this.list(wrapper); 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; package cn.stylefeng.roses.kernel.sys.modular.role.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; 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.auth.api.enums.DataScopeTypeEnum;
import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; 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.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; 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.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.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.entity.SysRole;
import cn.stylefeng.roses.kernel.sys.modular.role.enums.SysRoleExceptionEnum; import cn.stylefeng.roses.kernel.sys.modular.role.enums.SysRoleExceptionEnum;
import cn.stylefeng.roses.kernel.sys.modular.role.mapper.SysRoleMapper; 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.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* *
@ -41,8 +47,27 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void del(SysRoleRequest sysRoleRequest) { public void del(SysRoleRequest sysRoleRequest) {
SysRole sysRole = this.querySysRole(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()); this.removeById(sysRole.getRoleId());
} }