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

📄 downloadact.java

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

import static com.jeecms.cms.Constants.DOWNLOAD_SYS;

import java.sql.Timestamp;
import java.util.Date;
import java.util.List;

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

import com.jeecms.cms.entity.CmsChannel;
import com.jeecms.cms.entity.CmsMemberGroup;
import com.jeecms.cms.entity.ContentCtg;
import com.jeecms.cms.manager.CmsChannelMng;
import com.jeecms.cms.manager.CmsMemberGroupMng;
import com.jeecms.cms.manager.ContentCtgMng;
import com.jeecms.core.util.UploadRule;
import com.jeecms.download.entity.Download;
import com.jeecms.download.manager.DownloadMng;
import com.ponyjava.common.page.Pagination;
import com.ponyjava.common.util.BCConvert;
import com.ponyjava.common.util.SelectTreeUtils;

@SuppressWarnings("serial")
@Scope("prototype")
@Controller("download.downloadAct")
public class DownloadAct extends com.jeecms.cms.CmsSysAction {
	private static final Logger log = LoggerFactory.getLogger(Download.class);

	@SuppressWarnings("unchecked")
	public String left() {
		List<CmsChannel> chnlList = cmsChannelMng.getRightChnl(getWebId(),
				DOWNLOAD_SYS, getCmsAdminId(), true);
		chnlList = SelectTreeUtils.handleTreeChild(chnlList);
		if (chnlList.size() > 0) {
			treeRoot = chnlList.get(0);
		}
		return LEFT;
	}

	public String list() {
		if (chnlId == null) {
			chnl = cmsChannelMng.getRoot(getWebId(), DOWNLOAD_SYS, true);
			if (chnl != null) {
				chnlId = chnl.getId();
			}
		} else {
			chnl = cmsChannelMng.findById(chnlId);
		}
		selfOnly = getCmsAdmin().getSelfOnly();
		if (selfOnly) {
			queryMy = selfOnly;
		}
		if (chnlId != null) {
			pagination = downloadMng.getRightDownload(getWebId(), chnlId,
					getCmsAdminId(), queryMy, queryStatus, queryTitle,
					queryOrder, pageNo, getCookieCount());
		} else {
			pagination = new Pagination(1, getCookieCount(), 0, null);
		}
		return LIST;
	}

	@SuppressWarnings("unchecked")
	public String add() {
		contentCtgList = contentCtgMng.getList(getWebId(), false);
		memberGroupList = cmsMemberGroupMng.getList(getWebId(), 0, true);
		CmsChannel channel = cmsChannelMng.findById(chnlId);
		tplContentList = channel.getModel().tplContentList(DOWNLOAD_SYS,
				contextPvd.getAppRoot());
		// 只能选择同一模型的栏目
		Long modelId;
		if (channel.getParent() == null
				&& getConfig().getDefDownloadModel() != null) {
			modelId = getConfig().getDefDownloadModel().getId();
		} else {
			modelId = channel.getModel().getId();
		}
		chnlList = cmsChannelMng.getRightChnl(getWebId(), DOWNLOAD_SYS, chnlId,
				getCmsAdminId(), modelId, true);
		chnlList = SelectTreeUtils.handleTreeChild(chnlList);
		chnlList = SelectTreeUtils.webTree(chnlList);
		// 设置上传规则
		addUploadRule();
		return ADD;
	}

	public String save() {
		// downloadMng.saveDownload(bean, getCmsAdmin(), uploadRule, getWeb()
		// .getResUrl(), getConfig().getCheckCount(), topTime);

		// 清除上传规则
		removeUploadRule();

		log.info("添加 下载 成功:{}", bean.getTitle());
		addActionMessage("添加成功");
		return add();
	}

	@SuppressWarnings("unchecked")
	public String edit() {
		this.bean = downloadMng.findById(id);
		contentCtgList = contentCtgMng.getList(getWebId(), false);
		memberGroupList = cmsMemberGroupMng.getList(getWebId(), 0, true);
		tplContentList = bean.getChannel().getModel().tplContentList(
				DOWNLOAD_SYS, contextPvd.getAppRoot());

		List<CmsChannel> chnlList = cmsChannelMng.getRightChnl(getWebId(),
				DOWNLOAD_SYS, getCmsAdminId(), true);
		chnlList = SelectTreeUtils.handleTreeChild(chnlList);
		this.list = SelectTreeUtils.webTree(chnlList);

		// 设置上传规则
		addUploadRule();
		return EDIT;
	}

	public String update() {
		// downloadMng.updateDowload(bean, getCmsAdmin(), uploadRule, getWeb()
		// .getResUrl(), getConfig().getCheckCount(), topTime);

		// 清除上传规则
		removeUploadRule();

		log.info("修改 下载 成功:{}", bean.getTitle());
		return list();
	}

	public String delete() {
		try {
			if (id != null) {
				bean = downloadMng.deleteById(id);
				log.info("删除 下载 成功:{}", bean.getTitle());
			} else {
				for (Download o : downloadMng.deleteById(ids)) {
					log.info("删除 下载 成功:{}", o.getTitle());
				}
			}
		} catch (DataIntegrityViolationException e) {
			addActionError("记录已被引用,不能删除!");
			return SHOW_ERROR;
		}
		return list();
	}

	public boolean validateAdd() {
		if (hasErrors()) {
			return true;
		}
		if (vldChannel(chnlId, true, null)) {
			return true;
		}
		return false;
	}

	public boolean validateSave() {
		if (hasErrors()) {
			return true;
		}
		// 验证上传规则
		if (vldUploadRule()) {
			return true;
		}
		// 处理bean
		if (vldBean()) {
			return true;
		}
		bean.setWebsite(getWeb());
		// 验证栏目
		if (vldChannel(bean.getChannel().getId(), false, bean)) {
			return true;
		}
		// 验证内容属性
		if (vldContentCtg(bean.getContentCtg().getId(), bean)) {
			return true;
		}
		// 验证会员组
		if (vldMemberGroup(bean.getGroup(), bean, true)) {
			return true;
		}
		return false;
	}

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

	public boolean validateUpdate() {
		if (hasErrors()) {
			return true;
		}
		// 验证上传规则
		if (vldUploadRule()) {
			return true;
		}
		// 处理bean
		if (vldBean()) {
			return true;
		}
		// 验证文章权限
		if (vldDownloadRight(bean.getId())) {
			return true;
		}
		// 验证栏目
		if (vldChannel(bean.getChannel().getId(), false, null)) {
			return true;
		}
		if (vldWebsite(id, bean)) {
			return true;
		}
		// 验证内容属性
		if (vldContentCtg(bean.getContentCtg().getId(), null)) {
			return true;
		}
		return false;
	}

	public boolean validateDelete() {
		if (hasErrors()) {
			return true;
		}
		Download entity;
		if (id == null && (ids == null || ids.length <= 0)) {
			addActionError("ID不能为空");
			return true;
		} else {
			if (id != null) {
				ids = new Long[] { id };
			}
			for (Long id : ids) {
				entity = downloadMng.findById(id);
				if (!entity.getWebsite().getId().equals(getWebId())) {
					addActionError("不能删除其他站点文章");
					return true;
				}
			}
		}
		return false;
	}

	/**
	 * 验证文章修改权限
	 * 
	 * @param entity
	 * @return
	 */
	private boolean vldDownloadRight(Long id) {
		Download entity = downloadMng.findById(id);
		if (entity == null) {
			addActionError("该文章不存在:" + id);
			return true;
		}
		// 只能管理自己的数据的管理员,不能管理其他数据。
		if (getCmsAdmin().getSelfOnly()
				&& !getCmsAdminId().equals(entity.getAdminInput().getId())) {
			addActionError("不是自己的数据不能修改:" + id);
			return true;
		}
		// 只能管理有权限的栏目的文章
		if (!entity.getChannel().adminsContain(getCmsAdminId())) {
			addActionError("您没有这个文章所在栏目的权限:" + id);
			return true;
		}
		return false;
	}

	private boolean vldUploadRule() {
		// 上传规则
		uploadRule = (UploadRule) contextPvd.getSessionAttr(UploadRule.KEY
				+ uploadRuleId);
		if (uploadRule == null) {
			addActionError("没有找到上传规则,不允许提交");
			return true;
		}
		return false;
	}

	private boolean vldChannel(Long chnlId, boolean allowLeaf, Download bean) {
		CmsChannel c = cmsChannelMng.findById(chnlId);
		if (c == null) {
			addActionError("该栏目不存在:" + chnlId);
			return true;
		}
		if (!c.getHasChild()) {
			addActionError("该栏目不允许有内容:" + c.getName());
			return true;
		}
		if (!allowLeaf && !c.isTreeLeaf()) {
			addActionError("只有末级栏目才能添加内容:" + c.getName());
			return true;
		}
		if (!c.getWebsite().getId().equals(getWebId())) {
			addActionError("不是本站点的栏目:" + chnlId);
			return true;
		}
		if (!c.getAdmins().contains(getCmsAdmin())) {
			addActionError("您没有该栏目的权限:" + chnlId);
			return true;
		}
		if (bean != null) {
			bean.setChannel(c);
		}
		return false;
	}

	private boolean vldContentCtg(Long ctgId, Download bean) {
		ContentCtg po = contentCtgMng.findById(ctgId);
		if (po == null) {
			addActionError("该文章属性不存在:" + ctgId);
			return true;
		}
		if (!po.getWebsite().getId().equals(getWeb().getRootWebId())) {
			addActionError("不是本系列网站的文章属性:" + ctgId);
			return true;
		}
		if (bean != null) {
			bean.setContentCtg(po);
		}
		return false;
	}

	private boolean vldMemberGroup(CmsMemberGroup group, Download bean,
			boolean onSave) {
		// 可为空字段
		if (group == null) {
			return false;
		}
		Long id = group.getId();
		if (id != null) {
			CmsMemberGroup po = cmsMemberGroupMng.findById(id);
			if (po == null) {
				addActionError("该会员组不存在:" + id);
				return true;
			}
			if (!po.getWebsite().getId().equals(getWeb().getRootWebId())) {
				addActionError("不是本系列网站的会员组:" + id);
				return true;
			}
			if (bean != null) {
				bean.setGroup(po);
			}
		} else {
			if (onSave) {
				bean.setGroup(null);
			}
		}
		return false;
	}

	private boolean vldWebsite(Long id, Download bean) {
		Download entity = downloadMng.findById(id);
		if (!entity.getWebsite().getId().equals(getWebId())) {
			addActionError("只能修改本站点数据:" + id);
			return true;
		}
		if (bean != null) {
			bean.setWebsite(getWeb());
		}
		return false;
	}

	/**
	 * 处理bean
	 * 
	 * @return
	 */
	private boolean vldBean() {
		// 处理checkbox
		if (bean.getBold() == null) {
			bean.setBold(false);
		}
		// 处理tag
		String tags = bean.getTags();
		if (!StringUtils.isBlank(tags)) {
			bean.setTags(BCConvert.qj2bj(tags));
		}
		// 处理timestamp
		Date d = bean.getReleaseDate();
		if (d != null) {
			bean.setReleaseDate(new Timestamp(d.getTime()));
		}
		return false;
	}

	private void addUploadRule() {
		UploadRule rule = new UploadRule(getWeb().getUploadRoot().toString(),
				Download.UPLOAD_PATH, true);
		uploadRuleId = rule.hashCode();
		contextPvd.setSessionAttr(UploadRule.KEY + uploadRuleId, rule);
	}

	private void removeUploadRule() {
		// 删除未被使用的图片
		uploadRule.clearUploadFile();
		// 清除上传规则
		contextPvd.removeAttribute(UploadRule.KEY + uploadRuleId);
	}

	@Autowired
	private DownloadMng downloadMng;
	@Autowired
	private CmsChannelMng cmsChannelMng;
	@Autowired
	private ContentCtgMng contentCtgMng;
	@Autowired
	private CmsMemberGroupMng cmsMemberGroupMng;

	private Download bean;
	private CmsChannel treeRoot;
	private Long chnlId;

	private CmsChannel chnl;
	private List<ContentCtg> contentCtgList;
	private List<CmsMemberGroup> memberGroupList;
	private List<CmsChannel> chnlList;
	private List<String> tplContentList;

	private int uploadRuleId;
	private UploadRule uploadRule;

	private long topTime = 0;

	private boolean selfOnly = false;
	private boolean queryMy = false;
	private int queryStatus = 0;
	private String queryTitle = "";
	private int queryOrder = 0;

	public Download getBean() {
		return bean;
	}

	public void setBean(Download bean) {
		this.bean = bean;
	}

	public CmsChannel getTreeRoot() {
		return treeRoot;
	}

	public void setTreeRoot(CmsChannel treeRoot) {
		this.treeRoot = treeRoot;
	}

	public Long getChnlId() {
		return chnlId;
	}

	public void setChnlId(Long chnlId) {
		this.chnlId = chnlId;
	}

	public CmsChannel getChnl() {
		return chnl;
	}

	public void setChnl(CmsChannel chnl) {
		this.chnl = chnl;
	}

	public List<ContentCtg> getContentCtgList() {
		return contentCtgList;
	}

	public void setContentCtgList(List<ContentCtg> contentCtgList) {
		this.contentCtgList = contentCtgList;
	}

	public List<CmsMemberGroup> getMemberGroupList() {
		return memberGroupList;
	}

	public void setMemberGroupList(List<CmsMemberGroup> memberGroupList) {
		this.memberGroupList = memberGroupList;
	}

	public List<CmsChannel> getChnlList() {
		return chnlList;
	}

	public void setChnlList(List<CmsChannel> chnlList) {
		this.chnlList = chnlList;
	}

	public List<String> getTplContentList() {
		return tplContentList;
	}

	public void setTplContentList(List<String> tplContentList) {
		this.tplContentList = tplContentList;
	}

	public int getUploadRuleId() {
		return uploadRuleId;
	}

	public void setUploadRuleId(int uploadRuleId) {
		this.uploadRuleId = uploadRuleId;
	}

	public long getTopTime() {
		return topTime;
	}

	public void setTopTime(long topTime) {
		this.topTime = topTime;
	}

	public boolean isSelfOnly() {
		return selfOnly;
	}

	public void setSelfOnly(boolean selfOnly) {
		this.selfOnly = selfOnly;
	}

	public boolean isQueryMy() {
		return queryMy;
	}

	public void setQueryMy(boolean queryMy) {
		this.queryMy = queryMy;
	}

	public int getQueryStatus() {
		return queryStatus;
	}

	public void setQueryStatus(int queryStatus) {
		this.queryStatus = queryStatus;
	}

	public String getQueryTitle() {
		return queryTitle;
	}

	public void setQueryTitle(String queryTitle) {
		this.queryTitle = queryTitle;
	}

	public int getQueryOrder() {
		return queryOrder;
	}

	public void setQueryOrder(int queryOrder) {
		this.queryOrder = queryOrder;
	}
}

⌨️ 快捷键说明

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