package com.xiaozhi.blog.service;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.google.common.collect.ArrayListMultimap;
import com.xiaozhi.blog.mongo.MongoUserGroupDao;
import com.xiaozhi.blog.utils.UserGroupHelper;
import com.xiaozhi.blog.vo.User;
import com.xiaozhi.blog.vo.UserGroup;
/**
*
* @author xiaozhi
*
*/
@Service
public class GroupService {
private static Log logger = LogFactory.getLog(GroupService.class);
@Autowired
private MongoUserGroupDao mongoUserGroupDao;
/**
* 新增用户组
* @param group
* @return
*/
public UserGroup addUserGroup(UserGroup group) {
return this.mongoUserGroupDao.addUserGroup(group);
}
/**
* 删除用户组
* @param groupId
* @return
*/
public boolean delUserGroup(String groupId){
return this.mongoUserGroupDao.delUserGroup(groupId);
}
/**
* 更新用户组名称
* @param groupId
* @param groupName
* @return
*/
public UserGroup updateUserGroupName(String groupId,String groupName){
return this.mongoUserGroupDao.updateUserGroupName(groupId, groupName);
}
/**
* 加入一个用户到用户组
* @param groupId
* @param uid
* @return
*/
public UserGroup pushMemberToGroup(String groupId,String memberId){
return this.mongoUserGroupDao.pushMemberToGroup(groupId, memberId);
}
/**
* 从用户组剔除一个用户
* @param groupId
* @param uid
* @return
*/
public UserGroup pullMemberFromGroup(String groupId,String memberId){
return this.mongoUserGroupDao.pullMemberFromGroup(groupId, memberId);
}
/**
* 将一个用户从一个用户组转移到另一个用户组
* @param fromGroupId
* @param toGroupId
* @param uid
* @return
*/
public boolean moveUserToGroup(String fromGroupId,String toGroupId,String uid){
return moveUserToGroup(fromGroupId, toGroupId, uid);
}
/**
* 通过用户组所有者Id获得用户组集合
* @param uid
* @return
*/
public List<UserGroup> getGroupByUserId(String uid){
return this.mongoUserGroupDao.getGroupByUserId(uid);
}
/**
* 通过组Id获取该组的用户集合
* @param groupId
* @return
*/
public List<User> getMembersByGroupId(String groupId){
return this.mongoUserGroupDao.getMembersByGroupId(groupId);
}
/**
* 显示关注列表中一个用户的分组情况
* @param owerId
* @param userid
* @return
*/
public List<UserGroup> getMemberGroupShow(String owerId,String userid){
List<UserGroup> groups = this.mongoUserGroupDao.getGroupByUserId(owerId);
ArrayListMultimap<String,UserGroup> gMultimap = UserGroupHelper.getUserGroupsMulitMap(groups);
for(UserGroup group :groups){
if(gMultimap.get(userid).contains(group)) group.setSelected(true);
}
return groups;
}
}