Files
study_work/docs/database.md
T

2.5 KiB

Database Draft

第一阶段使用 TypeORM 描述 MySQL 数据模型。当前只保留管理后台的最小底座,并把第三方接口账号改为环境变量配置。

后续数据库设计必须按商城模型扩展:第三方分类/商品和自营分类/商品使用统一业务主干,通过 source_typeproviderexternal_id 等字段区分来源。支付功能先按订单、支付单、支付事件和退款单预留结构,详细说明见 docs/payment-integration.md

Initial Entities

  • users: 管理后台用户。
  • roles: 角色与权限集合。
  • user_roles: 用户角色关联表。
  • api_call_logs: 所有第三方接口调用日志。
  • categories: 商品分类。当前迁移草案偏第三方项目分类缓存,后续需要支持 third_partyself_owned
  • courses: 第三方商品/课程缓存。后续可改造为统一 products,或保留表名但补齐商品来源、价格、库存、上下架和履约类型等字段。

Unified Commerce Model

建议后续补齐或新建以下核心表:

  • products: 商品主表,统一承载第三方课程商品和自营商品。
  • product_skus: 商品规格/套餐表,后续存在周期、套餐、规格时使用。
  • orders: 订单主表,保存订单号、用户、金额、支付状态、履约状态。
  • order_items: 订单明细表,保存商品快照和下单扩展信息。
  • order_fulfillments: 履约记录表,区分第三方 API 提交、本地自动交付和人工处理。
  • payments: 支付单表,记录支付渠道、金额、渠道流水号和支付状态。
  • payment_events: 支付回调、主动查询、退款回调等事件日志。
  • refunds: 退款单表。
  • audit_logs: 后台操作审计日志。

关键来源字段:

  • source_type: third_partyself_owned
  • provider: 第三方供应商标识,当前第三方默认可用 biedawo,自营可为空。
  • external_id: 第三方分类、商品或订单 ID,自营数据为空。
  • fulfillment_type: third_party_apilocal_onlymanual

Third-Party API Config

当前不再维护渠道管理或多套接口账号配置。服务端统一读取:

  • WK_BASE_URL
  • WK_APP_UID
  • WK_APP_KEY

WK_APP_KEY 原样作为第三方 key 使用,前端和日志展示时只允许脱敏显示。

Migration Policy

  • 不在运行时开启 synchronize
  • 本地开发可以通过 TypeORM migration 生成 SQL。
  • 生产环境必须使用 migration 执行结构变更。
  • .env 不提交到仓库,参考 .env.example 创建本地配置。