fix(permission-check): path匹配方式

This commit is contained in:
zhansihu 2023-10-26 16:32:57 +08:00
parent 2bbf879f22
commit bde1848a0f
2 changed files with 17 additions and 6 deletions

View File

@ -568,18 +568,20 @@ public class PermissionPointServiceImpl implements PermissionPointService {
.eq(SaasFeature::getFeatureCode, featureCode)
.eq(StrUtil.isNotBlank(terminal), SaasFeature::getTerminal, terminal));
//button过滤减少查询
Set<Long> idsWithoutButton = currentFeatrureList.stream()
Set<String> pathsWithoutButton = currentFeatrureList.stream()
.filter(f -> !BUTTON.sameCode(f.getFeatureType()))
.map(SaasFeature::getId)
.map(SaasFeature::getPath)
.collect(Collectors.toSet());
if (CollectionUtil.isEmpty(idsWithoutButton)) {
if (CollectionUtil.isEmpty(pathsWithoutButton)) {
return currentFeatrureList;
}
String querySql = StrUtil.join(" OR ", idsWithoutButton.stream().map(id -> "FIND_IN_SET('" + id + "', path)").collect(Collectors.toList()));
List<SaasFeature> children = saasFeatureDao.list(new LambdaQueryWrapper<SaasFeature>()
Wrapper<SaasFeature> wrapper = new LambdaQueryWrapper<SaasFeature>()
.eq(StrUtil.isNotBlank(terminal), SaasFeature::getTerminal, terminal)
.apply(querySql));
.and(w -> {
pathsWithoutButton.forEach(p -> w.or().likeRight(SaasFeature::getPath, p));
});
List<SaasFeature> children = saasFeatureDao.list(wrapper);
currentFeatrureList.addAll(children);
return currentFeatrureList;
}

View File

@ -11,6 +11,7 @@ import cn.axzo.tyr.client.model.permission.PermissionPointVO;
import cn.axzo.tyr.server.controller.permission.PermissionPointController;
import cn.axzo.tyr.server.repository.entity.SaasFeature;
import cn.axzo.tyr.server.repository.dao.SaasFeatureDao;
import cn.axzo.tyr.server.service.PermissionPointService;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import org.junit.jupiter.api.Test;
@ -33,6 +34,8 @@ public class PermissionPointTest {
private PermissionPointController controller;
@Autowired
private SaasFeatureDao saasFeatureDao;
@Autowired
private PermissionPointService permissionPointService;
@Test
public void testList() {
@ -133,4 +136,10 @@ public class PermissionPointTest {
System.out.println(JSON.toJSONString(result));
}
@Test
public void test() {
List<SaasFeature> saasFeatures = permissionPointService.listNodeWithChildrenByCode("CMS_WEB_PROJ_0546", "NT_CMS_WEB_PROJ");
System.out.println(JSON.toJSONString(saasFeatures));
}
}