public override GetCircleLikesResponseBody ExecuteCore() { GetCircleLikesResponseBody res = new GetCircleLikesResponseBody(); using (HWLEntities db = new HWLEntities()) { var likes = db.t_circle_like.Where(c => c.circle_id == this.request.CircleId && c.is_delete == false) .Select(c => new { LikeId = c.id, CircleId = c.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.CircleLikeInfos = new List <CircleLikeInfo>(); 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.symbol, i.head_image }).ToList(); likes.ForEach(f => { CircleLikeInfo model = new CircleLikeInfo() { LikeId = f.LikeId, LikeUserId = f.LikeUserId, CircleId = f.CircleId, LikeTime = GenericUtility.FormatDate(f.LikeTime), }; if (userList != null && userList.Count > 0) { var likeUser = userList.Where(u => u.id == f.LikeUserId).FirstOrDefault(); if (likeUser != null) { model.LikeUserName = UserUtility.GetShowName(likeUser.name, likeUser.symbol); model.LikeUserImage = likeUser.head_image; } } res.CircleLikeInfos.Add(model); }); } return(res); }
public static void BindCircleInfos(HWLEntities db, int userId, List <CircleInfo> infos) { if (infos == null || infos.Count <= 0) { return; } List <int> imageCircleIds = infos.Where(n => CustomerEnumDesc.ImageContentTypes().Contains(n.ContentType)).Select(n => n.CircleId).ToList(); List <t_circle_image> imageList = null; if (imageCircleIds != null && imageCircleIds.Count > 0) { imageList = db.t_circle_image.Where(i => imageCircleIds.Contains(i.circle_id)).ToList(); } List <int> circleIds = infos.Select(n => n.CircleId).ToList(); var likeList = db.t_circle_like.Where(l => circleIds.Contains(l.circle_id) && l.is_delete == false).ToList(); var commentList = db.t_circle_comment.Where(c => circleIds.Contains(c.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.com_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 == 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.circle_id == item.CircleId).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.circle_id == item.CircleId && l.like_user_id == userId).Select(l => l.id).FirstOrDefault() > 0 ? true : false; item.LikeInfos = likeList.Where(l => l.circle_id == item.CircleId) .Select(l => { CircleLikeInfo model = new CircleLikeInfo() { LikeId = l.id, LikeUserId = l.like_user_id, CircleId = l.circle_id, LikeTime = GenericUtility.FormatDate(l.like_time), }; 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.circle_id == item.CircleId) .Select(c => { CircleCommentInfo model = new CircleCommentInfo() { CommentId = c.id, Content = c.com_content, CircleId = c.circle_id, CommentTime = GenericUtility.FormatDate(c.comment_time), CommentUserId = c.com_user_id, CommentUserImage = null, CommentUserName = null, ReplyUserId = c.reply_user_id, ReplyUserName = null, ReplyUserImage = null, }; if (userList != null && userList.Count > 0) { if (c.com_user_id > 0) { var comUser = userList.Where(u => u.id == c.com_user_id).FirstOrDefault(); if (comUser != null) { string friendRemark = friendList != null ? friendList.Where(f => f.friend_user_id == c.com_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(); } } }