package com.yiqi.crm.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yiqi.crm.domain.WxReply;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;

import java.util.List;

/**
 * 微信内容管理Service接口
 *
 * @author ruoyi
 * @date 2023-07-27
 */
public interface IWxReplyService extends IService<WxReply> {
    /**
     * 查询微信内容管理
     *
     * @param replyId 微信内容管理主键
     * @return 微信内容管理
     */
    public WxReply selectWxReplyByReplyId(Long replyId);

    /**
     * 查询微信内容管理列表
     *
     * @param wxReply 微信内容管理
     * @return 微信内容管理集合
     */
    public List<WxReply> selectWxReplyList(WxReply wxReply);

    /**
     * 新增微信内容管理
     *
     * @param wxReply 微信内容管理
     * @return 结果
     */
    public int insertWxReply(WxReply wxReply) throws Exception;

    /**
     * 查询图文回复列表
     *
     * @return 结果
     */
    List<WxReply> getPicTextReplyList();

    /**
     * 修改微信内容管理
     *
     * @param wxReply 微信内容管理
     * @return 结果
     */
    public int updateWxReply(WxReply wxReply) throws Exception;

    /**
     * 批量删除微信内容管理
     *
     * @param replyIds 需要删除的微信内容管理主键集合
     * @return 结果
     */
    public int deleteWxReplyByReplyIds(Long[] replyIds);

    /**
     * 删除微信内容管理信息
     *
     * @param replyId 微信内容管理主键
     * @return 结果
     */
    public int deleteWxReplyByReplyId(Long replyId);

    /**
     * 查询微信内容管理
     *
     * @param replyType 微信内容管理主键
     * @return 微信内容管理
     */
    public WxReply selectWxReplyByReplyType(String replyType);

    /**
     * 获取包含对应关键词信息
     *
     * @param keyWords 关键词
     * @return 结果
     */
    public List<WxReply> getKeyWordsReplyListByContain(String keyWords);

    /**
     * 获取完全匹配对应关键词信息
     *
     * @param keyWords 关键词
     * @return 结果
     */
    public List<WxReply> getKeyWordsReplyListByEqual(String keyWords);

    /**
     * 获取默认回复信息
     *
     * @return 结果
     */
    public WxReply getKeyWordsReplyListByDefault();

    /**
     * 获取关注回复信息
     *
     * @return 结果
     */
    public WxReply getKeyWordsReplyListBySubscribe();
    /**
     * 计算浏览次数addMore
     *
     * @return 结果
     */
    public Integer countLookNumber(WxReply wxReply);
    /**
     * 根据关键字，查询回复信息
     *
     * @param keyWords
     * @return 返回优先级最高的一条
     */
    public WxReply handleKeyWordsText(String keyWords);
    /**
     * 根据回复内容类型，构建回复信息
     *
     * @param wxReply
     * @param wxMessage
     * @param wxMpService
     * @return
     */
    public WxMpXmlOutMessage getWxReplyInfo(WxReply wxReply, WxMpXmlMessage wxMessage, WxMpService wxMpService);
}

