Files

26 lines
1.3 KiB
Markdown

# 数据库设计
## 设计原则
- MySQL 8.4 是生产事实源,Redis 只保存限流、验证码、会话辅助和缓存数据。
- 金额统一以 `*_cent` 的整数分存储;数量和比例字段按业务精度单独定义。
- 核心写入通过 GORM 事务完成,钱包账户更新使用行锁并同步写入不可变流水。
- 表结构由 `backend/migrations` 下的 Goose 迁移管理,应用启动不自动修改生产表结构。
## 核心领域
- 用户与权限:`users`、`admin_users`、角色、权限及关联表。
- 商品:租赁商品、账号、资产截图、审核记录和状态事件。
- 订单:租赁订单、交接记录、结账协商、过程事件和申诉。
- 资金:支付单、退款单、钱包账户、钱包流水、收款账号和提现申请。
- 运营:系统配置、公告、通知、聊天、二维码池、推送规则和撞车商品。
## 一致性约束
- 下单时在事务内锁定可租商品,避免重复出租。
- 支付状态、订单状态和商品状态在同一业务事务内推进。
- 钱包每次余额变化必须生成对应流水,提现在待审核阶段将可用余额转为冻结余额。
- 支付通知和业务单号使用唯一索引实现幂等。
索引、慢查询、连接池和备份恢复细则见[数据库 SQL 约束与运维](数据库SQL约束与运维.md)。