package com.sino.weixin.service.rescue;

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

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.sino.weixin.message.req.TextMessage;
import com.sino.weixin.util.MessageUtil;

public class RescueCoreService {
	private static Log log = LogFactory.getLog("RescueCoreService");
	/** 
     * 处理微信发来的请求 
     *  
     * @param request 
     * @return 
     */  
    public static String processRequest(HttpServletRequest request) {  
        String respMessage = null;  
        try {  
            // 默认返回的文本消息内容  
            String respContent = "欢迎您使用！";  
  
            // xml请求解析  
            Map<String, String> requestMap = MessageUtil.parseXml(request);  
  
            // 发送方帐号（open_id）  
            String fromUserName = requestMap.get("FromUserName");  
            // 公众帐号  
            String toUserName = requestMap.get("ToUserName");  
            // 消息类型  
            String msgType = requestMap.get("MsgType").trim();  
            
            log.info("fromUserName："+fromUserName);
            log.info("toUserName："+toUserName);
            log.info("消息类型："+msgType);
            log.info("aaaaaaaaaaaaaaaaaaaaaaaaaaaaa："+msgType);

            // 回复文本消息  
            TextMessage textMessage = new TextMessage();  
            textMessage.setToUserName(fromUserName);  
            textMessage.setFromUserName(toUserName);  
            textMessage.setCreateTime(new Date().getTime());  
         //   textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
            textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_SERVICE);
            //textMessage.setFuncFlag(0);  
  
            // 文本消息  
            if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {  
                respContent = "您发送的是文本消息！";  
            }  
            // 图片消息  
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)) {  
                respContent = "您发送的是图片消息！";  
            }  
          
            // 链接消息  
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) {  
                respContent = "您发送的是链接消息！";  
            }  
            // 音频消息  
            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) {  
                respContent = "您发送的是音频消息！";  
            }  
            // 事件推送  
           else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {  
            
                // 事件类型  
                String eventType = requestMap.get("Event").trim().toUpperCase();  
                
                log.info("eventType："+eventType);
                log.info("aaaaaaaaaaaaaaaaaaaaaaaaaaaaa："+eventType);
                // 订阅  
                if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {  
                    respContent = "谢谢您的关注！";  
                }  
                // 取消订阅  
                else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {  
                    // TODO 取消订阅后用户再收不到公众号发送的消息，因此不须要回复消息  
                }
                
                //上报地理位置
                else if (eventType.equals(MessageUtil.EVENT_TYPE_LOCATION)) {  
                    String Latitude = requestMap.get("Latitude").trim();
                    String Longitude = requestMap.get("Longitude").trim();
                   	//String address =  SpatialInfoCenter.getSpatialInfo(Longitude, Latitude);
                    log.info(fromUserName + "上报经纬度："+Latitude+" ---  "+Longitude);
                    //把用户的地理位置信息，上报的后台数据库。
                    //WeixinUserManager.recordUserPosition(fromUserName, "ZD001", Double.parseDouble(Longitude), Double.parseDouble(Latitude), address);
                    
                   	respContent = "";
                	return null;
                } 
                // 自己定义菜单点击事件 ,如“我要救援”菜单，回复“图文消息”
                else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {  
                	String EventKey = requestMap.get("EventKey"); 
                	if(EventKey!=null && EventKey.equals(MessageUtil.RESCUE_MENU_1)){
                    	 String content =  "<a href=http://www.sinoassistance.com/update/dealerApp/CarRescueDealer.apk";
                    	 content +="'> 点击下载救援APP</a>    您的登录账号为： ZDTEST。";
                    	 textMessage.setContent(content);  
                         return  MessageUtil.textMessageToXml(textMessage);  
                	}
                }  
            }  
            log.info("respContent："+respContent);
            textMessage.setContent(respContent);  
            respMessage = MessageUtil.textMessageToXml(textMessage);  
            
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        return respMessage;  
    }  

}
