From 8ef6a180f7d23082abd1fb9c6f26c7520e3065c9 Mon Sep 17 00:00:00 2001 From: WangLiZhao <1838393649@qq.com> Date: Wed, 1 Jul 2026 15:39:25 +0800 Subject: [PATCH] =?UTF-8?q?refactor(billing):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91=E5=B9=B6?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=9C=AA=E4=BD=BF=E7=94=A8=E7=9A=84=E5=B8=B8?= =?UTF-8?q?=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/util/billing.go | 30 ++++++++++++++---------------- consts/public/table_name.go | 9 ++++----- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/common/util/billing.go b/common/util/billing.go index 5b296c3..baf6975 100644 --- a/common/util/billing.go +++ b/common/util/billing.go @@ -255,27 +255,25 @@ func extractValue(source map[string]any, path string) any { return sum } - // 条件判断:content.#.type==xxx - if strings.Count(path, ".#.") == 1 && strings.Contains(path, "==") { - parts := strings.Split(path, "==") - basePath := parts[0] - typ := parts[1] - arr := gjson.New(source).Get(strings.Split(basePath, ".#.")[0]).Array() - for _, item := range arr { - field := strings.Split(basePath, ".#.")[1] - if gconv.String(gjson.New(item).Get(field).Val()) == typ { - return true - } - } - return false - } - - // 条件判断:rounds.#.content.#.type==xxx(嵌套数组) + // 条件判断:xxx.#.type==yyy 或 rounds.#.content.#.type==yyy if strings.Contains(path, "==video_url") || strings.Contains(path, "==input_audio") { parts := strings.Split(path, "==") basePath := parts[0] typ := parts[1] segments := strings.Split(basePath, ".#.") + + // 单层:content.#.type → segments = ["content", "type"] + if len(segments) == 2 && !strings.Contains(segments[0], ".") { + arr := gjson.New(source).Get(segments[0]).Array() + for _, item := range arr { + if gconv.String(gjson.New(item).Get(segments[1]).Val()) == typ { + return true + } + } + return false + } + + // 嵌套:rounds.#.content.#.type → segments = ["rounds", "content", "type"] topArr := gjson.New(source).Get(segments[0]).Array() for _, item := range topArr { subArr := gjson.New(item).Get(segments[1]).Array() diff --git a/consts/public/table_name.go b/consts/public/table_name.go index 8afde4d..a7f89cb 100644 --- a/consts/public/table_name.go +++ b/consts/public/table_name.go @@ -5,9 +5,8 @@ const ( ) const ( - TableNameModel = "model_gateway_models" // 模型表 - TableNameTask = "model_gateway_task" // 任务表 - TableNameUserBilling = "model_user_billing" // 用户账单表 - TableNameOpLog = "model_gateway_logs_op" // 操作日志表 - TableNameStat = "model_gateway_logs_stat" // 按天统计表 + TableNameModel = "model_gateway_models" // 模型表 + TableNameTask = "model_gateway_task" // 任务表 + TableNameOpLog = "model_gateway_logs_op" // 操作日志表 + TableNameStat = "model_gateway_logs_stat" // 按天统计表 )