package com.miaxis.common.utils.wx;

import com.miaxis.common.utils.XmlUtil;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * 微信消息工具
 * @author wwl
 * @version 1.0
 * @date 2021/10/25 13:19
 */
public class MessageUtil {

    public static final String MESSAGE_TEXT="text";//文本消息
    public static final String MESSAGE_IMAGE="image";//图片消息
    public static final String MESSAGE_VOICE="voice";//语音消息
    public static final String MESSAGE_VIDEO="video";//视频消息
    public static final String MESSAGE_LOCATION="LOCATION";//地理位置消息
    public static final String MESSAGE_EVENT="event";//事件消息
    public static final String MESSAGE_SUBSCRIBE="subscribe";//关注
    public static final String MESSAGE_UNSUBSCRIBE="unsubscribe";//取消关注
    public static final String MESSAGE_SCAN="SCAN";//已关注扫码消息
    public static final String MESSAGE_CLICK="CLICK";//点击菜单拉取消息
    public static final String MESSAGE_VIEW="VIEW";//点击菜单跳转链接消息
    public static final String MESSAGE_VIEW_MINIPROGRAM="view_miniprogram";//点击菜单跳转小程序的消息



    /**
     * 回复文本消息
     * @param fromUserName
     * @param toUserName
     * @param content 回复的消息内容（换行：在content中能够换行，微信客户端就支持换行显示）
     * @return
     */
    public static String initText(String fromUserName, String toUserName, String content) throws Exception{
        // 返回消息时ToUserName的值与FromUserName的互换
        Map<String, String> returnMap = new HashMap<>();
        returnMap.put("ToUserName", fromUserName);
        returnMap.put("FromUserName", toUserName);
        returnMap.put("CreateTime", new Date().getTime()+"");
        returnMap.put("MsgType", "text");
        returnMap.put("Content", content);
        return XmlUtil.mapToXml(returnMap);
    }


    /**
     * 回复图片消息
     * @param fromUserName
     * @param toUserName
     * @param mediaId 通过素材管理中的接口上传多媒体文件，得到的id。
     * @return
     */
    public static String initImage(String fromUserName, String toUserName, String mediaId) throws Exception{
        // 返回消息时ToUserName的值与FromUserName的互换
        Map<String, String> returnMap = new HashMap<>();
        returnMap.put("ToUserName", fromUserName);
        returnMap.put("FromUserName", toUserName);
        returnMap.put("CreateTime", new Date().getTime()+"");
        returnMap.put("MsgType", "image");
        returnMap.put("MediaId", mediaId);
        return XmlUtil.mapToXmlSpecial(returnMap);
    }


    /**
     * 回复图文消息
     * @param fromUserName 开发者微信号
     * @param toUserName 接收方帐号（收到的OpenID）
     * @param articles 图文消息信息，注意，如果图文数超过限制，则将只发限制内的条数
     * @param title 图文消息标题
     * @param description 图文消息描述
     * @param picUrl 图片链接，支持JPG、PNG格式，较好的效果为大图360*200，小图200*200
     * @param url 点击图文消息跳转链接
     * @return
     */
    public static String initNews(String fromUserName, String toUserName, String articles, String title, String description, String picUrl, String url)  throws Exception{
        // 返回消息时ToUserName的值与FromUserName的互换
        Map<String, String> returnMap = new HashMap<>();
        returnMap.put("ToUserName", fromUserName);
        returnMap.put("FromUserName", toUserName);
        returnMap.put("CreateTime", new Date().getTime()+"");
        returnMap.put("MsgType", "news");
        returnMap.put("ArticleCount", "1");
        returnMap.put("Content", articles);
        returnMap.put("Title", title);
        returnMap.put("Description", description);
        returnMap.put("PicUrl", picUrl);
        returnMap.put("Url", url);
        return XmlUtil.mapToXml(returnMap);
    }


}
