diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/resource/request/ResourceRequest.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/resource/ResourceRequest.java similarity index 85% rename from kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/resource/request/ResourceRequest.java rename to kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/resource/ResourceRequest.java index 2f41d5bf3..4fafcbdbd 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/resource/request/ResourceRequest.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/resource/ResourceRequest.java @@ -1,7 +1,8 @@ -package cn.stylefeng.roses.kernel.system.pojo.resource.request; +package cn.stylefeng.roses.kernel.system.pojo.resource; import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; import lombok.Data; +import lombok.EqualsAndHashCode; import javax.validation.constraints.NotBlank; @@ -11,6 +12,7 @@ import javax.validation.constraints.NotBlank; * @author fengshuonan * @since 2019-09-10 */ +@EqualsAndHashCode(callSuper = true) @Data public class ResourceRequest extends BaseRequest { diff --git a/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/resource/modular/controller/ApiController.java b/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/resource/modular/controller/ApiController.java index c854e4d7e..35d542d7a 100644 --- a/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/resource/modular/controller/ApiController.java +++ b/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/resource/modular/controller/ApiController.java @@ -8,7 +8,7 @@ import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData; import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData; import cn.stylefeng.roses.kernel.system.pojo.resource.LayuiApiResourceTreeNode; -import cn.stylefeng.roses.kernel.system.pojo.resource.request.ResourceRequest; +import cn.stylefeng.roses.kernel.system.pojo.resource.ResourceRequest; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; @@ -36,7 +36,7 @@ public class ApiController { */ @GetResource(name = "获取接口树列表(用于接口文档页面)", path = "/resource/getTree", requiredLogin = false) public ResponseData getTree() { - List resourceTree = sysResourceService.getResourceTree(); + List resourceTree = sysResourceService.getApiResourceTree(); return new SuccessResponseData(resourceTree); } @@ -48,7 +48,7 @@ public class ApiController { */ @GetResource(name = "获取API详情(用于接口文档页面)", path = "/resource/getDetail", requiredLogin = false) public ResponseData getResourceDetail(@Validated(BaseRequest.detail.class) ResourceRequest resourceRequest) { - ResourceDefinition resourceDetail = sysResourceService.getResourceDetail(resourceRequest); + ResourceDefinition resourceDetail = sysResourceService.getApiResourceDetail(resourceRequest); return new SuccessResponseData(resourceDetail); } diff --git a/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/resource/modular/controller/ResourceController.java b/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/resource/modular/controller/ResourceController.java index 48fe46ea0..09097b915 100644 --- a/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/resource/modular/controller/ResourceController.java +++ b/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/resource/modular/controller/ResourceController.java @@ -8,7 +8,7 @@ import cn.stylefeng.roses.kernel.resource.modular.pojo.ResourceTreeNode; import cn.stylefeng.roses.kernel.resource.modular.service.SysResourceService; import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData; import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData; -import cn.stylefeng.roses.kernel.system.pojo.resource.request.ResourceRequest; +import cn.stylefeng.roses.kernel.system.pojo.resource.ResourceRequest; import cn.stylefeng.roses.kernel.system.pojo.role.request.SysRoleRequest; import org.springframework.web.bind.annotation.RestController; @@ -36,7 +36,7 @@ public class ResourceController { */ @GetResource(name = "获取资源列表", path = "/resource/pageList") public ResponseData pageList(ResourceRequest resourceRequest) { - PageResult result = this.sysResourceService.getResourceList(resourceRequest); + PageResult result = this.sysResourceService.findPage(resourceRequest); return new SuccessResponseData(result); } @@ -48,7 +48,7 @@ public class ResourceController { */ @GetResource(name = "获取资源下拉列表", path = "/resource/getMenuResourceList") public ResponseData getMenuResourceList(ResourceRequest resourceRequest) { - List menuResourceList = this.sysResourceService.getMenuResourceList(resourceRequest); + List menuResourceList = this.sysResourceService.findList(resourceRequest); return new SuccessResponseData(menuResourceList); } diff --git a/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/resource/modular/service/SysResourceService.java b/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/resource/modular/service/SysResourceService.java index c0bd3613b..193cb4fb2 100644 --- a/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/resource/modular/service/SysResourceService.java +++ b/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/resource/modular/service/SysResourceService.java @@ -5,7 +5,7 @@ import cn.stylefeng.roses.kernel.resource.api.pojo.resource.ResourceDefinition; import cn.stylefeng.roses.kernel.resource.modular.entity.SysResource; import cn.stylefeng.roses.kernel.resource.modular.pojo.ResourceTreeNode; import cn.stylefeng.roses.kernel.system.pojo.resource.LayuiApiResourceTreeNode; -import cn.stylefeng.roses.kernel.system.pojo.resource.request.ResourceRequest; +import cn.stylefeng.roses.kernel.system.pojo.resource.ResourceRequest; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -26,7 +26,7 @@ public interface SysResourceService extends IService { * @author fengshuonan * @date 2020/11/24 20:45 */ - PageResult getResourceList(ResourceRequest resourceRequest); + PageResult findPage(ResourceRequest resourceRequest); /** * 通过应用code获取获取资源下拉列表 @@ -38,35 +38,7 @@ public interface SysResourceService extends IService { * @author fengshuonan * @date 2020/11/24 20:45 */ - List getMenuResourceList(ResourceRequest resourceRequest); - - /** - * 删除某个项目的所有资源 - * - * @param projectCode 项目编码,一般为spring application name - * @author fengshuonan - * @date 2020/11/24 20:46 - */ - void deleteResourceByProjectCode(String projectCode); - - /** - * 获取资源树列表,用于生成api接口 - * - * @return 资源树列表 - * @author fengshuonan - * @date 2020/12/18 15:06 - */ - List getResourceTree(); - - /** - * 获取资源的详情 - * - * @param resourceRequest 请求参数 - * @return 资源详情 - * @author fengshuonan - * @date 2020/12/18 16:04 - */ - ResourceDefinition getResourceDetail(ResourceRequest resourceRequest); + List findList(ResourceRequest resourceRequest); /** * 获取平级树节点列表 @@ -78,4 +50,32 @@ public interface SysResourceService extends IService { */ List getResourceTree(Long roleId, Boolean lateralFlag); + /** + * 获取资源树列表,用于生成api接口 + * + * @return 资源树列表 + * @author fengshuonan + * @date 2020/12/18 15:06 + */ + List getApiResourceTree(); + + /** + * 获取资源的详情 + * + * @param resourceRequest 请求参数 + * @return 资源详情 + * @author fengshuonan + * @date 2020/12/18 16:04 + */ + ResourceDefinition getApiResourceDetail(ResourceRequest resourceRequest); + + /** + * 删除某个项目的所有资源 + * + * @param projectCode 项目编码,一般为spring application name + * @author fengshuonan + * @date 2020/11/24 20:46 + */ + void deleteResourceByProjectCode(String projectCode); + } diff --git a/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/resource/modular/service/impl/SysResourceServiceImpl.java b/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/resource/modular/service/impl/SysResourceServiceImpl.java index 414d5b878..05b89cb4d 100644 --- a/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/resource/modular/service/impl/SysResourceServiceImpl.java +++ b/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/resource/modular/service/impl/SysResourceServiceImpl.java @@ -23,9 +23,8 @@ import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum; import cn.stylefeng.roses.kernel.rule.tree.factory.DefaultTreeBuildFactory; import cn.stylefeng.roses.kernel.system.ResourceServiceApi; import cn.stylefeng.roses.kernel.system.RoleServiceApi; -import cn.stylefeng.roses.kernel.system.UserServiceApi; import cn.stylefeng.roses.kernel.system.pojo.resource.LayuiApiResourceTreeNode; -import cn.stylefeng.roses.kernel.system.pojo.resource.request.ResourceRequest; +import cn.stylefeng.roses.kernel.system.pojo.resource.ResourceRequest; import cn.stylefeng.roses.kernel.system.pojo.role.response.SysRoleResourceResponse; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -59,18 +58,15 @@ public class SysResourceServiceImpl extends ServiceImpl getResourceList(ResourceRequest resourceRequest) { + public PageResult findPage(ResourceRequest resourceRequest) { LambdaQueryWrapper wrapper = createWrapper(resourceRequest); Page page = this.page(PageFactory.defaultPage(), wrapper); return PageResultFactory.createPageResult(page); } @Override - public List getMenuResourceList(ResourceRequest resourceRequest) { + public List findList(ResourceRequest resourceRequest) { LambdaQueryWrapper wrapper = createWrapper(resourceRequest); @@ -88,49 +84,6 @@ public class SysResourceServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(SysResource::getProjectCode, projectCode); - this.remove(wrapper); - } - - @Override - public List getResourceTree() { - - // 1. 获取所有的资源 - LambdaQueryWrapper sysResourceLambdaQueryWrapper = new LambdaQueryWrapper<>(); - sysResourceLambdaQueryWrapper.eq(SysResource::getViewFlag, YesOrNotEnum.N.getCode()); - sysResourceLambdaQueryWrapper.select(SysResource::getAppCode, SysResource::getModularCode, SysResource::getModularName, SysResource::getResourceCode, SysResource::getUrl, SysResource::getResourceName); - List allResource = this.list(sysResourceLambdaQueryWrapper); - - // 2. 按应用和模块编码设置map - Map>> appModularResources = divideResources(allResource); - - // 3. 创建模块code和模块name的映射 - Map modularCodeName = createModularCodeName(allResource); - - // 4. 根据map组装资源树 - return createResourceTree(appModularResources, modularCodeName); - } - - @Override - public ResourceDefinition getResourceDetail(ResourceRequest resourceRequest) { - LambdaQueryWrapper sysResourceLambdaQueryWrapper = new LambdaQueryWrapper<>(); - sysResourceLambdaQueryWrapper.eq(SysResource::getResourceCode, resourceRequest.getResourceCode()); - SysResource sysResource = this.getOne(sysResourceLambdaQueryWrapper); - if (sysResource != null) { - - // 实体转化为ResourceDefinition - ResourceDefinition resourceDefinition = ResourceFactory.createResourceDefinition(sysResource); - - // 填充具体的提示信息 - return ResourceFactory.fillResourceDetail(resourceDefinition); - } else { - return null; - } - } - @Override public List getResourceTree(Long roleId, Boolean lateralFlag) { @@ -216,6 +169,49 @@ public class SysResourceServiceImpl extends ServiceImpl getApiResourceTree() { + + // 1. 获取所有的资源 + LambdaQueryWrapper sysResourceLambdaQueryWrapper = new LambdaQueryWrapper<>(); + sysResourceLambdaQueryWrapper.eq(SysResource::getViewFlag, YesOrNotEnum.N.getCode()); + sysResourceLambdaQueryWrapper.select(SysResource::getAppCode, SysResource::getModularCode, SysResource::getModularName, SysResource::getResourceCode, SysResource::getUrl, SysResource::getResourceName); + List allResource = this.list(sysResourceLambdaQueryWrapper); + + // 2. 按应用和模块编码设置map + Map>> appModularResources = divideResources(allResource); + + // 3. 创建模块code和模块name的映射 + Map modularCodeName = createModularCodeName(allResource); + + // 4. 根据map组装资源树 + return createResourceTree(appModularResources, modularCodeName); + } + + @Override + public ResourceDefinition getApiResourceDetail(ResourceRequest resourceRequest) { + LambdaQueryWrapper sysResourceLambdaQueryWrapper = new LambdaQueryWrapper<>(); + sysResourceLambdaQueryWrapper.eq(SysResource::getResourceCode, resourceRequest.getResourceCode()); + SysResource sysResource = this.getOne(sysResourceLambdaQueryWrapper); + if (sysResource != null) { + + // 实体转化为ResourceDefinition + ResourceDefinition resourceDefinition = ResourceFactory.createResourceDefinition(sysResource); + + // 填充具体的提示信息 + return ResourceFactory.fillResourceDetail(resourceDefinition); + } else { + return null; + } + } + + @Override + public void deleteResourceByProjectCode(String projectCode) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysResource::getProjectCode, projectCode); + this.remove(wrapper); + } + @Override @Transactional(rollbackFor = Exception.class) public void reportResources(@RequestBody ReportResourceParam reportResourceReq) { @@ -303,23 +299,19 @@ public class SysResourceServiceImpl extends ServiceImpl createWrapper(ResourceRequest resourceRequest) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if (ObjectUtil.isNotNull(resourceRequest)) { - // 根据应用编码查询 - if (ObjectUtil.isNotEmpty(resourceRequest.getAppCode())) { - queryWrapper.eq(SysResource::getAppCode, resourceRequest.getAppCode()); - } - - // 根据资源名称 - if (ObjectUtil.isNotEmpty(resourceRequest.getResourceName())) { - queryWrapper.like(SysResource::getResourceName, resourceRequest.getResourceName()); - } - - // 根据资源url - if (ObjectUtil.isNotEmpty(resourceRequest.getUrl())) { - queryWrapper.like(SysResource::getUrl, resourceRequest.getUrl()); - } + if (ObjectUtil.isEmpty(resourceRequest)) { + return queryWrapper; } + // 根据应用编码查询 + queryWrapper.eq(ObjectUtil.isNotEmpty(resourceRequest.getAppCode()), SysResource::getAppCode, resourceRequest.getAppCode()); + + // 根据资源名称 + queryWrapper.like(ObjectUtil.isNotEmpty(resourceRequest.getResourceName()), SysResource::getResourceName, resourceRequest.getResourceName()); + + // 根据资源url + queryWrapper.like(ObjectUtil.isNotEmpty(resourceRequest.getUrl()), SysResource::getUrl, resourceRequest.getUrl()); + return queryWrapper; } @@ -425,49 +417,4 @@ public class SysResourceServiceImpl extends ServiceImpl createResourceLateralTree(Map>> appModularResources, Map modularCodeName) { - - List finalTree = new ArrayList<>(); - - // 按应用遍历应用模块资源集合 - for (String appName : appModularResources.keySet()) { - - // 创建当前应用节点 - ResourceTreeNode appNode = new ResourceTreeNode(); - appNode.setCode(appName); - appNode.setNodeName(appName); - appNode.setResourceFlag(false); - appNode.setParentCode(TreeConstants.DEFAULT_PARENT_ID.toString()); - - // 遍历当前应用下的模块资源 - Map> modularResources = appModularResources.get(appName); - - // 创建模块节点 - ArrayList modularNodes = new ArrayList<>(); - for (String modularCode : modularResources.keySet()) { - ResourceTreeNode modularNode = new ResourceTreeNode(); - modularNode.setCode(modularCode); - modularNode.setNodeName(modularCodeName.get(modularCode)); - modularNode.setResourceFlag(false); - modularNode.setParentCode(appName); - modularNode.setChildren(modularResources.get(modularCode)); - modularNodes.add(modularNode); - } - - // 当前应用下添加模块的资源 - appNode.setChildren(modularNodes); - - // 添加到最终结果 - finalTree.add(appNode); - } - - return finalTree; - } - }