friendserviceimpl.java

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

JAVA
452
字号
/* 
 * Created on 2007-4-28
 * Last modified on 2008-1-1
 * Powered by YeQiangWei.com
 */
package com.yeqiangwei.club.service.user;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

import com.yeqiangwei.cache.Cache;
import com.yeqiangwei.cache.CacheFactory;
import com.yeqiangwei.club.cache.CacheRegion;
import com.yeqiangwei.club.dao.DAOLocator;
import com.yeqiangwei.club.dao.DAOWrapper;
import com.yeqiangwei.club.dao.FriendDAO;
import com.yeqiangwei.club.model.Friend;
import com.yeqiangwei.club.model.User;
import com.yeqiangwei.club.exception.ClubException;
import com.yeqiangwei.club.param.FriendParameter;
import com.yeqiangwei.club.param.TopicParameter;
import com.yeqiangwei.club.service.ServiceLocator;
import com.yeqiangwei.club.service.ServiceWrapper;
import com.yeqiangwei.club.model.FriendLastPost;
import com.yeqiangwei.club.model.ManageLog;
import com.yeqiangwei.club.model.Reply;
import com.yeqiangwei.club.model.Topic;
import com.yeqiangwei.club.module.doing.exception.RobotException;
import com.yeqiangwei.club.module.doing.model.Robot;
import com.yeqiangwei.club.module.doing.model.UserIM;
import com.yeqiangwei.club.module.doing.param.UserIMParameter;
import com.yeqiangwei.club.module.doing.service.RobotFactory;
import com.yeqiangwei.club.module.doing.service.RobotProvider;
import com.yeqiangwei.club.module.doing.service.RobotService;
import com.yeqiangwei.club.module.doing.service.UserIMService;
import com.yeqiangwei.club.service.topic.ReplyService;
import com.yeqiangwei.club.service.topic.TopicService;
import com.yeqiangwei.club.service.user.UserService;
import com.yeqiangwei.club.service.util.BasicInfoService;
import com.yeqiangwei.club.service.util.ManageLogService;
import com.yeqiangwei.club.util.BeanUtils;
import com.yeqiangwei.club.util.MessageUtils;
import com.yeqiangwei.util.StringHelper;
import com.yeqiangwei.util.Validator;

/**
 * 本类下只根据myUserId cache 好友列表
 * @author yeqiangwei
 */
public class FriendServiceImpl implements FriendService {
	
	private static Logger logger = Logger.getLogger(FriendServiceImpl.class);
	
	private static final Cache<Friend> CACHE_FRIEND = CacheFactory.<Friend>creator(CacheRegion.FRIEND);
	
	public FriendServiceImpl(){
		
	}
	
	public Friend findByMyUserIdAndFriendUserId(int myUserId, int friendUserId) {
		return this.getFriendDAO().findByMyUserIdAndFriendUserId(myUserId, friendUserId);
	}
	
	public Friend findById(int id) {
		Friend model = null;
		FriendParameter param = new FriendParameter();
		param.setPage(new Integer(1));
		param.setRows(new Integer(1));
		List<?> list = (List<?>) this.getFriendDAO().find_friendJoinUser(param);
		for(int i=0; i<list.size(); i++){
			Object[] obj = (Object[]) list.get(i);
			model = (Friend) obj[0];
			User user = (User) obj[1];
			if(!Validator.isEmpty(model)&&!Validator.isEmpty(user)){
				model.setUser(user);
				CACHE_FRIEND.put(cacheKey(model,false),model);
			}
		}
		return model;
	}

	public void createOrUpdate(Friend model) throws ClubException {
		if(!Validator.isEmpty(model)&&model.getFriendId()>0){
			this.update(model);
		}else{
			this.create(model);
		}
	}

	public void create(Friend model) throws ClubException {
		if(model.getMyUserId()==0||model.getFriendUserId()==0){
			throw new ClubException(MessageUtils.getMessage("error_notfind_user"));
		}
		FriendParameter param = new FriendParameter();
		param.setMyUserId(model.getMyUserId());
		if(this.countByParameter(param)>=50){
			//this.setMessage(MessageUtils.getMessage("error_friend_toomany"));
			throw new ClubException(MessageUtils.getMessage("error_friend_toomany"));
		}
		User user = this.getUserService().findById(model.getFriendUserId());
		if(Validator.isEmpty(user)){
			//this.setMessage(MessageUtils.getMessage("error_notfind_user"));
			throw new ClubException(MessageUtils.getMessage("error_notfind_user"));
		}else if(!Validator.isEmpty(
				this.getFriendDAO().findByMyUserIdAndFriendUserId(model.getMyUserId(),model.getFriendUserId()))
		)
		{
			//this.setMessage(MessageUtils.getMessage("error_friend_duplicate"));
			throw new ClubException(MessageUtils.getMessage("error_friend_duplicate"));
		}
		this.getFriendDAO().create(model);
		model.setFriendId(model.getFriendId());
		CACHE_FRIEND.put(cacheKey(model,false),model);
		
		ManageLog log = new ManageLog();
		log.setTopicId(0);
		log.setReplyId(0);
		log.setForumId(0);
		log.setTitle("");
		log.setByUserId(model.getMyUserId());
		log.setByUserName(this.getUserService().findById(model.getMyUserId()).getUserName());
		log.setByUserIp("127.0.0.1");
		log.setCreateDateTime(model.getCreateDateTime());
		this.getUserService().ruleUtils(log,0,26);
		log.setUserName(this.getUserService().findById(model.getFriendUserId()).getUserName());
		log.setUserId(model.getFriendUserId());
		log.setIsList(true);
		log.setListByUserName(true);
		log.setMemo("被加为好友");
		log.setContent(log.getUserName()+"被"+log.getByUserName()+"加为好友");
		this.getManageLogService().create(log);
		
		
		log = new ManageLog();
		User user_ = this.getUserService().findById(model.getFriendUserId());
		if(user_.getSex()==2){
			log.setTitle("");
			log.setMemo("加她人为好友");
		}else{
			log.setTitle("");
			log.setMemo("加他人为好友");
		}
		log.setTopicId(0);
		log.setReplyId(0);
		log.setForumId(0);
		log.setByUserId(model.getMyUserId());
		log.setByUserName(this.getUserService().findById(model.getMyUserId()).getUserName());
		log.setByUserIp("127.0.0.1");
		log.setCreateDateTime(model.getCreateDateTime());
		this.getUserService().ruleUtils(log,0,27);
		log.setUserName(this.getUserService().findById(model.getMyUserId()).getUserName());
		log.setUserId(model.getMyUserId());
		log.setIsList(true);
		log.setListByUserName(true);
		log.setContent(log.getByUserName()+"将"+user_.getUserName()+"加为好友");
		this.getManageLogService().create(log);
		
		/*********************IM提醒******************/
		UserIMParameter imparam = new UserIMParameter();
		imparam.setPage(1);
		imparam.setRows(10);
		imparam.setUserId(model.getFriendUserId());
		List<UserIM> imlist = this.getUserIMService().findByParameter(imparam);
		for(UserIM userim : imlist){
			if(userim.getNewFriendHint()==0){
				continue;
			}
			Robot robot = this.getRobotService().findById(userim.getRobotId());
			if(!Validator.isEmpty(robot)){
				RobotProvider robotProvider = RobotFactory.getInstance(userim.getRobotId());
				if(!Validator.isEmpty(robotProvider)){
					StringBuffer msg = new StringBuffer();
					msg.append(getUserService().findById(model.getMyUserId()).getUserName());
					msg.append(" 刚刚把你加为了好友,赶快去看看吧:\r\n");
					msg.append(getBasicInfoService().findOnly().getUrl());
					msg.append("/club/?url=friend.jsp");
					msg.append("\r\n来自:");
					msg.append(getBasicInfoService().findOnly().getName());
					try {
						robotProvider.send(userim, msg.toString());
					} catch (RobotException e) {
						logger.error(e.toString());
					}
				}
			}else{
				this.getUserIMService().delete(userim);
			}
		}
	}

	/**
	 * 
	 * @param model
	 * @return
	 * @throws ClubException 
	 */
	public void update(Friend model) throws ClubException {
		Friend item = this.getFriendDAO().findById(model.getFriendId());
		BeanUtils.copyProperties(item,model);
		this.getFriendDAO().create(item);
	}

	public int delete(Friend model) throws ClubException {
		model = this.getFriendDAO().findById(model.getFriendId());
		if(model==null){
			return 0;
		}
		int c = 0;
		if(model.getFriendId()>0){
			c = this.getFriendDAO().delete(model);
			CACHE_FRIEND.remove(cacheKey(model,false));
			CACHE_FRIEND.remove(cacheKey(model,true));
		}else{
			throw new ClubException(MessageUtils.getMessage("error_parameter"));
		}
		ManageLog log = new ManageLog();
		log.setTopicId(0);
		log.setReplyId(0);
		log.setForumId(0);
		log.setTitle("");
		log.setByUserId(model.getMyUserId());
		log.setByUserName(this.getUserService().findById(model.getMyUserId()).getUserName());
		log.setByUserIp("127.0.0.1");
		log.setCreateDateTime(model.getCreateDateTime());

⌨️ 快捷键说明

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