feat: (feature/REQ-3167) 菜单详情接口支持返回版本号
This commit is contained in:
parent
b6393f963d
commit
32d3790076
@ -54,6 +54,9 @@ public class PageSaasFeatureResourceReq implements IPageReq {
|
||||
@CriteriaField(field = "featureType", operator = Operator.IN)
|
||||
private List<Integer> featureResourceTypes;
|
||||
|
||||
@CriteriaField(field = "featureType", operator = Operator.EQ)
|
||||
private Integer featureResourceType;
|
||||
|
||||
@CriteriaField(field = "path", operator = Operator.SW)
|
||||
private String path;
|
||||
|
||||
|
||||
@ -41,4 +41,34 @@ public class PageElementBasicDTO {
|
||||
* @see cn.axzo.tyr.client.common.enums.PageElementFeatureResourceRelationTypeEnum
|
||||
*/
|
||||
private Integer relationType;
|
||||
|
||||
/**
|
||||
* ios 最低版本要求
|
||||
*/
|
||||
private Integer iosMinVersion;
|
||||
|
||||
/**
|
||||
* ios 最高版本要求
|
||||
*/
|
||||
private Integer iosMaxVersion;
|
||||
|
||||
/**
|
||||
* ios 是否开启最高版本要求:true-开启;false-关闭
|
||||
*/
|
||||
private Boolean iosMaxVersionEnabled;
|
||||
|
||||
/**
|
||||
* android 最低版本要求
|
||||
*/
|
||||
private Integer androidMinVersion;
|
||||
|
||||
/**
|
||||
* android 最高版本要求
|
||||
*/
|
||||
private Integer androidMaxVersion;
|
||||
|
||||
/**
|
||||
* android 是否开启最高版本要求:true-开启;false-关闭
|
||||
*/
|
||||
private Boolean androidMaxVersionEnabled;
|
||||
}
|
||||
|
||||
@ -55,5 +55,10 @@ public class TerminalConfigRes {
|
||||
* 端业务类型的code,用于业务处理:GOV、AXZO_MANAGER、AXZO_WORKER、OMS
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 是否允许克隆
|
||||
*/
|
||||
private Boolean allowClone;
|
||||
}
|
||||
}
|
||||
|
||||
@ -19,7 +19,16 @@ public class TerminalRes {
|
||||
|
||||
private String terminalType;
|
||||
|
||||
private String terminalTypeDesc;
|
||||
|
||||
private String terminalBizType;
|
||||
|
||||
private String terminalBizTypeDesc;
|
||||
|
||||
private Integer featureType;
|
||||
|
||||
/**
|
||||
* 是否允许克隆
|
||||
*/
|
||||
private Boolean allowClone;
|
||||
}
|
||||
|
||||
@ -19,11 +19,14 @@ import cn.axzo.tyr.server.service.SaasFeatureResourceService;
|
||||
import cn.axzo.tyr.server.service.TerminalService;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.axzo.tyr.client.model.res.SaasFeatureResourceResp.ROOT_PARENT_ID;
|
||||
@ -45,24 +48,49 @@ public class TerminalController implements TerminalApi {
|
||||
public ApiResult<List<TerminalRes>> list(ListTerminalReq req) {
|
||||
|
||||
PageSaasFeatureResourceReq pageSaasFeatureResourceReq = PageSaasFeatureResourceReq.builder()
|
||||
.ids(Lists.newArrayList(req.getIds()))
|
||||
.ids(Optional.ofNullable(req.getIds())
|
||||
.map(Lists::newArrayList)
|
||||
.orElse(null))
|
||||
.build();
|
||||
List<SaasFeatureResourceResp> saasFeatureResources = featureResourceService.list(pageSaasFeatureResourceReq);
|
||||
|
||||
if (CollectionUtils.isEmpty(saasFeatureResources)) {
|
||||
return ApiResult.ok();
|
||||
}
|
||||
|
||||
Map<String, String> terminalTypes = terminalService.getConfig().getTerminalTypes().stream()
|
||||
.collect(Collectors.toMap(TerminalConfigRes.TerminalType::getCode, TerminalConfigRes.TerminalType::getDesc));
|
||||
|
||||
Map<String, TerminalConfigRes.TerminalBizType> terminalBizTypes = terminalService.getConfig().getTerminalBizTypes().stream()
|
||||
.collect(Collectors.toMap(TerminalConfigRes.TerminalBizType::getCode, Function.identity()));
|
||||
|
||||
return ApiResult.ok(saasFeatureResources.stream()
|
||||
.map(e -> {
|
||||
FeatureResourceExtraDO extra = e.getExtra();
|
||||
String terminalTypeCode = Optional.ofNullable(extra)
|
||||
.map(FeatureResourceExtraDO::getTerminalType)
|
||||
.orElse(null);
|
||||
String terminalBizTypeCode = Optional.ofNullable(extra)
|
||||
.map(FeatureResourceExtraDO::getTerminalBizType)
|
||||
.orElse(null);
|
||||
|
||||
TerminalConfigRes.TerminalBizType terminalBizType = terminalBizTypes.get(terminalBizTypeCode);
|
||||
|
||||
return TerminalRes.builder()
|
||||
.id(e.getId())
|
||||
.code(e.getTerminal())
|
||||
.name(e.getFeatureName())
|
||||
.terminalType(Optional.ofNullable(extra)
|
||||
.map(FeatureResourceExtraDO::getTerminalType)
|
||||
.terminalType(terminalTypeCode)
|
||||
.terminalTypeDesc(Optional.ofNullable(terminalTypeCode)
|
||||
.map(terminalTypes::get)
|
||||
.orElse(null))
|
||||
.terminalBizType(Optional.ofNullable(extra)
|
||||
.map(FeatureResourceExtraDO::getTerminalBizType)
|
||||
.terminalBizType(terminalBizTypeCode)
|
||||
.terminalBizTypeDesc(Optional.ofNullable(terminalBizType)
|
||||
.map(TerminalConfigRes.TerminalBizType::getDesc)
|
||||
.orElse(null))
|
||||
.allowClone(Optional.ofNullable(terminalBizType)
|
||||
.map(TerminalConfigRes.TerminalBizType::getAllowClone)
|
||||
.orElse(false))
|
||||
.featureType(e.getFeatureType())
|
||||
.build();
|
||||
})
|
||||
|
||||
@ -384,9 +384,49 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
|
||||
|
||||
List<String> allUniCodes = descendants.stream().map(SaasFeatureResource::getUniCode).filter(StringUtils::isNotBlank).collect(Collectors.toList());
|
||||
fillPageElement2PageFeatureResource(treeList, allUniCodes, param);
|
||||
|
||||
// 查询页面关联资源的版本号
|
||||
assemblePageRouteVersion(featureResourceTreeNode);
|
||||
return featureResourceTreeNode;
|
||||
}
|
||||
|
||||
private void assemblePageRouteVersion(FeatureResourceTreeNode featureResourceTreeNode) {
|
||||
if (Objects.isNull(featureResourceTreeNode)) {
|
||||
return;
|
||||
}
|
||||
|
||||
PageElementFeatureResourceRelationReq pageElementFeatureResourceRelationReq = PageElementFeatureResourceRelationReq.builder()
|
||||
.featureResourceUniCodes(Sets.newHashSet(featureResourceTreeNode.getUniCode()))
|
||||
.types(Sets.newHashSet(PageElementFeatureResourceRelationTypeEnum.PAGE_ROUTE))
|
||||
.build();
|
||||
List<SaasPageElementFeatureResourceRelation> pageElementFeatureResourceRelations = saasPageElementFeatureResourceRelationService.list(pageElementFeatureResourceRelationReq);
|
||||
|
||||
if (CollectionUtils.isEmpty(pageElementFeatureResourceRelations)) {
|
||||
return;
|
||||
}
|
||||
|
||||
PageElementReq pageElementReq = PageElementReq.builder()
|
||||
.codes(pageElementFeatureResourceRelations.stream()
|
||||
.map(SaasPageElementFeatureResourceRelation::getPageElementCode)
|
||||
.collect(Collectors.toSet()))
|
||||
.build();
|
||||
Optional<PageElementResp> pageElementOptional = saasPageElementService.list(pageElementReq).stream()
|
||||
.findFirst();
|
||||
|
||||
if (!pageElementOptional.isPresent()) {
|
||||
return;
|
||||
}
|
||||
|
||||
PageElementResp pageElementResp = pageElementOptional.get();
|
||||
|
||||
featureResourceTreeNode.setAndroidMinVersion(pageElementResp.getAndroidMinVersion());
|
||||
featureResourceTreeNode.setAndroidMaxVersion(pageElementResp.getAndroidMaxVersion());
|
||||
featureResourceTreeNode.setAndroidMaxVersionEnabled(pageElementResp.getAndroidMaxVersionEnabled());
|
||||
featureResourceTreeNode.setIosMinVersion(pageElementResp.getIosMinVersion());
|
||||
featureResourceTreeNode.setIosMaxVersion(pageElementResp.getIosMaxVersion());
|
||||
featureResourceTreeNode.setIosMaxVersionEnabled(pageElementResp.getIosMaxVersionEnabled());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@CacheEvict(value = SaasFeatureResourceCacheService.CACHE_FEATURE_RESOURCE_TREE,allEntries = true)
|
||||
@ -1178,7 +1218,7 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
|
||||
// 通过旧端的层级关系找到对应新端的记录,然后更新path和parentId
|
||||
List<SaasFeatureResource> children = oldChildren.stream()
|
||||
.map(e -> {
|
||||
SaasFeatureResourceResp saasFeatureResourceResp = newUnicodeMap.get(req.getNewTerminalFeatureCodePrefix() + ":" + e.getUniCode());
|
||||
SaasFeatureResourceResp saasFeatureResourceResp = newUnicodeMap.get(replaceUnicode(req.getNewTerminalFeatureCodePrefix(), e.getUniCode()));
|
||||
|
||||
SaasFeatureResource saasFeatureResource = new SaasFeatureResource();
|
||||
saasFeatureResource.setId(saasFeatureResourceResp.getId());
|
||||
@ -1193,7 +1233,7 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
|
||||
|
||||
children.forEach(e -> {
|
||||
List<FeatureResourceTreeNode> oldNextChildren = oldChildren.stream()
|
||||
.filter(old -> Objects.equals(req.getNewTerminalFeatureCodePrefix() + ":" + old.getUniCode(), e.getUniCode()))
|
||||
.filter(old -> Objects.equals(replaceUnicode(req.getNewTerminalFeatureCodePrefix(), old.getUniCode()), e.getUniCode()))
|
||||
.map(FeatureResourceTreeNode::getChildren)
|
||||
.filter(Objects::nonNull)
|
||||
.flatMap(Collection::stream)
|
||||
@ -1221,7 +1261,8 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
|
||||
saasFeatureResource.setFeatureCode(req.getNewTerminalCode());
|
||||
saasFeatureResource.setFeatureName(req.getNewTerminalName());
|
||||
} else {
|
||||
saasFeatureResource.setUniCode(req.getNewTerminalFeatureCodePrefix() + ":" + e.getUniCode());
|
||||
|
||||
saasFeatureResource.setUniCode(replaceUnicode(req.getNewTerminalFeatureCodePrefix(), e.getUniCode()));
|
||||
saasFeatureResource.setFeatureCode(saasFeatureResource.getUniCode());
|
||||
saasFeatureResource.setFeatureName(e.getFeatureName());
|
||||
}
|
||||
@ -1230,4 +1271,18 @@ public class SaasFeatureResourceServiceImpl extends ServiceImpl<SaasFeatureResou
|
||||
.collect(Collectors.toList());
|
||||
this.saveBatch(inserts);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新code的解析
|
||||
* 原code第一个":"前的字符串替换成newTerminalFeatureCodePrefix,
|
||||
* 如果原code没有":",则直接把newTerminalFeatureCodePrefix + ":" + oldUniCode
|
||||
* @param newTerminalFeatureCodePrefix
|
||||
* @param oldUniCode
|
||||
* @return
|
||||
*/
|
||||
private String replaceUnicode(String newTerminalFeatureCodePrefix, String oldUniCode) {
|
||||
int i = oldUniCode.indexOf(":");
|
||||
|
||||
return i < 0 ? newTerminalFeatureCodePrefix + ":" + oldUniCode : newTerminalFeatureCodePrefix + oldUniCode.substring(i);
|
||||
}
|
||||
}
|
||||
|
||||
@ -857,6 +857,30 @@ public class SaasPageElementServiceImpl extends ServiceImpl<SaasPageElementMappe
|
||||
PageElementResp pageElementResp = PageElementResp.builder().build();
|
||||
|
||||
BeanUtils.copyProperties(saasPageElement, pageElementResp);
|
||||
List<SaasPageElement.Application> applications = saasPageElement.covertToExt().getApplications();
|
||||
// 把这个平铺出去,方便使用
|
||||
if (CollectionUtils.isNotEmpty(applications)) {
|
||||
SaasPageElement.Application iosApplication = applications.stream()
|
||||
.filter(application -> Objects.equals(application.getType(), SaasPageElement.ApplicationTypeEnum.IOS))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
if (Objects.nonNull(iosApplication)) {
|
||||
pageElementResp.setIosMinVersion(iosApplication.getMinVersion());
|
||||
pageElementResp.setIosMaxVersion(iosApplication.getMaxVersion());
|
||||
pageElementResp.setIosMaxVersionEnabled(iosApplication.getMaxVersionEnabled());
|
||||
}
|
||||
|
||||
SaasPageElement.Application androidApplication = applications.stream()
|
||||
.filter(application -> Objects.equals(application.getType(), SaasPageElement.ApplicationTypeEnum.ANDROID))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
if (Objects.nonNull(androidApplication)) {
|
||||
pageElementResp.setAndroidMinVersion(androidApplication.getMinVersion());
|
||||
pageElementResp.setAndroidMaxVersion(androidApplication.getMaxVersion());
|
||||
pageElementResp.setAndroidMaxVersionEnabled(androidApplication.getMaxVersionEnabled());
|
||||
}
|
||||
}
|
||||
|
||||
pageElementResp.setFeatureResources(featureResources.get(saasPageElement.getCode()));
|
||||
|
||||
pageElementResp.setChildren(childrenPageElements.get(saasPageElement.getCode()));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user