Files
shaguabijia-app-server/docs/database/cash_transaction.md
T
marco b4780e256e docs(database): 补全 19 表文档 + 新增 OVERVIEW 总览
- 重写 15 张已有表文档:每张补「用在 App 哪/增删改查时机/字段取值/join key 指向」
- 新建 4 张缺失表文档:wechat_transfer_authorization / ad_watch_log / price_report / app_config
- 新增 OVERVIEW.md:功能↔表映射 + 写入路径 + 表间关系(含语义 join key)+ ER + 资金模型
- README 索引补齐到 19 表 + 置顶 OVERVIEW + 通用约定补全
- 纠正过时:withdraw_order(reviewing/rejected/user_name)、savings_record(/order/report 真实写入)、coin_transaction(biz_type)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 00:25:57 +08:00

2.4 KiB
Raw Blame History

cash_transaction — 现金流水账本(分)

模型 app/models/wallet.py · 仓库 app/repositories/wallet.py · 接口 wallet-cash-transactions · ← 索引 · 总览

现金每变动一笔就记一行(单位:,记变动后余额)。金币兑现金、提现、提现退款都落这里。只增不改不删

用在哪 / 增删改查

  • C(插入):三个来源,每次写一笔:

    动作 / endpoint biz_type amount_cents ref_id 指向
    金币兑现金 POST /wallet/exchange exchange_in + null(配套 coin_transaction.exchange_out)
    发起提现 POST /wallet/withdraw withdraw (扣现金) withdraw_order.out_bill_no
    提现失败/取消/审核拒绝退款 withdraw_refund +(退回) withdraw_order.out_bill_no
  • U / D:无。账本只追加。

  • R:GET /wallet/cash-transactions(现金明细,id 倒序游标);admin 跨用户现金流水。

字段

类型 约束 / 默认 说明(取值 / join)
id Integer PK, autoincrement
user_id Integer FK→user.id, index, NOT NULL 归属用户
amount_cents Integer NOT NULL 本笔变动现金(分);正=入账(兑入/退款),负=出账(提现)
balance_after_cents Integer NOT NULL 本笔后现金余额(= 当时 coin_account.cash_balance_cents)
biz_type String(32) NOT NULL 取值:exchange_in(兑入)/ withdraw(提现出账)/ withdraw_refund(提现退回)
ref_id String(64) nullable withdraw/withdraw_refund 时 = withdraw_order.out_bill_no;exchange_in 为 null
remark String(128) nullable 用户可见备注(如「提现到微信零钱(待审核)」「提现审核未通过,金额已退回」)
created_at DateTime(tz) server_default now(), index 时间

关系 / Join Key

  • user_iduser.id(多对一)。
  • ref_id →(仅 withdraw/withdraw_refund)withdraw_order.out_bill_no(软关联,无 FK)。一笔提现正常对应两条流水:发起 withdraw(),失败/拒绝时再 withdraw_refund(+)。

索引与约束

  • PK id;index user_idcreated_at

注意

  • 退款流水 remark 是用户可见文案(区分"未成功自动退"vs"审核未通过退");技术原因记在 withdraw_order.fail_reason,不外露。