SubscribeHandler.java 2.9 KB
package org.theyeasy.weixin.handler;

import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
 

import org.theyeasy.weixin.service.impl.ScanCodeServiceImpl;

import com.w1hd.zzhnc.util.CommonUtil;

import me.chanjar.weixin.common.exception.WxErrorException;
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;
import me.chanjar.weixin.mp.bean.result.WxMpUser;

/**
 * 
 * @author Binary Wang
 *
 */
@Component
public class SubscribeHandler extends AbstractHandler {
	private final static Logger log = LoggerFactory.getLogger(SubscribeHandler.class);
     @Autowired
     private ScanCodeServiceImpl ScancodeService;
     
  @Override
  public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService,
      WxSessionManager sessionManager) throws WxErrorException {

    this.logger.info("新关注用户 OPENID: " + wxMessage.getFromUser());

    // 获取微信用户基本信息
    WxMpUser userWxInfo = wxMpService.getUserService().userInfo(wxMessage.getFromUser(), null);
    String appid =   wxMpService.getWxMpConfigStorage().getAppId();
    if (userWxInfo != null) {
      // TODO 可以添加关注用户到本地
    }

    WxMpXmlOutMessage responseResult = null;
    try {
      responseResult = handleSpecial(wxMessage,userWxInfo,appid);
    } catch (Exception e) {
      this.logger.error(e.getMessage(), e);
    }

    if (responseResult != null) {
      return responseResult;
    }
    return null;
   
  
   
  }

  /**
   * 处理特殊请求,比如如果是扫码进来的,可以做相应处理
   */
  /*
   * lqq
   * 2017/7/25
   * 
   */
  protected WxMpXmlOutMessage handleSpecial(WxMpXmlMessage wxMessage,WxMpUser userWxInfo,String appid) throws Exception {
	  log.info("进入关注");
	  if(wxMessage!=null){
		  String eventKey = wxMessage.getEventKey();
		  log.info("eventKey="+eventKey); 
		  int qrcodeId = 0;
//		  if(!StringUtil.isEmpty(eventKey)){
//			  if (eventKey.startsWith("qrscene_")){
//		    	  //判断是否是临时二维码
//		    	  String qrsceneCode=eventKey.replace("qrscene_", "");
//		    	  log.info("qrsceneCode="+qrsceneCode);
//		    	  qrcodeId = MathUtil.toInt(qrsceneCode,0);
//		      }
//	      }
		
		 
		  log.info("qrcodeId="+qrcodeId);
		  log.info("fromuser="+wxMessage.getFromUser());
		  log.info("appid="+appid);
		  String json = CommonUtil.getJson(userWxInfo);
		  log.info("wxinfo="+json);
		  //String changjing=String.valueOf(qrcodeId);
		  ScancodeService.scancode( wxMessage, userWxInfo, appid, qrcodeId);
		  log.info("执行关键字回复");
//		  System.out.println(focusReplyService.FocusReply(appid, userWxInfo.getOpenId()));
	 }
  return null;
  }

}