MenuHandler.java 2.0 KB
package org.theyeasy.weixin.handler;

import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.theyeasy.weixin.builder.AbstractBuilder;
import org.theyeasy.weixin.builder.ImageBuilder;
import org.theyeasy.weixin.builder.TextBuilder;
import org.theyeasy.weixin.model.WxMenuKey;

import com.alibaba.fastjson.JSON;

import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;

/**
 * 
 * @author Binary Wang
 *
 */
@Component
public class MenuHandler extends AbstractHandler {
	private final static Logger log = LoggerFactory.getLogger(SubscribeHandler.class);
	
	
  @Override
  public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
      Map<String, Object> context, WxMpService wxMpService,
      WxSessionManager sessionManager) {
	
	  String appid =   wxMpService.getWxMpConfigStorage().getAppId();
    String key = wxMessage.getEventKey();
    WxMenuKey menuKey = null;
    try {
      menuKey = JSON.parseObject(key, WxMenuKey.class);
    } catch (Exception e) {
      return WxMpXmlOutMessage.TEXT().content(key)
          .fromUser(wxMessage.getToUser())
          .toUser(wxMessage.getFromUser()).build();
    }

    AbstractBuilder builder = null;
    switch (menuKey.getType()) {
    case WxConsts.XML_MSG_TEXT:
      builder = new TextBuilder();
      break;
    case WxConsts.XML_MSG_IMAGE:
      builder = new ImageBuilder();
      break;
    case WxConsts.XML_MSG_VOICE:
      break;
    case WxConsts.XML_MSG_VIDEO:
      break;
    case WxConsts.XML_MSG_NEWS:
      break;
    default:
      break;
    }
    if (builder != null) {
      try {
    	  //菜单回复
    
      } catch (Exception e) {
        this.logger.error(e.getMessage(), e);
      }
    }

    return new TextBuilder().build(menuKey.getType()+"from_callback", wxMessage, wxMpService);

  }

}