Skip to content

逻辑架构

实体全景 × 服务目录 — 我们设计了什么,能对外提供什么


设计原则

这张图不是技术部署图(那些在架构总览模块架构),而是逻辑实体与服务能力矩阵

  • 左边:领域实体(模块/表/状态机)—— 回答「我们实际设计了多少东西」
  • 右边:对外服务(可暴露的 API)—— 回答「外部系统能接什么」

一、内部实体全景

1.1 模块清单(10 个业务模块 + 1 个共享模块)

#模块目录数据 Owner实体表数
1authinternal/auth/登录凭证、后台账号、角色权限4
2userinternal/user/用户、地址、积分3
3cataloginternal/catalog/商品、分类、溯源记录3
4inventoryinternal/inventory/批次、库存、锁定、流水4
5orderinternal/order/订单、订单项、售后3
6paymentinternal/payment/支付、回调通知、退款3
7couponinternal/coupon/券模板、用户券2
8deliveryinternal/delivery/配送任务1
9assetinternal/asset/文件元数据1
10sharedinternal/shared/Outbox、幂等、审计4

合计:10 个业务模块,21 张业务表 + 4 张基础设施表 = 25 张表

1.2 状态机清单(6 个)

#状态机状态数终态核心作用
1订单10 个状态completed / cancelled / refunded交易主干流转
2支付6 个状态paid / closed / failed / refunded资金安全闭环
3库存锁定3 个状态confirmed / released并发扣减保证
4优惠券3 个状态used / expired营销资损防控
5配送4 个状态delivered / cancelled履约追踪
6售后3 个状态completed / rejected退款/补发

1.3 API 端点清单(共 58 个)

端点数范围
用户小程序26登录·商品·地址·订单·支付·券·售后
配送端8登录·任务·认领·取货·送达
运营后台24商品·库存·订单·支付·配送·券·审计

二、对外服务目录

以下按「外部系统想接什么」组织,标注已设计/可暴露/需鉴权。

2.1 🛒 商品查询服务

外部场景:合作渠道、内容平台、比价网站需要获取商品信息。

端点方式说明鉴权
GET /api/products列表分页、按分类筛选、状态过滤JWT(用户)或开放
GET /api/products/:id详情商品名、图片、价格、描述JWT 或开放
GET /api/products/:id/trace溯源养殖场、屠宰日期、检疫证明JWT 或开放
GET /api/products/search搜索全文搜索JWT 或开放

可直接暴露:商品查询是天然适合对外开放的服务。加 API Key + 限流即可。

2.2 📋 交易接入服务

外部场景:企业团购系统、福利平台、异业合作需要下单。

端点方式说明鉴权
POST /api/orders/preview预计算输入商品+地址,返回价格快照JWT(强)
POST /api/orders下单正式创建订单,触发库存锁定JWT + 幂等(强)
GET /api/orders列表用户历史订单JWT(强)
GET /api/orders/:order_no详情订单状态、物流JWT(强)
POST /api/orders/:order_no/cancel取消未支付订单取消JWT(强)

需要适配:下单涉及用户、地址、支付,通常需要走标准 OAuth 授权流程,不适合裸 API Key 暴露。

2.3 📊 库存协同服务

外部场景:供应商系统、供应链平台需要查询/同步库存。

端点方式说明鉴权
GET /admin/inventory列表当前库存后台 RBAC
POST /admin/inventory/inbound入库供应商入库后台 RBAC
POST /admin/inventory/adjust调整盘点调整后台 RBAC
GET /admin/inventory/movements流水库存变动记录后台 RBAC

适合 B2B:如果对接供应商系统,可以开专门的 supplier-api 端点,按供应商账号隔离权限。

2.4 💳 支付回调服务

外部场景:微信支付服务器回调(必须暴露)。

端点方式说明鉴权
POST /api/payments/wechat/notify回调微信支付结果通知微信证书验签
GET /api/payments/:order_no查询支付状态JWT(强)
POST /api/payments/refund退款发起退款后台 RBAC

支付回调已设计为对外入口,微信标准验签机制,不依赖内部鉴权。

2.5 🚚 配送调度服务

外部场景:第三方配送平台、骑手 App 需要获取配送任务。

端点方式说明鉴权
POST /api/driver/login登录骑手登录账号密码
GET /api/delivery/tasks任务列表待配送任务JWT(骑手)
GET /api/delivery/tasks/:id任务详情脱敏地址+坐标JWT(骑手)
POST /api/delivery/tasks/:id/claim认领骑手接单JWT(骑手)
POST /api/delivery/tasks/:id/pickup取货确认取货JWT(骑手)
POST /api/delivery/tasks/:id/deliver送达确认送达JWT(骑手)
POST /api/delivery/tasks/:id/release释放放弃任务JWT(骑手)
GET /api/delivery/tasks/locations坐标任务位置集合JWT(骑手)

可与达达/闪送/美团配送对接,按第三方配送平台的 API 规范做适配层。

2.6 🎫 营销发券服务

外部场景:合作渠道发券、异业联合营销。

端点方式说明鉴权
GET /api/coupons我的券用户券列表JWT(强)
GET /api/coupons/available可领券公开可领券模板JWT 或开放
POST /admin/coupons/templates创建模板运营创建券模板后台 RBAC
POST /admin/coupons/issue发券定向发券后台 RBAC

渠道发券场景:可为合作方开专用 partner-api,按渠道限制发券总量。

2.7 📝 合规审计服务

外部场景:财务对账、监管审查、第三方审计。

端点方式说明鉴权
GET /admin/audit-logs审计日志敏感操作记录后台 RBAC(强)
GET /admin/payments支付列表对账查询后台 RBAC
GET /admin/refunds退款列表退款流水后台 RBAC
GET /admin/orders订单列表全部订单后台 RBAC

敏感数据,不建议对外暴露裸 API。建议导出为加密数据包交付。


三、对外暴露策略矩阵

服务数据敏感度建议暴露方式鉴权方案MVP 就绪
🛒 商品查询开放 API + API KeyAPI Key + 限流
📋 交易接入OAuth 2.0 授权用户授权码⚠️ 需 OAuth 层
📊 库存协同供应商专用 API供应商账号 + RBAC⚠️ 需供应商账号体系
💳 支付回调微信标准入口微信证书验签
🚚 配送调度骑手 App / 第三方 APIJWT + 角色
🎫 营销发券渠道 API + API KeyAPI Key + 限流⚠️ 需渠道管理
📝 合规审计极高加密数据包导出不暴露 HTTP❌ 不对外

四、实体-服务映射


五、一句话总结

维度数量
业务模块10 个
数据库表25 张(21 业务 + 4 基础设施)
状态机6 个(29 个状态节点)
API 端点58 个(用户 26 + 配送 8 + 后台 24)
对外可暴露服务7 类(商品·交易·库存·支付·配送·发券·审计)
MVP 立即可暴露3 类(商品查询 · 支付回调 · 配送调度)

相关链接

鼎味肉市 · 纯线上猪肉零售