replyproxy.java

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

JAVA
445
字号
/* 
 * Created on 2007-3-24
 * Last modified on 2007-12-20
 * Powered by YeQiangWei.com
 */
package com.yeqiangwei.club.service.topic;

import java.util.List;

import org.apache.log4j.Logger;

import com.yeqiangwei.club.exception.ClubException;
import com.yeqiangwei.club.ip.IPSeeker;
import com.yeqiangwei.club.param.TopicParameter;
import com.yeqiangwei.club.service.ServiceLocator;
import com.yeqiangwei.club.service.ServiceWrapper;
import com.yeqiangwei.club.model.Counters;
import com.yeqiangwei.club.model.ManageLog;
import com.yeqiangwei.club.model.Message;
import com.yeqiangwei.club.model.Reply;
import com.yeqiangwei.club.model.User;
import com.yeqiangwei.club.service.counter.CountService;
import com.yeqiangwei.club.service.message.MessageService;
import com.yeqiangwei.club.service.security.UserPower;
import com.yeqiangwei.club.service.user.RuleService;
import com.yeqiangwei.club.service.user.UserService;
import com.yeqiangwei.club.service.util.ManageLogService;
import com.yeqiangwei.club.service.util.NoAllowedCharService;
import com.yeqiangwei.club.util.LocalizeFile;
import com.yeqiangwei.club.util.MessageUtils;
import com.yeqiangwei.club.view.util.ViewCoder;
import com.yeqiangwei.club.controller.form.TopicTrashForm;
import com.yeqiangwei.util.FormatDateTime;
import com.yeqiangwei.util.IpUtils;
import com.yeqiangwei.util.StringHelper;
import com.yeqiangwei.util.Validator;

public class ReplyProxy implements ReplyService{
	
	private static final Logger logger = Logger.getLogger(ReplyProxy.class);
	
	private static ReplyService REPLY_SERVICE;

	private static UserPower USER_POWER;
	
	static{
		if(REPLY_SERVICE==null)REPLY_SERVICE = new ReplyServiceImpl();
		if(USER_POWER==null)USER_POWER = new UserPower();
	}
	
	public int trash(List<Integer> list, boolean isDeleted) throws ClubException {
		if(!Validator.isEmpty(list)){
			return REPLY_SERVICE.trash(list,isDeleted);
		}else{
			throw new ClubException(MessageUtils.getMessage("error_parameter"));
		}
	}
	
	public int delete(List<Integer> ids) {
		int c = 0;
		if(!Validator.isEmpty(ids)){
			c = REPLY_SERVICE.delete(ids);
		}
		return c;
	}
	
	public int updateIsManaged(Reply reply){
		return REPLY_SERVICE.updateIsManaged(reply);
	}

	public Reply trash(TopicTrashForm form) throws ClubException {
		Reply model = REPLY_SERVICE.trash(form);
		if(!Validator.isEmpty(model)){
			User byuser = form.getUser(); //操作人员
			User umodel = this.getUserService().findById(form.getUserId()); //帖子作者
			if(!Validator.isEmpty(umodel)){
				ManageLog log = new ManageLog();
				log.setTopicId(model.getTopicId());
				log.setReplyId(model.getReplyId());
				log.setTitle(model.getTitle());
				if(!Validator.isEmpty(byuser)){
					log.setByUserId(byuser.getUserId() );
					log.setByUserName(byuser.getUserName());
					log.setByUserIp(form.getUserIp());	
				}
				log.setCreateDateTime(FormatDateTime.now());
				log.setForumId(model.getForumId());
				log.setUserName(umodel.getUserName());
				log.setUserId(umodel.getUserId());
				log.setIsList(form.getIsList());
				log.setListByUserName(form.getListByUserName());
				log.setIsManaged(true);
				if(form.getIsDeleted()){
					this.getUserService().ruleUtils(umodel,model.getForumId(),8); //获取用户积分变动
					this.getUserService().update(umodel,false);
					this.getUserService().ruleUtils(log,model.getForumId(),8); //获取日志积分变动
					log.setMemo("文章被删除");
				}else{
					log.setMemo("文章被恢复");
				}
				StringBuffer temp = new StringBuffer();
				temp.append(form.getContent());
				log.setContent(temp.toString());
				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("信誉:");
					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()));
					message.setContent(sb.toString());
					this.getMessageService().create(message, true);
				}
			}
		}
		return model;
	}

	public List<Reply> findReplyAndContent(TopicParameter param) {
		return REPLY_SERVICE.findReplyAndContent(param);
	}

	public Reply findReplyAndContentById(int id) {
		return REPLY_SERVICE.findReplyAndContentById(id);
	}
	
	public List<Reply> findReplyByTopicId(TopicParameter param) {
		return REPLY_SERVICE.findReplyByTopicId(param);
	}
	
	public Reply findById(int id) {
		return REPLY_SERVICE.findById(id);
	}

	public void createOrUpdate(Reply model) throws ClubException {
		if(model.getReplyId()>0){
			this.update(model);
		}else{
			this.create(model);
		}
	}
	
	private void localizeFile(Reply model){
		if(model.getLocalizeImage()==1
				&&USER_POWER.canAccess(
						model.getUser(),model.getForumId(),UserPower.OPERATEPOWER,6))
		{ //本地化图片
			String temp = model.getRContent().getContent();
			temp = LocalizeFile.localizeImage(temp,LocalizeFile.imagepath(model.getForumId()));
			model.getRContent().setContent(temp);
		}
	}

	private void noAllowed(Reply model) throws ClubException{
		if(!this.getNoAllowedCharService().permissionTopic(model)){
			throw new ClubException(MessageUtils.getMessage("error_noAllowedChar"));
		}else{
			double u_score = 0;
			double u_money = 0;
			double u_credit = 0;
			int u_views = 0;
			if(!Validator.isEmpty(model.getUser())){
				model.setUserId(model.getUser().getUserId());
				model.setUserName(model.getUser().getUserName().trim());
				u_score = model.getUser().getScore();
				u_money = model.getUser().getMoney();
				u_credit = model.getUser().getCredit();
				u_views = model.getUser().getViews();
			}else{//判断用户是否在页面同时输入了用户名和密码,如果是则请求数据库验证,否则只当作过客提交
				User user = null;
				if(!Validator.isEmpty(model.getPassword())&&!Validator.isEmpty(model.getUserName())){
					user = new User();
					user.setUserName(model.getUserName());
					user.setPassword(model.getPassword());
					user = this.getUserService().findByUserNameAndPassword(user,true);
					if(Validator.isEmpty(user)){//如果登录失败
						//this.setMessage(MessageUtils.getMessage("error_login"));
						throw new ClubException(MessageUtils.getMessage("error_login"));
					}else{
						model.setUserId(user.getUserId());
						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,20);
				double money = this.getRuleService().getElement(model.getForumId(),RuleService.MONEY,20);
				double credit = this.getRuleService().getElement(model.getForumId(),RuleService.CREDIT,20);

⌨️ 快捷键说明

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