⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmschannelact.java

📁 JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 基于java技术开发
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package com.jeecms.cms.action;

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;

import com.jeecms.cms.entity.ChnlModel;
import com.jeecms.cms.entity.ChnlModelItem;
import com.jeecms.cms.entity.CmsAdmin;
import com.jeecms.cms.entity.CmsChannel;
import com.jeecms.cms.entity.CmsMemberGroup;
import com.jeecms.cms.manager.ChnlModelMng;
import com.jeecms.cms.manager.CmsChannelMng;
import com.jeecms.cms.manager.CmsMemberGroupMng;
import com.jeecms.core.util.UploadRule;
import com.ponyjava.common.util.SelectTreeUtils;

@SuppressWarnings("serial")
public abstract class CmsChannelAct extends com.jeecms.cms.CmsSysAction {
	private static final Logger log = LoggerFactory
			.getLogger(CmsChannelAct.class);

	public String left() {
		// 根
		treeRoot = new CmsChannel();
		treeRoot.setName("根目录");
		treeRoot.setTreeLeaf(false);
		ChnlModel model = new ChnlModel();
		model.setShortName("");
		treeRoot.setModel(model);
		// 内容。取所有列表,找出父菜单。
		Set<CmsChannel> chnlSet = new LinkedHashSet<CmsChannel>();
		CmsChannel chnl = cmsChannelMng.getRoot(getWebId(), getSysType());
		if (chnl != null) {
			chnlSet.add(chnl);
		}
		treeRoot.setTreeChild(chnlSet);
		return LEFT;
	}

	@SuppressWarnings("unchecked")
	public String list() {
		if (pid == null) {
			// 列出根栏目
			list = new ArrayList<CmsChannel>();
			CmsChannel c = cmsChannelMng.getRoot(getWebId(), getSysType());
			if (c != null) {
				list.add(c);
			}
			// 有首页则不能再添加首页
			hasChild = list.size() > 0 ? false : true;
		} else {
			// 列出父栏目的子栏目
			CmsChannel c = cmsChannelMng.findById(pid);
			// 栏目不控制数据权限,只控制操作权限
			this.list = new ArrayList<CmsChannel>(c.getChild());
			hasChild = c.getHasChild();
		}
		// 同一系列网站共用模型
		models = chnlModelMng.getModels(getRootWebId(), getSysType(), false);
		return LIST;
	}

	public String add() {
		model = chnlModelMng.findById(modelId);
		itemMap = model.getDiplayItemMap(ChnlModel.CHANNEL_ITEM);
		if (pid != null) {
			parent = cmsChannelMng.findById(pid);
		}
		handleParentRight(parent);
		String root = contextPvd.getAppRoot();
		tplChannlList = model.tplChannlList(getSysType(), root);
		tplContentList = model.tplContentList(getSysType(), root);
		// 设置上传规则
		addUploadRule();
		return ADD;
	}

	@SuppressWarnings("unchecked")
	public String edit() {
		bean = cmsChannelMng.findById(id);
		model = bean.getModel();
		itemMap = model.getDiplayItemMap(ChnlModel.CHANNEL_ITEM);

		hasChild = model.getHasChild();
		if (hasChild) {
			models = chnlModelMng
					.getModels(getRootWebId(), getSysType(), false);
		}

		handleParentRight(bean.getParent());

		String root = contextPvd.getAppRoot();
		tplChannlList = model.tplChannlList(getSysType(), root);
		String indexTpl = bean.getTplIndex();
		// 当前模板不在默认方案中。
		if (!StringUtils.isBlank(indexTpl) && !tplChannlList.contains(indexTpl)) {
			tplChannlList.add(indexTpl);
		}
		tplContentList = model.tplContentList(getSysType(), root);
		String contentTpl = bean.getTplContent();
		// 当前模板不在默认方案中。
		if (!StringUtils.isBlank(contentTpl)
				&& !tplContentList.contains(contentTpl)) {
			tplContentList.add(contentTpl);
		}
		chnlList = cmsChannelMng.getChnlsAndExclude(getWebId(), getSysType(),
				bean.getId());
		chnlList = SelectTreeUtils.handleTreeChild(chnlList);
		chnlList = SelectTreeUtils.webTree(chnlList);
		// 设置上传规则
		addUploadRule();
		return EDIT;
	}

	public String save() {
		// 拷贝父栏目数据权限
		bean.setSysType(getSysType());
		cmsChannelMng.saveChannel(bean, getCmsAdmin(), filterAdmins(admins),
				uploadRule);
		// 清除上传规则
		removeUploadRule();
		log.info("添加 栏目 成功:{}", bean.getName());
		return list();
	}

	public String update() {
		bean = cmsChannelMng.updateChannel(bean, getCmsAdmin(),
				filterAdmins(admins), uploadRule);
		// 清除上传规则
		removeUploadRule();
		log.info("修改 栏目 成功:{}", bean.getName());
		return list();
	}

	public String delete() {
		try {
			if (id != null) {
				bean = cmsChannelMng.deleteById(id);
				log.info("删除 栏目 成功:{}", bean.getName());
			} else {
				for (CmsChannel b : cmsChannelMng.deleteById(ids)) {
					log.info("删除 栏目 成功:{}", b.getName());
				}
			}
		} catch (DataIntegrityViolationException e) {
			addActionError("记录已被引用。请先删除文档,再删除栏目");
			return SHOW_ERROR;
		}
		return list();
	}

	public String priorityUpdate() {
		for (int i = 0; i < wids.length; i++) {
			CmsChannel f = cmsChannelMng.findById(wids[i]);
			f.setPriority(prioritys[i]);
			cmsChannelMng.update(f);
		}
		return list();
	}

	public String checkPath() {
		if (bean == null) {
			return renderText("false");
		}
		String path = bean.getPath();
		if (StringUtils.isBlank(path)) {
			return renderText("false");
		}
		if (path.equals(origPath)) {
			return renderText("true");
		}
		if (cmsChannelMng.getByPath(getWebId(), path) == null) {
			return renderText("true");
		}
		return renderText("false");
	}

	public boolean validateList() {
		if (hasErrors()) {
			return true;
		}
		if (pid != null) {
			if (vldParendRight(pid, null)) {
				return true;
			}
		}
		return false;
	}

	public boolean validateAdd() {
		if (hasErrors()) {
			return true;
		}
		if (pid != null) {
			// 检查父节点是否合法
			if (vldParendRight(pid, null)) {
				return true;
			}
		} else {
			// 检查是否已经有根节点
			if (vldMultiRootChnl()) {
				return true;
			}
		}
		vldModel(modelId, null);
		return false;
	}

	public boolean validateSave() {
		if (hasErrors()) {
			return true;
		}
		vldBean(bean);
		// 验证上传规则
		if (vldUploadRule()) {
			return true;
		}
		bean.setWebsite(getWeb());
		if (pid != null) {
			// 检查父节点是否合法
			if (vldParendRight(pid, bean)) {
				return true;
			}
		} else {
			// 检查是否已经有根节点
			if (vldMultiRootChnl()) {
				return true;
			}
			bean.setParent(null);
		}
		if (vldModel(bean.getModel().getId(), bean)) {
			return true;
		}
		if (vldGroupContribute(bean.getGroupContribute(), bean, true)) {
			return true;
		}
		if (vldGroupVisit(bean.getGroupVisit(), bean, true)) {
			return true;
		}
		return false;
	}

	public boolean validateEdit() {
		if (hasErrors()) {
			return true;
		}
		if (vldExist(id)) {
			return true;
		}
		if (vldWebsite(id, null)) {
			return true;
		}
		return false;
	}

	public boolean validateUpdate() {
		if (hasErrors()) {
			return true;
		}
		vldBean(bean);
		// 验证上传规则
		if (vldUploadRule()) {
			return true;
		}
		if (vldExist(bean.getId())) {
			return true;
		}
		if (vldWebsite(bean.getId(), bean)) {
			return true;
		}
		if (vldModel(bean.getModel().getId(), null)) {
			return true;
		}
		if (vldGroupContribute(bean.getGroupContribute(), bean, false)) {
			return true;
		}
		if (vldGroupVisit(bean.getGroupVisit(), bean, false)) {
			return true;
		}
		// 检查父栏目
		CmsChannel parent = bean.getParent();
		// 修改父栏目
		if (parent != null) {
			Long pid = parent.getId();
			if (pid == null) {
				addActionError("不能设置成根栏目");
				return true;
			}
			if (pid.equals(bean.getId())) {
				addActionError("不能把自己设置成自己的父栏目");
				return true;
			}
			// 检查是否为自己的子栏目
			if (cmsChannelMng.isChild(bean.getId(), pid)) {
				addActionError("不能把子栏目设置成父栏目");
				return true;
			}
			// 检查父节点是否合法
			if (vldParendRight(pid, null)) {
				return true;
			}
		}
		return false;
	}

	public boolean validateDelete() {
		if (hasErrors()) {
			return true;
		}
		CmsChannel po;
		if (id == null && (ids == null || ids.length <= 0)) {
			addActionError("ID不能为空");
			return true;
		} else {
			if (id != null) {
				ids = new Long[] { id };
			}
			for (Long id : ids) {
				po = cmsChannelMng.findById(id);
				if (!po.getWebsite().getId().equals(getWebId())) {
					addActionError("不能删除其他站点文章");
					return true;
				}
				Set<CmsChannel> child = po.getChild();
				if (child != null && child.size() > 0) {
					addActionError("请先删除子节点");
					return true;
				}
			}
		}
		return false;
	}

	private boolean vldMultiRootChnl() {
		CmsChannel c = cmsChannelMng.getRoot(getWebId(), getSysType());
		if (c != null) {
			addActionError("已经存在根栏目,父栏目不能为空");
			return true;
		}
		return false;
	}

	private boolean vldParendRight(Long pid, CmsChannel bean) {
		CmsChannel c = cmsChannelMng.findById(pid);
		if (c == null) {
			addActionError("父栏目不存在:" + pid);
			return true;
		}
		if (!getWebId().equals(c.getWebsite().getId())) {
			addActionError("不能访问其他站点的栏目:" + pid);
			return true;
		}
		if (!getSysType().equals(c.getSysType())) {
			addActionError("不是本系统的栏目:" + pid);
			return true;
		}
		if (!c.getHasChild()) {
			addActionError("该栏目不能拥有子栏目:" + pid);
			return true;
		}
		if (bean != null) {
			bean.setParent(c);
		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -