feat(REQ-2046): 新增通过appItemId查询featureId的接口

This commit is contained in:
luofu 2024-01-31 16:14:48 +08:00
parent c3211f3916
commit 3dbfb14078
4 changed files with 65 additions and 1 deletions

View File

@ -7,6 +7,10 @@ import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Collection;
import java.util.List;
/**
* @author honghao.zhang
@ -17,4 +21,13 @@ public interface TyrSaasFeatureApi {
@PostMapping("/api/saasFeature/permission/codes")
ApiResult<FeaturePermissionRes> listPermissionCodes(@RequestBody @Validated FeaturePermissionReq req);
/**
* 通过 {@code appItemId} 获取 {@code featureId}
*
* @param appItemIds 应用子级条目id集合
* @return {@code featureId} 列表
*/
@PostMapping("/api/saasFeature/featureId/list")
ApiResult<List<Long>> listAppFeatureIds(@RequestParam("appItemIds") Collection<Long> appItemIds);
}

View File

@ -9,6 +9,9 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestController;
import java.util.Collection;
import java.util.List;
/**
* @author honghao.zhang
* @since 2023/10/18 18:30
@ -24,4 +27,9 @@ public class TyrSaasFeatureController implements TyrSaasFeatureApi {
public ApiResult<FeaturePermissionRes> listPermissionCodes(FeaturePermissionReq req) {
return ApiResult.ok(saasFeatureService.listPermissionCodes(req));
}
@Override
public ApiResult<List<Long>> listAppFeatureIds(Collection<Long> appItemIds) {
return ApiResult.ok(saasFeatureService.listAppFeatureIds(appItemIds));
}
}

View File

@ -3,6 +3,9 @@ package cn.axzo.tyr.server.service;
import cn.axzo.tyr.client.model.req.FeaturePermissionReq;
import cn.axzo.tyr.client.model.res.FeaturePermissionRes;
import java.util.Collection;
import java.util.List;
/**
* @author honghao.zhang
* @since 2023/10/18 18:25
@ -10,4 +13,12 @@ import cn.axzo.tyr.client.model.res.FeaturePermissionRes;
public interface SaasFeatureService {
FeaturePermissionRes listPermissionCodes(FeaturePermissionReq req);
/**
* 通过 {@code appItemId} 获取 {@code featureId}
*
* @param appItemIds 应用子级条目id集合
* @return {@code featureId} 列表
*/
List<Long> listAppFeatureIds(Collection<Long> appItemIds);
}

View File

@ -1,21 +1,28 @@
package cn.axzo.tyr.server.service.impl;
import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
import cn.axzo.tyr.client.model.enums.IdentityType;
import cn.axzo.tyr.client.model.req.FeaturePermissionReq;
import cn.axzo.tyr.client.model.req.IdentityAuthReq;
import cn.axzo.tyr.client.model.res.FeaturePermissionRes;
import cn.axzo.tyr.client.model.res.IdentityAuthRes;
import cn.axzo.tyr.server.repository.dao.SaasFeatureDao;
import cn.axzo.tyr.server.repository.entity.SaasFeature;
import cn.axzo.tyr.server.service.SaasFeatureService;
import cn.axzo.tyr.server.service.TyrSaasAuthService;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.NumberUtil;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
/**
@ -27,6 +34,7 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public class SaasFeatureServiceImpl implements SaasFeatureService {
private final SaasFeatureDao saasFeatureDao;
private final TyrSaasAuthService tyrSaasAuthService;
@Override
@ -58,4 +66,28 @@ public class SaasFeatureServiceImpl implements SaasFeatureService {
return featurePermissionRes;
}
@Override
public List<Long> listAppFeatureIds(Collection<Long> appItemIds) {
if (CollectionUtils.isEmpty(appItemIds)) {
log.info("appItemIds is empty.");
return Collections.emptyList();
}
List<SaasFeature> saasFeatures = saasFeatureDao.lambdaQuery()
.in(SaasFeature::getLinkType, Lists.newArrayList(LINK_TYPE_UNIAPP, LINK_TYPE_NATIVE))
.in(SaasFeature::getIsDelete, TableIsDeleteEnum.NORMAL.value)
.list();
return saasFeatures.stream()
.filter(UNI_APP_ITEM_ID_FILTER)
.filter(e -> appItemIds.contains(Long.parseLong(e.getMicroAppItemId())))
.map(SaasFeature::getId)
.collect(Collectors.toList());
}
// 小程序
private static final Integer LINK_TYPE_UNIAPP = 2;
// 原生
private static final Integer LINK_TYPE_NATIVE = 4;
private static final Predicate<SaasFeature> UNI_APP_ITEM_ID_FILTER = e ->
StringUtils.hasText(e.getMicroAppItemId()) && NumberUtil.isNumber(e.getMicroAppItemId().trim());
}