package com.ruoyi.dk.util;

import cn.hutool.core.util.StrUtil;
import freemarker.cache.StringTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import lombok.SneakyThrows;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;

import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * 使用说明 ${name!12312312} 代表默认值
 * 支持自定义日期格式newDate为约定 ${newDate?string("yyyy-MM-dd HH:mm:ss")
 * 普通字符直接替换${code}
 * @author zlf
 * @date 2023/6/19 6:56 PM
 * @desc
 */
public class ContentReplaceUtil {

    public static String NOW_DATE = "newDate";


    @SneakyThrows
    public static String replaceWord(String content, Map<String, Object> params) {
        if (StrUtil.isEmpty(content)){
            return null;
        }
        if (content.contains(NOW_DATE)){
            params.put("newDate",new Date());
        }
        StringTemplateLoader stringTemplateLoader = new StringTemplateLoader();
        stringTemplateLoader.putTemplate("test.ftl", content);
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_22);
        cfg.setTemplateLoader(stringTemplateLoader);
        Template template = cfg.getTemplate("test.ftl");
        String finalContent = FreeMarkerTemplateUtils.processTemplateIntoString(template, params);
        return finalContent;
    }

}
