# 会员档案（GetTenantMemberList）

> 自动生成于 2026-02-13 | 数据来源：本地 JSON 样本

## 基本信息

| 属性 | 值 |
|------|-----|
| 接口路径 | `MemberProfile/GetTenantMemberList` |
| 完整 URL | `https://pc.ficoo.vip/apiprod/admin/v1/MemberProfile/GetTenantMemberList` |
| 请求方法 | `POST` |
| Content-Type | `application/json` |
| 鉴权方式 | Bearer Token（`Authorization` 头） |
| ODS 对应表 | `member_profiles` |
| 分页方式 | `page` + `limit`（最大 100） |
| 时间范围 | 不需要 |

## 请求参数

| 参数名 | 类型 | 示例值 | 说明 |
|--------|------|--------|------|
| `isMemberInBlackList` | int | `0` | 是否黑名单（0=全部） |
| `status_Revoked` | int | `0` | 是否已注销（0=全部） |
| `isBindOrg` | int | `0` | 是否绑定组织（0=全部） |
| `registerSource` | int | `0` | 注册来源（0=全部） |
| `page` | int | `1` | 页码（从 1 开始） |
| `limit` | int | `100` | 每页条数（最大 100） |

## 响应字段（共 15 个）

| # | 字段名 | 类型 | 示例值 |
|---|--------|------|--------|
| 1 | `id` | int | 2955204541320325 |
| 2 | `create_time` | string | '2025-11-08 01:29:33' |
| 3 | `member_card_grade_code` | int | 2790683528022853 |
| 4 | `mobile` | string | '18620043391' |
| 5 | `nickname` | string | '胡先生' |
| 6 | `register_site_id` | int | 2790685415443269 |
| 7 | `site_name` | string | '朗朗桌球' |
| 8 | `member_card_grade_name` | string | '储值卡' |
| 9 | `system_member_id` | int | 2955204540009605 |
| 10 | `tenant_id` | int | 2790683160709957 |
| 11 | `referrer_member_id` | int | 0 |
| 12 | `point` | float | 0.0 |
| 13 | `user_status` | int | 1 |
| 14 | `status` | int | 1 |
| 15 | `growth_value` | float | 0.0 |

## 新增字段（相对本地 JSON 样本）

以下字段在最新 API 响应中出现，但本地 JSON 样本中不存在：

| 字段名 | 类型 |
|--------|------|
| `pay_money_sum` | float |
| `person_tenant_org_id` | int |
| `person_tenant_org_name` | string |
| `recharge_money_sum` | float |
| `register_source` | int |

## 详细字段分析

> 以下内容迁移自旧版 `member_profiles-Analysis.md`，包含字段的业务含义、枚举值、跨表关联等详细说明。

三、主键 / 会员标识类字段
1. id

类型：int

非空：200 条

唯一值个数：199（有 1 个 ID 出现了 2 次，完全重复记录）

含义：

这是“租户内会员账户”的主键 ID。

对应一个 会员在当前租户下的一条账户档案（通常是一张卡/一个账户）。

和其它表的关系（从字段命名推断）：

在余额变更、储值卡列表等表中，通常会有 member_card_id 或类似字段，按系统习惯，这类字段一般就对应这里的 id。

重复记录说明：

id=2799212615616261 的记录在文件中出现了两次，所有字段完全相同，明显是导出过程重复，不是设计层面的问题。

2. system_member_id

类型：int

唯一值个数：199（同样有一个值出现了 2 次，对应上面的重复记录）

含义（结合其它文件）：

这是“系统级会员 ID”，在全平台唯一，用来把一个会员在不同门店/不同卡类型下的账户统一到一个“人”的维度上。

在其它 JSON（例如助教流水）里也出现了 system_member_id，用来标识消费对应哪个会员。

结构关系：

在“会员档案”这张表里，system_member_id 与 id 是一对多的关系（理论上：一人可有多张卡），只是本次截取的数据里恰好只有一人一条记录（除那条导出重复）。

3. member_card_grade_code / member_card_grade_name

这两个字段是成对出现的：一个数值码，一个中文名称。

member_card_grade_code

类型：int

唯一值个数：4

member_card_grade_name

类型：string

唯一值个数：4

从数据可得对应关系：

member_card_grade_code -> member_card_grade_name
2790683528022853       -> "储值卡"
2790683528022855       -> "台费卡"
2790683528022856       -> "活动抵用券"
2790683528022857       -> "月卡"


含义：

这是“会员卡种类/等级”的定义字段。

member_card_grade_code 是内部编码（枚举 ID），member_card_grade_name 是展示用名称。

统计分布（只是为了说明结构，不做盈利分析）：

储值卡：112 条

台费卡：82 条

活动抵用券：4 条

月卡：2 条

结构上的意义：

从设计上看，这张“会员档案”实际上是 “会员 × 卡种” 级别的账户记录：

system_member_id 表示“谁”；

member_card_grade_code/name 表示“哪种卡”；

id 则是这张卡在当前租户下的账号 ID。

四、联系方式与会员展示信息
4. mobile

类型：string

唯一值个数：199（1 个号码重复，对应重复记录）

特征：

全部是 11 位手机号字符串，未发现空字符串或明显无效值。

含义：

会员绑定的手机号码。

结构意义：

在普通业务里，“手机号 + tenant_id”通常具备“会员唯一性”的作用（禁止同租户重复注册同一个手机号）。

在本数据中，手机号重复仅出现在那条重复的会员记录上，可以判断是导出重复，而非同一手机号注册多个账户。

5. nickname

类型：string

唯一值个数：200（每条记录昵称都不同）

含义：

会员在当前租户下的显示名称（可以是姓名，也可以是昵称）。

与助教流水里的 nickname 区分：

助教流水中的 nickname 是“助教昵称”（服务人员），这里的 nickname 是“会员昵称”，虽然字段名相同，但含义不同，关联时要注意表的上下文。

五、注册门店 / 租户维度
6. register_site_id

类型：int

唯一值个数：1

所有记录都是同一个值：2790685415443269

含义：

会员的注册门店 ID。

结构关系：

与其它 JSON 中普遍存在的 site_id 相同（都是“朗朗桌球”这家店的 ID）。

说明本文件的 200 条会员账户，全部是在这家门店注册的。

7. site_name

类型：string

唯一值个数：1

全部为 "朗朗桌球"

含义：

注册门店名称，属于冗余字段，用于直接展示。

与 register_site_id 关系：

register_site_id → 逻辑外键

site_name → 冗余的门店名称快照

8. tenant_id

类型：int

唯一值个数：1

全部为 2790683160709957

含义：

租户/品牌 ID。

确认这批会员都是属于同一个租户“朗朗桌球”（而非连锁多店场景）。

六、推荐关系与成长值字段
9. referrer_member_id

类型：int

唯一值个数：1

全部为 0

含义（按命名推断）：

推荐人会员 ID，用于记录该会员是由哪位老会员推荐。

目前数据的状态：

本批数据中全部为 0，意味着在导出时间范围内，这些会员账户没有记录任何推荐关系（或该功能未使用）。

10. point

类型：float

唯一值个数：1

全部为 0.0

含义：

当前积分余额（这条会员账户的积分值）。

当前状态：

所有账户积分为 0，说明要么积分体系刚启用，要么此数据截取点时，积分未开始累积或未导出非零记录。

11. growth_value

类型：float

唯一值个数：1

全部为 0.0

含义（按常见会员体系设计）：

成长值 / 经验值，用于会员等级晋升的累计指标。

当前状态：

与 point 一样，全部为 0，说明成长体系虽然有字段，但目前没有实际使用或数据尚在初期。

从这三个字段可以看出：
系统预留了“推荐关系 + 积分 + 成长值”的完整会员运营链路，但这家门店在当前截取时间点上基本还处于“只建档案、不玩复杂运营”的状态。结构上功能完备，只是业务上尚未填充数据。

七、状态 / 启用标志相关字段
12. user_status

类型：int，枚举

唯一值个数：1

全部为 1

含义（结合行业惯例）：

用户账号状态（偏“用户逻辑”层面的状态）。

典型枚举可能为：

1：正常启用

0：禁用 / 冻结

其他值：例如已注销等（本数据尚未出现）

当前数据：

全为 1，说明导出的都是正常有效的会员账户。

13. status

类型：int，枚举

唯一值个数：1

全部为 1

含义（按命名推断）：

帐户状态（偏“卡状态/档案状态”）。

在你之前的其它 JSON 里，“status = 1”通常也是“正常”，4 等值用来表示删除/失效等。

当前数据：

同样全部为 1，表示这些档案都是有效的卡档案，没有注销/停用记录被导出。

这里有一个设计上的细节：

user_status 和 status 都是状态字段，属于“业务状态 + 系统状态”并存的设计。

很多系统会用：

user_status 管用户层面（是否允许登录、是否冻结等）；

status 管卡账户本身（卡是否作废、是否挂失）。

在你这份数据里，两者当前值完全一致（都是 1），但从结构上可以看出未来可以出现两者不一致的场景（例如用户已注销但卡余额仍在清算中等）。

八、时间字段
14. create_time

类型：string

格式：YYYY-MM-DD HH:MM:SS

唯一值个数：86

典型样例：

'2025-07-20 20:46:38'（出现 5 次）

'2025-07-20 20:46:36'（5 次）

…

含义：

会员账户的创建时间（即这条档案/这张卡在系统中被创建的时间）。

数据特征：

很多时间戳成批出现（同一时间出现 5 条），高度怀疑是“批量导入/老系统迁移”或“批量开卡”的结果，而不是一条条手动录入。

和其它业务数据（例如消费流水）相比，时间集中在 2025-07-20 晚间，说明这批会员是某个时间点一次性导入的。

九、综合结构判断与和其它 JSON 的关系

从字段设计可以得出以下结构层面的结论（仅从结构出发，不做任何盈利/行为分析）：

记录粒度

每一条 tenantMemberInfos 记录，是一个“会员在当前租户下某个卡种/账户”的档案。

关键组合键可以理解为：

(tenant_id, system_member_id, member_card_grade_code)

或更加具体的主键 id。

与其它表的关联键

与消费流水（台费、助教、商品等）

通过 system_member_id 把会员消费流水与会员档案关联起来。

一些表里还会出现 member_card_id 或类似字段，对应这里的 id。

与储值卡/余额变更/充值等表：

这些表的 member_card_id / system_member_id / tenant_member_id（在不同表叫法略有差异）会与这里的 id 和 system_member_id 做主外键关系。

与门店（site）：

register_site_id 与其他表的 site_id 援用同一门店 ID；site_name 是冗余名称。

枚举字段总结

卡种枚举（明确）：

member_card_grade_code / member_card_grade_name 四种：

储值卡 / 台费卡 / 活动抵用券 / 月卡

状态枚举（当前只见到一种值，但显然是枚举型设计）：

user_status：1（正常）

status：1（正常）

其它预留枚举（当前值全部为单一值）：

referrer_member_id：目前全为 0（“无推荐人”状态）

字段使用状态

已投入使用的字段：

id, system_member_id, member_card_grade_*, mobile, nickname, register_site_id, site_name, tenant_id, create_time, user_status, status。

这些字段组合起来，足以支持基本的会员识别、卡种区分和简单状态管理。

结构上预留但目前几乎未被使用的字段：

referrer_member_id（推荐体系）

point（积分体系）

growth_value（成长值/等级成长体系）

这些字段从结构上完整存在，但在当前数据截面上全部为默认值 0，说明门店尚未使用这些高级运营功能。

分页与导出行为的结构线索

data.total = 438，而本次两个 page 合并只有 200 条，说明：

该接口是典型的分页接口（每页 100 条）；

当前只导出了前两页（或者是时间/条件过滤导致只取到部分）。

id 和 system_member_id 各有一个值重复了两次，且所有字段完全相同：

很可能是分页处理时边界重叠导致的重复（比如页 1 末尾的记录又出现在页 2 的开头），不是数据设计错误。

十、小结：会员档案.json 的角色

从纯字段与结构角度，可以把 20251110_043209_会员档案.json 概括为：

它不是“纯粹的人头表”，而是“会员 × 卡种 的账户档案表”，一条记录既包含“谁”（system_member_id / mobile / nickname），也包含“是什么卡”（member_card_grade_xxx）。

它作为 会员维度的核心参照表，被其它业务表通过 system_member_id 和 id 广泛引用：

消费流水中的会员消费，回来可以通过这些键指向这一表；

储值余额变动、充值、退款等资金类流水，最终也会落到某个 id 所代表的“会员账户/卡”上。

从字段现状可见：门店目前主要使用的是“储值卡 + 台费卡 + 少量月卡/抵用券”的基本功能，重点在“建档与卡种区分”，尚未真正利用积分、成长值、推荐等高级字段。这是“结构完备、业务使用部分开启”的典型状态。
