【resource】更新资源

pull/3/head
fengshuonan 2021-02-08 22:27:29 +08:00
parent a0b68f165c
commit cbe6150a08
5 changed files with 97 additions and 148 deletions

View File

@ -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 {

View File

@ -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<LayuiApiResourceTreeNode> resourceTree = sysResourceService.getResourceTree();
List<LayuiApiResourceTreeNode> 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);
}

View File

@ -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<SysResource> result = this.sysResourceService.getResourceList(resourceRequest);
PageResult<SysResource> 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<SysResource> menuResourceList = this.sysResourceService.getMenuResourceList(resourceRequest);
List<SysResource> menuResourceList = this.sysResourceService.findList(resourceRequest);
return new SuccessResponseData(menuResourceList);
}

View File

@ -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<SysResource> {
* @author fengshuonan
* @date 2020/11/24 20:45
*/
PageResult<SysResource> getResourceList(ResourceRequest resourceRequest);
PageResult<SysResource> findPage(ResourceRequest resourceRequest);
/**
* code
@ -38,35 +38,7 @@ public interface SysResourceService extends IService<SysResource> {
* @author fengshuonan
* @date 2020/11/24 20:45
*/
List<SysResource> 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<LayuiApiResourceTreeNode> getResourceTree();
/**
*
*
* @param resourceRequest
* @return
* @author fengshuonan
* @date 2020/12/18 16:04
*/
ResourceDefinition getResourceDetail(ResourceRequest resourceRequest);
List<SysResource> findList(ResourceRequest resourceRequest);
/**
*
@ -78,4 +50,32 @@ public interface SysResourceService extends IService<SysResource> {
*/
List<ResourceTreeNode> getResourceTree(Long roleId, Boolean lateralFlag);
/**
* api
*
* @return
* @author fengshuonan
* @date 2020/12/18 15:06
*/
List<LayuiApiResourceTreeNode> 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);
}

View File

@ -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<SysResourceMapper, SysRe
@Resource
private RoleServiceApi roleServiceApi;
@Resource
private UserServiceApi userServiceApi;
@Override
public PageResult<SysResource> getResourceList(ResourceRequest resourceRequest) {
public PageResult<SysResource> findPage(ResourceRequest resourceRequest) {
LambdaQueryWrapper<SysResource> wrapper = createWrapper(resourceRequest);
Page<SysResource> page = this.page(PageFactory.defaultPage(), wrapper);
return PageResultFactory.createPageResult(page);
}
@Override
public List<SysResource> getMenuResourceList(ResourceRequest resourceRequest) {
public List<SysResource> findList(ResourceRequest resourceRequest) {
LambdaQueryWrapper<SysResource> wrapper = createWrapper(resourceRequest);
@ -88,49 +84,6 @@ public class SysResourceServiceImpl extends ServiceImpl<SysResourceMapper, SysRe
return menuResourceList;
}
@Override
public void deleteResourceByProjectCode(String projectCode) {
LambdaQueryWrapper<SysResource> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysResource::getProjectCode, projectCode);
this.remove(wrapper);
}
@Override
public List<LayuiApiResourceTreeNode> getResourceTree() {
// 1. 获取所有的资源
LambdaQueryWrapper<SysResource> 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<SysResource> allResource = this.list(sysResourceLambdaQueryWrapper);
// 2. 按应用和模块编码设置map
Map<String, Map<String, List<LayuiApiResourceTreeNode>>> appModularResources = divideResources(allResource);
// 3. 创建模块code和模块name的映射
Map<String, String> modularCodeName = createModularCodeName(allResource);
// 4. 根据map组装资源树
return createResourceTree(appModularResources, modularCodeName);
}
@Override
public ResourceDefinition getResourceDetail(ResourceRequest resourceRequest) {
LambdaQueryWrapper<SysResource> 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<ResourceTreeNode> getResourceTree(Long roleId, Boolean lateralFlag) {
@ -216,6 +169,49 @@ public class SysResourceServiceImpl extends ServiceImpl<SysResourceMapper, SysRe
}
}
@Override
public List<LayuiApiResourceTreeNode> getApiResourceTree() {
// 1. 获取所有的资源
LambdaQueryWrapper<SysResource> 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<SysResource> allResource = this.list(sysResourceLambdaQueryWrapper);
// 2. 按应用和模块编码设置map
Map<String, Map<String, List<LayuiApiResourceTreeNode>>> appModularResources = divideResources(allResource);
// 3. 创建模块code和模块name的映射
Map<String, String> modularCodeName = createModularCodeName(allResource);
// 4. 根据map组装资源树
return createResourceTree(appModularResources, modularCodeName);
}
@Override
public ResourceDefinition getApiResourceDetail(ResourceRequest resourceRequest) {
LambdaQueryWrapper<SysResource> 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<SysResource> 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<SysResourceMapper, SysRe
private LambdaQueryWrapper<SysResource> createWrapper(ResourceRequest resourceRequest) {
LambdaQueryWrapper<SysResource> 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<SysResourceMapper, SysRe
return finalTree;
}
/**
*
*
* @author majianguo
* @date 2021/1/9 15:10
*/
private List<ResourceTreeNode> createResourceLateralTree(Map<String, Map<String, List<ResourceTreeNode>>> appModularResources, Map<String, String> modularCodeName) {
List<ResourceTreeNode> 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<String, List<ResourceTreeNode>> modularResources = appModularResources.get(appName);
// 创建模块节点
ArrayList<ResourceTreeNode> 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;
}
}