topicproxy.java

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

JAVA
621
字号
						model.setUserName(user.getUserName());
						model.setUser(user);
						u_score = user.getScore();
						u_money = user.getMoney();
						u_credit = user.getCredit();
						u_views = user.getViews();
					}
				}else{//如果密码为空则为过客取名
					String eip = IpUtils.enAddr(model.getUserIp());
					eip = eip.substring(eip.length()-6,eip.length());
					
					List<String> iplist = IPSeeker.getInstance().IPParser(model.getUserIp());
					if(!Validator.isEmpty(iplist)){
						model.setUserName(iplist.get(0)+"网友"+eip);
					}else{
						model.setUserName("网友"+eip);
					}
				}
			}
			/**
			 * 判断用户操作所需积分等参数
			 */
			double score = this.getRuleService().getElement(model.getForumId(),RuleService.SCORE,19);
			double money = this.getRuleService().getElement(model.getForumId(),RuleService.MONEY,19);
			double credit = this.getRuleService().getElement(model.getForumId(),RuleService.CREDIT,19);
			int views = (int) this.getRuleService().getElement(model.getForumId(), RuleService.VIEWS,19);
			logger.debug("TopicProxy:score="+score+",user_score="+u_score);
			if(u_score<score){
				throw new ClubException(MessageUtils.getMessage("error_power_score"));
			}
			if(u_money<money){
				throw new ClubException(MessageUtils.getMessage("error_power_money"));
			}
			if(u_credit<credit){
				throw new ClubException(MessageUtils.getMessage("error_power_credit"));
			}
			if(u_views<views){
				throw new ClubException(MessageUtils.getMessage("error_power_views"));
			}
		}
	}
	
	public void create(Topic model) throws ClubException {
		this.noAllowed(model);
		this.localizeFile(model);
		TOPIC_SERVICE.create(model);
		//如果主题创建成功AND用户以登录
		User user = model.getUser();
		user.setTopics(user.getTopics()+1); //回帖次数加1
		this.getUserService().ruleUtils(user,model.getForumId(),2); //根据社区制度更新用户参数
		try{
			this.getUserService().update(user,false);
			model.setUser(user);
		}catch(ClubException e){
			logger.error(e.toString());
		}
		/*
		 * 统计相关
		 */
		Counters counters = new Counters();
		counters.setTopics(1);
		counters.setForumId(model.getForumId());
		try{
			this.getCountService().doCount(counters);
		}catch(ClubException e){
			logger.error(e.toString());
		}
		
		ManageLog log = new ManageLog();
		log.setTopicId(model.getTopicId());
		log.setReplyId(0);
		log.setForumId(model.getForumId());
		log.setTitle(model.getTitle());
		log.setByUserId(model.getUserId());
		log.setByUserName(this.getUserService().findById(model.getUserId()).getUserName());
		log.setByUserIp("127.0.0.1");
		log.setCreateDateTime(model.getCreateDateTime());
		this.getUserService().ruleUtils(log,0,2);
		log.setUserName(this.getUserService().findById(model.getUserId()).getUserName());
		log.setUserId(model.getUserId());
		log.setIsList(true);
		log.setListByUserName(true);
		log.setMemo("发表文章");
		log.setContent("");
		try{
			this.getManageLogService().create(log);
		}catch(ClubException e){
			logger.error(e.toString());
		}
	}

	public void update(Topic model) throws ClubException {
		/*
		 * 是否具备编辑他人文章的权限
		 */
		boolean updateadmin = USER_POWER.canAccess(model.getSessionUser()
				,model.getForumId()
				,UserPower.ADMINPOWER
				,0);
		/*
		 * 是否具备编辑被回复过的文章的权限 
		 */
		boolean updatereplyed = USER_POWER.canAccess(model.getSessionUser()
				,model.getForumId()
				,UserPower.OPERATEPOWER
				,4);
		
		/*
		 * 是否具备编辑自己文章的权限
		 * 
		 */
		boolean updatemy = USER_POWER.canAccess(model.getSessionUser()
				,model.getForumId()
				,UserPower.OPERATEPOWER
				,3);
				
		if(!updateadmin){
			//先检查文章作者和操作者是否为同一人
			if(model.getSessionUser()!=null && model.getSessionUser().getUserId()== model.getUserId()){
				/*
				 * 如果用户编辑的是自己的文章
				 * 这个判断放到了ctroller层
				 */
				//logger.debug("model.getUser().getUserId(): "+model.getUser().getUserId());
				logger.debug("model.getUserId(): "+model.getUserId());
				if(!updatemy){
					throw new ClubException(MessageUtils.getMessage("error_power"));
				}
				
				/*
				 * 判断是否具备编辑被回复过的文章权限
				 */
				if(model.getReplys()>0&&!updatereplyed){
					throw new ClubException(MessageUtils.getMessage("error_update_replyed"));
				}
			}else{
				throw new ClubException(MessageUtils.getMessage("error_power"));
			}
		}
		this.localizeFile(model);
		TOPIC_SERVICE.update(model);
	}

	public int delete(Topic model) throws ClubException {
		return TOPIC_SERVICE.delete(model);
	}

	public int delete(String[] ids) {
		return 0;
	}

	public Topic move(TopicMoveForm form) throws ClubException {
		User user = form.getUser();
		if(!Validator.isEmpty(user)){
			form.setMoveUserId(user.getUserId());
			form.setMoveUserName(user.getUserName());
		}
		Topic model = TOPIC_SERVICE.move(form);
		if(Validator.isEmpty(model)){
			return null;
		}else{
			User umodel = this.getUserService().findById(model.getUserId());
			if(!Validator.isEmpty(umodel)){
				this.getUserService().ruleUtils(umodel,model.getForumId(),7);
				this.getUserService().update(umodel,false);
				ManageLog log = new ManageLog();
				log.setTopicId(model.getTopicId());
				log.setTitle(model.getTitle());
				log.setByUserId(model.getMoveUserId());
				log.setByUserName(model.getMoveUserName());
				log.setByUserIp(model.getUserIp());
				log.setCreateDateTime(FormatDateTime.now());
				log.setForumId(model.getForumId());
				this.getUserService().ruleUtils(log,model.getForumId(),7);
				log.setUserName(model.getUserName());
				log.setUserId(model.getUserId());
				log.setIsList(form.getIsList());
				log.setListByUserName(form.getListByUserName());
				log.setMemo("文章被移动");
				StringBuffer temp = new StringBuffer();
				temp.append("文章从 ");
				temp.append(this.getForumService(). findById(form.getForumId()).getForumName());
				temp.append(" 移动到 ");
				temp.append(this.getForumService().findById(form.getToForumId()).getForumName());
				temp.append("\r\n");
				temp.append(form.getContent());
				log.setContent(temp.toString());
				log.setIsManaged(true);
				log.setIsList(true);
				this.getManageLogService().create(log);
				if(form.getSendMessage()==1){ //如果需要通知用户
					Message message = new Message();
					message.setUserIdOfTake(umodel.getUserId());
					message.setUserNameOfTake(umodel.getUserName());
					message.setUserIdOfSend(form.getUser().getUserId());
					message.setUserNameOfSend(form.getUser().getUserName());
					message.setIsOpened(false);
					message.setCreateDateTime(FormatDateTime.now());
					message.setUserIpOfTake(model.getUserIp());
					message.setUserIpOfSend(form.getUserIp());
					message.setTitle(log.getMemo()+"("+model.getTitle()+")");
					StringBuffer sb = new StringBuffer();
					if(!Validator.isEmpty(form.getContent())){
						sb.append(form.getContent());
						sb.append("\r\n");
					}
					sb.append(log.getContent());
					sb.append("\r\n信誉:");
					sb.append(ViewCoder.getRuleElement(log.getCredit()));
					sb.append("\r\n积分:");
					sb.append(ViewCoder.getRuleElement(log.getScore()));
					sb.append("\r\n金币:");
					sb.append(ViewCoder.getRuleElement(log.getMoney()));
					sb.append("\r\n人气:");
					sb.append(ViewCoder.getRuleElement(log.getViews()));
					sb.append("\r\n[url]");
					sb.append(this.getUserService().getBasicInfo().getUrl());
					sb.append(UrlUtils.getTopicUrl(model));
					sb.append("[/url]");
					message.setContent(sb.toString());
					this.getMessageService().create(message, true);
				}
			}
		}
		return model;
	}

	public List<Topic> findByParameter(TopicParameter param) {
		return TOPIC_SERVICE.findByParameter(param);
	}

	public long countByParameter(TopicParameter param) {
		return TOPIC_SERVICE.countByParameter(param);
	}

	private ManageLogService getManageLogService() {
		return  ServiceWrapper.<ManageLogService>getSingletonInstance(ServiceLocator.MANAGELOG);
	}

	private ForumService getForumService() {
		return ServiceWrapper.<ForumService>getSingletonInstance(ServiceLocator.FORUM);
	}
	
	private UserService getUserService() {
		return ServiceWrapper.<UserService>getSingletonInstance(ServiceLocator.USER);
	}
	
	/*
	public NoAllowedCharService getNoAllowedCharService() {
		return ServiceWrapper.<NoAllowedCharService>getSingletonInstance(ServiceLocator.NOALLOWEDCHAR);
	}
	*/
	
	private CountService getCountService() {
		return ServiceWrapper.<CountService>getSingletonInstance(ServiceLocator.COUNT);
	}
	
	private MessageService getMessageService(){
		return ServiceWrapper.<MessageService>getSingletonInstance(ServiceLocator.MESSAGE);
	}
	
	public TopicDAO getTopicDAO() {
		return TOPIC_SERVICE.getTopicDAO();
	}
	
	public Integer getLastReplyId() {
		return TOPIC_SERVICE.getLastReplyId();
	}

	public void setLastReplyId(Integer i) {
		TOPIC_SERVICE.setLastReplyId(i);
	}
	
	/*
	public UserPower getUserPower() {
		if(Validator.isEmpty(userPower)){
			userPower = new UserPower();
		}
		return userPower;
	}
	*/

	public List<TContent> findContentByParameter(TopicParameter param) {
		return TOPIC_SERVICE.findContentByParameter(param);
	}

	public TContentDAO getTContentDAO(){
		return TOPIC_SERVICE.getTContentDAO();
	}
	
	public NoAllowedCharService getNoAllowedCharService(){
		return ServiceWrapper.<NoAllowedCharService>getSingletonInstance(ServiceLocator.NOALLOWEDCHAR);
	}

	@Override
	public List<Topic> searchTopic(String title, int page, int rows) {
		return TOPIC_SERVICE.searchTopic(title, page, rows);
	}

	@Override
	public int deleteByUserId(int userId) throws ClubException {
		return TOPIC_SERVICE.deleteByUserId(userId);
	}
	
	private RuleService getRuleService() {
		return ServiceWrapper.<RuleService>getSingletonInstance(ServiceLocator.RULE);
	}

}

⌨️ 快捷键说明

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