CommonInterceptor.java 2.58 KB
package com.jflyfox.component.interceptor;

import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.core.Controller;
import com.jflyfox.component.util.JFlyFoxUtils;
import com.jflyfox.jfinal.base.SessionUser;
import com.jflyfox.jfinal.component.util.Attr;
import com.jflyfox.modules.admin.site.SessionSite;
import com.jflyfox.modules.admin.site.SiteConstant;
import com.jflyfox.modules.admin.site.SiteService;
import com.jflyfox.modules.admin.site.TbSite;
import com.jflyfox.system.config.ConfigCache;

/**
 * 公共属性拦截器
 * 
 * @author flyfox 2014-2-11
 */
public class CommonInterceptor implements Interceptor {

	private SiteService siteSvc = new SiteService();

	@SuppressWarnings("rawtypes")
	public void intercept(Invocation ai) {

		Controller controller = ai.getController();

		// 请求路径
		String tmpPath = ai.getActionKey();
		tmpPath = JFlyFoxUtils.handlerPath(tmpPath);
		boolean isBack = JFlyFoxUtils.isBack(tmpPath);

		if (isBack) { // 后台
			SessionUser user = controller.getSessionAttr(Attr.SESSION_NAME);
			if (user == null) {
				String title = ConfigCache.getValue("SYSTEM.TITLE");
				// 设置公共属性
				controller.setAttr(JFlyFoxUtils.WEBSITE_TITLE, title);
				controller.setAttr(JFlyFoxUtils.TITLE_ATTR, title);
				controller.setAttr(JFlyFoxUtils.KEYWORDS_ATTR, title);
				controller.setAttr(JFlyFoxUtils.DESCRIPTION_ATTR, title);
			} else {
				TbSite site = siteSvc.getSite(user.getBackSiteId());
				controller.setAttr(JFlyFoxUtils.WEBSITE_TITLE, site.getSiteTitle());
				controller.setAttr(JFlyFoxUtils.TITLE_ATTR, site.getSiteTitle());
				controller.setAttr(JFlyFoxUtils.KEYWORDS_ATTR, site.getSiteTitle());
				controller.setAttr(JFlyFoxUtils.DESCRIPTION_ATTR, site.getSiteTitle());
			}
		} else {
			SessionSite sessionSite = controller.getSessionAttr(SiteConstant.getSessionSite());
			if (sessionSite == null) {
				String title = ConfigCache.getValue("SYSTEM.TITLE");
				// 设置公共属性
				controller.setAttr(JFlyFoxUtils.WEBSITE_TITLE, title);
				controller.setAttr(JFlyFoxUtils.TITLE_ATTR, title);
				controller.setAttr(JFlyFoxUtils.KEYWORDS_ATTR, title);
				controller.setAttr(JFlyFoxUtils.DESCRIPTION_ATTR, title);
			} else if (sessionSite.getModel() != null) {
				TbSite site = sessionSite.getModel();
				controller.setAttr(JFlyFoxUtils.WEBSITE_TITLE, site.getSiteTitle());
				controller.setAttr(JFlyFoxUtils.TITLE_ATTR, site.getSiteTitle());
				controller.setAttr(JFlyFoxUtils.KEYWORDS_ATTR, site.getSiteTitle());
				controller.setAttr(JFlyFoxUtils.DESCRIPTION_ATTR, site.getSiteTitle());
			}
		}

		ai.invoke();
	}
}