# 会员储值卡(GetTenantMemberCardList) > 自动生成于 2026-02-13 | 数据来源:本地 JSON 样本 ## 基本信息 | 属性 | 值 | |------|-----| | 接口路径 | `MemberProfile/GetTenantMemberCardList` | | 完整 URL | `https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetTenantMemberCardList` | | 请求方法 | `POST` | | Content-Type | `application/json` | | 鉴权方式 | Bearer Token(`Authorization` 头) | | ODS 对应表 | `member_stored_value_cards` | | 分页方式 | `page` + `limit`(最大 100) | | 时间范围 | 不需要 | ## 请求参数 | 参数名 | 类型 | 示例值 | 说明 | |--------|------|--------|------| | `siteId` | int | `2790685415443269` | 门店 ID | | `cardPhysicsType` | int | `0` | 卡物理类型(0=全部) | | `status` | int | `0` | 状态(0=全部) | | `page` | int | `1` | 页码(从 1 开始) | | `limit` | int | `100` | 每页条数(最大 100) | ## 响应字段(共 68 个) | # | 字段名 | 类型 | 示例值 | |---|--------|------|--------| | 1 | `site_name` | string | '朗朗桌球' | | 2 | `member_name` | string | '胡先生' | | 3 | `member_mobile` | string | '18620043391' | | 4 | `member_card_type_name` | string | '活动抵用券' | | 5 | `table_service_discount` | float | 10.0 | | 6 | `assistant_service_discount` | float | 10.0 | | 7 | `coupon_discount` | float | 10.0 | | 8 | `goods_service_discount` | float | 10.0 | | 9 | `is_allow_give` | int | 0 | | 10 | `able_cross_site` | int | 1 | | 11 | `cardSettleDeduct` | float | 0.0 | | 12 | `tenantAvatar` | string | '' | | 13 | `tenantName` | string | '' | | 14 | `member_card_grade_code_name` | string | '活动抵用券' | | 15 | `table_discount_sub_switch` | int | 2 | | 16 | `tableAreaId` | array | [] | | 17 | `goods_discount_sub_switch` | int | 2 | | 18 | `goodsCategoryId` | array | [] | | 19 | `assistant_discount_sub_switch` | int | 2 | | 20 | `pdAssisnatLevel` | array | [] | | 21 | `assistant_reward_discount_sub_switch` | int | 2 | | 22 | `cxAssisnatLevel` | array | [] | | 23 | `goods_discount_range_type` | int | 1 | | 24 | `use_scene` | string | '' | | 25 | `balance` | float | 0.0 | | 26 | `table_deduct_radio` | float | 100.0 | | 27 | `table_service_deduct_radio` | float | 100.0 | | 28 | `goods_deduct_radio` | float | 100.0 | | 29 | `goods_service_deduct_radio` | float | 100.0 | | 30 | `assistant_deduct_radio` | float | 100.0 | | 31 | `assistant_service_deduct_radio` | float | 100.0 | | 32 | `assistant_reward_deduct_radio` | float | 100.0 | | 33 | `coupon_deduct_radio` | float | 100.0 | | 34 | `tableCardDeduct` | float | 0.0 | | 35 | `tableServiceCardDeduct` | float | 0.0 | | 36 | `goodsCarDeduct` | float | 0.0 | | 37 | `goodsServiceCardDeduct` | float | 0.0 | | 38 | `assistantCardDeduct` | float | 0.0 | | 39 | `assistantServiceCardDeduct` | float | 0.0 | | 40 | `assistantRewardCardDeduct` | float | 0.0 | | 41 | `couponCardDeduct` | float | 0.0 | | 42 | `deliveryFeeDeduct` | float | 0.0 | | 43 | `is_allow_order_deduct` | int | 0 | | 44 | `id` | int | 2955206162843781 | | 45 | `assistant_discount` | float | 10.0 | | 46 | `assistant_reward_discount` | float | 10.0 | | 47 | `bind_password` | string | '' | | 48 | `card_no` | string | '' | | 49 | `card_physics_type` | int | 1 | | 50 | `card_type_id` | int | 2793266846533445 | | 51 | `create_time` | string | '2025-11-08 01:31:12' | | 52 | `denomination` | float | 0.0 | | 53 | `disable_end_time` | string | '0001-01-01 00:00:00' | | 54 | `disable_start_time` | string | '0001-01-01 00:00:00' | | 55 | `effect_site_id` | int | 0 | | 56 | `end_time` | string | '2225-01-01 00:00:00' | | 57 | `goods_discount` | float | 10.0 | | 58 | `is_delete` | int | 0 | | 59 | `last_consume_time` | string | '2025-11-09 07:48:23' | | 60 | `member_card_grade_code` | int | 2790683528022856 | | 61 | `register_site_id` | int | 2790685415443269 | | 62 | `sort` | int | 1 | | 63 | `start_time` | string | '2025-11-08 01:31:12' | | 64 | `status` | int | 1 | | 65 | `system_member_id` | int | 2955204540009605 | | 66 | `table_discount` | float | 10.0 | | 67 | `tenant_id` | int | 2790683160709957 | | 68 | `tenant_member_id` | int | 2955204541320325 | ## 新增字段(相对本地 JSON 样本) 以下字段在最新 API 响应中出现,但本地 JSON 样本中不存在: | 字段名 | 类型 | |--------|------| | `able_share_member_discount` | int | | `electricityCardDeduct` | float | | `electricity_deduct_radio` | float | | `electricity_discount` | float | | `member_grade` | int | | `principal_balance` | float | | `rechargeFreezeBalance` | float | ## 详细字段分析 > 以下内容迁移自旧版 `member_stored_value_cards-Analysis.md`,包含字段的业务含义、枚举值、跨表关联等详细说明。 一、文件整体类型与结构 1. 内容类型 从结构看,这个文件其实是 “会员卡列表 / 储值类卡片列表”,并不只包含“储值卡”,而是一个“卡片视图”: 一条记录 = 一张会员卡(已经开通的具体卡)。 记录中同时包含: 卡本身的定义属性(卡种、适用范围、折扣规则等)。 当前账户余额。 持卡会员的基本信息快照(姓名、手机号)。 有效期、最近消费时间等状态信息。 根据字段值,这一页数据中主要有五类卡: 储值卡 活动抵用券 台费卡 酒水卡 月卡 因此,这个 JSON 更准确地理解为:门店下所有储值/次卡/券类会员卡的列表视图。 二、卡片记录字段逐项说明 以下按逻辑分组:卡种信息 / 折扣规则 / 金额与余额 / 时间与有效期 / 会员信息 / 门店与适用范围 / 状态与开关类字段 / 预留扩展字段。 1. 卡种 / 类别相关字段 1.1 卡种主键与类别名称 card_type_id 类型:int 含义:卡种 ID(定义“这是哪一种卡”)。 枚举(按数据分布): 2793249295533893 2793266846533445 2791990152417157 2794699703437125 2793306611533637 这些 ID 对应不同的卡种配置,具体含义在系统内部的“卡种配置表”中。 member_card_grade_code 类型:int 含义:卡等级/卡类代码,和下面两个名称字段一一对应。 枚举: 2790683528022853 → 储值卡 2790683528022856 → 活动抵用券 2790683528022855 → 台费卡 2790683528022858 → 酒水卡 2790683528022857 → 月卡 member_card_grade_code_name 类型:string 含义:卡等级/卡类名称。 枚举值(与上面 code 一一对应): "储值卡" "活动抵用券" "台费卡" "酒水卡" "月卡" member_card_type_name 类型:string 含义:卡类型名称,实际与 member_card_grade_code_name 一致。 枚举值同上。 说明:更偏展示用的冗余字段。 结论:虽然文件名叫“储值卡列表”,但从字段看是“会员卡列表”,包含五类卡;card_type_id / member_card_grade_code / member_card_grade_code_name / member_card_type_name 共同定义“这张卡属于哪一类”。 card_physics_type 类型:int 含义:物理卡类型。 当前数据:全部为 1。 推测枚举: 1:实体卡或标准卡; 其他值(未出现)可能代表虚拟卡、第三方卡等。 card_no 类型:string 当前数据:全部为 ""(空)。 含义(推测):实体卡物理卡号/条码号。当前这批卡看起来全部为“无物理卡号”(可能是全部虚拟卡或卡号隐藏不导出)。 bind_password 类型:string 当前数据:全部 ""。 含义:卡绑定密码,用于消费或查询验证(目前未启用)。 use_scene 类型:string 当前数据:全部 ""。 含义:卡使用场景说明(比如“仅店内使用”“仅团建”等),本门店尚未使用此字段。 2. 会员信息与关联字段 这些字段把卡和会员档案关联起来。 member_name 类型:string 或 null 含义:持卡会员姓名快照。 特点:存在 null(20 张卡没有绑定会员名字)。 member_mobile 类型:string 或 null 含义:持卡会员手机号快照。 特点:与 member_name 对应,多数有值,少量为 null。 system_member_id 类型:int 含义:系统级会员 ID(跨门店统一主键)。 枚举特征: 0:约 20 条,为“未绑定具体会员”或“散客卡”。 非 0:与“会员档案.json”中的 system_member_id 对应。 tenant_member_id 类型:int 含义:当前商户(品牌/租户)中会员的主键 ID。 枚举特征: 0:同样是未绑定会员的卡。 非 0:与“会员档案.json”中的 id 对应。 关系: 这两个字段共同完成“卡 → 会员”的双钥匙关联: system_member_id:全局会员; tenant_member_id:本租户内会员档案主键。 3. 门店与适用范围字段 site_name 类型:string 当前值:全部为 "朗朗桌球"。 含义:卡归属门店名称(视图中的展示字段)。 tenantName 类型:string 当前值:全部为 ""。 含义:租户/品牌名称(当前导出为空)。 tenantAvatar 类型:string 当前值:全部为 ""。 含义:品牌头像 URL(未配置)。 tenant_id 类型:int 含义:租户/品牌 ID,与其他 JSON 中 tenant_id 一致。 register_site_id 类型:int 当前值:全部 2790685415443269。 含义:卡首次办理的门店 ID。 对应门店的 site_id;本数据中所有卡都是在同一家门店开卡。 effect_site_id 类型:int 当前值:全部 0。 含义(推测):卡片限定生效门店 ID。 为 0 时,配合 able_cross_site=1,可解释为“所有门店可用”。 able_cross_site 类型:int,枚举。 当前值:全部 1。 含义:是否允许跨店使用。 1:可以跨门店使用; 0:仅限开卡门店。 结合 effect_site_id=0 可以解读为:当前卡种都配置为“全门店通用”。 4. 金额与余额类字段 balance 类型:float 含义:当前卡内余额(主要针对储值卡、部分券卡)。 特征: 有 59 个不同的值,大部分是 0.0,其它有 985、500、若干小数等。 对于“活动抵用券”“月卡”等,有可能余额意义不同(只是当前视图统一用 balance 作为额度字段)。 denomination 类型:float 当前值:全部 0.0。 含义(推测):面额/初始储值额度。 本页数据未填充此字段;可能在分类型卡(如次卡/券)中才有意义,或者另有配置表。 5. 各类折扣与抵扣规则字段 这一块字段非常多,但结构有明显统一性: 按“消费场景 × 折扣类型”来区分。 三大消费场景: 台费:table_* 商品:goods_* 助教:assistant_* / assistant_reward_* / assistant_service_* 再叠加: discount:折扣(打几折) service_discount:服务类折扣 discount_sub_switch:折扣是否叠加/替代 deduct_radio:这类消费是否允许扣卡 & 扣卡比例(百分比) CardDeduct:扣卡金额 ServiceCardDeduct、RewardCardDeduct:扣卡金额的不同“资金子账户”(储值金 / 服务金 / 奖励金) 5.1 折扣百分比类(打几折) table_discount / goods_discount / assistant_discount / assistant_reward_discount / table_service_discount / goods_service_discount / assistant_service_discount 类型:float 当前值:全部 10.0(所有字段)。 含义: 采用“几折”的记法:10=不打折,9=九折,8=八折。 现状:当前这批卡,在所有场景/子场景(台费、商品、助教、奖励金)上的折扣统一都是 10.0,表示没有折扣设置。 5.2 折扣叠加开关 table_discount_sub_switch / goods_discount_sub_switch / assistant_discount_sub_switch / assistant_reward_discount_sub_switch 类型:int,枚举。 当前值:全部 2。 含义(推测):“折扣是否叠加/替换其他折扣”的开关。 可能枚举: 1:叠加其他折扣; 2:不叠加,仅用卡折扣; 具体枚举值需看后台配置,但从命名能看出是折扣叠加策略字段。 5.3 抵扣比例类(%) table_deduct_radio / goods_deduct_radio / assistant_deduct_radio / table_service_deduct_radio / goods_service_deduct_radio / assistant_service_deduct_radio / coupon_deduct_radio 类型:float 当前值:全部 100.0。 含义:允许从该卡余额中抵扣的比例(百分比)。 100.0 表示允许 100% 用卡余额支付该类消费; 如果是 0,通常表示不允许该类消费抵扣。 当前:卡配置为“理论上所有消费场景都可以全额用卡支付”,只是在折扣、金额层面没有特别设定。 5.4 实际扣卡金额设置(配置层) cardSettleDeduct 类型:float 当前值:0.0。 含义:结算时从卡中扣除的金额上限/规则配置(视图级;实际扣款在交易流水里体现)。 tableCardDeduct / goodsCarDeduct / assistantCardDeduct 类型:float 当前值:全部 0.0。 含义:针对台费/商品/助教三类消费的扣卡金额配置(类似“每小时从卡里扣 xx 元”或“每次抵扣 xx 元”的规则)。 当前:所有为 0,说明在卡定义层面并没有指定固定扣卡金额,而是按照一般储值逻辑消费。 tableServiceCardDeduct / goodsServiceCardDeduct / assistantServiceCardDeduct 类型:float 当前值:全部 0.0。 含义:如果系统中区分“储值金、服务金、奖励金”等子账户,这三个字段对应“服务金”子账户的扣款配置。 当前未启用。 assistantRewardCardDeduct 类型:float 当前值:0.0。 含义:助教奖励金方向扣款的配置。 当前未启用。 assistantRewardCardDeduct(拼写略有不同) 实际字段名是 assistantRewardCardDeduct,同上意义,当前为 0。 couponCardDeduct 类型:float 当前值:0.0。 含义:与卡绑定的“券额度扣除配置”。 deliveryFeeDeduct 类型:float 当前值:0.0。 含义:配送费可否/多少从卡中抵扣,目前无业务发生。 综合来看:本门店的卡片在“规则配置层”预留了大量细粒度控制字段,但目前实际使用只体现在“balance”和“可用范围”,折扣和具体扣卡规则基本都未启用(全部保持默认值 10 折、100%比例、0 扣款),真正扣款逻辑在交易流水中体现。 6. 时间与有效期相关字段 create_time 类型:string,格式 YYYY-MM-DD HH:MM:SS 含义:卡片创建时间(开卡时间)。 start_time 类型:string 含义:卡片生效开始时间(有效期起始)。 end_time 类型:string 含义:卡片有效期结束时间。 start_time / end_time 组合就是卡的有效期。不同卡种有效期配置不同,如储值卡长效、月卡固定一个月等。 disable_start_time / disable_end_time 类型:string 当前值:全部 "0001-01-01 00:00:00"。 含义:停用时间段(比如临时冻结卡的起止时间)。 当前未启用,所有卡都是“未进入停用窗口”。 last_consume_time 类型:string 含义:最近一次消费时间。 特点: 对未消费过的卡,值为 "1970-01-01 00:00:00"(典型“未初始化时间”的占位值)。 对已消费卡,则记录最后一次交易时间。 7. 卡状态与逻辑标志 status 类型:int,枚举。 取值: 1:196 条; 4:4 条。 含义(推测): 1:正常可用; 4:过期/停用/作废(具体哪一种需要结合系统配置和有效期判断)。 从结构看,这是卡当前状态的核心字段。 is_delete 类型:int,枚举。 当前值:0。 含义:逻辑删除标志。 0:未删除; 1:逻辑删除(软删除)。 is_allow_give 类型:int,枚举。 当前值:0。 含义:是否允许转赠/转让给其他会员。 0:不允许; 1:允许转赠。 is_allow_order_deduct 类型:int,枚举。 当前值:0。 含义:是否允许在“订单层面统一扣款”。 0:不允许(仅按项目扣卡); 1:允许整单抵扣。 8. 适用范围扩展字段(列表) tableAreaId 类型:list 当前值:全部 []。 含义:限定可使用的台区 ID 列表。 为空表示“不限制台区”。 goodsCategoryId 类型:list 当前值:全部 []。 含义:可用的商品分类 ID 列表。 为空表示对所有商品分类有效。 pdAssisnatLevel 类型:list 当前值:全部 []。 含义:允许使用的“陪打/助教等级”列表。 为空表示不限制助教等级。 cxAssisnatLevel 类型:list 当前值:全部 []。 含义:可能是“促销活动中的助教等级限制”(命名中 cx 多为“促销”缩写)。 当前未设置任何限制。 9. 其他字段 cardSettleDeduct 已在扣卡规则部分说明,当前为 0。 tableAreaId / goodsCategoryId / pdAssisnatLevel / cxAssisnatLevel 已上文说明:均为扩展限定维度,当前全部为空列表。 sort 类型:int 含义:在前端展示或某些列表中的排序权重。 具体取值分布不重要,主要反映展示优先级。 三、与其他 JSON 的结构性关联(从字段角度) 只从字段关系来讲,不做任何金额/盈利分析: 与《会员档案.json》: tenant_member_id ↔ 会员档案中的 id system_member_id ↔ 会员档案中的 system_member_id 卡片列表是“余额视图”,会员档案是“会员主体信息维表”。 与储值/卡交易流水(如果有单独的“储值卡交易明细” JSON): 应通过某个卡 ID(本文件中未见显式“card_id”,推测是 tenant_member_id + card_type_id 组合或还有一个隐藏键)。 本文件记录的是“当前余额”和规则;交易流水才是每次充值/消费的明细。 与台费流水 / 助教流水 / 门店销售记录: 折扣/抵扣规则维度: 台费相关:table_discount、table_deduct_radio 等; 商品相关:goods_discount、goods_deduct_radio 等; 助教相关:assistant_discount、assistant_deduct_radio 等。 在真正的消费记录里,会根据这些规则确定“从卡中扣多少”、“实际应收多少”,对应字段往往是“coupon_deduct_money”、“member_discount_amount”等。 与门店档案 / 台桌列表: 通过 register_site_id & site_name 与门店档案关联; 扩展字段 tableAreaId 理论上可以和台桌区域表关联(当前为 [],即不限制)。 与“门店销售汇总/对账视图”: 这个文件本质上是“卡余额视图”,余额字段会被用于对账和资产统计,但对应明细还是要依赖卡交易流水。 四、结构层面的几个重要线索(不涉及大数据和盈利分析) 从字段结构可以看出: 这是一个高度通用的“会员卡规则+余额视图” 同一张卡可以同时配置“台费折扣/商品折扣/助教折扣”,“储值金/服务金/奖励金”等多个子账户的使用规则。 当前门店只启用了“普通储值余额 + 全默认折扣”的简单模式,但字段结构明显支持更复杂的业务。 卡与会员,是多对一关系 一个会员可以有多张卡(不同 card_type_id / member_card_grade_code)。 每条记录都持有 system_member_id 和 tenant_member_id,即随时能从卡追溯到会员。 卡的有效期体系是严密的 有效期:start_time + end_time 停用窗口:disable_start_time + disable_end_time(当前未启用) 状态位:status、is_delete 最近使用:last_consume_time 这套结构足以支持:正常→停用→恢复→过期等多阶段。 适用范围具有多维度控制能力 门店维度:able_cross_site、effect_site_id、register_site_id 台区维度:tableAreaId 商品分类维度:goodsCategoryId 助教等级维度:pdAssisnatLevel、cxAssisnatLevel 当前门店这些维度都未限制,但字段设计说明系统支持非常细的策略,例如“某卡只在特定台区/特定商品/特定等级助教时可用”。 折扣与抵扣机制被拆得非常细 折扣(discount 系列)、抵扣比例(deduct_radio 系列)、抵扣金额(CardDeduct 系列),再叠加“服务金”“奖励金”这种资金子账户。 结构上完全可以做到:“这张卡台费九折、但最多只允许 50% 金额由卡支付,剩余必须现金;助教可全额抵扣但不打折”等非常复杂的组合。 当前导出数据处于“规则未开启、余额为主”的轻量使用阶段 折扣全部是 10.0; 抵扣比例全部 100.0; 各类 CardDeduct 字段全部为 0; disable_* 时间全部为 0001-01-01; 很多扩展维度字段为空列表。 说明:门店暂时只使用了“储值余额 + 卡类型 + 有效期 + 会员关联”几块核心功能。