TopicService.Update.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using GxPress.Common.Exceptions;
  5. using GxPress.Entity.Topic;
  6. using GxPress.Request.App.Topic;
  7. namespace GxPress.Service.Implement.Topic
  8. {
  9. public partial class TopicService
  10. {
  11. /// <summary>
  12. /// 修改话题
  13. /// </summary>
  14. /// <param name="request"></param>
  15. /// <returns></returns>
  16. public async Task<bool> UpdateAsync(TopicUpdateRequest request)
  17. {
  18. var topic = await _topicRepository.GetAsync(request.Id);
  19. if (request.UserId != topic.UserId)
  20. throw new BusinessException("话题不属于该用户");
  21. if (!string.IsNullOrEmpty(request.Title))
  22. topic.Title = request.Title;
  23. if (!string.IsNullOrEmpty(request.Content))
  24. {
  25. topic.Content = request.Content;
  26. topic.HtmlContent = request.HtmlContent;
  27. }
  28. //获取共享文件夹成员
  29. if (request.FolderId > 0)
  30. {
  31. var folderUsers = await _folderUserRepository.GetAllAsync(request.FolderId);
  32. request.TopicAddresseeUserIds = folderUsers.Select(n => n.UserId).ToList();
  33. //删除topicAddress
  34. await _topicAddresseeRepository.DeletByTopicIdAsync(request.Id);
  35. topic.FolderId = request.FolderId;
  36. }
  37. var topicAddressees = new List<TopicAddressee>();
  38. //
  39. request.TopicAddresseeUserIds.Add(request.UserId);
  40. //创建话题讨论成员
  41. foreach (var item in request.TopicAddresseeUserIds)
  42. {
  43. //创建话题管理员
  44. var topicAddressee = new TopicAddressee
  45. {
  46. TopicId = request.Id,
  47. UserId = item,
  48. IsAdmin = item == request.UserId
  49. };
  50. topicAddressees.Add(topicAddressee);
  51. }
  52. //添加话题阅读成员
  53. await _topicAddresseeRepository.InsertAsync(topicAddressees);
  54. return await _topicRepository.UpdateAsync(topic);
  55. }
  56. }
  57. }