package net.tooan.ynpay.wechat.webapp.interceptor;
import net.tooan.ynpay.commons.YnpayJndiConstants;
import net.tooan.ynpay.third.jfinal.aop.Interceptor;
import net.tooan.ynpay.third.jfinal.core.ActionInvocation;
import net.tooan.ynpay.third.jfinal.core.Controller;
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.WechatConstants;
import net.tooan.ynpay.wechat.agent.facade.WechatFacade;
import net.tooan.ynpay.wechat.agent.model.Msg;
import net.tooan.ynpay.wechat.agent.model.Server;
import org.apache.commons.lang.StringUtils;
/**
* Created with IntelliJ IDEA.
* User: Jing
* Date: 13-10-23
* Time: 下午1:23
*/
public class StatusInterceptor implements Interceptor {
private static final Logger logger = Logger.getLogger(StatusInterceptor.class);
@RemoteEJB(mappedName = YnpayJndiConstants.Mongo_Wechat_Facade_Remote)
private WechatFacade facade;
public StatusInterceptor() {
super();
EJBManager.manager.setEJB(this);
}
@Override
public void intercept(ActionInvocation ai) {
Controller controller = ai.getController();
try {
String name = StringUtils.substring(ai.getControllerKey(), "/server/".length());
Server server = facade.getServer(name);
switch (server.getStatus()) {
case 1: // 正常
ai.invoke();
break;
case 0: // 维护
Msg msg = facade.getCustomMsg(WechatConstants.CUSTOM_UPGRADE);
controller.setAttr("msg", msg);
controller.render("/reply/" + msg.getType() + ".html|xml");
break;
default: // 异常
controller.renderNull();
break;
}
ai.invoke();
} catch (Exception e) {
if (logger.isErrorEnabled()) {
logger.error(e.getMessage(), e);
}
controller.renderNull();
}
}
}