dodo hold před 2 měsíci
rodič
revize
c1cda190c8

+ 1 - 1
molilian.api/Controllers/public/ApiController.cs

@@ -133,7 +133,7 @@ namespace molilian.api.Controllers
                 img = Convert.ToBase64String(bytes);
             }
             var response = await core.PromotionQueryAsync(img, oaid, ip, scene, recommand, false, aid, useCouponLinkFirst);
-            _ = PromotionQuerySamplingCore.TrySampleAsync(img, ExtractActionResultPayload(response));
+            _ = PromotionQuerySamplingCore.TrySampleAsync(img, ip, oaid, ExtractActionResultPayload(response));
             return response;
         }
 

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
molilian.api/Properties/PublishProfiles/latest.pubxml.user


+ 26 - 6
molilian.core/Core/API/PromotionQuerySamplingCore.cs

@@ -39,9 +39,12 @@ namespace molilian.core
             return Math.Max(0, RedisHelper.Get<int>(SamplingRemainingKey));
         }
 
-        public static async Task TrySampleAsync(string imageBase64, string responseJson)
+        public static async Task TrySampleAsync(string imageBase64, string ip, string oaid, string responseJson)
         {
-            if (string.IsNullOrWhiteSpace(imageBase64) && string.IsNullOrWhiteSpace(responseJson))
+            if (string.IsNullOrWhiteSpace(imageBase64)
+                && string.IsNullOrWhiteSpace(ip)
+                && string.IsNullOrWhiteSpace(oaid)
+                && string.IsNullOrWhiteSpace(responseJson))
             {
                 return;
             }
@@ -58,13 +61,15 @@ namespace molilian.core
                 using var conn = DBContext.GetOpenConnection();
                 const string sql = @"
 INSERT INTO promotion_query_samples
-    (id, image_base64, response_json, create_time)
+    (id, ip, oaid, image_base64, response_json, create_time)
 VALUES
-    (@id, @image_base64, @response_json, @create_time);";
+    (@id, @ip, @oaid, @image_base64, @response_json, @create_time);";
 
                 await conn.ExecuteAsync(sql, new
                 {
                     id = sampleId,
+                    ip = ip ?? string.Empty,
+                    oaid = oaid ?? string.Empty,
                     image_base64 = imageBase64 ?? string.Empty,
                     response_json = responseJson ?? string.Empty,
                     create_time = DateTime.Now
@@ -115,7 +120,7 @@ FROM promotion_query_samples
             args.Add("offset", offset);
 
             string sql = $@"
-SELECT id, image_base64, response_json, create_time
+SELECT id, ip, oaid, image_base64, response_json, create_time
 FROM promotion_query_samples
 {where}
 ORDER BY create_time DESC
@@ -139,6 +144,8 @@ LIMIT @offset, @count";
                 fileName = $"{item.id}.log",
                 writeTime = item.create_time.ToString("yyyy-MM-dd HH:mm:ss.fff"),
                 content = BuildLegacyContent(item),
+                ip = item.ip,
+                oaid = item.oaid,
                 imageBase64 = item.image_base64,
                 responseJson = item.response_json
             };
@@ -151,7 +158,18 @@ LIMIT @offset, @count";
             {
                 string clientPost = JsonSerializer.Serialize(new
                 {
-                    img = item.image_base64
+                    img = item.image_base64,
+                    ip = item.ip,
+                    oaid = item.oaid
+                }, JsonOptions);
+                AppendSection(builder, item.create_time, "clientPost", clientPost);
+            }
+            else if (!string.IsNullOrWhiteSpace(item.ip) || !string.IsNullOrWhiteSpace(item.oaid))
+            {
+                string clientPost = JsonSerializer.Serialize(new
+                {
+                    ip = item.ip,
+                    oaid = item.oaid
                 }, JsonOptions);
                 AppendSection(builder, item.create_time, "clientPost", clientPost);
             }
@@ -231,6 +249,8 @@ LIMIT @offset, @count";
                 const string sql = @"
 CREATE TABLE IF NOT EXISTS promotion_query_samples (
     id VARCHAR(80) NOT NULL PRIMARY KEY COMMENT '采样日志ID',
+    ip VARCHAR(64) NOT NULL DEFAULT '' COMMENT '请求IP',
+    oaid VARCHAR(128) NOT NULL DEFAULT '' COMMENT '请求OAID',
     image_base64 LONGTEXT NOT NULL COMMENT '入参图片base64',
     response_json LONGTEXT NOT NULL COMMENT '返回JSON',
     create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

+ 4 - 0
molilian.core/DTO/api/PromotionQuerySampleDTO.cs

@@ -9,6 +9,8 @@ namespace molilian.core
     {
         [Key]
         public string id { get; set; } = string.Empty;
+        public string ip { get; set; } = string.Empty;
+        public string oaid { get; set; } = string.Empty;
         public string image_base64 { get; set; } = string.Empty;
         public string response_json { get; set; } = string.Empty;
 
@@ -23,6 +25,8 @@ namespace molilian.core
         public string fileName { get; set; } = string.Empty;
         public string writeTime { get; set; } = string.Empty;
         public string content { get; set; } = string.Empty;
+        public string ip { get; set; } = string.Empty;
+        public string oaid { get; set; } = string.Empty;
         public string imageBase64 { get; set; } = string.Empty;
         public string responseJson { get; set; } = string.Empty;
     }

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů