/// <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()); }
/// <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 }); }
/// <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 }); }