package com.feetao.web.controller;
import java.io.PrintWriter;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.feetao.web.service.MessageService;
import com.feetao.web.service.WechatService;
import com.feetao.web.wx.vo.MessageReceiveVO;
import com.feetao.web.wx.vo.MessageSendVO;
/**
* 微信聊天
* @author feetao
*/
@Controller
@RequestMapping("/api")
public class WechatController {
private static Logger logger = LoggerFactory.getLogger(WechatController.class);
@Resource
private WechatService wechatService;
@Resource
private MessageService messageService;
@ResponseBody
@RequestMapping("/{userId}")
public void parser(@PathVariable("userId") Long userId, HttpServletRequest request , HttpServletResponse response) {
try{
String signature = request.getParameter("signature");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
if(wechatService.checkSign(signature, timestamp, nonce)) {
//分析用户信息
MessageReceiveVO receiver = wechatService.parse(request.getInputStream());
//同步信息到数据库
messageService.addMessage(userId, receiver.getFromUserName(), receiver.toString());
//处理用户请求
MessageSendVO sender = wechatService.hander(userId , receiver);
if(sender == null) return;
PrintWriter out = response.getWriter();
out.print(sender.toXML());
out.close();
logger.info("message userId[{}] and content[{}]" , new Object[]{userId, sender.toXML()});
}
}catch(Exception e) {
logger.error(e.getMessage(), e);
}
}
}