refactor: 对接V2模版市场正式环境优化

This commit is contained in:
wangjiahao
2023-11-20 19:51:24 +08:00
parent 4b14332163
commit 372b747bd2
21 changed files with 719 additions and 534 deletions

View File

@@ -1,24 +1,22 @@
package io.dataease.template.manage;
import com.fasterxml.jackson.core.type.TypeReference;
import io.dataease.api.template.dto.TemplateManageFileDTO;
import io.dataease.api.template.dto.TemplateMarketDTO;
import io.dataease.api.template.request.TemplateMarketSearchRequest;
import io.dataease.api.template.response.MarketBaseResponse;
import io.dataease.api.template.response.MarketCategoryBaseResponse;
import io.dataease.api.template.response.MarketTemplateBaseResponse;
import io.dataease.api.template.response.*;
import io.dataease.api.template.vo.MarketApplicationSpecVO;
import io.dataease.api.template.vo.MarketMetaDataVO;
import io.dataease.api.template.vo.TemplateCategoryVO;
import io.dataease.exception.DEException;
import io.dataease.system.manage.SysParameterManage;
import io.dataease.utils.HttpClientConfig;
import io.dataease.utils.HttpClientUtil;
import io.dataease.utils.JsonUtil;
import io.swagger.v3.core.util.Json;
import jakarta.annotation.Resource;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
@@ -31,8 +29,12 @@ import java.util.stream.Collectors;
public class TemplateMarketManage {
private final static String POSTS_API = "/api/content/posts?page=0&size=2000";
private final static String POSTS_API_V2 = "/apis/api.store.halo.run/v1alpha1/applications?keyword=&priceMode=&sort=latestReleaseTimestamp%2Cdesc&type=THEME&deVersion=V2&templateType=&label=&page=1&size=2000";
private final static String CATEGORIES_API = "/api/content/categories";
private final static String TEMPLATE_META_DATA_URL = "/upload/meta_data.json";
@Resource
private SysParameterManage sysParameterManage;
@@ -44,7 +46,7 @@ public class TemplateMarketManage {
if (StringUtils.isNotEmpty(templateUrl)) {
String sufUrl = sysParameterManage.groupVal("template.").get("template.url");
String templateInfo = HttpClientUtil.get(sufUrl + templateUrl, null);
return JsonUtil.parseObject(templateInfo,TemplateManageFileDTO.class);
return JsonUtil.parseObject(templateInfo, TemplateManageFileDTO.class);
} else {
return null;
}
@@ -62,7 +64,29 @@ public class TemplateMarketManage {
public MarketBaseResponse searchTemplate() {
try {
Map<String,String> templateParams = sysParameterManage.groupVal("template.");
Map<String, String> templateParams = sysParameterManage.groupVal("template.");
String result = marketGet(templateParams.get("template.url") + POSTS_API_V2, null);
MarketTemplateV2BaseResponse postsResult = JsonUtil.parseObject(result, MarketTemplateV2BaseResponse.class);
return baseResponseV2Trans(postsResult, templateParams.get("template.url"));
} catch (Exception e) {
DEException.throwException(e);
}
return null;
}
private MarketBaseResponse baseResponseV2Trans(MarketTemplateV2BaseResponse v2BaseResponse, String url) {
Map<String, String> categoriesMap = getCategoriesBaseV2();
List<TemplateMarketDTO> contents = new ArrayList<>();
v2BaseResponse.getItems().stream().forEach(marketTemplateV2ItemResult -> {
MarketApplicationSpecVO spec = marketTemplateV2ItemResult.getApplication().getSpec();
contents.add(new TemplateMarketDTO(spec.getReadmeName(), spec.getDisplayName(), spec.getScreenshots().get(0).getUrl(), spec.getLinks().get(0).getUrl(), categoriesMap.get(spec.getLabel())));
});
return new MarketBaseResponse(url, contents);
}
public MarketBaseResponse searchTemplateV1() {
try {
Map<String, String> templateParams = sysParameterManage.groupVal("template.");
String result = marketGet(templateParams.get("template.url") + POSTS_API, templateParams.get("template.accessKey"));
MarketTemplateBaseResponse postsResult = JsonUtil.parseObject(result, MarketTemplateBaseResponse.class);
MarketBaseResponse response = new MarketBaseResponse(templateParams.get("template.url"), postsResult.getData().getContent());
@@ -73,8 +97,8 @@ public class TemplateMarketManage {
return null;
}
public List<String> getCategories() {
Map<String,String> templateParams = sysParameterManage.groupVal("template.");
public List<String> getCategoriesV1() {
Map<String, String> templateParams = sysParameterManage.groupVal("template.");
String resultStr = marketGet(templateParams.get("template.url") + CATEGORIES_API, templateParams.get("template.accessKey"));
MarketCategoryBaseResponse categoryBaseResponse = JsonUtil.parseObject(resultStr, MarketCategoryBaseResponse.class);
List<TemplateCategoryVO> categories = categoryBaseResponse.getData();
@@ -85,4 +109,23 @@ public class TemplateMarketManage {
}
}
public List<String> getCategories() {
return getCategoriesV2().stream().map(MarketMetaDataVO::getLabel)
.collect(Collectors.toList());
}
public Map<String, String> getCategoriesBaseV2() {
Map<String, String> categories = getCategoriesV2().stream()
.collect(Collectors.toMap(MarketMetaDataVO::getSlug, MarketMetaDataVO::getLabel));
return categories;
}
public List<MarketMetaDataVO> getCategoriesV2() {
Map<String, String> templateParams = sysParameterManage.groupVal("template.");
String resultStr = marketGet(templateParams.get("template.url") + TEMPLATE_META_DATA_URL, null);
MarketMetaDataBaseResponse metaData = JsonUtil.parseObject(resultStr, MarketMetaDataBaseResponse.class);
List<MarketMetaDataVO> categories = metaData.getLabels();
return categories;
}
}

View File

@@ -255,8 +255,8 @@ public class DataVisualizationServer implements DataVisualizationApi {
templateData = templateFileInfo.getComponentData();
dynamicData = templateFileInfo.getDynamicData();
staticResource = templateFileInfo.getStaticResource();
name = request.getName();
dvType = request.getType();
name = templateFileInfo.getName();
dvType = templateFileInfo.getDvType();
}
// 解析动态数据
Map<String, String> dynamicDataMap = JsonUtil.parseObject(dynamicData, Map.class);

View File

@@ -1,6 +1,6 @@
spring:
datasource:
url: jdbc:mysql://localhost:3306/dataease?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
url: jdbc:mysql://localhost:3306/dataease?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: 123456
messages: