ScanHandler.java 2.6 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 ScanHandler extends AbstractHandler {
	private final static Logger log = LoggerFactory.getLogger(ScanHandler.class);
	public final static String  ZHECE_CODE="zhece_code";
     @Autowired
     private ScanCodeServiceImpl ScancodeService;
      
	@Override
	public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
			Map<String, Object> context, WxMpService wxMpService,
			WxSessionManager sessionManager) throws WxErrorException {
		// TODO Auto-generated method stub
		
		 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);
		    }
		    
		  
		
	
		return null;
	}
	  /**
	   * 处理特殊请求,比如如果是扫码进来的,可以做相应处理
	   */
	/*
	 * lqq
	 * 2017/7/25
	 * 
	 */
	  protected WxMpXmlOutMessage handleSpecial(WxMpXmlMessage wxMessage,WxMpUser userWxInfo,String appid) throws Exception {
		  System.out.println("扫描进入");
		  if(wxMessage!=null){
			  String eventKey = wxMessage.getEventKey();
			  log.info("eventKey="+eventKey); 
			  int qrcodeId = 0;
//			  if(!StringUtil.isEmpty(eventKey)){
//				  qrcodeId = MathUtil.toInt(eventKey,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);
		 }
	  return null;
	  }	 
}