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

📄 postshow.java

📁 一个不错的bbs论坛系统.对初学者很有帮助
💻 JAVA
字号:
package com.yhbbs.article.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import com.yhbbs.article.biz.ArticleBiz;
import com.yhbbs.article.itface.Article;
import com.yhbbs.forum.biz.ForumBiz;
import com.yhbbs.user.itface.bean.UserSession;
import com.yhbbs.utils.Constants;
import com.yhbbs.utils.ReqUtils;
import com.yhbbs.utils.StringUtils;
import com.yhbbs.yhclass.biz.ClassBiz;

/**
 * <p>Title:发表和编辑帖子Action</p>
 * <li>	根据Session判断用户是否有权发表和编辑帖子
 * <li>	普通用户编辑自己的帖子要检查是否在允许时间内
 * <li> 编辑帖子分:编辑主题帖子和回复帖子,帖子只有管理员和发帖本人可以编辑
 * <li>	该处理包括:post、replay、vote、edit、editr<br>
 * <li>	处理成功或失败后分别跳转到相关页面并提示相关信息和操作<br>
 * <br><b>WebSite: www.yyhweb.com</b>
 * <br><b>CopyRight: yyhweb[由由华网]</b>
 * @author stephen
 * @version YHBBS-2.0
 */
public class PostShow extends Action {
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			  HttpServletRequest request,HttpServletResponse response) {
			  ActionMessages errors = new ActionMessages();
			HttpSession session = request.getSession(true);
			UserSession bbsuser = (UserSession) session.getAttribute(Constants.bbsuser);
			// 取得参数并后传
			String action = ReqUtils.getString(request,"action");
			int artId = ReqUtils.getInt(request,"aId");
			int forumId = ReqUtils.getInt(request,"fId");
			int classId = ReqUtils.getInt(request,"cId");
			
			// begin 判断操作是否合法
			boolean option = true;
			boolean option2 = true;
			String optionStr = "post,replay,vote,edit,editr";
			if(optionStr.indexOf(action)==-1)
				option = false;
			
			if(classId<1 || forumId<1)
				option = false;
			else if(artId==0){
				if(classId!=ForumBiz.getForumClassId(forumId))
					option = false;
			}
			if(!option){
				errors.add("article.edit.wrong.action",new ActionMessage("article.edit.wrong.action"));
				saveErrors(request,errors);
				return mapping.findForward("Failure");
			}
			// end
			
			if(action.equals("replay")||action.equals("edit")||action.equals("editr"))
				request.setAttribute("ree","ree");
			if(action.equals("post")||action.equals("vote")||action.equals("edit"))
				request.setAttribute("pve","pve");
			if(action.equals("post")||action.equals("vote")||action.equals("replay"))
				request.setAttribute("pvr","pvr");
			
			// 只有登录用户和已经审核用户才可以发表帖子
			if(bbsuser==null || bbsuser.getUsertype()<2){
				errors.add("article.post.no.login",new ActionMessage("article.post.no.login"));
				saveErrors(request,errors);
				return mapping.findForward("Failure");
			}else if(bbsuser.getIslock().equals("1")){
					errors.add("article.post.user.lock",new ActionMessage("article.post.user.lock"));
					saveErrors(request,errors);
					return mapping.findForward("Failure");
			}
			
			if(artId!=0){
				int userType = 0;
				userType = bbsuser.getUsertype();
			    // 取得要编辑的帖子信息 
			    Article article = null;
			    int ruserId = 0;
				String title = "";
				String isvote = "";
				String content = "";
    		    article = (Article) ArticleBiz.getArtContent(artId);
    		    if(article==null){
    		    	errors.add("article.edit.noexist",new ActionMessage("article.edit.noexist"));
					saveErrors(request,errors);
					return mapping.findForward("Failure");
    		    }
    		    // begin 检查classId forumId是否为该帖子信息
    		    int cId = article.getClassid();
    		    int fId = article.getForum();
    		    if(cId!=classId || fId!=forumId)
    		    	option2 = false;
    		    if(action.equals("editr")&& article.getParentid()==0)
    		    	option2 = false;
    		    if(action.equals("edit")&& article.getParentid()!=0)
    		    	option2 = false;
    		    if(!option2){
    				errors.add("article.edit.wrong.action",new ActionMessage("article.edit.wrong.action"));
    				saveErrors(request,errors);
    				return mapping.findForward("Failure");
    			}
    		    // end
    			ruserId = article.getUserid();
    			title = article.getTitle();
    			isvote = article.getIsvote();
    			content = StringUtils.unEncode(article.getContent().getContent());
    			request.setAttribute("title",title);
    			request.setAttribute("isvote",isvote);
    			request.setAttribute("content",content);
	    		// 判断当前用户是否用权编辑该帖子
				if(userType>3){
					boolean isfAdmin = false;
					boolean iscAdmin = false;
					String userName = bbsuser.getUsername();
					//	判断该版主是否为该论坛或区论坛的版主 ( >=6为总版主和坛主)
					if(userType<6){	
						isfAdmin = ForumBiz.isForumAdmin(forumId,userName);
						iscAdmin = ClassBiz.isClassAdmin(classId,userName);
						if(!isfAdmin && !iscAdmin){
							errors.add("article.edit.not.admin",new ActionMessage("article.edit.not.admin"));
							saveErrors(request,errors);
							return mapping.findForward("Failure");
						}
					}
					// forward
				}else if(ruserId==bbsuser.getUserId()){                // 普通用户修改自己帖子
						if(!ArticleBiz.isEditAgain(artId)){  // 是否在有效编辑时间内
							errors.add("article.edit.time",new ActionMessage("article.edit.time"));
							saveErrors(request,errors);
							return mapping.findForward("Failure");
						}
						// forward
					  }else{
						errors.add("article.edit.user.wrong",new ActionMessage("article.edit.user.wrong"));
						saveErrors(request,errors);
						return mapping.findForward("Failure");
					  }
			  
			}
			
			request.setAttribute("artId", artId);
			request.setAttribute("forumId", forumId);
			request.setAttribute("classId", classId);
			request.setAttribute("action", action);
			this.saveToken(request);
			return mapping.findForward("Success");
	}
}

⌨️ 快捷键说明

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