package com.yice.webadmin.app.model;

import com.baomidou.mybatisplus.annotation.*;
import com.yice.common.core.util.MyCommonUtil;
import com.yice.common.core.annotation.*;
import com.yice.common.core.base.model.BaseModel;
import com.yice.common.core.base.mapper.BaseModelMapper;
import com.yice.webadmin.app.vo.PromptTemplateVo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.mapstruct.*;
import org.mapstruct.factory.Mappers;

import java.util.Map;

/**
 * PromptTemplate实体对象。
 *
 * @author linking
 * @date 2023-04-13
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName(value = "lmp_prompt_template")
public class PromptTemplate extends BaseModel {

    /**
     * 模板ID。
     */
    @TableId(value = "template_id")
    private Long templateId;

    /**
     * 逻辑删除标记字段(1: 正常 -1: 已删除)。
     */
    @TableLogic
    private Integer deletedFlag;

    /**
     * 模板名称。
     */
    private String templateName;

    /**
     * 模板标签。
     */
    private String templateLabel;

    /**
     * 浏览量。
     */
    private Long pageView;

    /**
     * 模板内容。
     */
    private String templateContent;

    /**
     * 模板来源。
     */
    private Integer templateSource;

    /**
     * 场景类型。
     */
    private Integer scenarioType;

    /**
     * 参数格式。
     */
    private String parameterFormat;

    /**
     * 接口地址。
     */
    private String interfaceAddress;

    /**
     * 模板框架。
     */
    private Integer templateFramework;

    /**
     * 变量列表。
     */
    private String variable;

    /**
     * template_name / template_content LIKE搜索字符串。
     */
    @TableField(exist = false)
    private String searchString;

    public void setSearchString(String searchString) {
        this.searchString = MyCommonUtil.replaceSqlWildcard(searchString);
    }

    @RelationGlobalDict(
            masterIdField = "templateSource",
            dictCode = "TemplateSourceLabel")
    @TableField(exist = false)
    private Map<String, Object> templateSourceDictMap;

    @RelationGlobalDict(
            masterIdField = "scenarioType",
            dictCode = "ScenarioTypeLabel")
    @TableField(exist = false)
    private Map<String, Object> scenarioTypeDictMap;

    @RelationGlobalDict(
            masterIdField = "templateFramework",
            dictCode = "TemplateFrameworkLabel")
    @TableField(exist = false)
    private Map<String, Object> templateFrameworkDictMap;

    @Mapper
    public interface PromptTemplateModelMapper extends BaseModelMapper<PromptTemplateVo, PromptTemplate> {
        /**
         * 转换Vo对象到实体对象。
         *
         * @param promptTemplateVo 域对象。
         * @return 实体对象。
         */
        @Override
        PromptTemplate toModel(PromptTemplateVo promptTemplateVo);
        /**
         * 转换实体对象到VO对象。
         *
         * @param promptTemplate 实体对象。
         * @return 域对象。
         */
        @Override
        PromptTemplateVo fromModel(PromptTemplate promptTemplate);
    }
    public static final PromptTemplateModelMapper INSTANCE = Mappers.getMapper(PromptTemplateModelMapper.class);
}
