init: 项目初始提交 - NeoZQYY Monorepo 完整代码

This commit is contained in:
Neo
2026-02-15 14:58:14 +08:00
commit ded6dfb9d8
769 changed files with 182616 additions and 0 deletions

View File

@@ -0,0 +1,874 @@
# 充值结算记录GetRechargeSettleList
> 自动生成于 2026-02-13 | 数据来源:实时 API
## 基本信息
| 属性 | 值 |
|------|-----|
| 接口路径 | `Site/GetRechargeSettleList` |
| 完整 URL | `https://pc.ficoo.vip/apiprod/admin/v1/Site/GetRechargeSettleList` |
| 请求方法 | `POST` |
| Content-Type | `application/json` |
| 鉴权方式 | Bearer Token`Authorization` 头) |
| ODS 对应表 | `recharge_settlements` |
| 分页方式 | `page` + `limit`(最大 100 |
| 时间范围 | 需要rangeStartTime / rangeEndTime |
## 请求参数
| 参数名 | 类型 | 示例值 | 说明 |
|--------|------|--------|------|
| `settleType` | int | `0` | 结算类型0=全部) |
| `paymentMethod` | int | `0` | 支付方式0=全部) |
| `rangeStartTime` | string | `"2026-02-01 08:00:00"` | 查询起始时间 |
| `rangeEndTime` | string | `"2026-02-13 08:00:00"` | 查询结束时间 |
| `siteId` | int | `2790685415443269` | 门店 ID |
| `isFirst` | int | `0` | 是否首充0=全部) |
| `page` | int | `1` | 页码(从 1 开始) |
| `limit` | int | `100` | 每页条数(最大 100 |
## 响应字段(共 92 个)
| # | 字段名 | 类型 | 示例值 |
|---|--------|------|--------|
| 1 | `id` | int | 3087072625102533 |
| 2 | `tenantId` | int | 2790683160709957 |
| 3 | `siteId` | int | 2790685415443269 |
| 4 | `siteName` | string | '' |
| 5 | `balanceAmount` | float | 0.0 |
| 6 | `cardAmount` | float | 0.0 |
| 7 | `cashAmount` | float | 0.0 |
| 8 | `couponAmount` | float | 0.0 |
| 9 | `createTime` | string | '2026-02-09 05:12:42' |
| 10 | `memberId` | int | 2799207363643141 |
| 11 | `memberName` | string | '葛先生' |
| 12 | `tenantMemberCardId` | int | 2799216572794629 |
| 13 | `memberCardTypeName` | string | '储值卡' |
| 14 | `memberPhone` | string | '13811638071' |
| 15 | `tableId` | int | 0 |
| 16 | `consumeMoney` | float | 10000.0 |
| 17 | `onlineAmount` | float | 0.0 |
| 18 | `operatorId` | int | 2790687322443013 |
| 19 | `operatorName` | string | '收银员:郑丽珊' |
| 20 | `revokeOrderId` | int | 0 |
| 21 | `revokeOrderName` | string | '' |
| 22 | `revokeTime` | string | '0001-01-01 00:00:00' |
| 23 | `payAmount` | float | 10000.0 |
| 24 | `pointAmount` | float | 10000.0 |
| 25 | `refundAmount` | float | 0.0 |
| 26 | `settleName` | string | '充值订单' |
| 27 | `settleRelateId` | int | 3087072624987845 |
| 28 | `settleStatus` | int | 2 |
| 29 | `settleType` | int | 5 |
| 30 | `payTime` | string | '2026-02-09 05:12:42' |
| 31 | `roundingAmount` | float | 0.0 |
| 32 | `paymentMethod` | int | 4 |
| 33 | `adjustAmount` | float | 0.0 |
| 34 | `assistantCxMoney` | float | 0.0 |
| 35 | `assistantPdMoney` | float | 0.0 |
| 36 | `couponSaleAmount` | float | 0.0 |
| 37 | `plCouponSaleAmount` | float | 0.0 |
| 38 | `merVouSalesAmount` | float | 0.0 |
| 39 | `memberDiscountAmount` | float | 0.0 |
| 40 | `tableChargeMoney` | float | 0.0 |
| 41 | `goodsMoney` | float | 0.0 |
| 42 | `realGoodsMoney` | float | 0.0 |
| 43 | `serviceMoney` | float | 0.0 |
| 44 | `prepayMoney` | float | 0.0 |
| 45 | `salesManName` | string | '' |
| 46 | `orderRemark` | string | '' |
| 47 | `salesManUserId` | int | 0 |
| 48 | `canBeRevoked` | bool | False |
| 49 | `pointDiscountPrice` | float | 0.0 |
| 50 | `pointDiscountCost` | float | 0.0 |
| 51 | `activityDiscount` | float | 0.0 |
| 52 | `serialNumber` | int | 0 |
| 53 | `assistantManualDiscount` | float | 0.0 |
| 54 | `allCouponDiscount` | float | 0.0 |
| 55 | `goodsPromotionMoney` | float | 0.0 |
| 56 | `assistantPromotionMoney` | float | 0.0 |
| 57 | `isUseCoupon` | bool | False |
| 58 | `isUseDiscount` | bool | False |
| 59 | `isActivity` | bool | False |
| 60 | `isBindMember` | bool | False |
| 61 | `isFirst` | int | 2 |
| 62 | `rechargeCardAmount` | int | 0 |
| 63 | `giftCardAmount` | int | 0 |
| 64 | `electricityMoney` | float | 0.0 |
| 65 | `realElectricityMoney` | float | 0.0 |
| 66 | `electricityAdjustMoney` | float | 0.0 |
| 67 | `siteProfile.id` | int | 2790685415443269 |
| 68 | `siteProfile.org_id` | int | 2790684179467077 |
| 69 | `siteProfile.shop_name` | string | '朗朗桌球' |
| 70 | `siteProfile.avatar` | string | 'https://oss.ficoo.vip/admin/hXcE4E_1752495052016.jpg' |
| 71 | `siteProfile.business_tel` | string | '13316068642' |
| 72 | `siteProfile.full_address` | string | '广东省广州市天河区丽阳街12号' |
| 73 | `siteProfile.address` | string | '广东省广州市天河区天园街道朗朗桌球' |
| 74 | `siteProfile.longitude` | float | 113.360321 |
| 75 | `siteProfile.latitude` | float | 23.133629 |
| 76 | `siteProfile.tenant_site_region_id` | int | 156440100 |
| 77 | `siteProfile.tenant_id` | int | 2790683160709957 |
| 78 | `siteProfile.auto_light` | int | 1 |
| 79 | `siteProfile.attendance_distance` | int | 0 |
| 80 | `siteProfile.wifi_name` | string | '' |
| 81 | `siteProfile.wifi_password` | string | '' |
| 82 | `siteProfile.customer_service_qrcode` | string | '' |
| 83 | `siteProfile.customer_service_wechat` | string | '' |
| 84 | `siteProfile.fixed_pay_qrCode` | string | '' |
| 85 | `siteProfile.prod_env` | int | 1 |
| 86 | `siteProfile.light_status` | int | 1 |
| 87 | `siteProfile.light_type` | int | 0 |
| 88 | `siteProfile.site_type` | int | 1 |
| 89 | `siteProfile.light_token` | string | '' |
| 90 | `siteProfile.site_label` | string | 'A' |
| 91 | `siteProfile.attendance_enabled` | int | 1 |
| 92 | `siteProfile.shop_status` | int | 1 |
## 新增字段(相对本地 JSON 样本)
以下字段在最新 API 响应中出现,但本地 JSON 样本中不存在:
| 字段名 | 类型 |
|--------|------|
| `electricityAdjustMoney` | float |
| `electricityMoney` | float |
| `merVouSalesAmount` | float |
| `plCouponSaleAmount` | float |
| `realElectricityMoney` | float |
## 详细字段分析
> 以下内容迁移自旧版 `recharge_settlements-Analysis.md`,包含字段的业务含义、枚举值、跨表关联等详细说明。
二、siteProfile门店维度快照
每条记录都带一个相同的 siteProfile表示当前门店信息。字段含义与之前文件中的 siteProfile 一致:
id
类型int
含义:门店 ID。
与各 JSON 中的 site_id 一致。
org_id
类型int
含义:门店所属组织 ID类似“门店所在公司/组织”)。
shop_name
类型string
示例:"朗朗桌球"
含义:门店名称。
avatar
类型string
含义:门店头像图片 URL。
business_tel
类型string
含义:门店电话。
full_address
类型string
含义:完整门店地址。
address
类型string
含义:精简地址/展示用地址。
longitude / latitude
类型float
含义:门店经纬度。
tenant_site_region_id
类型int
含义:门店所属行政区域编码(内部编码)。
tenant_id
类型int
含义:租户/品牌 ID对应所有表里的 tenantId 或 tenant_id。
auto_light / light_status / light_type / light_token
类型int / string
含义:门店灯控相关配置(是否智能控灯、灯控类型、对接凭证等)。
attendance_distance / attendance_enabled
类型int / int
含义:考勤打卡相关配置(打卡有效范围、是否启用考勤)。
wifi_name / wifi_password
类型string
含义:门店 WiFi 信息(当前为空)。
customer_service_qrcode / customer_service_wechat
类型string
含义:客服二维码 / 客服微信。
fixed_pay_qrCode
类型string
含义:固定收款码图片 URL。
prod_env
类型int
含义环境标志1=线上环境,非测试)。
site_type
类型int
含义:门店类型(枚举,当前为 1
site_label
类型string
示例:"A"
含义:门店标签/分组标签。
shop_status
类型int
含义:门店营业状态(枚举,当前为 1=营业中)。
以上字段在本文件中值基本固定,仅起到“门店快照”作用。
三、内层 settleList单条充值结算记录字段说明
以下所有字段均来自内层 settleList即每条充值记录
为便于阅读,按“主键与关联”、“会员与卡”、“金额相关”、“优惠相关”、“状态与类型”、“时间字段”、“操作人与渠道”等分组说明。
1. 主键与关联维度字段
id
类型int
含义:本条充值结算记录的主键 ID唯一标识一条充值/撤销记录)。
唯一性74 条记录全部不同。
tenantId
类型int
当前值:同一租户 ID。
含义:租户/品牌 ID和 siteProfile.tenant_id 一致。
siteId
类型int
当前值:同一门店 ID。
含义:门店 ID和 siteProfile.id 一致。
siteName
类型string
当前值:"朗朗桌球"
含义:门店名称,与 siteProfile.shop_name 一致。
tableId
类型int
当前值:全部为 0。
含义(从命名看):原本用于关联台桌 ID。
在充值场景中未使用(全部为 0可理解为“充值记录不依附具体球台”。
serialNumber
类型int
当前值:全部为 0。
含义(推测):流水号/小票序号字段;本门店当前未启用或未写入。
settleRelateId
类型int
唯一值74 条记录全部不同。
含义(推测):关联的“结算单/业务单”ID。
根据命名,极可能等于“充值订单主表”的主键,或与支付记录里的 relate_id 相呼应,用于跨表追踪。
settleType
类型int枚举
取值及含义(由数据反推):
5settleName = "充值订单"(正常充值)
7settleName = "充值撤销"(充值撤销记录)
说明:这一枚举区分了充值 vs 撤销两类业务动作。
settleName
类型string
枚举值:
"充值订单":对应 settleType = 5
"充值撤销":对应 settleType = 7
含义:业务类型名称,用于前端展示。
settleStatus
类型int枚举
当前值:全部为 2
含义(推测):
2已完成/已结算。
说明:本次导出只保留了完成状态的充值/撤销记录,未包含未完成或待支付状态。
revokeOrderId
类型int
值分布:
对多数正常充值记录:为对应的撤销单 ID 组成的某种映射(部分为 0部分为某 ID
对撤销记录本身,一般也会有对应关系,用来指向被撤销的原始订单。
含义(推测):与撤销相关的订单 ID原订单或撤销单的指针
revokeOrderName
类型string
当前值:全部为空字符串。
含义:撤销单名称/说明,当前未使用。
revokeTime
类型string时间
当前值:全部为 ""(空字符串)。
含义:撤销发生时间。
实际撤销信息现在通过 “充值订单 + 退款金额 + 充值撤销记录” 来体现,该字段未真正使用。
从结构看,这个“充值记录”表沿用了通用“结算单”的模型,预留了多种业务场景字段(包括撤销相关的信息),但本门店实际使用方式是:
原始充值记录 settleType = 5, settleName = "充值订单"payAmount > 0。
对应的退款信息通过 refundAmount 或单独的 settleType = 7 记录负数金额体现revoke* 字段目前保持空/0。
2. 会员与会员卡相关字段
memberId
类型int
含义:会员档案的主键 ID。
关联:
对应“会员档案.json”中 tenantMemberInfos 的 id 字段(部分成员能直接匹配)。
用途:标识给哪位会员充值。
memberName
类型string
值示例:"轩哥", "羊", "夏", 以及一些手机号字符串。
含义:会员名称/昵称快照。
说明:此处记录的是当时会员名字,后续会员改名时,本记录不变(快照字段)。
memberPhone
类型string
含义:会员手机号快照,用于查找和展示。
memberCardTypeName
类型string枚举
当前值:
"储值卡" 占绝大多数
"月卡" 仅 1 条(对应一次月卡充值)
含义:本次充值针对的会员卡类型名称。
tenantMemberCardId
类型int
含义:会员卡实例 ID某张具体卡
说明:
多个充值记录可能对应同一张卡(同一个 ID 多次出现)。
这类 ID 通常对应“会员卡表”的主键(本次导出中该表未单独出现)。
isBindMember
类型bool
当前值:全部为 False
含义(结合命名推测):是否绑定为会员(或是否有绑定的推荐人/员工等)。
但由于本数据中所有充值都有 memberId而 isBindMember 全为 False实际业务含义可能已经变化或未使用需以系统配置为准。
isFirst
类型int枚举
当前值1 或 2
1 出现 11 次
2 出现 63 次
命名上很明显是“是否首次”的含义,但从现有数据看,同一会员有时只有 2说明缺失了更早的记录或编码含义稍有偏差。
建议:业务解释上视为“是否首单/首充”的标志,但具体 1/2 对应什么角色需要系统字典确认。
3. 金额相关字段(充值金额结构,不做盈利分析)
这一部分是本表的核心。
所有金额类型统一为 float单位为“元”。
3.1 充值总额与退款
payAmount
含义:本次记录对应的充值金额(含正负)。
特点:
正数实际充值金额1000, 3000, 5000, 10000, 44000 等)。
负数:撤销或冲销金额(-3000, -5000, -10000, -44000 等)。
与 settleType 的关系:
"充值订单"settleType=5绝大多数为正值少数被退款的记录仍为正值但 refundAmount>0。
"充值撤销"settleType=7金额为负值。
refundAmount
含义:针对本条充值订单所做的退款金额(通常为正数)。
分布:
大部分记录为 0。
少数记录为 10000、5000、44000、3000 等,与对应的 payAmount 完全相等。
配合观察:
有一条 "充值订单" 记录 payAmount=10000同时 refundAmount=10000。
对应存在一条 "充值撤销" 记录payAmount=-10000refundAmount=0。
结构含义:
原始充值单通过 refundAmount 标记“已被退款”,
同时生成对应的 "充值撤销" 负值记录作为记账流水。
3.2 资金来源 / 支付渠道拆分(本数据中未细分)
balanceAmount
当前值:全部为 0。
命名含义:从“账户余额”支付的金额(在充值场景中不适用,因此为 0
cardAmount
当前值:全部为 0。
命名含义:从某种“储值卡 / 会员卡余额”为消费来源的金额(本表为充值,不是消费,暂未使用)。
cashAmount
当前值:极少数记录为 3000、5000其余为 0。
含义:现金收款金额。
onlineAmount
当前值:全部为 0。
命名含义:线上支付金额(微信/支付宝等),当前门店这段时间的充值可能按统一支付方式计入 payAmount而没有拆渠道。
couponAmount
当前值:全部为 0。
含义:用券直接支付的金额(例如储值券),在本充值场景中未使用。
3.3 积分、到账金额类
pointAmount
含义(结合取值关系推断):计入会员账户的“储值金额”或“积分型金额”。
特征:
多数情况下等于 payAmount 的绝对值。
对于被完全撤销的场景:
"充值订单"payAmount>0pointAmount 仍为正值;
"充值撤销":相应记录 pointAmount=0。
因此 pointAmount 更像是“本条生效后,卡上增加的金额”,而撤销记录不再增加金额。
rechargeCardAmount
当前值:全部为 0。
命名含义:充值到卡上的金额(可能用于区分“余额型卡充值额”和“赠送/积分”等),当前没有单独拆出。
giftCardAmount
当前值:全部为 0。
含义(推测):赠送卡金额(如买 1000 送 100 的 100 部分)。
prepayMoney
当前值:全部为 0。
命名含义:预付款金额(如订金)。本门店充值没有使用该维度。
3.4 消费相关金额(在充值场景中为 0
以下字段在通用结算模型中用于“商品/台费/服务”消费金额,本表为纯充值场景,因此全部为 0仅列明用途
consumeMoney
当前值0
含义:总消费金额(消费类订单使用)。
goodsMoney
当前值0
含义:商品消费金额。
realGoodsMoney
当前值0
含义:实际商品应计金额(可能扣除折扣后的商品金额)。
tableChargeMoney
当前值0
含义:台费金额。
serviceMoney
当前值0
含义:服务类项目金额(例如助教、其他服务)。
4. 优惠、折扣、活动相关字段(当前数据几乎全 0
这些字段是通用结算模型中用于记录活动优惠、商品促销、助教促销等的金额,在本充值场景下本店未用到,全部为 0.0
activityDiscount
含义:营销活动折扣金额。
allCouponDiscount
含义:各类优惠券、团购券综合折扣金额。
goodsPromotionMoney
含义:商品促销优惠金额。
assistantPromotionMoney
含义:助教相关促销优惠金额。
assistantPdMoney
含义:助教配单金额/相关费用。
assistantCxMoney
含义:助教促销或冲销相关金额。
assistantManualDiscount
含义:助教手动减免金额。
couponSaleAmount
含义:出售券/套餐的金额(与消费类订单相关)。
memberDiscountAmount
含义:因会员折扣产生的优惠金额。
pointDiscountPrice / pointDiscountCost
含义:积分抵扣产生的价差/成本。
adjustAmount
含义:结算时手工调整金额(四舍五入以外的修正)。
roundingAmount
含义:抹零金额(尾数四舍五入处理产生的差额)。
以上字段设计说明:
充值记录数据结构复用了“结算单”的全量字段,实际场景仅使用了“充值金额、退款金额、积分/储值增加等”少数字段,其余优惠/活动相关字段在当前时间段为全 0。
5. 状态与标志字段
isActivity
类型bool
当前值:全部为 False
含义:是否关联某个营销活动(如充值满送活动)。
当前为 False说明这段时间的充值没有绑定系统内的“活动对象”。
isUseCoupon
类型bool
当前值:全部为 False
含义:本次结算是否使用优惠券。充值未用券。
isUseDiscount
类型bool
当前值:全部为 False
含义:是否使用了折扣(例如会员打折)。
充值一般是面值入账,因此为 False。
canBeRevoked
类型bool
当前值:全部为 False
含义:是否仍可进行撤销操作。
当前导出时,这 74 条记录均不可再撤销(可能是时间窗已过)。
settleStatus
已在上文说明,全部为 2已完成
6. 时间字段
createTime
类型string时间
含义:充值记录创建时间,一般即收银完成时间。
用途:作为时间轴排序和统计依据。
payTime
类型string时间
含义:支付完成时间。
特点在当前数据中createTime 与 payTime 通常非常接近或相同。
revokeTime
类型string
当前值:全部为空。
含义:撤销生效时间,当前未使用。
7. 操作员 / 营业员 / 支付方式字段
operatorId
类型int
含义:操作该笔充值的收银员/员工 ID。
operatorName
类型string
含义:操作员姓名,与 operatorId 对应,便于直接阅读。
salesManName
类型string
当前值:全部为空字符串。
含义:营业员/销售员姓名(与提成相关的角色)。充值记录未单独指定销售员。
salesManUserId
类型int
当前值:全部为 0。
含义:营业员用户 ID。
paymentMethod
类型int枚举
取值1, 2, 4 三种。
含义:支付方式编码。
具体编码→支付渠道的映射(如现金/微信/支付宝/银行卡等)需要参考系统内部“支付方式字典”;
从数据分布看:
大部分充值记录使用 4少数是 1、2实际渠道应为某几种常用支付方式。
8. 备注字段
orderRemark
类型string
当前值:全部为空字符串。
含义:充值单备注,例如手工说明,当前未使用。
四、结构关系与设计线索(不做金额/盈利分析)
从字段结构角度,可以看出以下几点重要信息:
通用“结算单模型”的复用
大量字段(商品金额、台费金额、助教金额、活动优惠、积分抵扣等)在本表都为 0仅充值相关字段有值。
说明“充值记录”不是单独设计的表,而是基于统一的“结算单/收银单结构”,通过 settleType 区分不同业务类型(台费、商品、助教、充值等)。
这也意味着:
在同一套系统中,“台费结算”“商品销售”“助教结算”“充值记录”等 JSON很可能都是同一张逻辑表不同类型的切片。
充值与撤销通过两种机制共同表达
settleType + settleName 用于区分“充值订单”与“充值撤销”。
退款信息通过两种方式表现:
原始充值单上 refundAmount > 0
单独的 "充值撤销" 记录payAmount 为负数。
这说明系统在设计上既保留了原始订单的“退款标签”,又通过负数流水记录真实冲销过程,方便对账和追溯。
会员 ID 与会员卡 ID 的关系
memberId 对应“会员档案.json”中 tenantMemberInfos.id即某个会员主体
tenantMemberCardId 对应的是具体某一张卡的 ID你这批数据没有单独的“会员卡表”但是从命名与取值分布可以看出来它比 memberId 更细一层)。
memberCardTypeName 给出了卡类型(储值卡、月卡等),说明充值记录同时向“会员主体”和“卡实例”两层维度挂钩。
表内未使用但预留的业务扩展点
activityDiscount、isActivity、isUseCoupon、allCouponDiscount 等字段在当前数据中全部为 0/False但结构上已经为“充值参与活动”“充值优惠券”“充值满送”等预留了入口。
goodsMoney、serviceMoney、tableChargeMoney 全为 0说明这张结算结构可以在别的业务场景被复用为综合结算充值 + 消费),本门店当前的充值使用方式非常简单。
门店维度的一致性
siteId / siteName 与 siteProfile.id / siteProfile.shop_name 完全一致,且所有记录都属于同一个门店。
说明该文件仅包含这一家门店的充值流水,和你给的信息“所有数据均来自同一门店”一致。
与其他 JSON 的关联线索(仅从字段命名角度)
与会员档案的关联:
memberId ↔ “会员档案.json” tenantMemberInfos.id
memberName / memberPhone 则是当时的快照。
与支付记录的潜在关联:
settleRelateId 加上 paymentMethod典型用法是在“支付记录”表中通过 relate_type=充值 + relate_id=settleRelateId 进行关联。
与其他结算类 JSON 的一致性:
字段命名和结构goodsMoney, tableChargeMoney, serviceMoney, 折扣类字段)的完整复用,说明“台费结算”“商品销售”“助教流水”“充值记录”几类 JSON是同一个结算域模型的不同“视图”或筛选条件。