Пример #1
0
        /// <summary>
        /// 根据商品的Id获取该商品下的留言(返回视图模型)
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        private async Task <List <YZ_CommodityCommentVM> > GetCommodityCommentsVM(Guid id)
        {
            var commodityCommentsVM = new List <YZ_CommodityCommentVM>();
            var queryCommodities    = await _commodity.GetAllIncludingAsyn(x => x.AscriptionUser);

            var query = await _commodityComment.GetAllIncludingAsyn(x => x.Commodity, x => x.CommentUser);

            if (query.Count() > 0)
            {
                var user = GetUser();
                var commodityComments = query.Where(x => x.Commodity.Id == id).ToList();
                if (commodityComments.Count() > 0)
                {
                    foreach (var commodityComment in commodityComments.OrderByDescending(x => x.CreateTime))
                    {
                        var commodityCommentVM = new YZ_CommodityCommentVM(commodityComment);
                        var userAvatarQuery    = await _businessImage.GetAllAsyn();

                        var userAvatar = userAvatarQuery.FirstOrDefault(x => x.RelevanceObjectId == Guid.Parse(commodityComment.CommentUser.Id));
                        commodityCommentVM.CommentUser.Avatar = userAvatar;
                        var commodity = queryCommodities.FirstOrDefault(x => x.Id == commodityComment.Commodity.Id);
                        if (commodity != null)
                        {
                            if (user != null)
                            {
                                if (commodity.AscriptionUser == user || commodityComment.CommentUser == user)
                                {
                                    commodityCommentVM.IsShowDeleteBtn = true;
                                }
                                if (commodityComment.CommentUser == user)
                                {
                                    commodityCommentVM.CommentUser.Name = "٩(๑❛ᴗ❛๑)۶我";
                                }
                            }
                            else
                            {
                                commodityCommentVM.IsShowDeleteBtn = false;
                            }
                        }
                        commodityCommentsVM.Add(commodityCommentVM);
                    }
                }
            }
            return(commodityCommentsVM);
        }
        public async Task <IActionResult> SubmitComment(YZ_CommodityCommentVM input)
        {
            if (input.Id == Guid.Empty)
            {
                return(Json(new { result = false, message = "留言失败!" }));
            }
            if (string.IsNullOrEmpty(input.Description))
            {
                return(Json(new { result = false, message = "请填写留言内容!" }));
            }
            var user        = GetUser();
            var userComment = await GetCommodityComment(x => x.CommentUser == user && x.Commodity.Id == input.Id);

            if (userComment != null)
            {
                TimeSpan ts = (DateTime.Now - userComment.CreateTime);
                if (ts.Minutes < 3)
                {
                    return(Json(new { result = false, message = "操作过于频繁,距离上一次留言时间过短\n请几分钟后再来留言吧!" }));
                }
            }
            if (user == null)
            {
                return(Json(new { result = false, noLogin = true, message = "您未登录无法进行留言,是否现在登录?" }));
            }
            var commodity = await GetCommodity(input.Id);

            if (commodity != null)
            {
                var newComment = new YZ_CommodityComment
                {
                    CommentUser = user,
                    Commodity   = commodity,
                    Description = EncodeFilterHelper.EncodeHtmlToNull(input.Description)
                };
                var r = await _commodityComment.AddOrEditAndSaveAsyn(newComment);

                if (r)
                {
                    if (commodity.AscriptionUser != user)
                    {
                        //发送消息通知
                        var message      = "用户[ " + user.ChineseFullName + " ] 在 [ " + DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss") + " ] 给您的商品 [ " + commodity.Name + " ] 留了言,可能是有意向购买,您可以点击链接查看。";
                        var notification = new Notification
                        {
                            Receiver           = commodity.AscriptionUser,
                            Name               = "商品留言",
                            Description        = message,
                            Link               = "../../Home/GetCommodityDetail?id=" + commodity.Id,
                            IsAbnormal         = false,
                            IsRead             = false,
                            NotificationSource = NotificationSourceEnum.App
                        };
                        AppNotification.SendNotification(notification);
                    }
                    return(Json(new { result = true }));
                }
                return(Json(new { result = false, message = "留言失败!" }));
            }
            return(Json(new { result = false, message = "留言失败!" }));
        }