From b442209bfa69057a98fb0957221dbeadd137224a Mon Sep 17 00:00:00 2001 From: zhouyonggao <1971162852@qq.com> Date: Thu, 18 Dec 2025 11:32:15 +0800 Subject: [PATCH] =?UTF-8?q?refactor(api):=20=E5=8F=96=E6=B6=88=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E7=99=BD=E5=90=8D=E5=8D=95=E8=BF=87=E6=BB=A4=E5=92=8C?= =?UTF-8?q?=E5=8E=BB=E9=87=8D=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - server/internal/api/exports.go中remove字段白名单过滤和完全重复字段去重步骤 - 直接使用所有字段,无需过滤并简化字段处理流程 - 修正countValidFields函数说明,改为计算不去重、不过滤的有效字段数 - 维护对易码通立减金特殊字段处理逻辑,避免“领取时间”为空问题 --- server/internal/api/exports.go | 35 +++----------------------------- server/internal/api/templates.go | 30 ++------------------------- 2 files changed, 5 insertions(+), 60 deletions(-) diff --git a/server/internal/api/exports.go b/server/internal/api/exports.go index 1430801..a45d445 100644 --- a/server/internal/api/exports.go +++ b/server/internal/api/exports.go @@ -231,38 +231,9 @@ func (a *ExportsAPI) create(w http.ResponseWriter, r *http.Request) { } normalized = tmp } - // whitelist validation & soft removal of disallowed fields - bad := []string{} - filtered = make([]string, 0, len(normalized)) - for _, tf := range normalized { - if !wl[tf] { - bad = append(bad, tf) - continue - } - filtered = append(filtered, tf) - } - if len(bad) > 0 { - logging.JSON("ERROR", map[string]interface{}{"event": "fields_not_whitelisted", "removed": bad}) - } - // 字段去重:移除完全重复的字段(包括主表自身的重复) - { - seen := make(map[string]bool) - deduped := make([]string, 0, len(filtered)) - removed := []string{} - for _, tf := range filtered { - if seen[tf] { - removed = append(removed, tf) - continue - } - seen[tf] = true - deduped = append(deduped, tf) - } - if len(removed) > 0 { - logging.JSON("INFO", map[string]interface{}{"event": "fields_deduplicated_exact", "removed": removed, "reason": "移除完全重复的字段"}) - } - filtered = deduped - } - // 易码通立减金:保留 order_voucher.grant_time,移除红包领取时间列,避免“领取时间”为空 + // 不再使用白名单过滤,直接使用所有字段 + filtered = normalized + // 易码通立减金:保留 order_voucher.grant_time,移除红包领取时间列,避免"领取时间"为空 if ds == "ymt" && tv == 3 { deduped := make([]string, 0, len(filtered)) removed := []string{} diff --git a/server/internal/api/templates.go b/server/internal/api/templates.go index 7a148bc..d8c6beb 100644 --- a/server/internal/api/templates.go +++ b/server/internal/api/templates.go @@ -232,35 +232,9 @@ func (api *TemplatesAPI) listTemplates(w http.ResponseWriter, r *http.Request) { ok(w, r, templates) } -// countValidFields 计算有效字段数(去重) +// countValidFields 计算有效字段数(不去重,不过滤白名单) func countValidFields(datasource, mainTable string, fields []string, whitelist map[string]bool) int64 { - seen := map[string]struct{}{} - - for _, field := range fields { - // YMT系统的order_info映射为order - if datasource == "ymt" && strings.HasPrefix(field, "order_info.") { - field = strings.Replace(field, "order_info.", "order.", 1) - } - - // 检查白名单 - if !whitelist[field] { - continue - } - - // YMT系统客户名称去重 - if datasource == "ymt" && field == "order.merchant_name" { - if _, exists := seen["merchant.name"]; exists { - continue - } - } - - if _, exists := seen[field]; exists { - continue - } - seen[field] = struct{}{} - } - - return int64(len(seen)) + return int64(len(fields)) } // getTemplate 获取单个模板详情