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 + -
显示快捷键?