diff --git a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/action/RoleAssignOperateAction.java b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/action/RoleAssignOperateAction.java new file mode 100644 index 000000000..4aeb9db69 --- /dev/null +++ b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/action/RoleAssignOperateAction.java @@ -0,0 +1,35 @@ +package cn.stylefeng.roses.kernel.sys.modular.role.action; + +import cn.stylefeng.roses.kernel.sys.modular.role.enums.PermissionNodeTypeEnum; +import cn.stylefeng.roses.kernel.sys.modular.role.pojo.request.RoleBindPermissionRequest; +import cn.stylefeng.roses.kernel.sys.modular.role.pojo.response.RoleBindPermissionItem; + +import java.util.List; + +/** + * 角色绑定权限操作的接口 + * + * @author fengshuonan + * @since 2023/6/13 22:16 + */ +public interface RoleAssignOperateAction { + + /** + * 获取节点的类型,有4种节点类型 + * + * @author fengshuonan + * @since 2023/6/13 22:17 + */ + PermissionNodeTypeEnum getNodeType(); + + /** + * 执行角色绑定权限的过程,根据不同的点击类型,执行不同的操作过程 + * + * @param roleBindPermissionRequest 角色绑定权限的参数 + * @return 返回节点绑定后的执行结果,返回的是当前操作节点的子集的所有 + * @author fengshuonan + * @since 2023/6/13 22:17 + */ + List doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest); + +} diff --git a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/PermissionAssignServiceImpl.java b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/PermissionAssignServiceImpl.java index 388b28c02..b9e8ad2f9 100644 --- a/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/PermissionAssignServiceImpl.java +++ b/kernel-s-sys/sys-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/PermissionAssignServiceImpl.java @@ -1,11 +1,13 @@ package cn.stylefeng.roses.kernel.sys.modular.role.service.impl; +import cn.hutool.extra.spring.SpringUtil; import cn.stylefeng.roses.kernel.sys.modular.app.entity.SysApp; import cn.stylefeng.roses.kernel.sys.modular.app.service.SysAppService; import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenu; import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenuOptions; import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuOptionsService; import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuService; +import cn.stylefeng.roses.kernel.sys.modular.role.action.RoleAssignOperateAction; import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleMenu; import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleMenuOptions; import cn.stylefeng.roses.kernel.sys.modular.role.factory.PermissionAssignFactory; @@ -18,9 +20,7 @@ import cn.stylefeng.roses.kernel.sys.modular.role.service.SysRoleMenuService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import javax.annotation.Resource; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -61,7 +61,13 @@ public class PermissionAssignServiceImpl implements PermissionAssignService { @Override public List updateRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest) { - return null; + Map operateActionMap = SpringUtil.getBeansOfType(RoleAssignOperateAction.class); + for (RoleAssignOperateAction roleAssignOperateAction : operateActionMap.values()) { + if (roleAssignOperateAction.getNodeType().getCode().equals(roleBindPermissionRequest.getPermissionNodeType())) { + return roleAssignOperateAction.doOperateAction(roleBindPermissionRequest); + } + } + return new ArrayList<>(); } @Override