CrazyIter_Bin 2 年之前
父節點
當前提交
f40320bb23

+ 1 - 23
HTEXScreen/Controllers/ScreenController.cs

@@ -331,26 +331,4 @@ namespace HTEXScreen.Controllers
     /// <summary>
     /// 网页截图参数
     /// </summary>
-public class ScreenshotDto
-{
-    public string id { get; set; }
-    public int width { get; set; } = 1920;
-    public int height { get; set; } = 1080;
-    public string? url { get; set; }
-    /// <summary>
-    /// 批量地址
-    /// </summary>
-    public List<string> urls { get; set; } = new List<string>();
-    /// <summary>
-    /// 提取参数的唯一id作为文件名
-    /// </summary>
-    public string? fileNameKey { get; set; }
-    /// <summary>
-    /// 存在哪个容器里
-    /// </summary>
-    public string? cnt { get; set; }
-    public int delay { get; set; }
-    public int pagesize { get; set; } = 5;
-    public string? root { get; set; }
-    public string? env { get; set; } = "release";
-}
+ 

+ 2 - 2
HTEXScreen/Program.cs

@@ -33,8 +33,8 @@ builder.Services.AddAzureStorage(StorageConnectionStringTest, "Test");
 builder.Services.AddAzureServiceBus(ServiceBusConnectionString, "Default");
 builder.Services.AddAzureServiceBus(ServiceBusConnectionStringTest, "Test");
 //Redis
-builder.Services.AddAzureRedis(ServiceBusConnectionString, "Default");
-builder.Services.AddAzureRedis(ServiceBusConnectionStringTest, "Test");
+builder.Services.AddAzureRedis(RedisConnectionString, "Default");
+builder.Services.AddAzureRedis(RedisConnectionStringTest, "Test");
 //Cosmos
 builder.Services.AddAzureCosmos(CosmosConnectionString, "Default");
 builder.Services.AddAzureCosmos(CosmosConnectionStringTest, "Test");

+ 3 - 1
HTEXScreen/Service/ScreenPDFSub.cs

@@ -40,8 +40,10 @@ namespace HTEXScreen.Service
                     {
                         string body = receivedMessage.Body.ToString();
                         ScreenshotDto? screenshot = JsonSerializer.Deserialize<ScreenshotDto>(body);
-                        List<string> urls=  await ScreenService.ScreenshotPdf(screenshot, _azureStorage);
                         await _receiver.CompleteMessageAsync(receivedMessage);
+                        List<string> urls=  await ScreenService.ScreenshotPdf(screenshot, _azureStorage);
+                        await ScreenService.UpdateStuArtPDF(urls, screenshot, _azureRedisFactory, _azureCosmosFactory);
+                       
                     } catch
                     {
                         //失败则放回队列死信中 

+ 1 - 1
HTEXScreen/Service/ScreenPDFSubTest.cs

@@ -71,9 +71,9 @@ namespace HTEXScreen.Service
                     {
                         string body = receivedMessage.Body.ToString();
                         ScreenshotDto? screenshot = JsonSerializer.Deserialize<ScreenshotDto>(body);
+                        await _receiver.CompleteMessageAsync(receivedMessage);
                         List<string> urls=  await ScreenService.ScreenshotPdf(screenshot, _azureStorage);
                         await ScreenService.UpdateStuArtPDF(urls, screenshot, _azureRedisFactory, _azureCosmosFactory);
-                        await _receiver.CompleteMessageAsync(receivedMessage);
                     } catch
                     {
                         //失败则放回队列死信中 

+ 13 - 4
HTEXScreen/Service/ScreenService.cs

@@ -16,7 +16,8 @@ namespace HTEXScreen.Service
         public static async Task  UpdateStuArtPDF(List<string> urls, ScreenshotDto screenshot, AzureRedisFactory _azureRedisFactory, AzureCosmosFactory _azureCosmosFactory) {
             var env = screenshot.env.Equals("release") ? "Default" : "Test";
             long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
-            List<Task<Azure.Response>> responses = new List<Task<Azure.Response>>(0);
+            List<Task<Azure.Response>> responses = new List<Task<Azure.Response>>();
+            List<Task<bool>> redisSaves = new List<Task<bool>>();
             foreach (var url in urls) 
             {
                 //https://teammodeltest.blob.core.chinacloudapi.cn/hbcn/art/e9a5ec36-7299-45dc-9517-7457960346c4/report/202106005.pdf
@@ -25,7 +26,9 @@ namespace HTEXScreen.Service
                 if (paths.Length == 2) {
                     var ps= paths[1].Split("/");
                     if (ps.Length == 3) {
-                        var value = _azureRedisFactory.GetRedisClient(8, env).HashGet($"ArtPDF:{ps[0]}", ps[2]);
+                        string key = $"ArtPDF:{ps[0]}";
+                        string field = ps[2].Replace(".pdf", "");
+                        var value = _azureRedisFactory.GetRedisClient(8, env).HashGet(key, field);
                         if (value.HasValue && !value.IsNullOrEmpty)
                         { 
                             JsonNode node = JsonNode.Parse(value.ToString());
@@ -38,6 +41,7 @@ namespace HTEXScreen.Service
                                     pdfNode["url"] = uri;
                                     pdfNode["blob"] = $"/art/{paths[1]}";
                                     pdfNode["createTime"] = now;
+                                    pdfNode["prime"] = true;//此处的作用是判断是否已经生成OK.
                                     node["pdf"] = pdfNode;
                                 }
                                 else {
@@ -45,9 +49,13 @@ namespace HTEXScreen.Service
                                     pdfNode["url"] = uri;
                                     pdfNode["blob"] = $"/art/{paths[1]}";
                                     pdfNode["createTime"] = now;
+                                    pdfNode["prime"] = true;//此处的作用是判断是否已经生成OK.
                                     node["pdf"] = pdfNode;
+                                   
                                 }
-                                byte[] bytes = Encoding.UTF8.GetBytes(node.ToJsonString());
+                                string json = node.ToJsonString();
+                                redisSaves.Add(_azureRedisFactory.GetRedisClient(8, env).HashSetAsync(key, field, json));
+                                byte[] bytes = Encoding.UTF8.GetBytes(json);
                                 var memoryStream = new MemoryStream(bytes);
                                 responses.Add(_azureCosmosFactory.GetCosmosClient(null,env).GetContainer("TEAMModelOS", "Student").ReplaceItemStreamAsync(memoryStream, $"{id}", new Azure.Cosmos.PartitionKey($"{code}")));
                             }
@@ -55,6 +63,7 @@ namespace HTEXScreen.Service
                     }
                 }
             }
+            await Task.WhenAll(redisSaves);
             await Task.WhenAll(responses);
         }
 
@@ -240,6 +249,6 @@ namespace HTEXScreen.Service
         public int pagesize { get; set; } = 5;
         public string? root { get; set; }
         public string? env { get; set; } = "release";
-        public string msgId { get; set; }
+        public string? msgId { get; set; }
     }
 }

+ 12 - 1
HTEXScreen/appsettings.json

@@ -5,11 +5,22 @@
       "Microsoft.AspNetCore": "Warning"
     }
   },
-  "AllowedHosts": "*",
   "Azure": {
     "Storage": {
       "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodelos;AccountKey=Dl04mfZ9hE9cdPVO1UtqTUQYN/kz/dD/p1nGvSq4tUu/4WhiKcNRVdY9tbe8620nPXo/RaXxs+1F9sVrWRo0bg==;EndpointSuffix=core.chinacloudapi.cn",
       "ConnectionString-Test": "DefaultEndpointsProtocol=https;AccountName=teammodeltest;AccountKey=O2W2vadCqexDxWO+px+QK7y1sHwsYj8f/WwKLdOdG5RwHgW/Dupz9dDUb4c1gi6ojzQaRpFUeAAmOu4N9E+37A==;EndpointSuffix=core.chinacloudapi.cn"
+    },
+    "ServiceBus": {
+      "ConnectionString": "Endpoint=sb://coreiotservicebuscnpro.servicebus.chinacloudapi.cn/;SharedAccessKeyName=TEAMModelOS;SharedAccessKey=llRPBMDJG9w1Nnifj+pGhV0g4H2REcq0PjvX2qqpcOg=",
+      "ConnectionString-Test": "Endpoint=sb://teammodelos.servicebus.chinacloudapi.cn/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=Sy4h4EQ8zP+7w/lOLi1X3tGord/7ShFHimHs1vC50Dc="
+    },
+    "Redis": {
+      "ConnectionString": "CoreRedisCN.redis.cache.chinacloudapi.cn:6380,password=LyJWP1ORJdv+poXWofAF97lhCEQPg1wXWqvtzXGXQuE=,ssl=True,abortConnect=False",
+      "ConnectionString-Test": "52.130.252.100:6379,password=habook,ssl=false,abortConnect=False,writeBuffer=10240"
+    },
+    "Cosmos": {
+      "ConnectionString": "AccountEndpoint=https://teammodelos.documents.azure.cn:443/;AccountKey=clF73GwPECfP1lKZTCvs8gLMMyCZig1HODFbhDUsarsAURO7TcOjVz6ZFfPqr1HzYrfjCXpMuVD5TlEG5bFGGg==;",
+      "ConnectionString-Test": "AccountEndpoint=https://cdhabookdep-free.documents.azure.cn:443/;AccountKey=JTUVk92Gjsx17L0xqxn0X4wX2thDPMKiw4daeTyV1HzPb6JmBeHdtFY1MF1jdctW1ofgzqkDMFOtcqS46by31A==;"
     }
   }
 }