/// <summary>
        /// 获取广告图片
        /// </summary>
        /// <param name="thumbStyle">显示方式 0=无图</param>
        /// <param name="id">广告Id</param>
        /// <returns></returns>
        private List <string> GetAdvertisementPictures(int thumbStyle, int id)
        {
            if (thumbStyle == 0)
            {
                return(null);
            }

            int resourceType = (int)ResourceTypeEnum.广告图;
            ResourceManagementService resourceService = new ResourceManagementService();

            return(resourceService.GetResources(resourceType, id).Select(y => y.RPath).ToList());
        }
Exemple #2
0
        /// <summary>
        /// 发表评论
        /// </summary>
        /// <param name="reqDto"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public ApiResult <CommentResDto> Publish(CommentReqDto reqDto, IdentityInfo user)
        {
            #region step1.黑名单和禁言验证
            //step1.黑名单和禁言验证
            string validateSql = @"select count(1) from [dbo].[UserState]
	  where ([CommentBlack]=1 or ([CommentShut]=1 and GETDATE() between [CommentShutBegin] and [CommentShutEnd])) and UserId="     +
                                 user.UserId;

            object obj = SqlHelper.ExecuteScalar(validateSql);

            if (obj != null && Convert.ToInt32(obj) > 0)
            {
                throw new ApiException(10001, "你已被禁言或拉黑");
            }
            #endregion

            #region step2.评论/回复对象是否存在

            long refId        = 0;
            long pid          = 0;
            long refCommentId = 0;
            int  refUserId    = reqDto.RefUserId;

            if (reqDto.CommentType == 1)
            {
                if (reqDto.Type == 1)
                {
                    //查询计划
                    //var model = Util.GetEntityById<BettingRecord>(reqDto.Id);
                    //if (model == null) throw new ApiException(400, "计划已不存在或已删除");

                    //id为彩种Id。对计划评论为用户在该彩种的评论
                    refId = reqDto.Id;
                    //refCommentId=
                }
                else if (reqDto.Type == 2)
                {
                    //查询文章
                    var model = Util.GetEntityById <News>(reqDto.Id);
                    if (model == null)
                    {
                        throw new ApiException(400, "资讯不存在或已删除");
                    }
                    refId = model.Id;
                }
            }
            else
            {
                //查询评论
                var model = Util.GetEntityById <Comment>(reqDto.Id);
                if (model == null)
                {
                    throw new ApiException(400, "评论不存在或已删除");
                }
                refId = model.Id;
                pid   = model.Id;

                if (model.RefCommentId > 0)
                {
                    //第N级回复,则关联评论Id=上一级评论关联Id
                    refCommentId = model.RefCommentId;
                    refUserId    = model.UserId;
                }
                else
                {
                    //第一级回复,则关联评论Id=上一级评论Id
                    refCommentId = model.Id;
                }
            }


            #endregion

            #region step3.评论内容过滤
            //去Html标签
            string content = WebHelper.NoHtml(reqDto.Content);
            //脏字过滤
            content = WebHelper.FilterSensitiveWords(content, "*");
            #endregion


            #region step4.添加评论
            string sql = @"INSERT INTO [dbo].[Comment]
           ([PId],[UserId],[Content],[SubTime],[Type],[ArticleId]
           ,[StarCount],[IsDeleted],[RefCommentId],[ArticleUserId])
     VALUES(@PId,@UserId,@Content,GETDATE()
           ,@Type,@ArticleId,0,0,@RefCommentId,@ArticleUserId);SELECT IDENT_CURRENT('Comment')";

            SqlParameter[] parameters =
            {
                new SqlParameter("@PID",           pid),
                new SqlParameter("@UserId",        user.UserId),
                new SqlParameter("@Content",       content),
                new SqlParameter("@Type",          reqDto.Type),
                new SqlParameter("@ArticleId",     refId),
                new SqlParameter("@RefCommentId",  refCommentId),
                new SqlParameter("@ArticleUserId", refUserId),
            };
            int row = SqlHelper.ExecuteScalar(sql, parameters).ToInt32();
            if (row <= 0)
            {
                throw new ApiException(50000, "服务器繁忙");
            }

            //添加评论图资源关联
            resourceService.InsertResources((int)ResourceTypeEnum.评论图, row, reqDto.Pictures);

            #endregion

            #region 获取评论实体
            string getSql =
                @"select top 1 a.*,isnull(b.Name,'') as NickName,isnull(c.RPath,'') as Avater
,0 as CurrentUserLikes,0 as ReplayCount 
from Comment a
  left join UserInfo b on b.Id = a.UserId
  left join ResourceMapping c on c.FkId = a.UserId and c.Type = @ResourceType
  where a.IsDeleted = 0 and a.Id=@Id";
            var getParameters = new[]
            {
                new SqlParameter("@Id", row),
                new SqlParameter("@ResourceType", (int)ResourceTypeEnum.评论图),
            };

            var    list          = Util.ReaderToList <Comment>(getSql, getParameters);
            string webHost       = ConfigurationManager.AppSettings["webHost"];
            string defaultAvater = string.Format("{0}/images/default_avater.png", webHost);
            int    resouceType   = (int)ResourceTypeEnum.评论图;
            var    resDto        = list.Select(x => new CommentResDto()
            {
                Id           = x.Id,
                ArticleId    = x.ArticleId,
                Avater       = string.IsNullOrWhiteSpace(x.Avater) ? defaultAvater : x.Avater,
                Content      = x.Content,
                IsLike       = x.CurrentUserLikes > 0,
                NickName     = x.NickName,
                PId          = x.PId,
                RefCommentId = x.RefCommentId,
                ReplayCount  = x.ReplayCount,
                UserId       = x.UserId,
                Pictures     = resourceService.GetResources(resouceType, x.Id)
                               .Select(n => n.RPath).ToList(),
                SubTime = x.SubTime
            }).FirstOrDefault();



            #endregion

            return(new ApiResult <CommentResDto>()
            {
                Data = resDto
            });
        }
Exemple #3
0
        /// <summary>
        /// 获取文章详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ApiResult <NewsResDto> GetNewsDetal(int id)
        {
            AddNewsPv(id);
            //获取新闻实体

            string sql = @"SELECT 
                            [Id],[FullHead],[SortCode],[Thumb],[TypeId],[ReleaseTime],[ThumbStyle],NewsContent,
                            (SELECT COUNT(1) FROM [dbo].[Comment] WHERE [ArticleId]=a.Id and RefCommentId=0) as CommentCount
                            FROM [dbo].[News] a
                            WHERE [Id]=@Id and DeleteMark=0 and EnabledMark=1 ";

            SqlParameter[] parameters =
            {
                new SqlParameter("@Id", id),
            };

            var list = Util.ReaderToList <News>(sql, parameters);

            var model = list.FirstOrDefault();

            if (model == null)
            {
                return(new ApiResult <NewsResDto>(40000, "文章不存在或已删除"));
            }

            //var thumbList = sourceService.GetResources((int)ResourceTypeEnum.新闻缩略图, model.Id);
            //if (thumbList.Any())
            //    model.Thumb = thumbList.First().RPath;

            var resDto = new NewsResDto()
            {
                CommentCount = model.CommentCount,
                Id           = model.Id,
                Content      = HttpUtility.UrlDecode(model.NewsContent),
                ReleaseTime  = model.ReleaseTime,
                Title        = model.FullHead,
                TypeId       = model.TypeId
            };

            #region 设置分享信息

            string webHost = BaseService.WebHost;
            resDto.Share = new ShareDto()
            {
                Title    = model.FullHead,
                Describe = model.FullHead,
                Link     = string.Format("{0}/News/NewsDetail/{1}", webHost, model.Id)
            };

            int           sourceType = (int)ResourceTypeEnum.新闻缩略图;
            List <string> thumbList  = sourceService.GetResources(sourceType, model.Id)
                                       .Select(n => n.RPath).ToList();
            if (thumbList.Count > 0)
            {
                resDto.Share.Icon = thumbList.FirstOrDefault();
            }
            else
            {
                resDto.Share.Icon = string.Format("{0}/images/c8.png", webHost);
            }

            #endregion

            #region  一篇 下一篇
            //查询上一篇
            string         preSql        = @"SELECT TOP 1
[Id],[FullHead] as Title
FROM [dbo].[News] 
WHERE [TypeId]=@TypeId AND DeleteMark=0 AND EnabledMark=1 AND [Id] > @CurrentId 
ORDER BY SortCode,Id";
            SqlParameter[] preParameters =
            {
                new SqlParameter("@TypeId",    SqlDbType.BigInt),
                new SqlParameter("@CurrentId", SqlDbType.Int),
            };
            preParameters[0].Value = model.TypeId;
            preParameters[1].Value = id;
            var preview = Util.ReaderToList <PrevNewsInfo>(preSql, preParameters);

            if (preview != null && preview.Count > 0)
            {
                resDto.Previous = preview[0];
            }

            //查询下一篇
            string         nextsql        = @"SELECT TOP 1
[Id],[FullHead] as Title
FROM [dbo].[News] 
WHERE [TypeId]=@TypeId AND DeleteMark=0 AND EnabledMark=1 AND [Id] < @CurrentId 
ORDER BY SortCode desc,Id DESC";
            SqlParameter[] nextparameters =
            {
                new SqlParameter("@TypeId",    SqlDbType.BigInt),
                new SqlParameter("@CurrentId", SqlDbType.Int),
            };
            nextparameters[0].Value = model.TypeId;
            nextparameters[1].Value = id;
            var nextview = Util.ReaderToList <NextNewsInfo>(nextsql, nextparameters);

            if (nextview != null && nextview.Count > 0)
            {
                resDto.Next = nextview[0];
            }
            #endregion

            return(new ApiResult <NewsResDto>()
            {
                Data = resDto
            });
        }