123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- using Azure.Cosmos;
- using Azure.Messaging.ServiceBus;
- using Microsoft.Extensions.Configuration;
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Text.Json;
- using System.Threading.Tasks;
- using TEAMModelOS.SDK.DI;
- using TEAMModelOS.SDK.Extension;
- namespace TEAMModelOS.SDK.Models.Service
- {
- public static class HomeworkService
- {
- public static async Task<string> saveMoreAsync(CosmosClient client, DingDing _dingDing, Homework work, AzureServiceBusFactory _serviceBus, AzureStorageFactory _azureStorage, IConfiguration _configuration)
- {
- try
- {
- work.ttl = -1;
- work.code = "Homework-" + work.school;
- long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
- work.createTime = now;
- var messageBlob = new ServiceBusMessage();
- string blobcntr = null;
- blobcntr = work.school;
- work.size = await _azureStorage.GetBlobContainerClient(work.school).GetBlobsSize($"homework/{work.id}");
- messageBlob = new ServiceBusMessage(new { id = Guid.NewGuid().ToString(), progress = "insert", root = $"homework/{work.id}", name = $"{work.school}" }.ToJsonString());
- messageBlob.ApplicationProperties.Add("name", "BlobRoot");
- var ActiveTask = _configuration.GetValue<string>("Azure:ServiceBus:ActiveTask");
- await _serviceBus.GetServiceBusClient().SendMessageAsync(ActiveTask, messageBlob);
- work.recordUrl = $"/homework/{work.id}/record.json";
- var cods = new { records = new List<string>(), userids = new List<string>(), question = new List<QuestionRecord>() };
- await _azureStorage.UploadFileByContainer(blobcntr, cods.ToJsonString(), "homework", $"{work.id}/record.json");
- work.id = Guid.NewGuid().ToString();
- if (string.IsNullOrEmpty(work.id))
- {
- if (work.startTime > now)
- {
- work.progress = "pending";
- }
- else
- {
- work.progress = "going";
- }
- await client.GetContainer("TEAMModelOS", "Common").CreateItemAsync(work, new PartitionKey($"{work.code}"));
- }
- else
- {
- await client.GetContainer("TEAMModelOS", "Common").UpsertItemAsync(work, new PartitionKey($"{work.code}"));
- }
- return work.id;
- }
- catch (Exception e)
- {
- await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}-HomeworkService-saveMore\n{e.Message}{e.StackTrace}", GroupNames.醍摩豆服務運維群組);
- return "";
- }
- }
- }
- }
|