NoticeServiceBus.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. using Azure.Messaging.ServiceBus;
  2. using Microsoft.Azure.WebJobs;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Text;
  6. using System.Text.Json;
  7. using System.Threading.Tasks;
  8. using TEAMModelOS.SDK.DI;
  9. using TEAMModelOS.SDK.Extension;
  10. using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
  11. using TEAMModelOS.SDK.Models;
  12. namespace TEAMModelFunction
  13. {
  14. public class NoticeServiceBus
  15. {
  16. private readonly AzureCosmosFactory _azureCosmos;
  17. private readonly AzureStorageFactory _azureStorage;
  18. private readonly AzureServiceBusFactory _serviceBus;
  19. private readonly DingDing _dingDing;
  20. public NoticeServiceBus(AzureCosmosFactory azureCosmos, DingDing dingDing,AzureStorageFactory azureStorage, AzureServiceBusFactory serviceBus)
  21. {
  22. _azureStorage = azureStorage;
  23. _azureCosmos = azureCosmos;
  24. _dingDing = dingDing;
  25. _serviceBus = serviceBus;
  26. }
  27. //[FunctionName("Notice")]
  28. //public async Task Notice([ServiceBusTrigger("active-task", "notice", Connection = "Azure:ServiceBus:ConnectionString")] string msg) {
  29. // var client = _azureCosmos.GetCosmosClient();
  30. // try {
  31. // await _dingDing.SendBotMsg($"NoticeServiceBus-Notice:\n发起通知{msg}", GroupNames.成都开发測試群組);
  32. // List<Task<string>> tasks = new List<Task<string>>();
  33. // List<Task> sessionTasks = new List<Task>();
  34. // var jsonMsg = JsonDocument.Parse(msg);
  35. // Notice notice = msg.ToObject<Notice>();
  36. // var blobcntr = "";
  37. // if (notice.scope.Equals("school"))
  38. // {
  39. // blobcntr = notice.school;
  40. // }
  41. // else {
  42. // blobcntr = notice.creatorId;
  43. // }
  44. // var urlNotice = $"{notice.sid}.json";
  45. // var blobNotice = new {
  46. // notice.sid,
  47. // notice.scode,
  48. // notice.spk,
  49. // notice.scope,
  50. // notice.school,
  51. // notice.type,
  52. // notice.level,
  53. // notice.data,
  54. // notice.stime,
  55. // notice.etime,
  56. // notice.creatorId
  57. // };
  58. // tasks.Add(_azureStorage.UploadFileByContainer(blobcntr, blobNotice.ToJsonString(), "notice", urlNotice));
  59. // var urlReceiver = $"{notice.sid}_receiver.json";
  60. // var blobReceiver = new
  61. // {
  62. // notice.stuids,
  63. // notice.tmdids
  64. // };
  65. // tasks.Add(_azureStorage.UploadFileByContainer(blobcntr, blobReceiver.ToJsonString(), "notice", urlReceiver));
  66. // long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
  67. // // "ttl":2592000,不能超过30天(2592000),一天(3600),一周(25200)
  68. // long ttl = notice.etime - now;
  69. // long day30 = 2592000L * 1000;
  70. // if (ttl > day30) {
  71. // ttl = day30;
  72. // }
  73. // if (notice.stuids.IsNotEmpty()) {
  74. // // List<Receiver> receivers = new List<Receiver>();
  75. // foreach (var stu in notice.stuids) {
  76. // Receiver receiver = new Receiver
  77. // {
  78. // id = notice.sid,
  79. // pk = "Receiver",
  80. // status = 0,
  81. // school = stu.schoolId,
  82. // scope = "school",
  83. // code = $"Receiver-{stu.schoolId}-{stu.id}",
  84. // ttl = (int)ttl,
  85. // ctime= now,
  86. // urlNotice=$"notice/{urlNotice}"
  87. // };
  88. // await client.GetContainer("TEAMModelOS", "Student").UpsertItemAsync<Receiver>(receiver,new Azure.Cosmos.PartitionKey(receiver.code));
  89. // // /student/{stuid}/receive/{notice.sid}.json
  90. // //存放通知到学生容器空间
  91. // var url = $"{stu.id}/receive/{notice.sid}.json";
  92. // tasks.Add(_azureStorage.UploadFileByContainer(blobcntr, receiver.ToJsonString(), "student", url));
  93. // var messageBlob = new ServiceBusMessage(notice.ToJsonString()) { SessionId =$"{stu.schoolId}-{stu.id}"};
  94. // messageBlob.ApplicationProperties.Add("name", "Receiver");
  95. // sessionTasks.Add(_serviceBus.GetServiceBusClient().SendMessageAsync("active-task", messageBlob));
  96. // }
  97. // }
  98. // if (notice.tmdids.IsNotEmpty())
  99. // {
  100. // foreach (var tmdid in notice.tmdids)
  101. // {
  102. // Receiver receiver = new Receiver
  103. // {
  104. // id = notice.sid,
  105. // pk = "Receiver",
  106. // status = 0,
  107. // //school = stu.schoolId,
  108. // scope = "school",
  109. // code = $"Receiver-{tmdid}",
  110. // ttl = (int)ttl,
  111. // ctime = now,
  112. // urlNotice = $"notice/{urlNotice}"
  113. // };
  114. // await client.GetContainer("TEAMModelOS", "Teacher").UpsertItemAsync<Receiver>(receiver, new Azure.Cosmos.PartitionKey(receiver.code));
  115. // // /student/{stuid}/receive/{notice.sid}.json
  116. // //存放通知到学生容器空间
  117. // var url = $"{notice.sid}.json";
  118. // tasks.Add(_azureStorage.UploadFileByContainer(blobcntr, receiver.ToJsonString(), "receive", url));
  119. // var messageBlob = new ServiceBusMessage(notice.ToJsonString()) { SessionId = $"{tmdid}" };
  120. // messageBlob.ApplicationProperties.Add("name", "Receiver");
  121. // sessionTasks.Add(_serviceBus.GetServiceBusClient().SendMessageAsync("active-task", messageBlob));
  122. // }
  123. // }
  124. // await Task.WhenAll(sessionTasks);
  125. // await Task.WhenAll(tasks);
  126. // } catch (Exception ex) {
  127. // await _dingDing.SendBotMsg($"NoticeServiceBus-Notice\n{ex.Message}{ex.StackTrace}", GroupNames.成都开发測試群組);
  128. // }
  129. //}
  130. }
  131. }