diff --git a/server/internal/api/exports.go b/server/internal/api/exports.go index c725f45..0b17f6c 100644 --- a/server/internal/api/exports.go +++ b/server/internal/api/exports.go @@ -232,7 +232,7 @@ func (a *ExportsAPI) create(w http.ResponseWriter, r *http.Request) { } // 不再使用白名单过滤,直接使用所有字段 filtered = normalized - // 易码通立减金:保留 order_voucher.grant_time,移除红包领取时间列,避免"领取时间"为空 + // 易码通立减金:保留 order_voucher.grant_time,移除红包领取时间列,避免“领取时间”为空 if ds == "ymt" && tv == 3 { deduped := make([]string, 0, len(filtered)) removed := []string{} @@ -248,6 +248,22 @@ func (a *ExportsAPI) create(w http.ResponseWriter, r *http.Request) { } filtered = deduped } + // 营销系统:非直充类型(type!=1)时移除recharge_time和card_code字段 + if ds == "marketing" && tv != 1 { + deduped := make([]string, 0, len(filtered)) + removed := []string{} + for _, tf := range filtered { + if tf == "order.recharge_time" || tf == "order.card_code" { + removed = append(removed, tf) + continue + } + deduped = append(deduped, tf) + } + if len(removed) > 0 { + logging.JSON("INFO", map[string]interface{}{"event": "fields_filtered_non_direct_charge", "removed": removed, "reason": "非直充类型不导出充值时间和卡密"}) + } + filtered = deduped + } labels := FieldLabels() // 字段匹配校验(数量与顺序) if len(filtered) != len(fs) { diff --git a/server/internal/api/metadata.go b/server/internal/api/metadata.go index 85cf78e..b065685 100644 --- a/server/internal/api/metadata.go +++ b/server/internal/api/metadata.go @@ -22,9 +22,16 @@ func MetadataHandler(meta, marketing, ymt *sql.DB) http.Handler { for i := range tables { var visible []fieldInfo for _, f := range tables[i].Fields { - if !f.Hidden { - visible = append(visible, f) + if f.Hidden { + continue } + // 营销系统:recharge_time和card_code字段只在直充类型(type=1)时才显示 + if ds == "marketing" && ot != "1" { + if f.Key == "order.recharge_time" || f.Key == "order.card_code" { + continue + } + } + visible = append(visible, f) } tables[i].Fields = visible }