12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- using System.Collections.Generic;
- using System.Threading.Tasks;
- using Datory;
- using GxPress.Common.Exceptions;
- using GxPress.Common.Tools;
- using GxPress.Request.Analyze;
- using GxPress.Request.App.Topic;
- using GxPress.Result;
- using GxPress.Result.App.Topic;
- using Newtonsoft.Json;
- namespace GxPress.Service.Implement.Topic
- {
- public partial class TopicService
- {
- /// <summary>
- /// 获取话题详情
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- public async Task<TopicDetailResult> GetTopicDetailResultAsync(TopicDetailRequest request)
- {
- var topic = await _topicRepository.GetAsync(request.Id);
- if (topic == null)
- throw new BusinessException("话题不存在");
- var result = _mapper.Map<TopicDetailResult>(topic);
- //获取小组信息
- if (topic.GroupId > 0)
- {
- var group = await groupRepository.GetAsync(topic.GroupId);
- if (group != null)
- {
- result.GroupName = group.Name;
- result.GroupId = group.Id;
- }
- }
- if (string.IsNullOrWhiteSpace(result.Content))
- result.Content = "[]";
- var contentJsonData = JsonConvert.DeserializeObject<List<ContentJsonData>>(result.Content);
- foreach (var item in contentJsonData)
- item.File = StringUtils.AddDomain(item.File);
- result.Data = contentJsonData;
- if (request.UserId == 0)
- return result;
- //是否是创建人
- result.IsAdmin = topic.UserId == request.UserId;
- //获取用户
- var user = await _userRepository.GetAsync(result.UserId);
- result.UserName = user.Name;
- //访问
- if (await _visitService.AddVisit(request.UserId, 2, request.Id))
- result.ReadCount++;
- //访问量
- result.ReadCount = await _visitService.GetCountAsync(2, request.Id);
- var analyzeRequest = new Request.App.Analyze.AnalyzeRequest();
- analyzeRequest.TypeValue = GxPress.EnumConst.AllTypeConst.Topic.GetHashCode();
- analyzeRequest.AnalyzeType = 1;
- analyzeRequest.SourceId = request.Id;
- analyzeRequest.UserId = request.UserId;
- //点赞数量
- result.PraiseCount = await _analyzeService.CountAsync(analyzeRequest);
- //获取话题的评论数量
- var commentCount =
- await _commentRepository.CountAsync(Q.Where(nameof(Entity.Comment.ArticleId), request.Id).Where(nameof(Entity.Comment.TypeValue), 1).Where(nameof(Entity.Comment.Pid), 0));
- result.CommentCount = commentCount;
- //获取话题的转发数量
- analyzeRequest.AnalyzeType = 4;
- var retransmissionCount = await _analyzeService.CountAsync(analyzeRequest);
- result.RetransmissionCount = retransmissionCount;
- result.IsRetransmission = await _analyzeService.ExistsAsync(analyzeRequest);
- //获取话题的收藏数量
- analyzeRequest.AnalyzeType = 3;
- var collectCount = await _analyzeService.CountAsync(analyzeRequest);
- result.CollectCount = collectCount;
- //是否收藏
- result.IsCollect = await _analyzeService.ExistsAsync(analyzeRequest);
- //获取话题的点赞数量
- analyzeRequest.AnalyzeType = 1;
- var praiseCount = await _analyzeService.CountAsync(analyzeRequest);
- result.PraiseCount = praiseCount;
- //是否点赞
- result.IsPraise = await _analyzeService.ExistsAsync(analyzeRequest);
- var praisePageSearchRequest = new PraisePageSearchRequest { SourceId = request.Id, TypeValue = GxPress.EnumConst.AllTypeConst.Topic.GetHashCode(), Page = 1, PerPage = 3 };
- result.TopicPraisePagedList = await _analyzeService.GetPraisePageAsync(praisePageSearchRequest);
- result.AvatarUrl = StringUtils.AddDomainMin(user.AvatarUrl);
- return result;
- }
- }
- }
|