TopicService.Detail.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using System.Collections.Generic;
  2. using System.Threading.Tasks;
  3. using Datory;
  4. using GxPress.Common.Exceptions;
  5. using GxPress.Common.Tools;
  6. using GxPress.Request.Analyze;
  7. using GxPress.Request.App.Topic;
  8. using GxPress.Result;
  9. using GxPress.Result.App.Topic;
  10. using Newtonsoft.Json;
  11. namespace GxPress.Service.Implement.Topic
  12. {
  13. public partial class TopicService
  14. {
  15. /// <summary>
  16. /// 获取话题详情
  17. /// </summary>
  18. /// <param name="request"></param>
  19. /// <returns></returns>
  20. public async Task<TopicDetailResult> GetTopicDetailResultAsync(TopicDetailRequest request)
  21. {
  22. var topic = await _topicRepository.GetAsync(request.Id);
  23. if (topic == null)
  24. throw new BusinessException("通知不存在");
  25. var result = _mapper.Map<TopicDetailResult>(topic);
  26. if (string.IsNullOrWhiteSpace(result.Content))
  27. result.Content = "[]";
  28. var contentJsonData = JsonConvert.DeserializeObject<List<ContentJsonData>>(result.Content);
  29. foreach (var item in contentJsonData)
  30. item.File = StringUtils.AddDomain(item.File);
  31. result.Data = contentJsonData;
  32. if (request.UserId == 0)
  33. return result;
  34. //是否是创建人
  35. result.IsAdmin = topic.UserId == request.UserId;
  36. //获取用户
  37. var user = await _userRepository.GetAsync(result.UserId);
  38. result.UserName = user.Name;
  39. //访问
  40. if (await _visitService.AddVisit(request.UserId, 2, request.Id))
  41. result.ReadCount++;
  42. //访问量
  43. result.ReadCount = await _visitService.GetCountAsync(2, request.Id);
  44. var analyzeRequest = new Request.App.Analyze.AnalyzeRequest();
  45. analyzeRequest.TypeValue = 1;
  46. analyzeRequest.AnalyzeType = 1;
  47. analyzeRequest.SourceId = request.Id;
  48. analyzeRequest.UserId = request.UserId;
  49. //点赞数量
  50. result.PraiseCount = await _analyzeService.CountAsync(analyzeRequest);
  51. //获取话题的评论数量
  52. var commentCount =
  53. await _commentRepository.CountAsync(Q.Where(nameof(Entity.Comment.ArticleId), request.Id).Where(nameof(Entity.Comment.TypeValue), 1).Where(nameof(Entity.Comment.Pid), 0));
  54. result.CommentCount = commentCount;
  55. //获取话题的转发数量
  56. analyzeRequest.AnalyzeType = 4;
  57. var retransmissionCount = await _analyzeService.CountAsync(analyzeRequest);
  58. result.RetransmissionCount = retransmissionCount;
  59. result.IsRetransmission = await _analyzeService.ExistsAsync(analyzeRequest);
  60. //获取话题的收藏数量
  61. analyzeRequest.AnalyzeType = 3;
  62. var collectCount = await _analyzeService.CountAsync(analyzeRequest);
  63. result.CollectCount = collectCount;
  64. //是否收藏
  65. result.IsCollect = await _analyzeService.ExistsAsync(analyzeRequest);
  66. //获取话题的点赞数量
  67. analyzeRequest.AnalyzeType = 1;
  68. var praiseCount = await _analyzeService.CountAsync(analyzeRequest);
  69. result.PraiseCount = praiseCount;
  70. //是否点赞
  71. result.IsPraise = await _analyzeService.ExistsAsync(analyzeRequest);
  72. var praisePageSearchRequest = new PraisePageSearchRequest { SourceId = request.Id, TypeValue = 1, Page = 1, PerPage = 3 };
  73. result.TopicPraisePagedList = await _analyzeService.GetPraisePageAsync(praisePageSearchRequest);
  74. return result;
  75. }
  76. }
  77. }