package com.fang.bbks.modules.social.service;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.fang.bbks.modules.social.dao.RelationDao;
import com.fang.bbks.modules.social.entity.RelationShip;
import com.fang.bbks.modules.sys.entity.User;
import com.fang.bbks.modules.sys.service.UserService;
import com.google.common.collect.Lists;
/**
* @Intro descrption here
* @author Lee [shouli1990@gmail.com]
* @Version V0.0.1
* @Date 2014-5-8
* @since 下午3:53:09
*/
@Service("relationService")
@Transactional(readOnly = true)
public class RelationService {
private static Logger logger = LoggerFactory.getLogger(RelationService.class);
@Autowired
private RelationDao relationDao;
@Autowired
private UserService userService;
/**
* 关注某人
* @param flowId
* @param flowedId
* @return
*/
public RelationShip flow(Long flowId,Long flowedId){
RelationShip rs = new RelationShip();
rs.setCreatedAt(new Date());
rs.setFlowId(flowId);
rs.setFlowedId(flowedId);
return relationDao.save(rs);
}
/**
* 取消关注
* @param flowId
* @param flowedId
*/
public void unFlow(Long flowId,Long flowedId){
relationDao.unFlow(flowId, flowedId);
}
/**
* 判断是否flowid关注了flowedid
* 是:true
* 否:false
* @param flowId
* @param flowedId
* @return
*/
public Boolean isFlow(Long flowId,Long flowedId){
return relationDao.findOne(flowId, flowedId) != null;
}
/**
* 查询当前用户的粉丝
* @param flowId
* @return
*/
public List<User> findFlowings(Long flowId){
List<User> users = Lists.newArrayList();
List<RelationShip> rs = relationDao.findFlowing(flowId);
if(rs != null && !rs.isEmpty()){
Iterator<RelationShip> iter = rs.iterator();
while(iter.hasNext()){
RelationShip r = iter.next();
users.add(userService.findOne(r.getFlowId()));
}
}
return users;
}
/**
* 查询偶像
* @param flowId
* @return
*/
public List<User> findFloweds(Long flowedId){
List<User> users = Lists.newArrayList();
List<RelationShip> rs = relationDao.findFlowed(flowedId);
if(rs != null && !rs.isEmpty()){
Iterator<RelationShip> iter = rs.iterator();
while(iter.hasNext()){
RelationShip r = iter.next();
users.add(userService.findOne(r.getFlowedId()));
}
}
return users;
}
}