Appearance
积分流水 PointsFlow 账本模型
概述
PointsFlow 用于记录用户积分的每一次变动,是积分系统的权威账本。
字段定义
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| flowId | string | 是 | - | 流水 ID |
| userId | string | 是 | - | 用户 ID |
| bizType | enum | 是 | - | 业务类型 |
| bizId | string | 是 | - | 业务 ID |
| ledgerType | enum | 是 | increase | 账务类型(权威) |
| changeType | enum | 否 | null | 增减类型,可由 ledgerType 推导 |
| pointsDelta | int | 是 | 0 | 变动值 |
| balanceAfter | int | 是 | 0 | 变动后余额 |
| availableBalanceAfter | int | 是 | 0 | 变动后可用余额 |
| remark | string | 否 | null | 备注 |
| createdAt | datetime | 是 | 当前时间 | 创建时间 |
业务类型 bizType
checkin:打卡badge:徽章奖励lottery:抽奖order:订单refund:退款atlas:图鉴manual:人工调整
账务类型 ledgerType
increase:增加decrease:扣减freeze:冻结unfreeze:解冻refund:退回
changeType 推导规则
increase -> increasedecrease / freeze -> decreaseunfreeze / refund -> increase
设计要点
ledgerType是权威字段,changeType可视为展示或检索辅助字段。balanceAfter与availableBalanceAfter要同时保存,支持冻结积分场景。- 建议通过
bizType + bizId + userId建立幂等控制,避免重复记账。 - 所有积分变动都应落账,避免仅更新余额而无流水记录。
