feature(权限点):实现详情查询;实现ID批量查询
This commit is contained in:
parent
4241d1b7da
commit
182c815d9d
@ -1,10 +1,14 @@
|
||||
package cn.axzo.tyr.client.feign;
|
||||
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointDTO;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeQueryReq;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -20,5 +24,13 @@ public interface PermissionPointApi {
|
||||
|
||||
/** 查询权限点树形节点 **/
|
||||
@PostMapping(value = "/api/v1/permissionPoint/listTreeNodes")
|
||||
ApiResult<List<PermissionPointTreeNode>> listTreeNodes(PermissionPointTreeQueryReq request);
|
||||
ApiResult<List<PermissionPointTreeNode>> listTreeNodes(@RequestBody PermissionPointTreeQueryReq request);
|
||||
|
||||
/** 根据权限点ID查询详情 **/
|
||||
@GetMapping(value = "/api/v1/permissionPoint/getDetail/{permissionId}")
|
||||
ApiResult<PermissionPointDTO> getDetail(@PathVariable Long permissionId);
|
||||
|
||||
/** 根据权限点ID批量查询节点信息 **/
|
||||
@PostMapping(value = "/api/v1/permissionPoint/listTreeNodesByIds")
|
||||
ApiResult<List<PermissionPointTreeNode>> listTreeNodesByIds(@RequestBody List<Long> permissionIds);
|
||||
}
|
||||
|
||||
@ -69,8 +69,8 @@ public class PermissionPointDTO {
|
||||
*/
|
||||
private String path;
|
||||
|
||||
/** 上级节点层级名称 **/
|
||||
private List<String> parentPath;
|
||||
/** 层级名称 顶级-……-当前节点 **/
|
||||
private List<String> pathName;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
|
||||
@ -0,0 +1,17 @@
|
||||
package cn.axzo.tyr.server.common.constants;
|
||||
|
||||
/**
|
||||
* 权限相关常量
|
||||
*
|
||||
* @version V1.0
|
||||
* @author: ZhanSiHu
|
||||
* @date: 2023/9/7 16:50
|
||||
*/
|
||||
public class PermissionConstant {
|
||||
|
||||
/** 权限点path分隔符 **/
|
||||
public static final String FEATURE_PATH_DELIMITER = "/";
|
||||
|
||||
/** 无父级 **/
|
||||
public static final String FEATURE_NO_PARENT = "0";
|
||||
}
|
||||
@ -2,6 +2,7 @@ package cn.axzo.tyr.server.controller.permission;
|
||||
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.tyr.client.feign.PermissionPointApi;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointDTO;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeQueryReq;
|
||||
import cn.axzo.tyr.server.service.PermissionPointService;
|
||||
@ -31,4 +32,14 @@ public class PermissionPointController implements PermissionPointApi {
|
||||
//查询数据
|
||||
return ApiResult.ok(permissionPointService.listTreeNodes(request));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<PermissionPointDTO> getDetail(Long permissionId) {
|
||||
return ApiResult.ok(permissionPointService.getDetail(permissionId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<List<PermissionPointTreeNode>> listTreeNodesByIds(List<Long> permissionIds) {
|
||||
return ApiResult.ok(permissionPointService.listNodesByIds(permissionIds));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package cn.axzo.tyr.server.service;
|
||||
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointDTO;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeQueryReq;
|
||||
|
||||
@ -15,7 +16,7 @@ import java.util.List;
|
||||
public interface PermissionPointService {
|
||||
|
||||
/**
|
||||
* 权限点条件查询 - 未组装为树形
|
||||
* 权限点条件查询
|
||||
* **/
|
||||
List<PermissionPointTreeNode> listTreeNodes(PermissionPointTreeQueryReq request);
|
||||
|
||||
@ -23,4 +24,9 @@ public interface PermissionPointService {
|
||||
* 根据权限点ID查询基本信息
|
||||
* **/
|
||||
List<PermissionPointTreeNode> listNodesByIds(List<Long> permissionIds);
|
||||
|
||||
/**
|
||||
* 根据权限点ID查询详情
|
||||
* **/
|
||||
PermissionPointDTO getDetail(Long permissionId);
|
||||
}
|
||||
|
||||
@ -5,28 +5,30 @@ import cn.axzo.basics.common.util.TreeUtil;
|
||||
import cn.axzo.framework.domain.web.BizException;
|
||||
import cn.axzo.framework.domain.web.code.BaseCode;
|
||||
import cn.axzo.tyr.client.model.enums.FeatureType;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointDTO;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeNode;
|
||||
import cn.axzo.tyr.client.model.permission.PermissionPointTreeQueryReq;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasFeature;
|
||||
import cn.axzo.tyr.server.repository.service.SaasFeatureDao;
|
||||
import cn.axzo.tyr.server.service.PermissionPointService;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static cn.axzo.tyr.server.common.constants.PermissionConstant.FEATURE_NO_PARENT;
|
||||
import static cn.axzo.tyr.server.common.constants.PermissionConstant.FEATURE_PATH_DELIMITER;
|
||||
|
||||
/**
|
||||
* 权限点服务实现
|
||||
@ -54,7 +56,7 @@ public class PermissionPointServiceImpl implements PermissionPointService {
|
||||
throw new BizException(BaseCode.BAD_REQUEST);
|
||||
}
|
||||
//追加条件path左匹配
|
||||
queryWrapper.likeRight(SaasFeature::getPath, parent.getPath() + parent.getId() + "/");
|
||||
queryWrapper.likeRight(SaasFeature::getPath, parent.getPath() + parent.getId() + FEATURE_PATH_DELIMITER);
|
||||
}
|
||||
List<SaasFeature> list = saasFeatureDao.list(queryWrapper);
|
||||
|
||||
@ -73,6 +75,7 @@ public class PermissionPointServiceImpl implements PermissionPointService {
|
||||
return result;
|
||||
}
|
||||
|
||||
//TODO:@Zhan 依赖系统字典接口封装上级
|
||||
//按terminal分组
|
||||
Map<String, List<PermissionPointTreeNode>> mappingNode = treeList.stream()
|
||||
.collect(Collectors.groupingBy(PermissionPointTreeNode::getTerminal));
|
||||
@ -122,9 +125,52 @@ public class PermissionPointServiceImpl implements PermissionPointService {
|
||||
|
||||
@Override
|
||||
public List<PermissionPointTreeNode> listNodesByIds(List<Long> permissionIds) {
|
||||
return null;
|
||||
if (CollectionUtil.isEmpty(permissionIds)) {
|
||||
return null;
|
||||
}
|
||||
return this.saasFeatureDao.listByIds(permissionIds)
|
||||
.stream()
|
||||
.map(this::feature2Node)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public PermissionPointDTO getDetail(Long permissionId) {
|
||||
SaasFeature feature = this.saasFeatureDao.getById(permissionId);
|
||||
if (feature == null) {
|
||||
log.warn("no saasFeature found for:{}", permissionId);
|
||||
throw new BizException(BaseCode.BAD_REQUEST);
|
||||
}
|
||||
PermissionPointDTO dto = BeanMapper.copyBean(feature, PermissionPointDTO.class);
|
||||
|
||||
//补充上级信息
|
||||
//TODO:@Zhan 依赖字典接口构建上级
|
||||
List<String> pathName = new ArrayList<>();
|
||||
if (dto.getParentId() == null || dto.getParentId() == 0) {
|
||||
//没有parent直接挂在工作台下
|
||||
dto.setParentName("");
|
||||
dto.setPathName(pathName);
|
||||
return dto;
|
||||
}
|
||||
//所有父级处理
|
||||
List<String> split = StrUtil.split(dto.getPath(), FEATURE_PATH_DELIMITER);
|
||||
List<Long> ids = split.stream()
|
||||
.filter(x -> !StrUtil.equals(FEATURE_NO_PARENT, x))
|
||||
.map(Long::valueOf)
|
||||
.collect(Collectors.toList());
|
||||
Map<Long, SaasFeature> parentsMapping = this.saasFeatureDao.listByIds(ids)
|
||||
.stream()
|
||||
.collect(Collectors.toMap(SaasFeature::getId, Function.identity()));
|
||||
for (Long parentId : ids) {
|
||||
pathName.add(parentsMapping.get(parentId).getFeatureName());
|
||||
}
|
||||
dto.setPathName(pathName);
|
||||
dto.setParentName(parentsMapping.get(dto.getParentId()).getFeatureName());
|
||||
|
||||
return dto;
|
||||
}
|
||||
|
||||
|
||||
private PermissionPointTreeNode feature2Node(SaasFeature feature) {
|
||||
PermissionPointTreeNode node = new PermissionPointTreeNode();
|
||||
node.setPermissionPointId(feature.getId());
|
||||
|
||||
Loading…
Reference in New Issue
Block a user