Пример #1
0
        public override AddNearCommentResponseBody ExecuteCore()
        {
            AddNearCommentResponseBody res = new AddNearCommentResponseBody();

            using (HWLEntities db = new HWLEntities())
            {
                var circleModel = db.t_near_circle.Where(c => c.id == this.request.NearCircleId).FirstOrDefault();
                if (circleModel == null)
                {
                    throw new Exception("你评论的信息已经被用户删除");
                }

                bool isChanged = string.IsNullOrEmpty(this.request.NearCircleUpdateTime) || this.request.NearCircleUpdateTime != GenericUtility.FormatDate2(circleModel.update_time);

                t_near_circle_comment model = new t_near_circle_comment()
                {
                    comment_user_id = this.request.CommentUserId,
                    content_info    = this.request.Content,
                    near_circle_id  = this.request.NearCircleId,
                    reply_user_id   = this.request.ReplyUserId,
                    id           = 0,
                    comment_time = DateTime.Now,
                };
                db.t_near_circle_comment.Add(model);
                circleModel.comment_count = circleModel.comment_count + 1;
                circleModel.update_time   = DateTime.Now;
                db.SaveChanges();

                var userList = db.t_user.Where(i => i.id == model.comment_user_id || i.id == model.reply_user_id).Select(i => new { i.id, i.name, i.symbol, i.head_image }).ToList();
                NearCircleCommentInfo info = new NearCircleCommentInfo()
                {
                    CommentId     = model.id,
                    Content       = model.content_info,
                    CommentTime   = GenericUtility.FormatDate(model.comment_time),
                    CommentUserId = model.comment_user_id,
                    //CommentUserImage = model.com,
                    //CommentUserName = model.content_info,
                    NearCircleId = model.near_circle_id,
                    ReplyUserId  = model.reply_user_id,
                    //ReplyUserImage = model.content_info,
                    //ReplyUserName = model.content_info,
                };
                if (userList != null && userList.Count > 0)
                {
                    if (info.CommentUserId > 0)
                    {
                        var comUser = userList.Where(u => u.id == info.CommentUserId).FirstOrDefault();
                        info.CommentUserName  = UserUtility.GetShowName(comUser.name, comUser.symbol);
                        info.CommentUserImage = comUser.head_image;
                    }

                    if (info.ReplyUserId > 0)
                    {
                        var repUser = userList.Where(u => u.id == info.ReplyUserId).FirstOrDefault();
                        info.ReplyUserName  = UserUtility.GetShowName(repUser.name, repUser.symbol);
                        info.ReplyUserImage = repUser.head_image;
                    }
                }

                res.NearCirclePublishUserId = circleModel.user_id;
                res.NearCircleCommentInfo   = info;
                if (!isChanged)
                {
                    res.NearCircleLastUpdateTime = GenericUtility.FormatDate2(circleModel.update_time);
                }
            }

            return(res);
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        public override GetNearCommentsResponseBody ExecuteCore()
        {
            GetNearCommentsResponseBody res = new GetNearCommentsResponseBody();

            using (HWLEntities db = new HWLEntities())
            {
                var comments = db.t_near_circle_comment.Where(c => c.near_circle_id == this.request.NearCircleId && c.id > this.request.LastCommentId)
                               .Take(this.request.Count)
                               .Select(c => new
                {
                    Id            = c.id,
                    NearCircleId  = c.near_circle_id,
                    CommentUserId = c.comment_user_id,
                    ReplyUserId   = c.reply_user_id,
                    Content       = c.content_info,
                    CommentTime   = c.comment_time
                }).OrderBy(c => c.Id).ToList();
                if (comments == null || comments.Count <= 0)
                {
                    return(res);
                }
                res.NearCircleCommentInfos = new List <NearCircleCommentInfo>();

                var userIds    = comments.Select(c => c.CommentUserId).Union(comments.Select(c => c.ReplyUserId)).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();
                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();

                comments.ForEach(f =>
                {
                    NearCircleCommentInfo model = new NearCircleCommentInfo()
                    {
                        CommentId        = f.Id,
                        Content          = f.Content,
                        NearCircleId     = f.NearCircleId,
                        CommentTime      = f.CommentTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        CommentUserId    = f.CommentUserId,
                        CommentUserImage = null,
                        CommentUserName  = null,
                        ReplyUserId      = f.ReplyUserId,
                        ReplyUserName    = null,
                        ReplyUserImage   = null,
                    };

                    if (userList != null && userList.Count > 0)
                    {
                        if (f.CommentUserId > 0)
                        {
                            var comUser            = userList.Where(u => u.id == f.CommentUserId).FirstOrDefault();
                            string friendRemark    = friendList != null ? friendList.Where(r => r.friend_user_id == f.CommentUserId).Select(r => r.friend_user_remark).FirstOrDefault() : null;
                            model.CommentUserName  = UserUtility.GetShowName(friendRemark, comUser.name);
                            model.CommentUserImage = comUser.head_image;
                        }

                        if (f.ReplyUserId > 0)
                        {
                            var repUser          = userList.Where(u => u.id == f.ReplyUserId).FirstOrDefault();
                            string friendRemark  = friendList != null ? friendList.Where(r => r.friend_user_id == f.ReplyUserId).Select(r => r.friend_user_remark).FirstOrDefault() : null;
                            model.ReplyUserName  = UserUtility.GetShowName(friendRemark, repUser.name);
                            model.ReplyUserImage = repUser.head_image;
                        }
                    }
                    res.NearCircleCommentInfos.Add(model);
                });
            }

            return(res);
        }