mirror of https://gitee.com/stylefeng/roses
【resource】更新资源
parent
a0b68f165c
commit
cbe6150a08
|
@ -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 {
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue