package net.tooan.ynpay.wechat.webapp.process;
import net.tooan.ynpay.commons.YnpayJndiConstants;
import net.tooan.ynpay.third.jfinal.ext.interceptor.ejb.EJBManager;
import net.tooan.ynpay.third.jfinal.ext.interceptor.ejb.RemoteEJB;
import net.tooan.ynpay.third.jfinal.log.Logger;
import net.tooan.ynpay.wechat.agent.facade.WechatFacade;
import net.tooan.ynpay.wechat.agent.helper.MsgTools;
import net.tooan.ynpay.wechat.agent.helper.MsgType;
import net.tooan.ynpay.wechat.agent.model.Msg;
import javax.servlet.ServletInputStream;
/**
* Created with IntelliJ IDEA.
* User: Jing
* Date: 13-10-19
* Time: 下午10:30
*/
public class BaseProcess {
private static final Logger logger = Logger.getLogger(BaseProcess.class);
@RemoteEJB(mappedName = YnpayJndiConstants.Mongo_Wechat_Facade_Remote)
private WechatFacade facade;
private static BaseProcess process = new BaseProcess();
public BaseProcess() {
EJBManager.manager.setEJB(this);
}
public static Msg exec(ServletInputStream is) throws Exception {
Msg msg = MsgTools.parse(is);
// 将收到的信息保存到数据库
msg = process.facade.saveMsg(msg);
Msg replyMsg;
switch (MsgType._(msg.getType())) {
case EVENT:
replyMsg = EventProcess.exec(msg);
break;
case IMAGE:
replyMsg = ImageProcess.exec(msg);
break;
case LINK:
replyMsg = LinkProcess.exec(msg);
break;
case LOCATION:
replyMsg = LocationProcess.exec(msg);
break;
default:
replyMsg = TextProcess.exec(msg);
break;
}
replyMsg.setToUserName(msg.getFromUserName());
replyMsg.setFromUserName(msg.getToUserName());
replyMsg.setCreateTime(MsgTools.getCurrentTime());
replyMsg.setSource(msg);
// 将回复的信息保存到数据库
process.facade.saveMsg(replyMsg);
return replyMsg;
}
}