ODS 完成

This commit is contained in:
Neo
2025-11-30 07:19:05 +08:00
parent b9b050bb5d
commit a6ad343092
81 changed files with 15695 additions and 227180 deletions

751
非球接口API.md Normal file
View File

@@ -0,0 +1,751 @@
## 1. 总体概览
### 1.1 服务地址与版本
* Base URL统一前缀
`https://pc.ficoo.vip/apiprod/admin/v1`
* 所有接口路径均在该前缀下,例如:
* 助教流水:`/AssistantPerformance/GetOrderAssistantDetails`
* 门店商品档案1`/TenantGoods/GetGoodsInventoryList`
统一完整 URL 形式:
```text
https://pc.ficoo.vip/apiprod/admin/v1{path}
```
例如:
```text
https://pc.ficoo.vip/apiprod/admin/v1/AssistantPerformance/GetOrderAssistantDetails
```
### 1.2 认证方式
* 认证方式Bearer TokenJWT
* HTTP Header
```http
Authorization: Bearer {access_token}
```
* Token 获取方式:由 Ficoo 系统颁发(脚本目前通过环境变量 `FICOO_TOKEN` 或命令行 `--token` 传入)。
* 注意:
* Token 为敏感信息不要写死在代码仓库或文档中。通过CLI或.env配置。
* 示例中出现的实际 JWT 请在内部全部替换成占位符。
### 1.3 请求方式与编码
* HTTP Method目前脚本全部使用 `POST`。
* 请求体:`Content-Type: application/json`JSON 编码UTF-8。
* 响应体JSONUTF-8。
示例(来自现有 curl经脱敏后
```bash
curl "https://pc.ficoo.vip/apiprod/admin/v1/AssistantPerformance/GetOrderAssistantDetails" \
-H "Authorization: Bearer <your_token>" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/plain, */*" \
--data-raw '{
"siteId": 2790685415443269,
"startTime": "2025-11-01 08:00:00",
"endTime": "2025-11-08 08:00:00",
"IsConfirm": 2,
"page": 1,
"limit": 20
}'
```
### 1.4 通用 Header 建议(必须)
所有接口均为内部管理后台接口,调用时必须携带以下核心请求头:
Header 名称 示例值 说明
Authorization Bearer <access_token> 鉴权,使用 Bearer Token
Content-Type application/json 请求体为 JSON 编码
Accept application/json, text/plain, */* 客户端期望接收 JSON 响应
注意:<access_token> 为系统颁发的 JWT文档和示例中一律使用占位符不要写实际 token。
#### 1.4.2 浏览器兼容性请求头(建议统一保留)
为降低前置网关 / 安全策略的拦截风险,系统当前前端及采集脚本在调用接口时,统一携带一组“浏览器兼容性请求头”,用于模拟真实浏览器环境。这些头部对业务语义无强制要求,但推荐所有客户端统一保留:
Header 名称 示例值(仅示意) 说明
Origin https://pc.ficoo.vip 请求来源域名,前端浏览器自动携带
Referer https://pc.ficoo.vip/ 页面来源地址
User-Agent Mozilla/5.0 (Windows NT 10.0; Win64; x64)... Chrome/141.0.0.0 Safari/537.36 模拟 Chrome 浏览器 UA
Accept-Language zh-CN,zh;q=0.9 语言偏好
sec-ch-ua "Google Chrome";v="141", "Not?A_Brand";v="8", "Chromium";v="141" 浏览器 User-Agent Client Hints
sec-ch-ua-platform "Windows" 同上,标识操作系统平台
sec-ch-ua-mobile ?0 同上,标识是否移动端
sec-fetch-site same-origin Fetch Metadata标识请求来源站点关系
sec-fetch-mode cors Fetch Metadata标识跨域模式
sec-fetch-dest empty Fetch Metadata标识资源类型
priority u=1, i HTTP 优先级提示,用于底层网络调度
X-Requested-With XMLHttpRequest 传统 AJAX 头部,部分后端可能用来识别异步请求
DNT可选 1 Do Not Track浏览器隐私偏好业务逻辑不依赖
#### 1.4.3 示例请求头(推荐组合)
下面是一个推荐的完整请求头示例,供客户端实现参考(已脱敏):
POST /apiprod/admin/v1/AssistantPerformance/GetOrderAssistantDetails HTTP/1.1
Host: pc.ficoo.vip
Authorization: Bearer <access_token>
Content-Type: application/json
Accept: application/json, text/plain, */*
Origin: https://pc.ficoo.vip
Referer: https://pc.ficoo.vip/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)... Chrome/141.0.0.0 Safari/537.36
Accept-Language: zh-CN,zh;q=0.9
sec-ch-ua: "Google Chrome";v="141", "Not?A_Brand";v="8", "Chromium";v="141"
sec-ch-ua-platform: "Windows"
sec-ch-ua-mobile: ?0
sec-fetch-site: same-origin
sec-fetch-mode: cors
sec-fetch-dest: empty
priority: u=1, i
X-Requested-With: XMLHttpRequest
DNT: 1
## 2. 通用协议约定
### 2.1 时间格式与时区
脚本中所有时间字段使用统一字符串格式:
```text
"YYYY-MM-DD HH:MM:SS"
例如:"2025-10-01 00:00:00"
```
常见时间字段:
* `startTime` / `endTime`:一般为创建时间或业务发生时间段
* `rangeStartTime` / `rangeEndTime`:多用于结账记录等“区间查询”
* `StartPayTime` / `EndPayTime`:支付时间范围(支付流水)
时区未在响应中显式标识默认可按北京时间Asia/Shanghai处理。
### 2.2 分页约定
* 通用分页参数:
* `page`:页码,从 1 开始
* `limit`:每页条数,例如 20 或 100
* Python 脚本支持配置:
````python
PAGE_START = 1
PAGE_END = 2
PAGE_LIMIT = 100
``` :contentReference[oaicite:7]{index=7}
````
* 采集策略:遍历 page 从 `PAGE_START` 到 `PAGE_END`,每页将列表数据合并写入一个 JSON 文件。
**特殊情况:**
* `小票详情`/Order/GetOrderSettleTicketNew本身是“单据级”明细接口从业务上看不分页通过 `orderSettleId` 或 `orderSettleIdList` 批量请求。脚本中单独针对该接口做了循环调用设计。
### 2.3 通用响应结构
从样本 JSON 看,多数接口返回结构类似:
```json
{
"code": 0,
"data": {
"...": "...",
"total": 438,
"<listField>": [ ... ]
}
}
```
示例(会员档案,字段名略):
```json
{
"code": 0,
"data": {
"total": 438,
"tenantMemberInfos": [
{
"id": 2799...,
"create_time": "2025-11-08 01:29:33",
"member_card_grade_code": 1,
"mobile": "138****1234",
"nickname": "xxx",
...
}
]
}
}
```
注意:
* 列表字段名称并不统一:可能是 `list` / `rows` / `records` / `items` / `dataList`,也可能是业务专有名(例如 `tenantMemberInfos`)。脚本中专门写了一个通用提取函数 `extract_list` 来处理上述几种常见命名。
* 部分接口可能完全不分页,只返回单条对象或嵌套结构,需按实际响应处理。
---
## 3. 通用参数说明
脚本顶部有一个公共参数池 `PARAMS`,各个接口在构造请求时会从中按需取值。这些字段可以视为“通用过滤条件”和“业务枚举”。
### 3.1 门店与组织
* `siteId`:门店 IDint64
* 单门店场景为一个长整型;
* 在门店商品档案 1/2 中,脚本会自动转成数组形式:`[siteId]`。
* `siteTableAreaIdList`:台桌区域 ID 列表array<int>),用于结账记录筛选具体区域。
### 3.2 时间区间
* `startTime` / `endTime`:通用时间范围
* `rangeStartTime` / `rangeEndTime`:结账类接口使用
* `StartPayTime` / `EndPayTime`:支付流水接口使用
全部为字符串格式 `"YYYY-MM-DD HH:MM:SS"`。
### 3.3 业务枚举类字段(常见)
以下均为整数枚举,具体含义需结合业务系统配置或你提供的 .md 报告来确定:
* `IsConfirm`助教业绩是否确认示例值2
* `OnlinePayChannel`线上支付渠道0 表示全部 / 默认)
* `paymentMethod`:支付方式(现金 / 微信 / 支付宝 / …)
* `relateType`:关联类型(支付记录)
* `isSaleManUser`:是否按业务员维度汇总台费流水
* `isSalesBind`:门店销售记录中,是否按销售绑定过滤
* `goodsSalesType`:商品销售维度(按单品 / 分类 / 时间等)
* `costPriceType`:成本价类型
* `ableDiscount`:是否可打折(-1 代表全部)
* `tenantGoodsStatus`:商品状态(启用 / 停用)
* `goodsSecondCategoryId`:二级分类 ID 列表
* `goodsState`:商品状态(在售 / 已停售)
* `enableStatus`:启用状态
* `existsGoodsStock`:是否仅查有库存商品
* `couponChannel`:券来源渠道
* `couponUseStatus`:券使用状态
* `settleType`:结账类型 / 账单类型
* `stockType`:库存变动类型(出库 / 入库 / 盘点等)
### 3.4 小票详情专用字段
* `orderSettleId`:单张结账小票对应的结算 ID
* `orderSettleIdList`:结算 ID 列表(脚本中大量示例 ID支持批量拉取小票详情。
---
## 4. 批量采集脚本使用说明
### 4.2 Token 配置
支持两种方式(优先级从高到低):
1. 命令行参数:
```bash
python fetch_feiqiu_endpoints.py --token "Bearer x.y.z"
# 或仅传 bare token脚本会自动补上 Bearer 前缀
```
2. 也支持在同目录 `.env` 文件中设置 `FICOO_TOKEN`(依赖 `python-dotenv`)。
若两者都缺失,脚本会抛出异常并退出。
### 4.3 配置要调用的接口
脚本中通过 `API_NAME` 控制要调用的接口,可以是单个字符串或字符串列表:
```python
# 示例:只跑门店商品档案 1 和 2
API_NAME = ["门店商品档案1", "门店商品档案2"]
```
可选值即 `ENDPOINTS` 字典中的所有键(见后文接口清单)。
### 4.4 分页与时间范围配置
在 `PARAMS` 和分页配置区集中调整:
````python
PAGE_START = 1
PAGE_END = 2
PAGE_LIMIT = 100
PARAMS = {
"startTime": "2025-10-01 00:00:00",
"endTime": "2025-11-10 00:00:00",
"rangeStartTime": "...",
"rangeEndTime": "...",
"StartPayTime": "...",
"EndPayTime": "...",
"siteId": 2790685415443269,
...
}
``` :contentReference[oaicite:17]{index=17}
### 4.5 输出位置与命名
- 输出目录:可配置
- 文件命名列表:
接口 Path 与建议 JSON 文件名对照表
| Request Path | New JSON Filename | Brief Description |
| ---------------------------------------------------- | ----------------------------------------- | ---------------------------------------------------- |
| `/MemberProfile/GetTenantMemberList` | `member_profiles.json` | 会员主档案数据,每条记录对应租户下的一位会员/账户,包括会员基本信息、等级、联系方式等。 |
| `/MemberProfile/GetMemberCardBalanceChange` | `member_balance_changes.json` | 会员账户余额变动流水,每条记录对应一次余额增减(充值、消费、调账等)。 |
| `/MemberProfile/GetTenantMemberCardList` | `member_stored_value_cards.json` | 会员储值类卡片列表,每条记录是一张已开通的储值卡及其规则配置(卡种、折扣、适用范围等)。 |
| `/Site/GetRechargeSettleList` | `recharge_settlements.json` | 会员充值结算流水,每条记录是一笔充值订单的结算信息(金额、支付方式、时间等)。 |
| `/AssistantPerformance/GetAbolitionAssistant` | `assistant_cancellation_records.json` | 助教废除/取消流水,每条记录表示某张台桌上一次助教被移除/废除的操作,含门店与台桌信息。 |
| `/AssistantPerformance/GetOrderAssistantDetails` | `assistant_service_records.json` | 助教服务流水明细,每条记录对应一次助教服务(单次上台/服务时段),可关联订单、结账、小票等。 |
| `/PersonnelManagement/SearchAssistantInfo` | `assistant_accounts_master.json` | 助教账号/人事档案维表,每条记录对应一名助教账号,包含人员基本信息、在职状态、计费与权限配置等。 |
| `/Table/GetSiteTables` | `site_tables_master.json` | 门店台桌维表,每条记录对应一张球台/包厢,包含台号、区域、状态、收费策略等基础配置。 |
| `/Site/GetTaiFeeAdjustList` | `table_fee_discount_records.json` | 台费打折/调账流水,每条记录是一笔针对台费的手工折扣或金额调整,关联订单与台桌。 |
| `/Site/GetSiteTableOrderDetails` | `table_fee_transactions.json` | 台费计费流水明细,每条记录对应一次台费收费明细,可按订单、台桌、时长等维度分析。 |
| `/TenantGoods/QueryTenantGoods` | `tenant_goods_master.json` | 品牌维度的商品档案,每条记录是一个商品在租户层的主数据(名称、分类、定价等),供各门店复用。 |
| `/PackageCoupon/QueryPackageCouponList` | `group_buy_packages.json` | 团购套餐定义列表,每条记录是一种团购券/套餐的规则配置(名称、面值、有效期、适用时段等)。 |
| `/Site/GetSiteTableUseDetails` | `group_buy_redemption_records.json` | 团购套餐使用流水,每条记录对应一次团购券在门店被核销/使用的明细,含台桌与订单信息。 |
| `/Order/GetOrderSettleTicketNew` | `settlement_ticket_details.json` | 结账小票打印详情,每条记录对应一张结算小票的完整快照,包括整单金额、会员、支付方式及台费/商品分项明细。 |
| `/Promotion/GetOfflineCouponConsumePageList` | `platform_coupon_redemption_records.json` | 平台券(如美团等)验券流水,每条记录对应一次第三方团购券在门店的核销事件。 |
| `/GoodsStockManage/QueryGoodsOutboundReceipt` | `goods_stock_movements.json` | 商品库存变动流水,每条记录是某个门店商品的一次出入库/调整事件,可追溯至库存汇总与销售记录。 |
| `/TenantGoodsCategory/QueryPrimarySecondaryCategory` | `stock_goods_category_tree.json` | 库存模块使用的商品分类树,每条记录是一个商品分类节点,形成一级/二级分类层级结构。 |
| `/TenantGoods/GetGoodsStockReport` | `goods_stock_summary.json` | 门店商品库存汇总,每条记录对应一个门店商品在查询区间内的库存现状与汇总指标。 |
| `/PayLog/GetPayLogListPage` | `payment_transactions.json` | 门店支付流水,每条记录是一笔支付交易(含支付方式、渠道、金额、关联订单等)。 |
| `/Site/GetAllOrderSettleList` | `settlement_records.json` | 门店结账记录,每条记录是一笔结算单的汇总信息,可与小票详情、支付记录等联查。 |
| `/Order/GetRefundPayLogList` | `refund_transactions.json` | 退款支付流水,每条记录是一笔已发生的退款交易,包含退款金额、业务来源、支付通道等。 |
| `/TenantGoods/GetGoodsSalesList` | `store_goods_sales_records.json` | 门店商品销售流水,每条记录对应一条商品销售明细,可关联支付记录、结账记录与库存变动。 |
* 日志目录:可配置,按接口名单独记录一份日志,包含每次调用的 curl 命令和原始请求/响应快照Authorization 可选择打码)。
### 4.6 调用重试与限流策略
脚本中使用了 `requests.adapters.HTTPAdapter` + `urllib3.Retry`
* 重试总次数3
* 指定的可重试状态码:`429, 500, 502, 503, 504`
* 退避因子0.5(指数退避)
* 每次请求后随机 `14` 秒延迟,减轻服务器压力。
---
## 5. 接口清单总览
以下均为 `POST` 接口,路径相对于 Base URL。
| 模块 | 接口名称 | Path | 是否分页(按脚本设计) |
| ------- | ------- | ---------------------------------------------------- | ----------------- |
| 会员 | 会员档案 | `/MemberProfile/GetTenantMemberList` | 是(`page`,`limit` |
| 会员 | 余额变更记录 | `/MemberProfile/GetMemberCardBalanceChange` | 是 |
| 会员 | 储值卡列表 | `/MemberProfile/GetTenantMemberCardList` | 是 |
| 会员 / 充值 | 充值记录 | `/Site/GetRechargeSettleList` | 是 |
| 助教 | 助教废除 | `/AssistantPerformance/GetAbolitionAssistant` | 是 |
| 助教 | 助教流水 | `/AssistantPerformance/GetOrderAssistantDetails` | 是 |
| 助教 | 助教账号1 | `/PersonnelManagement/SearchAssistantInfo` | 是 |
| 助教 | 助教账号2 | `/PersonnelManagement/SearchAssistantInfo` | 是 |
| 台桌 | 台桌列表 | `/Table/GetSiteTables` | 是 |
| 台费 | 台费打折 | `/Site/GetTaiFeeAdjustList` | 是 |
| 台费 | 台费流水 | `/Site/GetSiteTableOrderDetails` | 是 |
| 商品 | 商品档案 | `/TenantGoods/QueryTenantGoods` | 是 |
| 团购 | 团购套餐 | `/PackageCoupon/QueryPackageCouponList` | 是 |
| 团购 | 团购套餐流水 | `/Site/GetSiteTableUseDetails` | 是 |
| 订单 | 小票详情 | `/Order/GetOrderSettleTicketNew` | 否(单笔/批量按 ID |
| 营销 / 券 | 平台验券记录 | `/Promotion/GetOfflineCouponConsumePageList` | 是 |
| 库存 | 库存变化记录1 | `/GoodsStockManage/QueryGoodsOutboundReceipt` | 是 |
| 库存 | 库存变化记录2 | `/TenantGoodsCategory/QueryPrimarySecondaryCategory` | 是 |
| 库存 | 库存汇总 | `/TenantGoods/GetGoodsStockReport` | 是 |
| 支付 | 支付记录 | `/PayLog/GetPayLogListPage` | 是 |
| 结账 | 结账记录 | `/Site/GetAllOrderSettleList` | 是 |
| 订单 | 退款记录 | `/Order/GetRefundPayLogList` | 是 |
| 商品 / 门店 | 门店商品档案1 | `/TenantGoods/GetGoodsInventoryList` | 是 |
| 商品 / 销售 | 门店销售记录 | `/TenantGoods/GetGoodsSalesList` | 是 |
---
## 6. 接口详情(参数级,按模块整理)
下面只写“请求参数层面”的反推说明响应字段请结合etl_billiards/tests/source-data-doc目录下的 `.json` + `.md` 报告使用。
### 6.1 助教相关接口
#### 6.1.1 助教流水 GetOrderAssistantDetails
* 中文名称:助教流水
* Path`/AssistantPerformance/GetOrderAssistantDetails`
* MethodPOST
* 是否分页:是
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ----------- | ------ | -- | ----------------------------- |
| `siteId` | int64 | 是 | 门店 ID |
| `startTime` | string | 是 | 起始时间(含),`YYYY-MM-DD HH:MM:SS` |
| `endTime` | string | 是 | 结束时间(含) |
| `IsConfirm` | int | 否 | 业绩确认状态(枚举,具体含义待确认) |
| `page` | int | 是 | 页码,从 1 开始 |
| `limit` | int | 是 | 每页条数 |
#### 6.1.2 助教废除 GetAbolitionAssistant
* Path`/AssistantPerformance/GetAbolitionAssistant`
* MethodPOST
* 是否分页:是
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ----------- | ------ | -- | ----- |
| `startTime` | string | 是 | 起始时间 |
| `endTime` | string | 是 | 结束时间 |
| `siteId` | int64 | 是 | 门店 ID |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
#### 6.1.3 助教账号1 / 2 SearchAssistantInfo
* Path`/PersonnelManagement/SearchAssistantInfo`
* 两个名称助教账号1/2仅是脚本中拆分实际路径一致可以视为不同筛选组合。
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ----------------- | ----- | -- | ------------ |
| `siteId` | int64 | 是 | 门店 ID |
| `workStatusEnum` | int | 否 | 在职 / 离职状态 |
| `dingTalkSynced` | int | 否 | 是否同步钉钉 |
| `leaveId` | int | 否 | 请假状态/ID待确认 |
| `criticismStatus` | int | 否 | 处分/批评状态(待确认) |
| `signStatus` | int | 否 | 签到状态(待确认) |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
### 6.2 台桌 / 台费接口
#### 6.2.1 台桌列表 GetSiteTables
* Path`/Table/GetSiteTables`
* MethodPOST
* 是否分页:是
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ------------------ | --- | -- | ------------ |
| `showStatus` | int | 否 | 展示状态(启用/停用等) |
| `virtualTableType` | int | 否 | 虚拟台桌类型 |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
#### 6.2.2 台费流水 GetSiteTableOrderDetails
* Path`/Site/GetSiteTableOrderDetails`
* MethodPOST
* 是否分页:是
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| --------------- | ------ | -- | ----------- |
| `startTime` | string | 是 | 起始时间 |
| `endTime` | string | 是 | 结束时间 |
| `siteId` | int64 | 是 | 门店 ID |
| `isSaleManUser` | int | 否 | 是否按销售人员维度过滤 |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
#### 6.2.3 台费打折 GetTaiFeeAdjustList
* Path`/Site/GetTaiFeeAdjustList`
* MethodPOST
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ----------- | ------ | -- | ----- |
| `startTime` | string | 是 | 起始时间 |
| `endTime` | string | 是 | 结束时间 |
| `siteId` | int64 | 是 | 门店 ID |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
### 6.3 会员相关接口
#### 6.3.1 会员档案 GetTenantMemberList
* Path`/MemberProfile/GetTenantMemberList`
* MethodPOST
* 是否分页:是
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| --------------------- | --- | -- | --------- |
| `isMemberInBlackList` | int | 否 | 是否黑名单 |
| `status_Revoked` | int | 否 | 会员状态(注销等) |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
> 备注:样本 JSON 显示列表字段为 `tenantMemberInfos`,包含 `id`、`system_member_id`、`member_card_grade_code` 等字段,具体字段含义详见对应 `.md` 报告。
#### 6.3.2 余额变更记录 GetMemberCardBalanceChange
* Path`/MemberProfile/GetMemberCardBalanceChange`
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ----------- | ------ | -- | ------ |
| `startTime` | string | 是 | 变更起始时间 |
| `endTime` | string | 是 | 变更结束时间 |
| `fromType` | int | 否 | 变更来源类型 |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
#### 6.3.3 储值卡列表 GetTenantMemberCardList
* Path`/MemberProfile/GetTenantMemberCardList`
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ----------------- | ----- | -- | ----- |
| `siteId` | int64 | 是 | 门店 ID |
| `cardPhysicsType` | int | 否 | 卡实体类型 |
| `status` | int | 否 | 卡状态 |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
#### 6.3.4 充值记录 GetRechargeSettleList
* Path`/Site/GetRechargeSettleList`
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ---------------- | ------ | -- | ------------ |
| `settleType` | int | 否 | 结账/充值类型 |
| `paymentMethod` | int | 否 | 支付方式 |
| `rangeStartTime` | string | 是 | 充值时间起 |
| `rangeEndTime` | string | 是 | 充值时间止 |
| `siteId` | int64 | 是 | 门店 ID |
| `isFirst` | int | 否 | 是否首单/首充(待确认) |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
### 6.4 支付 / 结账 / 订单接口
#### 6.4.1 支付记录 GetPayLogListPage
* Path`/PayLog/GetPayLogListPage`
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ------------------ | ------ | -- | ----- |
| `StartPayTime` | string | 是 | 支付时间起 |
| `EndPayTime` | string | 是 | 支付时间止 |
| `siteId` | int64 | 是 | 门店 ID |
| `OnlinePayChannel` | int | 否 | 支付渠道 |
| `paymentMethod` | int | 否 | 支付方式 |
| `relateType` | int | 否 | 关联类型 |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
#### 6.4.2 结账记录 GetAllOrderSettleList
* Path`/Site/GetAllOrderSettleList`
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| --------------------- | ---------- | -- | -------- |
| `settleType` | int | 否 | 结账类型 |
| `rangeStartTime` | string | 是 | 结账时间起 |
| `rangeEndTime` | string | 是 | 结账时间止 |
| `siteId` | int64 | 是 | 门店 ID |
| `siteTableAreaIdList` | array<int> | 否 | 台桌区域ID列表 |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
#### 6.4.3 退款记录 GetRefundPayLogList
* Path`/Order/GetRefundPayLogList`
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ----------- | ------ | -- | ----- |
| `startTime` | string | 是 | 退款时间起 |
| `endTime` | string | 是 | 退款时间止 |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
#### 6.4.4 小票详情 GetOrderSettleTicketNew
* Path`/Order/GetOrderSettleTicketNew`
* MethodPOST
* 设计上非分页接口,每次查询一个 `orderSettleId`,但可以在客户端循环批量调用。
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| --------------- | ----- | -- | ------------ |
| `orderSettleId` | int64 | 是 | 结算单 ID单个小票 |
脚本级批量用法:遍历 `orderSettleIdList`,每个 ID 调用一次该接口,将结果追加到数组中再保存。
### 6.5 商品 / 库存 / 销售接口
#### 6.5.1 商品档案 QueryTenantGoods
* Path`/TenantGoods/QueryTenantGoods`
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ------------------- | --- | -- | -------------- |
| `costPriceType` | int | 否 | 成本价类型 |
| `ableDiscount` | int | 否 | 是否可打折(-1 表示全部) |
| `tenantGoodsStatus` | int | 否 | 商品状态 |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
#### 6.5.2 门店商品档案1 GetGoodsInventoryList
* Path`/TenantGoods/GetGoodsInventoryList`
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ----------------------- | ------------ | -- | ------------------------- |
| `goodsSecondCategoryId` | array<int> | 否 | 二级分类 ID |
| `goodsState` | int | 否 | 商品状态 |
| `enableStatus` | int | 否 | 启用状态 |
| `siteId` | array<int64> | 是 | 门店 ID 列表(脚本会把单个 ID 包装为数组) |
| `existsGoodsStock` | int | 否 | 是否仅查有库存 |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
#### 6.5.4 门店销售记录 GetGoodsSalesList
* Path`/TenantGoods/GetGoodsSalesList`
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ---------------- | ------ | -- | -------------- |
| `isSalesBind` | int | 否 | 是否按销售绑定过滤 |
| `startTime` | string | 是 | 销售时间起 |
| `endTime` | string | 是 | 销售时间止 |
| `goodsSalesType` | int | 否 | 销售维度(按单品 / 分类) |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
#### 6.5.5 库存变化记录1 QueryGoodsOutboundReceipt
* Path`/GoodsStockManage/QueryGoodsOutboundReceipt`
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ----------- | ------ | -- | ------ |
| `siteId` | int64 | 是 | 门店 ID |
| `stockType` | int | 否 | 库存变动类型 |
| `startTime` | string | 是 | 变动时间起 |
| `endTime` | string | 是 | 变动时间止 |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
#### 6.5.6 库存变化记录2 QueryPrimarySecondaryCategory
* Path`/TenantGoodsCategory/QueryPrimarySecondaryCategory`
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ----------- | ------ | -- | ------- |
| `siteId` | int64 | 是 | 门店 ID |
| `startTime` | string | 否 | 时间起(如有) |
| `endTime` | string | 否 | 时间止(如有) |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
#### 6.5.7 库存汇总 GetGoodsStockReport
* Path`/TenantGoods/GetGoodsStockReport`
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ----------- | ------ | -- | ----- |
| `siteId` | int64 | 是 | 门店 ID |
| `startTime` | string | 否 | 时间过滤起 |
| `endTime` | string | 否 | 时间过滤止 |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
### 6.6 团购 / 验券接口
#### 6.6.1 团购套餐 QueryPackageCouponList
* Path`/PackageCoupon/QueryPackageCouponList`
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ---------------------- | --- | -- | ----- |
| `areaId` | int | 否 | 区域 ID |
| `commonShowStatus` | int | 否 | 展示状态 |
| `offlineCouponChannel` | int | 否 | 券渠道 |
| `systemGroupType` | int | 否 | 套餐类型 |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
#### 6.6.2 团购套餐流水 GetSiteTableUseDetails
* Path`/Site/GetSiteTableUseDetails`
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ---------------------- | ------ | -- | ----- |
| `siteId` | int64 | 是 | 门店 ID |
| `offlineCouponChannel` | int | 否 | 券渠道 |
| `startTime` | string | 是 | 使用时间起 |
| `endTime` | string | 是 | 使用时间止 |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
#### 6.6.3 平台验券记录 GetOfflineCouponConsumePageList
* Path`/Promotion/GetOfflineCouponConsumePageList`
**请求参数:**
| 字段名 | 类型 | 必填 | 说明 |
| ----------------- | ------ | -- | ----- |
| `couponChannel` | int | 否 | 券渠道 |
| `startTime` | string | 是 | 验券时间起 |
| `endTime` | string | 是 | 验券时间止 |
| `siteId` | int64 | 是 | 门店 ID |
| `couponUseStatus` | int | 否 | 券使用状态 |
| `page` | int | 是 | 页码 |
| `limit` | int | 是 | 每页条数 |
---