Helius
2022-07-11 a508775d5c69e61e605c8f00fc18e70279444869
src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java
@@ -1,14 +1,14 @@
package com.xcong.farmer.cms.core.template;
import cn.hutool.core.collection.CollUtil;
import com.xcong.farmer.cms.common.utils.FileUtils;
import com.xcong.farmer.cms.core.node.PartNode;
import com.xcong.farmer.cms.core.tag.TagsEnum;
import com.xcong.farmer.cms.core.node.Template;
import lombok.extern.slf4j.Slf4j;
import org.jsoup.nodes.Document;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -16,12 +16,13 @@
 * @author wzy
 * @date 2022-07-01
 **/
@Slf4j
public class TemplateConfiguration extends Configuration{
    private TemplateLoader templateLoader;
    public TemplateConfiguration(String templatePath, String staticPath, String outputPath) {
        super(templatePath, staticPath, outputPath);
    public TemplateConfiguration(String templatePath, String staticPath, String outputPath, String baseUrl, String staticUrl) {
        super(templatePath, staticPath, outputPath, baseUrl, staticUrl);
    }
    public void templateLoader(TemplateLoader templateLoader) {
@@ -32,14 +33,28 @@
        if (this.templateLoader == null) {
            throw new RuntimeException("TemplateLoader do not able to be null");
        }
        map.put("apiUrl", API_URL);
        String companyCode = (String) map.get("companyCode");
        log.info("解析开始执行--#类型:{}#--#模板名称:{}#--#ID:{}#", map.get("templateType"), templateName, map.get("id"));
        this.templateLoader.data(map);
        output(template(templateName));
        Template template = template(FileUtils.path(templatePath, companyCode), templateName);
        template.output(outputPath);
        // 判断是否有分页,有则执行。从第二页开始
        int i = 2;
        while(Template.HAS_PAGING) {
            map.put("page", i);
            this.templateLoader.data(map);
            Template pageTemplate = template(FileUtils.path(templatePath, companyCode), templateName);
            pageTemplate.output(outputPath);
            i++;
        }
    }
    public Template template(String templateName) {
        return template(new File(path(this.templatePath) + templateName));
    public Template template(String templatePath, String templateName) {
        return template(new File(path(templatePath) + templateName));
    }
    public Template template(File file) {
@@ -48,35 +63,6 @@
        }
        return this.templateLoader.template(file);
    }
//    public void columnProcess(Map<String, Object> data, String templateName) {
//        process;
//    }
//
//
//    public void articleProcess(Map<String, Object> data, String templateName) {
//        process(data, templateName);
//    }
    public void output(Template template) {
        Document document = template.getDocument();
        List<PartNode> partNodes = template.getPartNodes();
        StringBuilder sb = new StringBuilder();
        for (PartNode partNode : partNodes) {
            sb.append(partNode.getHtml());
        }
        document.body().empty().html(sb.toString());
        String outPath = path(this.outputPath);
        String html = document.html();
        try {
            FileOutputStream outputStream = new FileOutputStream(outPath + template.getName());
            outputStream.write(html.getBytes());
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    private String path(String path) {