userproxy.java

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

JAVA
408
字号
/* 
 * Created on 2007-1-16
 * Last modified on 2007-12-20
 * Powered by YeQiangWei.com
 */
package com.yeqiangwei.club.service.user;

import java.util.List;

import org.apache.log4j.Logger;

import com.yeqiangwei.club.exception.ClubException;
import com.yeqiangwei.club.param.UserParameter;
import com.yeqiangwei.club.passport.service.PUserService;
import com.yeqiangwei.club.passport.service.PUserServiceImpl;
import com.yeqiangwei.club.service.ServiceLocator;
import com.yeqiangwei.club.service.ServiceWrapper;
import com.yeqiangwei.club.model.BasicInfo;
import com.yeqiangwei.club.model.ManageLog;
import com.yeqiangwei.club.model.Message;
import com.yeqiangwei.club.model.Reply;
import com.yeqiangwei.club.model.Topic;
import com.yeqiangwei.club.model.User;
import com.yeqiangwei.club.service.message.MessageService;
import com.yeqiangwei.club.service.topic.ReplyService;
import com.yeqiangwei.club.service.topic.TopicService;
import com.yeqiangwei.club.service.util.BasicInfoService;
import com.yeqiangwei.club.service.util.ManageLogService;
import com.yeqiangwei.club.service.util.NoAllowedCharService;
import com.yeqiangwei.club.util.MessageUtils;
import com.yeqiangwei.club.view.util.UrlUtils;
import com.yeqiangwei.club.view.util.ViewCoder;
import com.yeqiangwei.cache.Cache;
import com.yeqiangwei.club.controller.form.AProfileForm;
import com.yeqiangwei.club.controller.form.UpdateUserParamterForm;
import com.yeqiangwei.util.FormatDateTime;
import com.yeqiangwei.util.Validator;
import com.yeqiangwei.util.StringHelper;

/**
 * 禁止单例
 * 拦截系统限制的敏感字符
 */
public class UserProxy implements UserService{
	
	private static final Logger logger = Logger.getLogger(UserProxy.class);
	
	private static UserService USER_SERVICE ;
	
	private static PUserService PUSER_SERVICE;
	
	static{
		if(Validator.isEmpty(USER_SERVICE))USER_SERVICE = new UserServiceImpl();
		if(Validator.isEmpty(PUSER_SERVICE))PUSER_SERVICE = new PUserServiceImpl();
	}
	
	public int updateIsIndexedByUserId(int userId, boolean isIndexed){
		return USER_SERVICE.updateIsIndexedByUserId(userId,isIndexed);
	}
	
	public void createOrUpdate(User model) throws ClubException {
		USER_SERVICE.createOrUpdate(model);
	}

	public User update(AProfileForm form) throws ClubException {
		return USER_SERVICE.update(form);
	}
	
	private String noAllowed(User model){
		if(Validator.isEmpty(model.getUserName()) || Validator.isEmpty(model.getPassword())
				|| Validator.isEmpty(model.getEmailAddress())
		)
		{
			return (MessageUtils.getMessage("error_reg_empty"));
		}
		else if(StringHelper.Glength(model.getUserName())>20){
			return MessageUtils.getMessage("error_reg_userName_length");
		}
		else if(StringHelper.Glength(model.getPenName())>50){
			return MessageUtils.getMessage("error_reg_penName_length");
		}
		else if(StringHelper.Glength(model.getEmailAddress())>100){
			return MessageUtils.getMessage("error_reg_emailAddress_length");
		}
		else if(StringHelper.Glength(model.getSignatures())>500){
			return MessageUtils.getMessage("error_reg_signatures_length");
		}
		else if(StringHelper.Glength(model.getIntro())>2000){
			return MessageUtils.getMessage("error_reg_intro_length");
		}
		else if(StringHelper.Glength(model.getArea())>30
				|| StringHelper.Glength(model.getCity())>30)
		{
			return MessageUtils.getMessage("error_reg_area_length");
		}
		else if(StringHelper.Glength(model.getWork())>30)
		{
			return MessageUtils.getMessage("error_reg_work_length");
		}
		else{
			if(StringHelper.Glength(model.getPhoto())>500){
				model.setPhoto(StringHelper.substring(model.getPhoto(),0,200,""));
			}
		}
		return null;
	}
	

	@Override
	public int updateSignaturesByUserId(int userId, String sig)
			throws ClubException {
		return USER_SERVICE.updateSignaturesByUserId(userId, sig);
	}
	
	@Override
	public User updateUserParameter(UpdateUserParamterForm form)
			throws ClubException {
		int forumId = 0;
		String title = null;
		String url = "";
		int topicId = form.getTopicId();
		if(form.getReplyId()>0){
			Reply reply = this.getReplyService().findById(form.getReplyId());
			if(Validator.isEmpty(reply)){
				throw new ClubException(MessageUtils.getMessage("error_notfind_topic"));
			}else{
				forumId = reply.getForumId();
				topicId = reply.getTopicId();
				title = reply.getTitle();
				reply.setIsManaged(true); ////标记被管理
				this.getReplyService().updateIsManaged(reply);
				url = UrlUtils.getReplyUrl(reply);
			}
		}else{
			Topic topic = this.getTopicService().findById(topicId);
			if(Validator.isEmpty(topic)){
				throw new ClubException(MessageUtils.getMessage("error_notfind_topic"));
			}else{
				forumId = topic.getForumId();
				topicId = topic.getTopicId();
				title = topic.getTitle();
				topic.setIsManaged(true); //标记被管理
				this.getTopicService().updateIsManaged(topic);
				url = UrlUtils.getTopicUrl(topic);
			}
		}
		User user = USER_SERVICE.updateUserParameter(form);
		ManageLog log = new ManageLog();
		log.setTopicId(topicId);
		log.setReplyId(form.getReplyId());
		log.setIsManaged(true);
		log.setTitle(title);
		log.setByUserId(form.getByUser().getUserId());
		log.setByUserName(form.getByUser().getUserName());
		log.setByUserIp(form.getByUserIp());
		log.setCreateDateTime(FormatDateTime.now());
		log.setForumId(forumId);
		log.setMoney(form.getMoney());
		log.setCredit(form.getCredit());
		log.setScore(form.getScore());
		log.setViews(form.getViews());
		log.setUserName(user.getUserName());
		log.setUserId(user.getUserId());
		log.setIsList(true);
		log.setListByUserName(true);
		log.setMemo("文章评分");
		log.setContent(form.getContent());
		this.getManageLogService().create(log);
		
		if(form.getSendMessage()==1){ //如果需要通知用户
			Message message = new Message();
			message.setUserIdOfTake(user.getUserId());
			message.setUserNameOfTake(user.getUserName());
			message.setUserIdOfSend(form.getByUser().getUserId());
			message.setUserNameOfSend(form.getByUser().getUserName());
			message.setIsOpened(false);
			message.setCreateDateTime(FormatDateTime.now());
			message.setUserIpOfTake(user.getLastLoginIp());
			message.setUserIpOfSend(form.getByUserIp());
			message.setTitle("文章被评分("+title+")");
			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()));
			sb.append("\r\n[url]");
			sb.append(this.getBasicInfo().getUrl());
			sb.append(url);
			sb.append("[/url]");
			message.setContent(sb.toString());
			this.getMessageService().create(message, true);
		}
		return user;
	}

	public void create(User model) throws ClubException {
		if(Validator.isEmpty(model)||Validator.isEmpty(model.getUserName())){
			logger.error("User is null or userName is empty");
			throw new ClubException(MessageUtils.getMessage("error_system"));
		}
		if(!getNoAllowedCharService().permissionUser(model)){
			throw new ClubException(MessageUtils.getMessage("error_reg_noAllowed"));
		}
		else{
			String exp = this.noAllowed(model);
			if(exp!=null){
				throw new ClubException(exp);
			}else{
				if(!Validator.isEmpty(this.findByUserName(model.getUserName()))||!Validator.isEmpty(this.findByEmailAddress(model.getEmailAddress()))) {
					throw new ClubException(MessageUtils.getMessage("error_reg_duplicate"));
				}else{
					/*
					 * 通行证关联操作
					 
					if(getBasicInfoService().findOnly().getPassport()){
						PUSER_SERVICE.create(model);
					}*/
					USER_SERVICE.create(model);
					ManageLog log = new ManageLog();
					log.setTopicId(0);
					log.setTitle("");
					log.setByUserId(model.getUserId());
					log.setByUserName(model.getUserName());
					log.setByUserIp(model.getRegIp());
					log.setCreateDateTime(model.getRegDateTime());
					log.setForumId(0);
					USER_SERVICE.ruleUtils(log,0,0);
					log.setUserName(model.getUserName());
					log.setUserId(model.getUserId());
					log.setIsList(true);
					log.setListByUserName(true);
					log.setMemo("注册会员");
					StringBuffer temp = new StringBuffer();
					temp.append(model.getUserName());
					temp.append("小心翼翼的注册成为了《");
					temp.append(this.getBasicInfo().getName());
					temp.append("》永久会员");
					log.setContent(temp.toString());
					this.getManageLogService().create(log);
				}
			}
		}
	}
	

	public void update(User model, boolean passwordEncrypt) throws ClubException {
		if(model!=null){
			if(!getNoAllowedCharService().permissionUser(model)){
				throw new ClubException(MessageUtils.getMessage("error_reg_noAllowed"));
			}else{
				String exp = this.noAllowed(model);
				if(exp!=null){
					throw new ClubException(exp);
				}else{
					USER_SERVICE.update(model,passwordEncrypt);
				}
			}
		}else{
			logger.error("User is null!");
			throw new ClubException(MessageUtils.getMessage("error_system"));
		}
	}
	
	public void update(User model) throws ClubException {
		this.update(model,false);
	}

	public int delete(User model) throws ClubException {
		return USER_SERVICE.delete(model);
	}

	public User findByUserName(String userName) {
		return USER_SERVICE.findByUserName(userName);
	}
	
	/**
	 * 用户登录模块判读是否开启了通行证
	 * 如果开启还需要向关联用户库发送判断
	 * @throws ClubException 
	 */
	public User findByUserNameAndPassword(User model) throws ClubException {
		String userName = model.getUserName();
		String password = StringHelper.encodeString(this.getBasicInfoService().findOnly().getPasswordEncrypt(),model.getPassword());
		model = USER_SERVICE.findByUserNameAndPassword(model);
		logger.debug("passport: "+this.getBasicInfoService().findOnly().getPassport());
		if(Validator.isEmpty(model)&&this.getBasicInfoService().findOnly().getPassport()){//如果CLUB数据库没有该用户而且通行证开启
			try {
				return PUSER_SERVICE.login(userName,password);
			} catch (ClubException e) {
				logger.error(e.toString());
				return null;
			}
		}else{
			return model;
		}
	}
	

	public User findByUserNameAndPassword(User model, boolean passwordEncrypt) throws ClubException {
		String userName = model.getUserName();
		String password = model.getPassword();		
		model = USER_SERVICE.findByUserNameAndPassword(model,passwordEncrypt);
		logger.debug("passport: "+this.getBasicInfoService().findOnly().getPassport());
		if(Validator.isEmpty(model)&&this.getBasicInfoService().findOnly().getPassport()){//如果CLUB数据库没有该用户而且通行证开启
			if(passwordEncrypt){
				password=StringHelper.encodeString(this.getBasicInfoService().findOnly().getPasswordEncrypt(),password);
			}
			try {
				return PUSER_SERVICE.login(userName,password);
			} catch (ClubException e) {
				logger.error(e.toString());
				return null;
			}
		}else{
			return model;
		}
	}

	public User findByUserIdAndPassword(int userId, String password) {
		return USER_SERVICE.findByUserIdAndPassword(userId,password);
	}

	public User findByEmailAddress(String emailAddress) {
		return USER_SERVICE.findByEmailAddress(emailAddress);
	}

	public User findById(int id) {
		return USER_SERVICE.findById(id);
	}

	public List<User> findByParameter(UserParameter param) {
		return USER_SERVICE.findByParameter(param);
	}

	public long countByParameter(UserParameter param) {
		return USER_SERVICE.countByParameter(param);
	}

	public int updateGroupIdByUserIds(int groupId, String[] userIds) throws ClubException {
		return USER_SERVICE.updateGroupIdByUserIds(groupId,userIds);
	}
	
	public BasicInfo getBasicInfo(){
		return USER_SERVICE.getBasicInfo();
	}

	public User ruleUtils(User model, int forumId, int locator) {
		return USER_SERVICE.ruleUtils(model,forumId,locator);
	}

	public ManageLog ruleUtils(ManageLog model, int forumId, int locator) {
		return USER_SERVICE.ruleUtils(model,forumId,locator);
	}

	public User findByUserIdAndPassword(int userId, String password, boolean passwordEncrypt) {
		return USER_SERVICE.findByUserIdAndPassword(userId,password,passwordEncrypt);
	}

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

	@Override
	public Cache<User> getCache() {
		return USER_SERVICE.getCache();
	}

	@Override
	public void setViews(int userId, int views) {
		USER_SERVICE.setViews(userId, views);
	}

	@Override
	public void setViewsToDB() {
		USER_SERVICE.setViewsToDB();
	}
	

	public BasicInfoService getBasicInfoService() {
		return USER_SERVICE.getBasicInfoService();
	}
	
	private ManageLogService getManageLogService() {
		return ServiceWrapper.<ManageLogService>getSingletonInstance(ServiceLocator.MANAGELOG);
	}
	
	private TopicService getTopicService() {
		return ServiceWrapper.<TopicService>getSingletonInstance(ServiceLocator.TOPIC);
	}

	private ReplyService getReplyService() {
		return ServiceWrapper.<ReplyService>getSingletonInstance(ServiceLocator.REPLY);
	}
	
	private MessageService getMessageService(){
		return ServiceWrapper.<MessageService>getSingletonInstance(ServiceLocator.MESSAGE);
	}

}

⌨️ 快捷键说明

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