topicaction.java

来自「社区文章采用的是平板、树形自由选择的两种展示方式」· Java 代码 · 共 434 行 · 第 1/2 页

JAVA
434
字号
			log.setByUserName(UserLogin.getUserName(request));
			log.setByUserIp(request.getRemoteAddr());
			log.setCreateDateTime(FormatDateTime.now());
			log.setForumId(topic.getForumId());
			log.setUserName(topic.getUserName());
			log.setUserId(topic.getUserId());
			log.setIsList(true);
			log.setListByUserName(true);
			log.setMemo("文章被下载");
			log.setContent(log.getUserName()+"的文章被"+log.getByUserName()+"下载了");
			this.getUserService().ruleUtils(log,topic.getForumId(),35);
			try {
				this.getManageLogService().create(log);
			} catch (ClubException e) {
				logger.error(e.toString());
			}
		}
	}

	
	public void createOrUpdate(HttpServletRequest request,HttpServletResponse response){
		TopicPostForm topicPostForm = new TopicPostBuild(request).building();
		if(Validator.isEmpty(topicPostForm.getTitle())||Validator.isEmpty(topicPostForm.getContent()))
		{
			request.setAttribute("message",MessageUtils.getMessage("error_empty"));
			this.errorForward(request,response,topicPostForm);
			return;
		}
		else if(topicPostForm.getTitle().length()>100||topicPostForm.getContentLength()>50000){
			request.setAttribute("message",MessageUtils.getMessage("error_toolong"));
			this.errorForward(request,response,topicPostForm);
			return;
		}
		Topic topic = null;
		TContent tContent = null;
		if(topicPostForm.getTopicId()>0){ //如果是更新文章		
			topic = this.getTopicService().findTopicAndContentById(topicPostForm.getTopicId());
			tContent = topic.getTContent();
			/*
			 * 如果是编辑帖,则取出原作者信息设置回去!
			 */
			topicPostForm.setUserId(topic.getUserId());
			topicPostForm.setUserName(topic.getUserName());
			topicPostForm.setUserIp(topic.getUserIp());
			topicPostForm.setCreateDateTime(topic.getCreateDateTime());
		}else{ //如果是新建文章
			topic = new Topic();
			tContent = new TContent();
			String temp = ParamUtils.getCookieValue(request, "title", "");
			if(!Validator.isEmpty(temp)&&temp.equalsIgnoreCase(topic.getTitle())){
				request.setAttribute("message","系统怀疑您在灌水...锁定您15秒!!!");
				this.errorForward(request,response,topicPostForm);
				return;
			}
		}
		BeanUtils.copyProperties(topic,topicPostForm);
		BeanUtils.copyProperties(tContent,topicPostForm);
		topic.setTContent(tContent);
		topic.setReplyId(topicPostForm.getLastReplyId());
		/* 在线用户信息 from session */
		topic.setUser(UserLogin.getUser(request));
		topic.setSessionUser(UserLogin.getUser(request));
		try {
			this.getTopicService().createOrUpdate(topic);
			ParamUtils.setCookieValue(response, "title", topic.getTitle(), 30);
			StringBuffer sb = new StringBuffer();
			User user = topic.getUser();
			if(!Validator.isEmpty(user)){
				UserLogin.setCookies(request,response,user,0);
			}
			topicPostForm.setTopicId(topic.getTopicId());
			topicPostForm.setReplyId(topic.getReplyId());
			request.setAttribute("returnUrl",UrlUtils.getUrl(UrlUtils.TOPIC,topicPostForm.getTopicId(),topic.getForumId(),request));
			byte postForward = this.getUserSettingscService().getUserSettings(user).getPostForward();
			switch(postForward){
				case 1://返回版面
					sb.append(UrlUtils.getUrl(UrlUtils.FORUM,topic.getForumId(),0,request));
					logger.debug("发表文章成功后跳转至:"+sb.toString());
					HttpServletUtils.redirect(response,sb.toString());
					break;
				case 2://返回发表的主题
					sb.append(UrlUtils.getUrl(UrlUtils.TOPIC,topic.getTopicId(),topic.getForumId(),request));
					logger.debug("发表文章成功后跳转至:"+sb.toString());
					HttpServletUtils.redirect(response,sb.toString());
					break;
				default: //返回界面让用户选择
					sb.append("/club/posted.jsp?forumId=");
					sb.append(topic.getForumId());
					sb.append("&topicId=");
					sb.append(topic.getTopicId());
					sb.append("&act=");
					sb.append(ParamUtils.getStringParameter(request,"act"));
					request.setAttribute("msg","success");
					HttpServletUtils.forward(request,response,sb.toString());
			}
		} catch (ClubException e) {
			request.setAttribute("message",e.getMessage());
			this.errorForward(request,response,topicPostForm);
		}
	}
	
	private void errorForward(HttpServletRequest request,HttpServletResponse response, TopicPostForm topicPostForm){
		request.setAttribute("TopicPostForm",topicPostForm);
		HttpServletUtils.forward(request,response,"/club/post.jsp");
	}
	
	private String forwardUrl(String act, int topicId, int forumId){
		StringBuffer sb = new StringBuffer("/club/topicAdmin.jsp?forumId=");
		sb.append(forumId);
		sb.append("&topicId=");
		sb.append(topicId);
		sb.append("&act=");
		sb.append(act);
		return sb.toString();
	}
	
	public void move(HttpServletRequest request,HttpServletResponse response){
		TopicMoveForm topicMoveForm = new TopicMoveBuild(request).building();
		request.setAttribute("TopicMoveForm",topicMoveForm);
		try {
			this.getTopicService().move(topicMoveForm);
			request.setAttribute("message",MessageUtils.getMessage("success"));
		} catch (ClubException e) {
			request.setAttribute("message",e.getMessage());
		}
		HttpServletUtils.forward(request,response,forwardUrl("movetopic",topicMoveForm.getTopicId(),topicMoveForm.getForumId()));
	}
	
	/**
	 * 加为精品
	 * @param request
	 * @param response
	 */
	public void better(HttpServletRequest request,HttpServletResponse response){
		TopicBetterForm topicBetterForm = new TopicBetterBuild(request).building();
		try {
			this.getTopicService().updateBetter(topicBetterForm);
			request.setAttribute("message",MessageUtils.getMessage("success"));
		} catch (ClubException e) {
			request.setAttribute("message",e.getMessage());
		}
		HttpServletUtils.forward(request,response,forwardUrl("better",topicBetterForm.getTopicId(),topicBetterForm.getForumId()));
	}
	
	public void trash(HttpServletRequest request,HttpServletResponse response){
		TopicTrashForm topicTrashForm = new TopicTrashBuild(request).building();
		try {
			this.getTopicService().trash(topicTrashForm);
			request.setAttribute("message",MessageUtils.getMessage("success"));
		} catch (ClubException e) {
			request.setAttribute("message",e.getMessage());
		}
		HttpServletUtils.forward(request,response,forwardUrl("trashtopic",topicTrashForm.getTopicId(),topicTrashForm.getForumId()));
	}
	
	public void findNextOrPrevious(HttpServletRequest request,HttpServletResponse response){
		int topicId = ParamUtils.getIntParameter(request,"topicId",0);
		int forumId = ParamUtils.getIntParameter(request,"forumId",0);
		String go = ParamUtils.getStringParameter(request,"go","next");
		boolean isnext = true;
		if(!go.equalsIgnoreCase("next")){
			isnext = false;
		}
		if(topicId==0){
			request.setAttribute("message",MessageUtils.getMessage("error_notfind"));
			HttpServletUtils.forward(request,response,"/club/msg.jsp");
		}else{
			Topic topic = this.getTopicService().findNextOrPrevious(topicId,forumId,isnext);
			if(Validator.isEmpty(topic)){
				if(isnext){
					request.setAttribute("message","已到达本版最新一篇主题!");
				}else{
					request.setAttribute("message","前面没有内容了!");
				}
				String url = UrlUtils.getUrl(UrlUtils.TOPIC,topicId,forumId,request);
				logger.debug("referer: "+request.getHeader("referer"));
				logger.debug("url: "+url);
				HttpServletUtils.forward(request,response,"thread.jsp?forumId="+forumId+"&topicId="+topicId);
			}else{
				topicId = topic.getTopicId();
				forumId = topic.getForumId();
				String url = UrlUtils.getUrl(UrlUtils.TOPIC,topicId,forumId,request);
				logger.debug("findNextOrPrevious: "+url);
				HttpServletUtils.redirect(response,url);
			}
		}
	}
	
	private BasicInfoService getBasicInfoService() {
		return ServiceWrapper.<BasicInfoService>getSingletonInstance(ServiceLocator.BASICINFO);
	}
	
	private ReplyService getReplyService() {
		return ServiceWrapper.<ReplyService>getSingletonInstance(ServiceLocator.REPLY);
	}
	
	private TopicService getTopicService() {
		return ServiceWrapper.<TopicService>getSingletonInstance(ServiceLocator.TOPIC);
	}
	
	private UserSettingsService getUserSettingscService() {
		return ServiceWrapper.<UserSettingsService>getSingletonInstance(ServiceLocator.USERSETTINGS);
	}
	
	private RuleService getRuleService() {
		return ServiceWrapper.<RuleService>getSingletonInstance(ServiceLocator.RULE);
	}
	
	private UserService getUserService() {
		return ServiceWrapper.<UserService>getSingletonInstance(ServiceLocator.USER);
	}
	
	private ManageLogService getManageLogService() {
		return  ServiceWrapper.<ManageLogService>getSingletonInstance(ServiceLocator.MANAGELOG);
	}
}

⌨️ 快捷键说明

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