package com.dora.service;

import com.dora.entity.WechatMessageTemplate;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;

/**
 * 微信事件处理器服务
 * 
 * @author dora
 * @date 2024/12/01
 */
public interface WechatEventHandlerService {

    /**
     * 事件分发
     * @param wxMessage 微信消息
     */
    void dispatchEvent(WxMpXmlMessage wxMessage);

    /**
     * 处理关注事件
     * 
     * @param wxMessage 微信消息
     */
    void handleSubscribeEvent(WxMpXmlMessage wxMessage);

    /**
     * 处理取消关注事件
     */
    void handleUnsubscribeEvent(WxMpXmlMessage wxMessage);

    /**
     * 处理扫码事件
     */
    void handleScanEvent(WxMpXmlMessage wxMessage);

    /**
     * 处理菜单点击事件
     */
    void handleMenuClickEvent(WxMpXmlMessage wxMessage);

    /**
     * 处理菜单跳转事件
     */
    void handleMenuViewEvent(WxMpXmlMessage wxMessage);

    /**
     * 处理文本消息（关键词回复）
     */
    void handleTextMessage(WxMpXmlMessage wxMessage);

    /**
     * 处理其他消息类型
     */
    void handleOtherMessage(WxMpXmlMessage wxMessage);

    /**
     * 发送模板消息给用户
     */
    boolean sendTemplateMessage(String openid, WechatMessageTemplate template);

    /**
     * 获取欢迎消息
     */
    String getWelcomeMessage();

    /**
     * 根据菜单Key处理点击事件
     */
    String processMenuClick(String menuKey, String openid);
}
