public Models.UserProjectRelationTag[] GetRelationTag(IUserService user, long[] uids) { List <UserProjectRelationTag> result = new List <UserProjectRelationTag>(); uids = uids ?? Enumerable.Empty <long>().Where(id => id > 0).Distinct().ToArray(); if (uids.Length == 0) { return(result.ToArray()); } var users = _UserManager.GetUsers(uids).Select(u => new { uid = u.uid, mobile = u.mobile }).ToArray(); var addressBooks = _AddressBookManager.GetUserAddressBookManager(user).GetAddressBookMobile(users.Select(u => u.mobile).ToArray()).ToArray(); if (addressBooks.Length > 0) { foreach (var a in addressBooks) { result.Add(new UserProjectRelationTag { Uid = users.First(u => u.mobile == a.mobile).uid, Kind = UserProjectRelationTagKinds.AddressBook, Tag = "通讯录好友", AddressBookFriend = new AddressBookFriend() { Name = a.name, Mobile = a.mobile } }); } uids = uids.Except(result.Select(r => r.Uid)).ToArray(); } if (uids.Length > 0) { var uid = user.Uid; var classMates = from myclass in _ClassStuRelationRepository.Entities join classes in _ClassRepository.Entities on myclass.classId equals classes.classId join otherClass in _ClassStuRelationRepository.Entities on myclass.classId equals otherClass.classId where myclass.uid == uid && classes.isEnable && uids.Contains(otherClass.uid) select otherClass.uid; var classMateIds = classMates.ToArray().Distinct(); foreach (var a in classMateIds) { result.Add(new UserProjectRelationTag { Uid = a, Kind = UserProjectRelationTagKinds.ClassMate, Tag = "同学", }); } uids = uids.Except(result.Select(r => r.Uid)).ToArray(); } if (uids.Length > 0) { var addressBookRelation = _AddressBookMobileRepository.GetUserAddressBookRelation(user.Uid, uids); if (addressBookRelation.Length > 0) { var abs = addressBookRelation.GroupBy(a => a.uid).Select(a => new { uid = a.Key, name = a.OrderBy(p => p.id).First().name }); foreach (var a in abs) { result.Add(new UserProjectRelationTag { Uid = a.uid, Kind = UserProjectRelationTagKinds.Indirect, Tag = String.Format("与{0}是好友", a.name) }); } } uids = uids.Except(result.Select(r => r.Uid)).ToArray(); } if (uids.Length > 0) { var mutual = _FootPrintRepository.GetMutualUids(user.Uid, uids); if (mutual.Length > 0) { foreach (var u in mutual) { result.Add(new UserProjectRelationTag { Uid = u, Kind = UserProjectRelationTagKinds.Mutual, Tag = "同跟人" }); } } uids = uids.Except(result.Select(r => r.Uid)).ToArray(); } //if (uids.Length > 0) //{ // uids = _RelationManager.CreateUserRelationManager(user).DockedIds.Where(p=>uids.Contains(p)).ToArray(); // if (uids.Length > 0) // { // foreach (var u in uids) // { // result.Add(new UserProjectRelationTag // { // Uid = u, // Kind = UserProjectRelationTagKinds.Docked, // Tag = "对接人" // }); // } // } //} return(result.ToArray()); }