获取详情树

This commit is contained in:
lvshaohua 2024-04-10 14:22:38 +08:00
parent 9370ecf4cc
commit 44a328edce
5 changed files with 43 additions and 7 deletions

View File

@ -57,5 +57,5 @@ public interface FeatureResourceApi {
/** 菜单详情 **/ /** 菜单详情 **/
@PostMapping("/api/featureResource/detail") @PostMapping("/api/featureResource/detail")
ApiResult<FeatureResourceDetailResp> detail(@RequestParam Long featureId); ApiResult<FeatureResourceTreeNode> detail(@RequestParam Long featureId);
} }

View File

@ -76,8 +76,8 @@ public class FeatureResourceController implements FeatureResourceApi {
} }
@Override @Override
public ApiResult<FeatureResourceDetailResp> detail(Long featureId) { public ApiResult<FeatureResourceTreeNode> detail(Long featureId) {
return null; return ApiResult.ok(featureResourceService.getTreeFeatureDescendant(featureId));
} }
@Override @Override

View File

@ -0,0 +1,15 @@
package cn.axzo.tyr.server.model.convert;
import cn.axzo.maokai.api.vo.request.UpdateNodeWorkerReq;
import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode;
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@Mapper
public interface SaasFeatureResourceConvert {
SaasFeatureResourceConvert INSTANCE = Mappers.getMapper(SaasFeatureResourceConvert.class);
FeatureResourceTreeNode convert(SaasFeatureResource req);
}

View File

@ -23,6 +23,8 @@ public interface SaasFeatureResourceService {
/**递归的**/ /**递归的**/
List<SaasFeatureResource> listDescendant(Long featureId); List<SaasFeatureResource> listDescendant(Long featureId);
FeatureResourceTreeNode getTreeFeatureDescendant(Long featureId);
/**删除指定菜单**/ /**删除指定菜单**/
void deleteMenuFeature(Long featureId, Long operatorId); void deleteMenuFeature(Long featureId, Long operatorId);

View File

@ -1,5 +1,6 @@
package cn.axzo.tyr.server.service.impl; package cn.axzo.tyr.server.service.impl;
import cn.axzo.basics.auth.vo.resp.SaasFeatureTreeResp;
import cn.axzo.basics.common.BeanMapper; import cn.axzo.basics.common.BeanMapper;
import cn.axzo.basics.common.util.StopWatchUtil; import cn.axzo.basics.common.util.StopWatchUtil;
import cn.axzo.basics.common.util.TreeUtil; import cn.axzo.basics.common.util.TreeUtil;
@ -15,6 +16,7 @@ import cn.axzo.tyr.client.model.res.FeatureResourceDTO;
import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode; import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode;
import cn.axzo.tyr.server.model.ResourcePermission; import cn.axzo.tyr.server.model.ResourcePermission;
import cn.axzo.tyr.server.model.ResourcePermissionQueryDTO; import cn.axzo.tyr.server.model.ResourcePermissionQueryDTO;
import cn.axzo.tyr.server.model.convert.SaasFeatureResourceConvert;
import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao; import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao;
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource; import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
import cn.axzo.tyr.server.service.SaasFeatureResourceService; import cn.axzo.tyr.server.service.SaasFeatureResourceService;
@ -30,6 +32,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
@ -158,6 +161,23 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic
} }
@Override @Override
public FeatureResourceTreeNode getTreeFeatureDescendant(Long featureId) {
List<SaasFeatureResource> descendants = featureResourceDao.lambdaQuery()
.eq(BaseEntity::getIsDelete,0)
.apply("FIND_IN_SET('" + featureId + "', path)")
.list();
if (CollectionUtil.isEmpty(descendants)) {
return null;
}
List<FeatureResourceTreeNode> treeList = TreeUtil.buildTree(descendants.stream()
.map(SaasFeatureResourceConvert.INSTANCE::convert)
.sorted(Comparator.comparing(FeatureResourceDTO::getDisplayOrder))
.collect(Collectors.toList()));
return treeList.get(0);
}
@Override
@Transactional(rollbackFor = Exception.class)
@CacheEvict(value = SaasFeatureResourceCacheService.CACHE_FEATURE_RESOURCE_TREE,allEntries = true) @CacheEvict(value = SaasFeatureResourceCacheService.CACHE_FEATURE_RESOURCE_TREE,allEntries = true)
public void saveOrUpdateMenu(FeatureResourceTreeSaveReq req) { public void saveOrUpdateMenu(FeatureResourceTreeSaveReq req) {
SaasFeatureResource baseResource = BeanMapper.copyBean(req, SaasFeatureResource.class); SaasFeatureResource baseResource = BeanMapper.copyBean(req, SaasFeatureResource.class);
@ -180,7 +200,7 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic
List<FeatureComponentSaveReq> components = req.getComponentSaveReqList(); List<FeatureComponentSaveReq> components = req.getComponentSaveReqList();
for (int i = 0; i < components.size(); i++) { for (int i = 0; i < components.size(); i++) {
FeatureComponentSaveReq childComponent = components.get(i); FeatureComponentSaveReq childComponent = components.get(i);
if (childComponent.getParentId() != null) { if (childComponent.getParentId() == null) {
childComponent.setParentId(baseResource.getId()); childComponent.setParentId(baseResource.getId());
} }
// 递归新增修改删除子节点 // 递归新增修改删除子节点
@ -209,9 +229,6 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic
} else { } else {
saasFeatureResource.setCreateBy(operatorId); saasFeatureResource.setCreateBy(operatorId);
newResource(saasFeatureResource, parentPath); newResource(saasFeatureResource, parentPath);
// featureResourceDao.save(saasFeatureResource);
// saasFeatureResource.setPath(parentPath + "," + saasFeatureResource.getId());
// featureResourceDao.updateById(saasFeatureResource);
} }
List<FeatureComponentSaveReq> children = featureComponentSaveReq.getChildren(); List<FeatureComponentSaveReq> children = featureComponentSaveReq.getChildren();
@ -357,4 +374,6 @@ public class SaasFeatureResourceServiceImpl implements SaasFeatureResourceServic
return rootNodes; return rootNodes;
} }
} }