瀏覽代碼

fix(API调用报告): 按账号 ID 查询调用明细

使用 tk_pool.id 构造账号级统计键,避免共享 launchScene 标签导致明细查询为空。保留账号名称统计键作为历史数据兼容回退。
dodo hold 23 小時之前
父節點
當前提交
bcda2990e8
共有 1 個文件被更改,包括 34 次插入10 次删除
  1. 34 10
      molilian.api/Controllers/admin/TaobaoController.cs

+ 34 - 10
molilian.api/Controllers/admin/TaobaoController.cs

@@ -744,10 +744,11 @@ namespace molilian.api.Controllers
             var result = new List<dynamic>();
             var reason_result = new List<dynamic>();
 
-            var report_date = form.PathReadArray<string>("query_date[]");
-            var accountName = form.Read("accountName", string.Empty);
-            var isHourtrend = form.Read<bool>("isLeaf", false);
-            var total_key = form.Read("total_key", "total");
+            var report_date = form.PathReadArray<string>("query_date[]");
+            var accountName = form.Read("accountName", string.Empty);
+            var accountId = form.Read("accountId", 0);
+            var isHourtrend = form.Read<bool>("isLeaf", false);
+            var total_key = form.Read("total_key", "total");
 
             DateTime stime = DateTime.MinValue;
             if (!DateTime.TryParse(report_date[0], out stime)) return new APIResult(new { data = result, data2 = reason_result });
@@ -802,12 +803,35 @@ namespace molilian.api.Controllers
                 }
                 return new APIResult(new { total, data = result, data2 = reason_result });
             }
-            else
-            {
-                string cacheKey = $":{total_key}:{accountName}:{_report_date}";
-                double total = await TkLogCore.GetTotalAsync(cacheKey, false);
-                if (total > 0)
-                {
+            else
+            {
+                // The report row is identified by tk_pool.id. This is independent of the
+                // riskStrategy/launchScene label (for example tbpush-220), which can be shared
+                // by multiple accounts.
+                string requestedAccountName = accountName;
+                if (accountId > 0)
+                {
+                    accountName = $"{TkChannelEnum.tb}_{accountId}";
+                }
+
+                string cacheKey = $":{total_key}:{accountName}:{_report_date}";
+                double total = await TkLogCore.GetTotalAsync(cacheKey, false);
+                if (total == 0 &&
+                    accountId > 0 &&
+                    !string.IsNullOrEmpty(requestedAccountName) &&
+                    !string.Equals(requestedAccountName, "all", StringComparison.OrdinalIgnoreCase) &&
+                    !string.Equals(requestedAccountName, TkChannelEnum.tb.ToString(), StringComparison.OrdinalIgnoreCase) &&
+                    !string.Equals(requestedAccountName, accountName, StringComparison.Ordinal))
+                {
+                    cacheKey = $":{total_key}:{requestedAccountName}:{_report_date}";
+                    total = await TkLogCore.GetTotalAsync(cacheKey, false);
+                    if (total > 0)
+                    {
+                        accountName = requestedAccountName;
+                    }
+                }
+                if (total > 0)
+                {
                     string[] keys = ["success"];
 
                     cacheKey = $":{total_key}:{accountName}:message:{_report_date}";