package com.yunzhupaas.message.service;


import com.yunzhupaas.base.service.SuperService;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.*;

import com.yunzhupaas.base.ActionResult;
import com.yunzhupaas.exception.DataException;
import com.yunzhupaas.message.entity.MessageTemplateConfigEntity;
import com.yunzhupaas.message.entity.SmsFieldEntity;
import com.yunzhupaas.message.entity.TemplateParamEntity;
import com.yunzhupaas.message.model.messagetemplateconfig.*;

/**
 * 消息模板（新）
 * 版本： V3.2.0
 * 版权： 深圳市乐程软件有限公司（http://www.szlecheng.cn）
 * 作者： 云筑产品开发平台组
 * 日期： 2022-08-18
 */
public interface MessageTemplateConfigService extends SuperService<MessageTemplateConfigEntity> {


    List<MessageTemplateConfigEntity> getList(MessageTemplateConfigPagination MessageTemplateConfigPagination);

    List<MessageTemplateConfigEntity> getTypeList(MessageTemplateConfigPagination MessageTemplateConfigPagination, String dataType);


    MessageTemplateConfigEntity getInfo(String id);

    MessageTemplateConfigEntity getInfoByEnCode(String enCode,String messageType);

    void delete(MessageTemplateConfigEntity entity);

    void create(MessageTemplateConfigEntity entity);

    boolean update(String id, MessageTemplateConfigEntity entity);

    //  子表方法
    List<TemplateParamEntity> getTemplateParamList(String id, MessageTemplateConfigPagination MessageTemplateConfigPagination);

    List<TemplateParamEntity> getTemplateParamList(String id);

    List<SmsFieldEntity> getSmsFieldList(String id, MessageTemplateConfigPagination MessageTemplateConfigPagination);

    List<SmsFieldEntity> getSmsFieldList(String id);

    //列表子表数据方法

    //验证表单
    boolean checkForm(MessageTemplateConfigForm form, int i,String id);

    /**
     * 验证名称
     *
     * @param fullName 名称
     * @param id       主键值
     * @return ignore
     */
    boolean isExistByFullName(String fullName, String id);

    /**
     * 验证编码
     *
     * @param enCode 编码
     * @param id     主键值
     * @return ignore
     */
    boolean isExistByEnCode(String enCode, String id);

    /**
     * 消息模板导入
     *
     * @param entity 实体对象
     * @return ignore
     * @throws DataException ignore
     */
    ActionResult ImportData(MessageTemplateConfigEntity entity) throws DataException;

//    /**
//     * 获取模板被引用的参数（用json格式存储参数数据）
//     * @param id 模板id
//     * @return
//     */
//    List<BaseTemplateParamModel> getParamJson(String id);

    /**
     * 获取模板被引用的参数（消息模板参数数据用子表保存）
     * @param id 模板id
     * @return
     */
    List<TemplateParamModel> getParamJson(String id);
}

