package io.dataease.api.template.dto; import io.dataease.api.template.vo.MarketCategoryVO; import io.dataease.api.template.vo.MarketMetasVO; import io.dataease.i18n.Translator; import lombok.Data; import lombok.NoArgsConstructor; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @Data @NoArgsConstructor public class TemplateMarketDTO implements Comparable { private String id; private String title; private String status; private String slug; private String editorType; private String summary; private String thumbnail; private Boolean showFlag = true; private String suggest = "N"; private Long recentUseTime = 0L; private String templateType; // 模板来源 market = 模板市场;manage=模板管理 private String source = "market"; // 模板分类 app = 应用模板;manage=样式模板 private String classify = "template"; private List categories; private List categoryNames; private String mainCategory; private MarketMetasVO metas; public TemplateMarketDTO(TemplateManageDTO manageDTO) { this.id = manageDTO.getId(); this.title = manageDTO.getName(); this.mainCategory = manageDTO.getCategoryName(); this.categories = manageDTO.getCategoryNames().stream().map(category->new MarketCategoryVO(category)).collect(Collectors.toList()); this.categoryNames = manageDTO.getCategoryNames(); this.metas = new MarketMetasVO(manageDTO.getSnapshot()); this.templateType = "dataV".equalsIgnoreCase(manageDTO.getDvType()) ? "SCREEN" : "PANEL"; this.thumbnail = manageDTO.getSnapshot(); this.source = "manage"; this.classify = manageDTO.getNodeType(); if (manageDTO.getRecentUseTime() != null) { this.recentUseTime = manageDTO.getRecentUseTime(); String name = Translator.get("i18n_template_recent"); this.categories.add(new MarketCategoryVO(name)); this.categoryNames.add(name); } } public TemplateMarketDTO(String id, String title, String themeRepo, String templateUrl, String categoryName, String templateType, Long recentUseTime, String suggest, String classify) { this.id = id; this.title = title; this.metas = new MarketMetasVO(templateUrl); this.thumbnail = themeRepo; this.templateType = templateType; this.categories = new ArrayList<>(Arrays.asList(new MarketCategoryVO(categoryName))) ; this.categoryNames = new ArrayList<>(Arrays.asList(categoryName)) ; if("DATA".equals(classify)){ this.classify = "app"; } if (recentUseTime != null) { this.recentUseTime = recentUseTime; String name = Translator.get("i18n_template_recent"); this.categories.add(new MarketCategoryVO(name)); this.categoryNames.add(name); } if ("Y".equalsIgnoreCase(suggest)) { this.suggest = "Y"; String name = Translator.get("i18n_template_recommend"); this.categories.add(new MarketCategoryVO(name)); this.categoryNames.add(name); } } @Override public int compareTo(TemplateMarketDTO other) { return Long.compare(other.recentUseTime, this.recentUseTime); } }