AnalyzeService.cs 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. using System.Linq;
  2. using System.Threading.Tasks;
  3. using AutoMapper;
  4. using Datory;
  5. using GxPress.Common.Exceptions;
  6. using GxPress.Common.Page;
  7. using GxPress.Common.Tools;
  8. using GxPress.Entity;
  9. using GxPress.Repository.Interface;
  10. using GxPress.Repository.Interface.Analyze;
  11. using GxPress.Request.Analyze;
  12. using GxPress.Request.App.Analyze;
  13. using GxPress.Result.App.Analyze;
  14. using GxPress.Service.Interface.Analyze;
  15. namespace GxPress.Service.Implement.Analyze
  16. {
  17. public class AnalyzeService : IAnalyzeService
  18. {
  19. private readonly IUserRepository _userRepository;
  20. private readonly IAnalyzeRepository _repository;
  21. private readonly ICommentRepository _commentRepository;
  22. private readonly IDepartmentRepository _departmentRepository;
  23. private readonly IMapper _mapper;
  24. public AnalyzeService(IUserRepository userRepository, IAnalyzeRepository analyzeRepository, ICommentRepository commentRepository, IMapper mapper, IDepartmentRepository departmentRepository)
  25. {
  26. _userRepository = userRepository;
  27. _repository = analyzeRepository;
  28. _commentRepository = commentRepository;
  29. _departmentRepository = departmentRepository;
  30. _mapper = mapper;
  31. }
  32. /// <summary>
  33. /// 设置 点赞 转发 收藏
  34. /// </summary>
  35. /// <param name="request"></param>
  36. /// <returns></returns>
  37. public async Task<bool> SetAnalyzeAsync(AnalyzeRequest request)
  38. {
  39. var user = await _userRepository.GetAsync(request.UserId);
  40. if (user == null) throw new BusinessException("不存在该账号");
  41. //查询该用户是否存在记录
  42. var query = new SqlKata.Query();
  43. query
  44. .Where(nameof(Entity.Analyze.Analyze.AnalyzeType), request.AnalyzeType)
  45. .Where(nameof(Entity.Analyze.Analyze.SourceId), request.SourceId).Where(nameof(Entity.Analyze.Analyze.CommentId), request.CommentId)
  46. .Where(nameof(Entity.Analyze.Analyze.UserId), request.UserId).Where(nameof(Entity.Analyze.Analyze.TypeValue), request.TypeValue);
  47. if (request.SourceUserId > 0)
  48. query.Where(nameof(Entity.Analyze.Analyze.SourceUserId), request.SourceUserId);
  49. var analyze = await _repository.GetAsync(query);
  50. if (analyze != null && analyze.Id > 0 && analyze.AnalyzeType != 4)
  51. {
  52. return await _repository.DeleteAsync(analyze.Id);
  53. }
  54. //添加
  55. var analyzeDto = new Entity.Analyze.Analyze();
  56. analyzeDto.SourceId = request.SourceId;
  57. analyzeDto.UserId = request.UserId;
  58. analyzeDto.AnalyzeType = request.AnalyzeType;
  59. analyzeDto.TypeValue = request.TypeValue;
  60. analyzeDto.CommentId = request.CommentId;
  61. analyzeDto.SourceUserId = request.SourceUserId;
  62. //修改文章评论的点赞数量
  63. if (request.CommentId > 0)
  64. {
  65. //查询评论
  66. var commit = await _commentRepository.GetAsync(Q.Where(nameof(Comment.TypeValue), request.TypeValue).Where(nameof(Comment.ArticleId), request.SourceId).Where(nameof(Comment.Id), request.CommentId));
  67. commit.Laud = await _repository.CountAsync(Q.Where(nameof(Entity.Analyze.Analyze.SourceId), request.SourceId).Where(nameof(Entity.Analyze.Analyze.TypeValue), request.TypeValue).Where(nameof(Entity.Analyze.Analyze.CommentId), request.CommentId));
  68. await _commentRepository.UpdateAsync(commit);
  69. }
  70. return await _repository.InsertAsync(analyzeDto) > 0;
  71. }
  72. /// <summary>
  73. /// 获取点赞数据
  74. /// </summary>
  75. /// <param name="request"></param>
  76. /// <returns></returns>
  77. public async Task<PagedList<PraisePageResult>> GetPraisePageAsync(PraisePageSearchRequest request)
  78. {
  79. var query = Q.NewQuery();
  80. query.Where(nameof(Entity.Analyze.Analyze.AnalyzeType), 1).Where(nameof(Entity.Analyze.Analyze.SourceId), request.SourceId).Where(nameof(Entity.Analyze.Analyze.TypeValue), request.TypeValue);
  81. if (request.Sort == "desc")
  82. query.OrderByDesc(nameof(Entity.Analyze.Analyze.CreatedDate));
  83. var pagedList = new PagedList<PraisePageResult>
  84. {
  85. Total = await _repository.CountAsync(query)
  86. };
  87. var list = await _repository.GetAllAsync(query.ForPage(request.Page, request.PerPage));
  88. var items = list.Select(user => _mapper.Map<PraisePageResult>(user)).ToList();
  89. for (int i = 0; i < items.Count; i++)
  90. {
  91. //获取用户
  92. var user = await _userRepository.GetAsync(items[i].UserId);
  93. if (user == null)
  94. {
  95. items.Remove(items[i]);
  96. continue;
  97. }
  98. items[i].UserName = user.Name;
  99. items[i].Signature = user.Signature;
  100. items[i].AvatarUrl = StringUtils.AddDomainMin(user.AvatarUrl);
  101. //获取部门
  102. var department = await _departmentRepository.GetAsync(user.DepartmentId);
  103. items[i].DepartmentName = department != null ? department.Name : "";
  104. }
  105. // foreach (var item in items)
  106. // {
  107. // //获取用户
  108. // var user = await _userRepository.GetAsync(item.UserId);
  109. // item.UserName = user.Name;
  110. // item.Signature = user.Signature;
  111. // item.AvatarUrl = StringUtils.AddDomainMin(user.AvatarUrl);
  112. // //获取部门
  113. // var department = await _departmentRepository.GetAsync(user.DepartmentId);
  114. // item.DepartmentName = department != null ? department.Name : "";
  115. // }
  116. pagedList.Items = items;
  117. return pagedList;
  118. }
  119. /// <summary>
  120. /// 是否存在
  121. /// </summary>
  122. /// <param name="request"></param>
  123. /// <returns></returns>
  124. public async Task<bool> ExistsAsync(AnalyzeRequest request)
  125. {
  126. return await _repository.ExistsAsync(Q.Where(nameof(Entity.Analyze.Analyze.SourceId), request.SourceId).Where(nameof(Entity.Analyze.Analyze.TypeValue), request.TypeValue).Where(nameof(Entity.Analyze.Analyze.UserId), request.UserId).Where(nameof(Entity.Analyze.Analyze.AnalyzeType), request.AnalyzeType).Where(nameof(Entity.Analyze.Analyze.CommentId), request.CommentId));
  127. }
  128. /// <summary>
  129. /// 是否存在
  130. /// </summary>
  131. /// <param name="request"></param>
  132. /// <returns></returns>
  133. public async Task<bool> ExistsSourceUserAsync(AnalyzeRequest request)
  134. {
  135. return await _repository.ExistsAsync(Q.Where(nameof(Entity.Analyze.Analyze.SourceId), request.SourceId).Where(nameof(Entity.Analyze.Analyze.TypeValue), request.TypeValue).Where(nameof(Entity.Analyze.Analyze.UserId), request.UserId).Where(nameof(Entity.Analyze.Analyze.AnalyzeType), request.AnalyzeType).Where(nameof(Entity.Analyze.Analyze.CommentId), request.CommentId).Where(nameof(Entity.Analyze.Analyze.SourceUserId), request.SourceUserId));
  136. }
  137. /// <summary>
  138. /// 条数
  139. /// </summary>
  140. /// <param name="request"></param>
  141. /// <returns></returns>
  142. public async Task<int> CountAsync(AnalyzeRequest request)
  143. {
  144. return await _repository.CountAsync(Q.Where(nameof(Entity.Analyze.Analyze.SourceId), request.SourceId).Where(nameof(Entity.Analyze.Analyze.TypeValue), request.TypeValue).Where(nameof(Entity.Analyze.Analyze.AnalyzeType), request.AnalyzeType).Where(nameof(Entity.Analyze.Analyze.CommentId), request.CommentId));
  145. }
  146. /// <summary>
  147. /// 转发数量
  148. /// </summary>
  149. /// <param name="request"></param>
  150. /// <returns></returns>
  151. public async Task<int> RetransmissionCountAsync(AnalyzeRequest request)
  152. {
  153. return await _repository.CountAsync(Q.Where(nameof(Entity.Analyze.Analyze.SourceId), request.SourceId).Where(nameof(Entity.Analyze.Analyze.TypeValue), request.TypeValue).Where(nameof(Entity.Analyze.Analyze.AnalyzeType), request.AnalyzeType).Where(nameof(Entity.Analyze.Analyze.CommentId), request.CommentId).Where(nameof(Entity.Analyze.Analyze.SourceUserId), request.SourceUserId));
  154. }
  155. /// <summary>
  156. /// 获取
  157. /// </summary>
  158. /// <param name="request"></param>
  159. /// <returns></returns>
  160. public async Task<Entity.Analyze.Analyze> GetAnalyzeAsync(AnalyzeRequest request)
  161. {
  162. var query = new SqlKata.Query();
  163. query.Where(nameof(Entity.Analyze.Analyze.SourceId), request.SourceId).Where(nameof(Entity.Analyze.Analyze.TypeValue), request.TypeValue).Where(nameof(Entity.Analyze.Analyze.AnalyzeType), request.AnalyzeType).Where(nameof(Entity.Analyze.Analyze.CommentId), request.CommentId);
  164. if (request.SourceUserId > 0)
  165. query.Where(nameof(Entity.Analyze.Analyze.SourceUserId), request.SourceUserId);
  166. return await _repository.GetAsync(query);
  167. }
  168. public async Task<bool> DeleteAsync(int id)
  169. {
  170. return await _repository.DeleteAsync(id);
  171. }
  172. }
  173. }