fxi
Hentua
2024-01-10 51ea662e22121f9a0ddb5b40c4a8e93e098b34ec
src/main/java/com/xcong/farmer/cms/core/template/TemplateConfiguration.java
@@ -1,14 +1,15 @@
package com.xcong.farmer.cms.core.template;
import cn.hutool.core.collection.CollUtil;
import com.xcong.farmer.cms.common.exception.GlobalException;
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 +17,13 @@
 * @author wzy
 * @date 2022-07-01
 **/
public class TemplateConfiguration extends Configuration{
@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 +34,38 @@
        if (this.templateLoader == null) {
            throw new RuntimeException("TemplateLoader do not able to be null");
        }
        map.put("apiUrl", API_URL);
        this.templateLoader.data(map);
        output(template(templateName));
        try {
            String companyCode = (String) map.get("companyCode");
            log.info("解析开始执行--#类型:{}#--#模板名称:{}#--#ID:{}#", map.get("templateType"), templateName, map.get("id"));
            this.templateLoader.data(map);
            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++;
            }
        } catch (Exception e) {
            log.error("页面编译异常", e);
        }
    }
    public Template template(String templatePath, String templateName) {
        File file = new File(path(templatePath) + templateName);
        if (!file.exists()) {
            log.info("模板文件不存在 : {}", templateName);
            throw new GlobalException("模板文件不存在:" + templateName);
        }
    public Template template(String templateName) {
        return template(new File(path(this.templatePath) + templateName));
        return template(file);
    }
    public Template template(File file) {
@@ -48,35 +74,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) {