package com.dora.mapper;

import com.dora.entity.WechatMessageTemplate;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 微信消息模板配置Mapper接口
 * 
 * @author dora
 * @date 2024/12/01
 */
@Mapper
public interface WechatMessageTemplateMapper {

    /**
     * 根据ID查询模板
     */
    WechatMessageTemplate selectById(@Param("id") Long id);

    /**
     * 根据模板Key查询模板
     */
    WechatMessageTemplate selectByTemplateKey(@Param("templateKey") String templateKey);

    /**
     * 根据触发类型和触发值查询模板
     */
    List<WechatMessageTemplate> selectByTrigger(@Param("triggerType") String triggerType,
                                               @Param("triggerValue") String triggerValue);

    /**
     * 查询所有启用的模板
     */
    List<WechatMessageTemplate> selectAllEnabled();

    /**
     * 查询指定触发类型的启用模板（按优先级排序）
     */
    List<WechatMessageTemplate> selectEnabledByTriggerType(@Param("triggerType") String triggerType);

    /**
     * 插入模板
     */
    int insert(WechatMessageTemplate template);

    /**
     * 更新模板
     */
    int updateById(WechatMessageTemplate template);

    /**
     * 根据ID删除模板
     */
    int deleteById(@Param("id") Long id);

    /**
     * 批量更新模板状态
     */
    int updateStatusBatch(@Param("ids") List<Long> ids, @Param("isEnabled") Integer isEnabled);

    /**
     * 检查模板Key是否存在
     */
    boolean existsByTemplateKey(@Param("templateKey") String templateKey, @Param("excludeId") Long excludeId);

    /**
     * 分页查询模板列表
     */
    List<WechatMessageTemplate> selectTemplateList(@Param("templateName") String templateName,
                                                   @Param("templateType") String templateType,
                                                   @Param("triggerType") String triggerType,
                                                   @Param("isEnabled") Integer isEnabled,
                                                   @Param("offset") int offset,
                                                   @Param("size") int size);

    /**
     * 统计模板列表总数
     */
    int countTemplateList(@Param("templateName") String templateName,
                         @Param("templateType") String templateType,
                         @Param("triggerType") String triggerType,
                         @Param("isEnabled") Integer isEnabled);

    /**
     * 获取默认回复模板
     */
    WechatMessageTemplate selectDefaultReplyTemplate();

    /**
     * 根据关键词查询匹配的模板（通过关键词回复表关联）
     */
    List<WechatMessageTemplate> selectByKeyword(@Param("keyword") String keyword);
}
