# 台费流水(GetSiteTableOrderDetails) > 自动生成于 2026-02-13 | 数据来源:本地 JSON 样本 ## 基本信息 | 属性 | 值 | |------|-----| | 接口路径 | `Site/GetSiteTableOrderDetails` | | 完整 URL | `https://pc.ficoo.vip/apiprod/admin/v1/Site/GetSiteTableOrderDetails` | | 请求方法 | `POST` | | Content-Type | `application/json` | | 鉴权方式 | Bearer Token(`Authorization` 头) | | ODS 对应表 | `table_fee_transactions` | | 分页方式 | `page` + `limit`(最大 100) | | 时间范围 | 需要(startTime / endTime) | ## 请求参数 | 参数名 | 类型 | 示例值 | 说明 | |--------|------|--------|------| | `startTime` | string | `"2026-02-01 08:00:00"` | 查询起始时间 | | `endTime` | string | `"2026-02-13 08:00:00"` | 查询结束时间 | | `siteId` | int | `2790685415443269` | 门店 ID | | `isSaleManUser` | int | `0` | 是否销售员用户(0=全部) | | `page` | int | `1` | 页码(从 1 开始) | | `limit` | int | `100` | 每页条数(最大 100) | ## 响应字段(共 39 个) | # | 字段名 | 类型 | 示例值 | |---|--------|------|--------| | 1 | `siteProfile` | object | {'id': 2790685415443269, 'org_id': 2790684179467077, 'sho... | | 2 | `id` | int | 2957924029058885 | | 3 | `order_trade_no` | int | 2957858167230149 | | 4 | `site_id` | int | 2790685415443269 | | 5 | `tenant_id` | int | 2790683160709957 | | 6 | `member_id` | int | 0 | | 7 | `operator_id` | int | 2790687322443013 | | 8 | `operator_name` | string | '收银员:郑丽珊' | | 9 | `order_settle_id` | int | 2957922914357125 | | 10 | `ledger_unit_price` | float | 48.0 | | 11 | `ledger_name` | string | 'A17' | | 12 | `ledger_count` | int | 3600 | | 13 | `ledger_amount` | float | 48.0 | | 14 | `order_pay_id` | int | 0 | | 15 | `create_time` | string | '2025-11-09 23:35:57' | | 16 | `is_delete` | int | 0 | | 17 | `site_table_id` | int | 2793003705192517 | | 18 | `site_table_area_id` | int | 2791963794329671 | | 19 | `tenant_table_area_id` | int | 2791960001957765 | | 20 | `is_single_order` | int | 1 | | 21 | `ledger_start_time` | string | '2025-11-09 22:28:57' | | 22 | `ledger_end_time` | string | '2025-11-09 23:28:57' | | 23 | `ledger_status` | int | 1 | | 24 | `site_table_area_name` | string | 'A区' | | 25 | `real_table_charge_money` | float | 0.0 | | 26 | `used_card_amount` | float | 0.0 | | 27 | `adjust_amount` | float | 0.0 | | 28 | `real_table_use_seconds` | int | 3600 | | 29 | `coupon_promotion_amount` | float | 48.0 | | 30 | `service_money` | float | 0.0 | | 31 | `member_discount_amount` | float | 0.0 | | 32 | `last_use_time` | string | '2025-11-09 23:28:57' | | 33 | `salesman_name` | string | '' | | 34 | `salesman_user_id` | int | 0 | | 35 | `salesman_org_id` | int | 0 | | 36 | `mgmt_fee` | float | 0.0 | | 37 | `fee_total` | float | 0.0 | | 38 | `start_use_time` | string | '2025-11-09 22:28:57' | | 39 | `add_clock_seconds` | int | 0 | ## 新增字段(相对本地 JSON 样本) 以下字段在最新 API 响应中出现,但本地 JSON 样本中不存在: | 字段名 | 类型 | |--------|------| | `activity_discount_amount` | float | | `order_consumption_type` | int | | `real_service_money` | float | ## 详细字段分析 > 以下内容迁移自旧版 `table_fee_transactions-Analysis.md`,包含字段的业务含义、枚举值、跨表关联等详细说明。 二、记录级字段拆解与说明 1. 顶层 / 分页相关 code(在数组元素上) 类型:int 枚举:当前仅出现 0。 含义:接口调用状态,0 表示成功。 data.total 类型:int 含义:本次查询条件下台费流水总条数(3813),用于分页计算。 data.siteTableUseDetailsList 类型:array 含义:台费流水记录列表,每个元素即一次台费使用记录。 2. 主键 / 订单维度字段 这些字段用来把台费流水和订单、小票、支付等其他表关联在一起。 id 类型:int 唯一性:每条记录一个独立值。 含义:台费流水记录主键(事实表主键)。 order_trade_no 类型:int 唯一性:本文件中每条记录一个值(200 条全不重复)。 含义:订单交易号,是整笔订单的主编号。 关联: 与其它 JSON(如 助教流水、小票详情、门店销售记录)中的同名字段一致,用于把 同一订单下的台费、助教、商品等多条明细串联。 order_settle_id 类型:int 唯一性:每条记录一个值(200 条全不重复)。 含义:结算单号/结账 ID,对应一次结账操作。 关联: 与“小票详情.json”中的 orderSettleId 对应; 与(若存在)结账记录表的主键对应。 order_pay_id 类型:int 含义:订单支付记录 ID。 关联: 对应“支付记录.json”中的 id 或 relate_id(视模型而定),用于追踪这条台费最终对应哪一条支付流水。 tenant_id 类型:int 观测:所有记录值相同(2790683160709957)。 含义:租户/品牌 ID。本文件所有记录都属于同一租户。 关联:与所有其它 JSON 中的 tenant_id 一致,用于跨表做“商户维度”的过滤。 site_id 类型:int 观测:所有记录相同(2790685415443269)。 含义:门店 ID,本次数据全部来自同一门店(朗朗桌球)。 关联: 与 siteProfile.id 一致; 与其它表(助教流水、销售记录等)中的 site_id 对应,保证“门店维度”一致。 3. 台桌维度字段 这些字段描述“哪一张台、在哪个区域”。 site_table_id 类型:int 唯一性:约 45 个不同值。 含义:球台 ID。 关联: 对应“台桌列表”中的 id(当前导出文件中有一类与之对应的台桌配置表)。 用于精确确定具体是哪个台。 ledger_name 类型:string 示例值:"A1"、"A2"、"A3"、"A4"、"A5"、"A7"、"A8"、"A9"、"A10"、"S1" 等。 含义:台号名称,实际展示给员工/顾客看的桌台编号。 备注:与 site_table_id 一一对应,是桌台维表中的名称字段冗余到流水里的快照。 site_table_area_id 类型:int 唯一性:10 个左右的不同值。 含义:门店内“台桌区域” ID(站在门店物理布局的角度)。 关联: 对应“门店台桌区域配置表”的主键; 与 site_table_area_name 搭配使用。 tenant_table_area_id 类型:int 唯一性:与 site_table_area_id 数量相同,也是 10 个值。 含义:租户维度的台桌区域 ID(品牌层面的同一类区域)。 关联: 对应租户层面的“区域维表”,支持多门店共享同一套区域配置。 site_table_area_name 类型:string 枚举(本数据中观测值): "A区"(144 条) "B区"(21 条) "斯诺克区"(17 条) "麻将房"(6 条) "C区"(5 条) "K包", "VIP包厢"(各 2 条) "666", "TV台", "M8"(各 1 条) 含义:台桌区域的名称,用于门店表现和区域统计。 4. 会员维度与相关字段 member_id 类型:int 观测: 多数为 0(180 条),表示散客/非会员。 少量为非 0 的 10 个不同 ID。 含义:门店/租户内的会员 ID。 关联: 与“会员档案.json(tenantMemberInfos)”内的 id 对应(有部分 ID 完全匹配,部分会员可能不在当前导出页)。 用于将台费流水关联到具体哪位会员。 member_discount_amount 类型:float 观测: 大多数为 0.0; 少量为正值,如 376.87、259.16、151.98、253.02、108.16 等。 含义:由会员权益产生的优惠金额,例如会员折扣、会员价等。 特点: 在部分记录中 ledger_amount = real_table_charge_money = member_discount_amount,说明该台费完全通过会员权益抵扣,记录在此字段,同时仍保留原价。 used_card_amount 类型:float 观测:当前样本全部为 0.0。 含义(推测):储值卡/次卡直接抵扣到台费的金额。 说明:字段已预留,但在本时间范围内台费未通过“卡余额”支付,或该信息不在此表体现。 5. 时间与时长相关字段 5.1 时间点 create_time 类型:string,格式 YYYY-MM-DD HH:MM:SS 含义:这条台费流水记录的创建时间,通常接近结账时间。 start_use_time 类型:string 含义:台开始使用的时间(实际开台时间)。 特点:在数据中,与 ledger_start_time 完全相同(见下)。 last_use_time 类型:string 含义:最后使用/操作时间。 特点: 大多数情况下与 ledger_end_time 只差 1 秒; 可以理解为“真实最后一次计时上报的时间”。 ledger_start_time 类型:string 含义:台账上的计费起始时间。 关系: 当前数据中 ledger_start_time == start_use_time,说明起算时刻与开台时间一致。 ledger_end_time 类型:string 含义:台账上的计费结束时间。 关系: 和 last_use_time 多数情况下相差 1 秒(last_use_time 比它晚 1 秒),说明计费结束时间经系统截断处理,而 last_use_time 是最后事件时间。 5.2 时长(秒) ledger_count 类型:int 含义:台账记录的计费秒数,计费用秒数(应收时长)。 特点: 大部分记录中 ledger_count 等于 real_table_use_seconds,少数记录差 1 秒(对齐问题)。 为 0 的少数记录(6 条),对应 real_table_use_seconds 也为 0。 real_table_use_seconds 类型:int 含义:实际使用的总秒数(系统真实统计的使用时长)。 关系: 与 ledger_count 基本一致(只有 +1 秒的偏差),可以认为 ledger_count 是基于它做的计费截断结果。 当两者均为 0 且 is_single_order = 0 时,表示这条记录只是占位/关联记录,并未产生真实使用和收费(例如合单场景或转移)。 add_clock_seconds 类型:int 含义:加钟秒数,在原有使用基础上追加的时长。 观测: 绝大部分记录为 0; 少数为 2400(40 分钟)、4200(70 分钟)等 60 的倍数。 说明:加钟逻辑为分钟级别,字段用于记录累计加钟时长。 6. 金额与优惠拆分字段 这些字段共同描述“台费原价金额”和各类优惠/调整后的分解。 ledger_unit_price 类型:float 示例值:48.0、58.0、68.0、88.0、98.0、116.0 等。 含义:台费结算时设置的 每小时单价/计费单价。 用途:与 ledger_count 共同决定原始应收额。 ledger_amount 类型:float 含义:按单价与计费时长计算出的原始应收台费金额。 近似关系:ledger_amount ≈ ledger_unit_price × ledger_count / 3600,考虑到四舍五入会有小数差。 real_table_charge_money 类型:float 含义:台费中实际向顾客收取的金额(现金/实付维度,未含券方承担或内部调账的那一部分)。 特点: 有的记录值为 0,说明该台费完全由券或内部调账承担,没有直接收取现金; 有的记录 real_table_charge_money = ledger_amount,说明没有外部优惠,顾客按原价买单。 coupon_promotion_amount 类型:float 观测: 常见值:48.0、96.0、116.0、68.0、136.0、144.0... 等; 有大量记录值等于整小时单价或其整数倍。 含义:由优惠券/活动/团购(平台/门店促销)承担的优惠金额,直接抵扣在台费上。 特点:当 real_table_charge_money = 0 且该字段为 ledger_amount 时,说明整笔台费是由券促销全额承担。 member_discount_amount 上文已说明,这里补充与金额的结构关系: 功能:表示由会员折扣或会员权益承担的那部分金额。 特殊场景: 有些记录中 ledger_amount = real_table_charge_money = member_discount_amount,从结构上看,是“原价计费 + 会员承担 + 仍记录为台费收入”的一种设计(系统内部体现为会员权益消耗)。 adjust_amount 类型:float 观测: 多数是 0.0; 少数为正值,如 120.0、148.15、14.16、24.18...。 含义:调整金额/调账金额,用于将台费金额转移或冲减到其它项目,或手工调整。 特点: 部分记录中 ledger_amount 全部通过 adjust_amount 抵消(real_table_charge_money = 0,coupon_promotion_amount = 0,adjust_amount = ledger_amount),说明这笔台费被完全调账到其他地方(例如包厢统一计费,或计入套餐)。 used_card_amount 类型:float 当前样本全为 0.0。 含义:由储值卡、次卡等“卡内余额”抵扣的金额。 说明:字段设计已预留,但本段时间内台费没有通过储值卡扣款,或者卡扣款在其他表体现。 service_money 类型:float 当前样本全为 0.0。 含义(推测):门店用于记录“服务费/成本/分成金额”的字段,类似助教流水里的 service_money。 说明:当前门店未启用此字段结算台费。 mgmt_fee 类型:float 当前样本全为 0.0。 含义(推测):管理费字段,用于未来支持“台费附加管理费/服务费”的功能。 当前未启用。 fee_total 类型:float 当前样本全为 0.0。 含义:各种附加费用(如管理费、服务费)合计值。 说明:和 mgmt_fee 一样,目前作为预留字段,没有实际使用。 从结构上看,台费金额被拆成多个维度: 原始应收:ledger_amount 实际收现:real_table_charge_money 券促销承担:coupon_promotion_amount 会员承担:member_discount_amount 调账:adjust_amount 卡扣款:used_card_amount(当前为 0) 各字段合起来,描述一条台费从“原始计费”到“谁来承担”这一系列拆分,非常细颗粒度,但这里不做金额计算和盈利分析,仅从结构上说明。 7. 操作员 / 营业员相关字段 operator_id 类型:int 含义:操作员 ID,负责开台/结账的员工账号 ID。 关联:与员工/账号体系中的用户 ID 对应(与助教账号的 user_id 属于同一种 ID 体系)。 operator_name 类型:string 含义:操作员姓名(冗余字段),便于直接阅读,不必再联表员工档案。 salesman_name 类型:string 当前样本全部为空字符串。 含义:业务员/营业员姓名,如果台费有单独提成员工,这里记录归属人。 当前门店未启用该字段做提成归属。 salesman_user_id 类型:int 当前全为 0。 含义:营业员的用户 ID(与 salesman_name 搭配)。 salesman_org_id 类型:int 当前全为 0。 含义:营业员所属机构/部门 ID。 8. 状态 / 标记类字段 ledger_status 类型:int,枚举。 观测:全部为 1。 含义(推测): 1:正常已结算台费; 其他值(例如 0 未结算、2 作废)在当前数据未出现,但从命名看属于状态位。 is_single_order 类型:int,枚举。 观测:1(194 条)、0(6 条)。 含义(推测): 1:该台费记录对应的是一个独立计费单元(单独结算的桌费); 0:非独立结算条目,可能依附于其他订单(如合并结账、占位记录、转单/转台的中间记录)。 特点:is_single_order = 0 的记录中,ledger_count 和 real_table_use_seconds 为 0,说明没有实际使用与收费,是一种结构性的“占位/关联”记录。 is_delete 类型:int,枚举。 观测:全部为 0。 含义:逻辑删除标志: 0:未删除(有效记录); 1:已逻辑删除(从界面隐藏,历史保留)。 当前导出时间段没有被标记删除的台费记录。 9. 门店信息快照 siteProfile 类型:object(字典) 观测:所有记录的 siteProfile 内容相同。 内部字段包括(概略): id(门店 ID,与 site_id 相同) org_id(所属组织 ID) shop_name(门店名称,如“朗朗桌球”) full_address、address longitude、latitude tenant_site_region_id、tenant_id 一些门店级配置(例如自动开灯、WiFi、客服二维码、营业状态等) 含义:当前门店的完整档案快照,冗余到流水表中,便于报表直接读取而无需再联表门店档案。 三、与其它 JSON 的结构关联关系(从字段层面) 只从字段层面梳理,不做数值层面的分析: 与“助教流水.json” 关联键: order_trade_no、order_settle_id:同一订单下,台费流水与助教流水共享同一交易号和结算号,可以一起还原某次消费包含“台费 + 助教”的组合明细。 site_id、tenant_id:门店与租户维度一致。 结构上:两者都是“事实表”,分别记录“台使用”和“助教服务”,共享同一套订单系统与支付系统。 与“小票详情.json” 关联键: order_settle_id ↔ 小票详情中的 orderSettleId; order_trade_no ↔ 小票中的订单号。 结构线索: 小票层面是顾客看到的整笔账单;台费流水是其中“台费项目”的拆解结果(含时长、单价、优惠明细)。 与“会员档案.json(会员信息)” 关联键: 台费流水中的 member_id ↔ 会员档案中的 id(tenant_member_id)。 用途: 可以从台费流水倒推出是哪个会员在该台消费; 再通过会员档案看其手机号、姓名、卡状态等。 与“台桌列表/台桌配置.json” 关联键: site_table_id ↔ 台桌列表的 id; site_table_area_id ↔ 门店台桌区域配置表; tenant_table_area_id ↔ 租户层面区域配置表。 用途: 支持按台、按区域统计使用时长与台费占用情况; 结合 ledger_name 和 site_table_area_name 做场地运营维度分析(结构上可行,这里不做数值分析)。 与“支付记录.json” 关联键: order_pay_id ↔ 支付记录中的 ID/关联 ID。 结构线索: 可从支付记录看付款方式(现金/二维码/微信/支付宝/卡扣等),与本表的 real_table_charge_money、used_card_amount 等金额字段拼接成完整支付结构。 与“门店销售记录/库存变动.json” 虽然台费不是库存商品,但在整体订单结构中,台费与商品销售在“订单主表”上共享 order_trade_no 和 order_settle_id,结构上处于同一个“结账事件”下。 四、本表在整体模型中的结构角色(从字段设计角度的线索) 从字段设计和关联关系可以看出: siteTableUseDetailsList 是标准的“台费事实表” 每条记录 = 一段台使用时长结算快照; 通过主键 id 唯一标识; 通过 site_table_id/site_table_area_id 关联台桌维度; 通过 order_trade_no、order_settle_id 关联订单与小票; 通过 member_id 关联会员; 通过 operator_id 关联操作员。 金额拆分字段非常细: ledger_amount(原始应收),real_table_charge_money(实收现金),coupon_promotion_amount(券促销承担),member_discount_amount(会员承担),adjust_amount(调账),used_card_amount(卡扣),mgmt_fee/fee_total(预留管理费)。 说明在“台费”这一单类目上,系统已经设计为支持按承担主体拆分金额,用于对接多种优惠渠道与内部对账,但当前门店部分字段尚未启用(如 mgmt_fee、used_card_amount、service_money)。 时间与时长字段区分了“计费时间”和“真实时间”: real_table_use_seconds 与 ledger_count 基本一致,但仍保留两个字段,说明系统刻意区分“真实使用时长”和“计费时长”; last_use_time 与 ledger_end_time 相差 1 秒左右,说明系统既保留了事件时间,也保留了计费截断时间。 状态/标志字段为后续扩展留了空间: ledger_status、is_single_order、is_delete 在当前数据中值单一或高度偏向某个值,说明系统支持更多状态,但当前门店只是处于相对简单的使用方式(几乎全部是正常未删除的台费记录,少量非独立订单占位记录)。 区域与桌台配置两级 ID(site_table_area_id / tenant_table_area_id)说明: 区域体系既有门店维度 ID,又有租户维度 ID,这为将来多门店统一配置区域,或者跨门店统计同类型区域的运营情况做了结构铺垫。 总的来说,台费流水.json 在结构上已经非常“规范化”:它作为台费的事实表,通过一系列 ID 字段与会员、门店、台桌、订单及支付等多张表关联,并在单条记录层面拆分了时长与金额的各个组成部分。这些都是后续做联表分析、建模和数据对齐时非常关键的结构信息。