package org.dromara.mp.service;

import me.chanjar.weixin.mp.bean.template.WxMpTemplate;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;

import java.util.List;
import java.util.Map;

/**
 * 微信公众号模板消息服务接口
 *
 * @author pengles
 */
public interface WxMpTemplateService {

    /**
     * 发送模板消息
     *
     * @param templateMessage 模板消息对象
     * @return 消息ID
     */
    String sendTemplateMessage(WxMpTemplateMessage templateMessage);

    /**
     * 获取所有模板列表
     *
     * @return 模板列表
     */
    List<WxMpTemplate> getAllTemplates();

    /**
     * 删除模板
     *
     * @param templateId 模板ID
     * @return 是否成功
     */
    boolean deleteTemplate(String templateId);

    /**
     * 发送通知模板消息
     *
     * @param openId     用户openId
     * @param templateId 模板ID
     * @param url        跳转链接
     * @param data       模板数据
     * @return 消息ID
     */
    String sendNotificationMessage(String openId, String templateId, String url, Map<String, String> data);

    /**
     * 发送订单模板消息
     *
     * @param openId  用户openId
     * @param orderNo 订单号
     * @param amount  金额
     * @param status  状态
     * @return 消息ID
     */
    String sendOrderMessage(String openId, String orderNo, String amount, String status);

    /**
     * 发送审核结果模板消息
     *
     * @param openId 用户openId
     * @param result 审核结果
     * @param reason 审核原因
     * @return 消息ID
     */
    String sendAuditResultMessage(String openId, String result, String reason);

    /**
     * 发送活动通知模板消息
     *
     * @param openId       用户openId
     * @param activityName 活动名称
     * @param startTime    开始时间
     * @param endTime      结束时间
     * @return 消息ID
     */
    String sendActivityNotificationMessage(String openId, String activityName, String startTime, String endTime);
}