public override GetNearLikesResponseBody ExecuteCore() { GetNearLikesResponseBody res = new GetNearLikesResponseBody(); using (HWLEntities db = new HWLEntities()) { var likes = db.t_near_circle_like.Where(c => c.near_circle_id == this.request.NearCircleId && c.is_delete == false) .Select(c => new { LikeId = c.id, NearCircleId = c.near_circle_id, LikeUserId = c.like_user_id, LikeTime = c.like_time }).OrderBy(c => c.LikeId).ToList(); if (likes == null || likes.Count <= 0) { return(res); } res.NearCircleLikeInfos = new List <NearCircleLikeInfo>(); var userIds = likes.Select(c => c.LikeUserId).ToList(); var userList = db.t_user.Where(i => userIds.Contains(i.id)).Select(i => new { i.id, i.name, i.head_image }).ToList(); var friendList = db.t_user_friend.Where(f => f.user_id == this.request.UserId && userIds.Contains(f.friend_user_id)).Select(f => new { f.friend_user_id, f.friend_user_remark }).ToList(); likes.ForEach(f => { NearCircleLikeInfo model = new NearCircleLikeInfo() { LikeId = f.LikeId, LikeUserId = f.LikeUserId, NearCircleId = f.NearCircleId, LikeTime = GenericUtility.FormatDate(f.LikeTime), }; if (userList != null && userList.Count > 0) { var likeUser = userList.Where(u => u.id == f.LikeUserId).FirstOrDefault(); if (likeUser != null) { string friendRemark = friendList != null ? friendList.Where(r => r.friend_user_id == f.LikeUserId).Select(r => r.friend_user_remark).FirstOrDefault() : null; model.LikeUserName = UserUtility.GetShowName(friendRemark, likeUser.name); model.LikeUserImage = likeUser.head_image; } } res.NearCircleLikeInfos.Add(model); }); } return(res); }
private void BindInfo(List <NearCircleInfo> infos) { if (infos == null || infos.Count <= 0) { return; } //List<int> imageCircleIds = infos.Where(n => CustomerEnumDesc.ImageContentTypes().Contains(n.ContentType)).Select(n => n.NearCircleId).ToList(); //List<t_near_circle_image> imageList = null; //if (imageCircleIds != null && imageCircleIds.Count > 0) //{ // imageList = db.t_near_circle_image.Where(i => imageCircleIds.Contains(i.near_circle_id)).ToList(); //} List <int> circleIds = infos.Select(n => n.NearCircleId).ToList(); var likeList = db.t_near_circle_like.Where(l => circleIds.Contains(l.near_circle_id) && l.is_delete == false).ToList(); var commentList = db.t_near_circle_comment.Where(c => circleIds.Contains(c.near_circle_id)).ToList(); List <int> userIds = infos.Select(u => u.PublishUserId).ToList(); if (likeList != null && likeList.Count > 0) { userIds.AddRange(likeList.Select(u => u.like_user_id).ToList()); } if (commentList != null && commentList.Count > 0) { userIds.AddRange(commentList.Select(u => u.comment_user_id).ToList()); userIds.AddRange(commentList.Select(c => c.reply_user_id).ToList()); } var userList = db.t_user.Where(i => userIds.Contains(i.id)).Select(i => new { i.id, i.name, i.head_image }).ToList(); var friendList = db.t_user_friend.Where(f => f.user_id == this.request.UserId && userIds.Contains(f.friend_user_id)).Select(f => new { f.friend_user_id, f.friend_user_remark }).ToList(); foreach (var item in infos) { //if (imageList != null && imageList.Count > 0) //{ // item.Images = imageList.Where(i => i.near_circle_id == item.NearCircleId).Select(i => new ImageInfo() // { // Url = i.image_url, // Height = i.height, // Width = i.width // }).ToList(); //} if (userList != null && userList.Count > 0) { var user = userList.Where(u => u.id == item.PublishUserId).FirstOrDefault(); if (user != null) { string friendRemark = friendList != null?friendList.Where(f => f.friend_user_id == item.PublishUserId).Select(f => f.friend_user_remark).FirstOrDefault() : null; item.PublishUserName = UserUtility.GetShowName(friendRemark, user.name); item.PublishUserImage = user.head_image; } } if (likeList != null && likeList.Count > 0) { item.IsLiked = likeList.Where(l => l.near_circle_id == item.NearCircleId && l.like_user_id == this.request.UserId).Select(l => l.id).FirstOrDefault() > 0 ? true : false; item.LikeInfos = likeList.Where(l => l.near_circle_id == item.NearCircleId) .Select(l => { NearCircleLikeInfo model = new NearCircleLikeInfo() { LikeId = l.id, LikeUserId = l.like_user_id, NearCircleId = l.near_circle_id, LikeTime = l.like_time.ToString("yyyy-MM-dd HH:mm:ss"), }; if (userList != null && userList.Count > 0) { var likeUser = userList.Where(u => u.id == l.like_user_id).FirstOrDefault(); if (likeUser != null) { string friendRemark = friendList != null ? friendList.Where(f => f.friend_user_id == l.like_user_id).Select(f => f.friend_user_remark).FirstOrDefault() : null; model.LikeUserName = UserUtility.GetShowName(friendRemark, likeUser.name); model.LikeUserImage = likeUser.head_image; } } return(model); }).ToList(); } if (commentList != null && commentList.Count > 0) { item.CommentInfos = commentList.Where(c => c.near_circle_id == item.NearCircleId) .Select(c => { NearCircleCommentInfo model = new NearCircleCommentInfo() { CommentId = c.id, Content = c.content_info, NearCircleId = c.near_circle_id, CommentTime = c.comment_time.ToString("yyyy-MM-dd HH:mm:ss"), CommentUserId = c.comment_user_id, CommentUserImage = null, CommentUserName = null, ReplyUserId = c.reply_user_id, ReplyUserName = null, ReplyUserImage = null, }; if (userList != null && userList.Count > 0) { if (c.comment_user_id > 0) { var comUser = userList.Where(u => u.id == c.comment_user_id).FirstOrDefault(); if (comUser != null) { string friendRemark = friendList != null ? friendList.Where(f => f.friend_user_id == c.comment_user_id).Select(f => f.friend_user_remark).FirstOrDefault() : null; model.CommentUserName = UserUtility.GetShowName(friendRemark, comUser.name); model.CommentUserImage = comUser.head_image; } } if (c.reply_user_id > 0) { var repUser = userList.Where(u => u.id == c.reply_user_id).FirstOrDefault(); if (repUser != null) { string friendRemark = friendList != null ? friendList.Where(f => f.friend_user_id == c.reply_user_id).Select(f => f.friend_user_remark).FirstOrDefault() : null; model.ReplyUserName = UserUtility.GetShowName(friendRemark, repUser.name); model.ReplyUserImage = repUser.head_image; } } } return(model); }).ToList(); } //item.LikeInfos = NearUtility.GetNearLikes(item.NearCircleId); //item.CommentInfos = NearUtility.GetNearComments(item.NearCircleId, 20); } }