TopicService.Add.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using System.Transactions;
  6. using Datory;
  7. using GxPress.Common.Exceptions;
  8. using GxPress.Common.Tools;
  9. using GxPress.Entity;
  10. using GxPress.Entity.Topic;
  11. using GxPress.Request.App.Note;
  12. using GxPress.Request.App.Topic;
  13. using GxPress.Result;
  14. using Newtonsoft.Json;
  15. namespace GxPress.Service.Implement.Topic
  16. {
  17. public partial class TopicService
  18. {
  19. /// <summary>
  20. /// 创建话题
  21. /// </summary>
  22. /// <param name="request"></param>
  23. /// <returns></returns>
  24. public async Task<bool> InsertTopicAsync(TopicInRequest request)
  25. {
  26. if (string.IsNullOrWhiteSpace(request.Title) && string.IsNullOrWhiteSpace(request.HtmlContent))
  27. throw new BusinessException("标题和内容必填一项!");
  28. try
  29. {
  30. using (TransactionScope transactionScope = new TransactionScope())
  31. {
  32. //创建话题
  33. var topic = new Entity.Topic.Topic
  34. {
  35. UserId = request.UserId,
  36. Content = request.Content,
  37. HtmlContent = request.HtmlContent,
  38. Title = request.Title,
  39. GroupId = request.GroupId,
  40. FolderId = request.FolderId
  41. };
  42. if (!string.IsNullOrEmpty(request.Content))
  43. {
  44. var contentJsonData = JsonConvert.DeserializeObject<List<ContentJsonData>>(request.Content);
  45. foreach (var item in contentJsonData)
  46. {
  47. item.File = StringUtils.RemoveDomain(item.File);
  48. }
  49. topic.Content = JsonConvert.SerializeObject(contentJsonData);
  50. }
  51. var topicId = await _topicRepository.InsertAsync(topic);
  52. //修改话题访问量
  53. await _visitService.AddVisit(request.UserId, GxPress.EnumConst.AllTypeConst.Topic.GetHashCode(), topicId);
  54. transactionScope.Complete();
  55. }
  56. }
  57. catch (Exception e)
  58. {
  59. throw new BusinessException(e.Message);
  60. }
  61. return true;
  62. }
  63. }
  64. }