package com.bofeng.wx;

import com.google.common.base.Strings;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutNewsMessage;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.Map;

import static me.chanjar.weixin.common.api.WxConsts.XmlMsgType;

@Component
@Slf4j
public class MsgHandler implements WxMpMessageHandler {

    @Value("${yvan.wechat.domain}")
    private String serverAddress;

    @Override
    public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
                                    Map<String, Object> context, WxMpService weixinService,
                                    WxSessionManager sessionManager) {

        if (!wxMessage.getMsgType().equals(XmlMsgType.EVENT)) {
            //TODO 可以选择将消息保存到本地
        }

        //当用户输入关键词如“你好”，“客服”等，并且有客服在线时，把消息转发给在线客服
        //try {
        //    if (StringUtils.startsWithAny(wxMessage.getContent(), "你好", "客服")
        //            && weixinService.getKefuService().kfOnlineList()
        //            .getKfOnlineList().size() > 0) {
        //        return WxMpXmlOutMessage.TRANSFER_CUSTOMER_SERVICE()
        //                .fromUser(wxMessage.getToUser())
        //                .toUser(wxMessage.getFromUser()).build();
        //    }
        //} catch (WxErrorException e) {
        //    log.error("MsgHandler Error", e);
        //}

        wxMessage.setContent(wxMessage.getContent().trim());
        if (Strings.isNullOrEmpty(wxMessage.getContent())) {
            return null;
        }

        String content = "";
        if ("管理".equals(wxMessage.getContent())) {
            val item = new WxMpXmlOutNewsMessage.Item();
            item.setUrl(serverAddress + "/user/login.html");
            item.setTitle("博锋管家后台");

            return WxMpXmlOutMessage.NEWS().addArticle(item)
                    .fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
                    .build();
        }

        if (Strings.isNullOrEmpty(content)) {
            return null;
        }
        //return new TextBuilder().build(content, wxMessage, weixinService);
        return WxMpXmlOutMessage.TEXT().content(content)
                .fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
                .build();
    }

}
