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
{
///
/// 获取话题详情
///
///
///
public async Task GetTopicDetailResultAsync(TopicDetailRequest request)
{
var topic = await _topicRepository.GetAsync(request.Id);
if (topic == null)
throw new BusinessException("话题不存在");
var result = _mapper.Map(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>(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;
}
}
}