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(); } } }