主题
交易管理 PRD
文档信息
| 项目 | 内容 |
|---|---|
| 产品名称 | PMForge - 交易管理 |
| 文档版本 | v2.0 |
| 创建日期 | 2026-09-21 |
| 最后更新 | 2026-09-24 |
| 文档状态 | 评审中 |
| 优先级 | P0 |
一、功能概述
1.1 功能定位
如果把商品管理比作"超市货架",那交易管理就是"收银台 + 售后柜台"——用户从挑选商品到付款离开、甚至回来退换的完整过程,都在这里发生。
交易管理是 PMForge 商城模块的核心业务引擎,承载平台从"用户加购"到"订单完结"的完整交易链路。它连接了商品管理(提供可售商品)、支付模块(完成资金流转)、营销模块(计算优惠折扣)、会员模块(积分抵扣)、物流配送(完成商品交付)五大上下游模块,是商城全链路闭环的枢纽。
一句话概括:购物车 → 下单 → 支付 → 发货 → 收货 → 评价 → 售后,这七个环节构成了交易管理的全部。
1.2 目标用户
| 用户类型 | 使用场景 | 核心诉求 |
|---|---|---|
| 平台运营人员 | 日常订单处理、批量发货、异常订单管理 | 高效处理订单、批量操作、快速定位异常 |
| 客服人员 | 售后申请处理、用户投诉、退款跟进 | 快速审核售后、跟踪退款进度、降低客诉率 |
| 财务人员 | 订单对账、退款审核、财务报表 | 金额准确、对账便捷、退款可控 |
| 仓库/物流人员 | 发货打单、物流跟踪、异常件处理 | 批量发货高效、物流可追踪 |
| C 端消费者 | 加购、下单、支付、查物流、售后 | 购物体验流畅、售后便捷、退款快速 |
1.3 业务价值
- 构建完整交易闭环,覆盖购物车→下单→支付→发货→收货→评价→售后全链路
- 提供多维度订单筛选与导出能力,支撑运营决策与财务对账
- 建立规范的售后处理流程,降低客诉率、提升用户满意度与复购率
- 集成物流公司管理,实现物流轨迹实时追踪,提升用户信任感
- 灵活的运费模板配置,满足不同商品/地区的差异化运费策略
- 为商城统计分析模块提供可靠的交易数据基础
1.4 功能范围
| 功能分类 | 后台管理端 | 前台用户端 |
|---|---|---|
| 购物车管理(查看/清空) | ✅ | ❌ |
| 购物车(加购/修改/结算) | ❌ | ✅ |
| 交易订单列表 | ✅ | ✅ |
| 订单详情 | ✅ | ✅ |
| 订单操作(发货/备注/调价/关闭) | ✅ | ❌ |
| 下单流程(确认/提交/支付) | ❌ | ✅ |
| 取消订单 | ❌ | ✅ |
| 确认收货 | ❌ | ✅ |
| 评价订单 | ❌ | ✅ |
| 订单导出 | ✅ | ❌ |
| 多维度订单筛选 | ✅ | ✅(按状态分 Tab) |
| 售后列表 | ✅ | ✅ |
| 售后审核/处理 | ✅ | ❌ |
| 退款申请 | ❌ | ✅ |
| 退货退款申请 | ❌ | ✅ |
| 填写退货物流 | ❌ | ✅ |
| 售后进度查看 | ✅ | ✅ |
| 售后统计 | ✅ | ❌ |
| 物流公司管理 | ✅ | ❌ |
| 物流单号录入 | ✅ | ❌ |
| 物流跟踪查询 | ✅ | ✅ |
| 发货单管理 | ✅ | ❌ |
| 运费模板管理 | ✅ | ❌ |
| 交易配置 | ✅ | ❌ |
二、用户场景
2.1 用户角色
| 角色 | 描述 | 核心诉求 |
|---|---|---|
| 平台运营(小刘) | 负责日常订单运营管理 | 高效处理订单、批量操作、快速筛选异常订单 |
| 客服人员(小陈) | 负责售后与客诉处理 | 快速审核售后申请、跟踪退款进度、处理纠纷 |
| 财务人员(小赵) | 负责交易对账与退款审核 | 准确对账、退款可控、财务报表 |
| 仓库/物流人员(老周) | 负责商品发货与物流管理 | 批量打单发货、物流跟踪、异常件处理 |
| C 端消费者(小李) | 平台购物用户 | 流畅加购下单、便捷支付、方便售后 |
2.2 使用场景
场景1:运营小刘日常订单处理
- 用户:平台运营人员小刘
- 场景:每天早上 9 点 → 小刘登录后台 → 进入订单管理 → 点击"待发货"Tab → 看到 47 笔待发货订单 → 勾选前 20 笔 → 点击"批量发货" → 导入 Excel(含物流单号) → 系统自动匹配物流公司并录入 → 发货成功 → 切换到"异常订单"筛选 → 处理 2 笔地址不明确的订单(添加商家备注)→ 关闭 1 笔用户要求取消的待发货订单
- 期望:批量操作提升效率、订单状态一目了然、异常订单有醒目标识
验收标准(AC):
- AC-1:待发货 Tab 角标实时展示待发货订单数量,点击后列表仅展示待发货状态订单
- AC-2:批量发货支持 Excel 导入(模板含订单号、物流公司、物流单号三列),导入后自动匹配物流公司编码
- AC-3:批量发货单次上限 200 笔,超过时提示"请分批操作"
- AC-4:商家备注保存后在订单详情中展示,且备注操作记录在操作日志中
- AC-5:关闭订单需填写关闭原因,关闭后订单状态变为"已关闭",前台用户端同步更新
场景2:消费者小李购物下单
- 用户:C 端消费者小李
- 场景:午休刷手机 → 在商城搜索"项目管理书籍" → 找到一本 ¥68 的书 → 选规格"精装版" → 点击"加入购物车" → 继续逛 → 又加了 2 件商品 → 进入购物车 → 勾选 3 件商品 → 底部显示合计 ¥196 → 点击"去结算" → 确认订单页 → 选择收货地址 → 系统自动推荐一张"满 100 减 10"优惠券 → 勾选使用 → 实付 ¥186 + 运费 ¥8 = ¥194 → 提交订单 → 微信支付 → 支付成功 → 等待收货
- 期望:加购流畅、价格计算清晰、支付安全可靠
验收标准(AC):
- AC-1:加入购物车后购物车角标数量 +1,动画提示
- AC-2:确认订单页实时计算价格,切换地址/优惠券/积分时金额即时刷新,延迟 < 500ms
- AC-3:系统自动推荐最优优惠券(优惠金额最大的一张),用户可手动切换
- AC-4:提交订单后库存立即锁定(下单减库存模式),30 分钟未支付自动取消并释放库存
- AC-5:支付成功后订单状态变为"待发货",页面跳转到订单详情页展示支付结果
场景3:客服小陈处理售后申请
- 用户:客服人员小陈
- 场景:收到系统通知"新售后申请" → 点击进入售后管理 → 看到一笔"退货退款"申请 → 查看商品(一件 ¥299 的外套)、退货原因(尺码偏小)、凭证图片(3 张实物照片)→ 判断符合售后政策 → 点击"同意退货" → 系统自动通知用户退货地址 → 3 天后用户填写了退货物流 → 小陈跟踪物流显示已签收 → 确认收到退货 → 系统自动发起退款 ¥299 → 退款原路返回用户微信
- 期望:售后信息完整展示、审核流程清晰、退款进度可追踪
验收标准(AC):
- AC-1:售后详情页完整展示商品信息(图片、名称、规格、单价)、用户申请原因、凭证图片、订单信息
- AC-2:同意退货后系统自动将退货地址通过短信/站内信通知用户
- AC-3:退款执行后展示退款进度(退款中 → 退款成功/失败),退款原路返回
- AC-4:售后操作日志完整记录每一步操作(操作人、操作时间、操作类型、备注)
- AC-5:商家超过 48 小时未处理售后申请时,系统自动发送提醒通知
场景4:消费者小李申请退货退款
- 用户:C 端消费者小李
- 场景:收到一件衣服 → 发现颜色与图片差异较大 → 进入"我的订单" → 找到该订单 → 点击"申请售后" → 选择"退货退款" → 选择原因"商品与描述不符" → 上传 3 张实物对比照片 → 确认退款金额 ¥159 → 提交 → 2 天后商家同意 → 页面展示退货地址 → 小李寄出快递 → 填写退货物流单号 → 2 天后商家确认收货 → 退款 ¥159 到账
- 期望:售后申请简单便捷、进度实时可查、退款快速到账
验收标准(AC):
- AC-1:售后申请页展示退款金额上限(不超过该订单项实付金额),用户可修改但不超过上限
- AC-2:凭证图片支持 JPG/PNG 格式,最多 9 张,单张不超过 5MB,上传时预览
- AC-3:售后进度页以时间线形式展示每一步状态变化与操作记录
- AC-4:审核通过后退货地址清晰展示,支持一键复制
- AC-5:退款到账后推送通知"退款 ¥159 已原路返回"
场景5:仓库老周批量发货
- 用户:仓库/物流人员老周
- 场景:打开后台 → 进入待发货列表 → 看到 85 笔待发货订单 → 点击"导出待发货订单" → 打印快递面单 → 逐单扫码录入物流单号(或批量导入 Excel)→ 确认发货 → 系统自动给用户发送"已发货"通知(含物流公司和单号)
- 期望:支持批量操作、物流单号录入高效、发货后自动通知用户
验收标准(AC):
- AC-1:导出的待发货订单 Excel 包含订单号、商品名称、规格、数量、收货人、手机号、地址
- AC-2:支持逐单录入和 Excel 批量导入两种发货方式
- AC-3:物流单号录入后自动校验格式(如顺丰单号为 SF 开头 + 12 位数字)
- AC-4:发货成功后系统自动推送通知给用户,内容含物流公司和物流单号
- AC-5:发货后订单状态从"待发货"变为"待收货",列表自动刷新
场景6:财务小赵月度对账
- 用户:财务人员小赵
- 场景:月底 → 选择时间范围"2026-09-01 至 2026-09-30" → 按"已支付"状态筛选 → 导出订单报表 → 得到 2,347 笔订单数据 → 与微信支付渠道账单逐笔核对 → 发现 3 笔退款记录 → 在售后管理中核实退款详情 → 确认无误 → 完成月度对账
- 期望:导出数据完整准确、金额计算精确、支持多维度筛选
验收标准(AC):
- AC-1:导出 Excel 包含订单号、支付方式、实付金额、退款金额、订单状态等关键字段
- AC-2:金额以"元"为单位展示,精确到小数点后 2 位
- AC-3:收货人手机号在导出文件中脱敏处理(中间 4 位用 * 替代)
- AC-4:单次导出上限 10,000 条,超过时异步导出并通知下载
- AC-5:导出数据与页面筛选条件一致,不遗漏不多余
三、功能需求
3.1 后台管理端
3.1.1 功能清单
| 功能 | 优先级 | 说明 |
|---|---|---|
| 购物车管理 | P2 | 查看/清空用户购物车数据 |
| 交易订单列表 | P0 | 分页展示订单,多维度筛选 |
| 订单详情 | P0 | 查看订单完整信息 |
| 订单操作 | P0 | 发货、备注、调价、关闭 |
| 订单导出 | P1 | 导出订单数据 Excel |
| 售后列表 | P0 | 查看售后申请列表 |
| 售后审核 | P0 | 同意/拒绝/协商售后申请 |
| 退款处理 | P0 | 执行退款操作 |
| 售后统计 | P1 | 售后数据概览 |
| 物流公司管理 | P1 | 维护物流公司信息 |
| 物流跟踪查询 | P1 | 查询物流轨迹 |
| 发货单管理 | P1 | 管理发货记录 |
| 运费模板管理 | P1 | 配置运费计算规则 |
| 交易配置 | P2 | 配置交易相关参数 |
3.1.2 购物车管理(管理视角)
页面描述:

业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 仅查看用户购物车数据,不可修改商品/数量 | 管理端只读,避免误操作影响用户购物体验 |
| R-02 | 支持按用户 ID/昵称搜索购物车 | 客服场景需快速定位用户购物车协助排查 |
| R-03 | 清空购物车后不可恢复,需二次确认 | 防止误操作导致用户购物车数据丢失 |
| R-04 | 已下架商品在购物车列表中标识"已下架" | 便于运营了解失效商品占用购物车情况 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取购物车分页 | GET | /admin-api/trade/cart/page | 分页查询购物车列表 |
| 清空用户购物车 | DELETE | /admin-api/trade/cart/clean | 清空指定用户购物车 |
请求参数(分页查询):
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| userId | Long | 否 | 用户ID |
| pageNo | Integer | 是 | 页码 |
| pageSize | Integer | 是 | 每页条数 |
返回结果:
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Long | 购物车项ID |
| userId | Long | 用户ID |
| userNickname | String | 用户昵称 |
| spuId | Long | SPU ID |
| skuId | Long | SKU ID |
| spuName | String | 商品名称 |
| skuProperties | String | 规格属性描述 |
| picUrl | String | 商品图片 |
| count | Integer | 数量 |
| selected | Boolean | 是否选中 |
| price | BigDecimal | 单价 |
| stock | Integer | 库存 |
| productStatus | Integer | 商品状态(上架/下架) |
| createTime | DateTime | 加入时间 |
3.1.3 交易订单列表
页面描述:

筛选条件:
| 筛选项 | 类型 | 说明 |
|---|---|---|
| 订单号 | 输入框 | 精确/模糊搜索 |
| 用户信息 | 输入框 | 用户昵称/手机号 |
| 订单状态 | 下拉选择 | 待支付/待发货/待收货/已完成/已评价/已取消 |
| 支付方式 | 下拉选择 | 微信支付/支付宝/钱包余额 |
| 创建时间 | 日期范围 | 起止时间 |
| 金额范围 | 数值范围 | 最小金额-最大金额 |
| 收货人 | 输入框 | 收货人姓名 |
| 配送方式 | 下拉选择 | 快递配送/自提 |
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 默认按创建时间倒序排列 | 最新订单优先处理,符合运营习惯 |
| R-02 | 订单号全局唯一,格式:年月日 HHmmss + 6 位随机数 | 保证唯一性且便于人工识别日期 |
| R-03 | 支持按状态 Tab 快速切换筛选 | 运营日常按状态处理订单,Tab 切换效率最高 |
| R-04 | 金额范围筛选包含边界值 | 避免边界金额订单被遗漏 |
| R-05 | 已取消和已关闭的订单仅支持查看详情,无其他操作 | 终态订单不可再操作,防止数据异常 |
| R-06 | 售后中的订单标识当前有进行中的售后单 | 运营一眼识别哪些订单有售后纠纷 |
| R-07 | 待支付订单超过配置时间自动取消(默认 30 分钟,可配置) | 释放库存和优惠券资源,避免长时间占压 |
| R-08 | 待收货订单超过配置时间自动确认收货(默认 14 天,可配置) | 模拟主流电商平台规则,避免订单长期挂起 |
| R-09 | 已完成订单超过配置时间自动完成(默认 7 天,可配置) | 确认收货后留评价缓冲期 |
| R-10 | 金额单位为分,展示时转换为元 | 后端用分避免浮点精度问题,前端展示转元 |
数据字段:
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Long | 订单ID |
| no | String | 订单编号 |
| userId | Long | 用户ID |
| userNickname | String | 用户昵称 |
| status | Integer | 订单状态 |
| productCount | Integer | 商品数量 |
| allPayPrice | BigDecimal | 商品总金额(元) |
| deliveryPrice | BigDecimal | 运费(元) |
| discountPrice | BigDecimal | 优惠金额(元) |
| pointPayPrice | BigDecimal | 积分抵扣金额(元) |
| payPrice | BigDecimal | 实付金额(元) |
| payOrderId | Long | 支付单ID |
| deliveryType | Integer | 配送方式(1-快递 2-自提) |
| receiverName | String | 收货人姓名 |
| receiverMobile | String | 收货人手机号 |
| receiverDetailAddress | String | 收货详细地址 |
| deliveryExpressName | String | 物流公司名称 |
| deliveryExpressNo | String | 物流单号 |
| remark | String | 买家备注 |
| adminRemark | String | 商家备注 |
| payTime | DateTime | 支付时间 |
| deliveryTime | DateTime | 发货时间 |
| receiveTime | DateTime | 收货时间 |
| createTime | DateTime | 下单时间 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取订单分页 | GET | /admin-api/trade/order/page | 获取订单分页列表 |
| 获取订单详情 | GET | /admin-api/trade/order/get-detail | 获取订单完整详情 |
| 订单发货 | PUT | /admin-api/trade/order/delivery | 订单发货操作 |
| 订单备注 | PUT | /admin-api/trade/order/update-remark | 更新商家备注 |
| 订单调价 | PUT | /admin-api/trade/order/update-price | 调整订单金额 |
| 订单关闭 | PUT | /admin-api/trade/order/close | 关闭订单 |
| 导出订单 | GET | /admin-api/trade/order/export | 导出订单 Excel |
| 获取订单统计 | GET | /admin-api/trade/order/get-statistics | 获取各状态订单数量 |
请求参数(分页查询):
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| no | String | 否 | 订单编号(模糊匹配) |
| userId | Long | 否 | 用户ID |
| userNickname | String | 否 | 用户昵称(模糊匹配) |
| status | Integer | 否 | 订单状态 |
| payType | Integer | 否 | 支付方式 |
| deliveryType | Integer | 否 | 配送方式 |
| receiverName | String | 否 | 收货人姓名 |
| createTime | DateTime[] | 否 | 创建时间范围 |
| payTime | DateTime[] | 否 | 支付时间范围 |
| minPayPrice | BigDecimal | 否 | 最小实付金额 |
| maxPayPrice | BigDecimal | 否 | 最大实付金额 |
| pageNo | Integer | 是 | 页码 |
| pageSize | Integer | 是 | 每页条数 |
3.1.4 订单详情
页面描述:

订单状态流转规则:
| 当前状态 | 可流转到 | 触发条件 |
|---|---|---|
| 待支付 | 待发货 | 用户支付成功 |
| 待支付 | 已取消 | 用户主动取消 / 超时自动取消 |
| 待发货 | 待收货 | 商家发货 |
| 待收货 | 已完成 | 用户确认收货 / 超时自动确认 |
| 已完成 | 已评价 | 用户完成评价 |
| 任意未完成状态 | 售后中 | 用户申请售后 |
金额计算公式:
商品总金额(allPayPrice)= SUM(商品单价 × 数量)
运费(deliveryPrice)= 运费模板计算结果
优惠金额(discountPrice)= 优惠券面额 + 满减优惠
积分抵扣(pointPayPrice)= 使用积分 × 积分兑换比例
实付金额(payPrice)= allPayPrice + deliveryPrice - discountPrice - pointPayPrice给开发同学的说明:金额计算全部在服务端完成,前端传入的金额仅作为参考,服务端必须重新校验计算。这是防止金额篡改的核心安全措施。
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 订单详情展示完整的信息快照,即使商品后续修改也不影响历史订单展示 | 订单是交易凭证,必须保留下单时的商品信息 |
| R-02 | 物流轨迹需调用第三方物流查询接口实时获取 | 物流信息实时变化,缓存会导致信息滞后 |
| R-03 | 操作记录按时间倒序展示,包含操作人、操作类型、操作时间 | 方便快速看到最新操作,符合查看习惯 |
| R-04 | 调价操作仅限待支付/待发货状态,且只能调整商品总金额 | 已发货后调价涉及物流费用变动,复杂度过高 |
| R-05 | 调价后需重新计算实付金额,若已支付则产生差额退款/补款 | 保证金额一致性,避免财务对账异常 |
| R-06 | 关闭订单仅限待支付/待发货状态,需填写关闭原因 | 已发货订单关闭涉及退货物流,需走售后流程 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取订单详情 | GET | /admin-api/trade/order/get-detail | 获取订单完整详情 |
| 获取物流轨迹 | GET | /admin-api/trade/order/get-express-track | 获取物流跟踪信息 |
| 获取订单操作记录 | GET | /admin-api/trade/order/get-log | 获取订单操作日志 |
订单发货请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 订单ID |
| deliveryExpressId | Long | 是 | 物流公司ID |
| deliveryExpressNo | String | 是 | 物流单号 |
订单备注请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 订单ID |
| adminRemark | String | 是 | 商家备注内容 |
订单调价请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 订单ID |
| adjustPrice | BigDecimal | 是 | 调整金额(正数加价,负数减价) |
订单关闭请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 订单ID |
| closeReason | String | 是 | 关闭原因 |
3.1.5 订单导出
页面描述:
- 点击"导出"按钮
- 弹窗选择导出范围与字段
- 大数据量异步导出,完成后通知下载
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 支持 xlsx 格式 | 主流办公格式,兼容性最好 |
| R-02 | 单次最多导出 10,000 条 | 防止大数据量导出导致系统性能下降 |
| R-03 | 超过 10,000 条采用异步导出 | 大文件生成耗时,异步避免用户等待 |
| R-04 | 导出当前筛选条件下的订单数据 | 保证导出内容与页面展示一致 |
| R-05 | 手机号脱敏处理(中间 4 位用 * 替代) | 保护用户隐私,符合数据安全规范 |
| R-06 | 包含订单基本信息、商品信息、收货信息、支付信息 | 满足财务对账和运营分析的完整数据需求 |
导出字段:
| 字段 | 说明 |
|---|---|
| 订单编号 | 订单唯一编号 |
| 用户昵称 | 下单用户 |
| 商品信息 | 商品名称×数量 |
| 商品总金额 | 商品金额合计 |
| 运费 | 运费金额 |
| 优惠金额 | 优惠抵扣 |
| 积分抵扣 | 积分抵扣金额 |
| 实付金额 | 实际支付金额 |
| 订单状态 | 当前状态 |
| 支付方式 | 支付渠道 |
| 收货人 | 收货人姓名 |
| 收货手机号 | 收货人电话(脱敏) |
| 收货地址 | 详细收货地址 |
| 物流公司 | 物流公司名称 |
| 物流单号 | 快递单号 |
| 买家备注 | 用户下单备注 |
| 商家备注 | 运营备注 |
| 下单时间 | 创建时间 |
| 支付时间 | 支付完成时间 |
| 发货时间 | 发货操作时间 |
3.1.6 售后管理
页面描述:

售后类型:
| 类型 | 说明 | 适用条件 |
|---|---|---|
| 仅退款 | 不退货,仅退还支付金额 | 商品未发货 / 商品有质量问题但不需退货 |
| 退货退款 | 退货并退还支付金额 | 已收到商品,需退回商品 |
售后状态流转:
| 状态 | 说明 | 后续流转 |
|---|---|---|
| 待审核 | 用户提交售后申请 | → 已同意(商家同意) / 已拒绝(商家拒绝) / 待协商 |
| 商家已同意(仅退款) | 商家同意仅退款 | → 退款中 → 已完成 |
| 商家已同意(退货退款) | 商家同意退货 | → 待用户发货 → 待商家收货 → 退款中 → 已完成 |
| 待用户发货 | 用户需填写退货物流 | → 待商家收货 |
| 待商家收货 | 退货在途/已收到待确认 | → 退款中 |
| 退款中 | 正在执行退款 | → 已完成 / 退款失败 |
| 已完成 | 售后流程结束 | 终态 |
| 已拒绝 | 商家拒绝售后 | 用户可重新申请 |
| 待协商 | 商家与用户协商中 | → 商家已同意 / 已拒绝 |
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 售后申请需在订单完成后 15 天内提出(可配置) | 平衡用户权益与商家管理成本,15 天是行业通行标准 |
| R-02 | 仅退款:待发货状态可直接退款,已发货需商家审核 | 未发货无需退货,流程简化;已发货需确认商品情况 |
| R-03 | 退货退款:商家确认收货后才执行退款 | 确保商家收到退货后再退款,避免钱货两空 |
| R-04 | 退款金额不得超过实付金额 | 防止超额退款导致资金损失 |
| R-05 | 售后原路退回,即使用原支付方式退款 | 符合支付渠道规范,避免资金流向异常 |
| R-06 | 退款失败需人工介入处理 | 自动退款可能因渠道原因失败,需人工兜底 |
| R-07 | 售后审核需记录操作人与操作时间 | 售后涉及资金操作,必须有完整审计轨迹 |
| R-08 | 商家超过 48 小时未处理售后,系统自动提醒 | 避免售后长时间无人处理导致用户投诉升级 |
| R-09 | 凭证图片最多上传 9 张,支持 JPG/PNG 格式,单张不超过 5MB | 保证举证充分的同时控制存储成本 |
| R-10 | 用户可撤销售后申请,撤销后可重新申请(在时效内) | 给用户修改申请的机会,提升售后体验 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取售后分页 | GET | /admin-api/trade/after-sale/page | 获取售后列表 |
| 获取售后详情 | GET | /admin-api/trade/after-sale/get-detail | 获取售后申请详情 |
| 同意售后 | PUT | /admin-api/trade/after-sale/agree | 同意售后申请 |
| 拒绝售后 | PUT | /admin-api/trade/after-sale/disagree | 拒绝售后申请 |
| 确认收货(退货) | PUT | /admin-api/trade/after-sale/confirm-receive | 确认收到退货 |
| 执行退款 | PUT | /admin-api/trade/after-sale/refund | 执行退款操作 |
| 获取售后统计 | GET | /admin-api/trade/after-sale/get-statistics | 获取售后数据统计 |
请求参数(售后分页查询):
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| no | String | 否 | 售后单号(模糊匹配) |
| orderId | Long | 否 | 关联订单ID |
| orderNo | String | 否 | 关联订单号 |
| userId | Long | 否 | 用户ID |
| type | Integer | 否 | 售后类型(10-仅退款 20-退货退款) |
| status | Integer | 否 | 售后状态 |
| way | Integer | 否 | 售后方式 |
| applyTime | DateTime[] | 否 | 申请时间范围 |
| pageNo | Integer | 是 | 页码 |
| pageSize | Integer | 是 | 每页条数 |
售后详情返回结果:
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Long | 售后单ID |
| no | String | 售后单号 |
| type | Integer | 售后类型 |
| way | Integer | 售后方式 |
| status | Integer | 售后状态 |
| userId | Long | 用户ID |
| userNickname | String | 用户昵称 |
| orderId | Long | 订单ID |
| orderNo | String | 订单编号 |
| orderItemId | Long | 订单项ID |
| spuName | String | 商品名称 |
| skuProperties | String | 规格描述 |
| picUrl | String | 商品图片 |
| count | Integer | 退货数量 |
| orderPrice | BigDecimal | 订单原价 |
| applyRefundPrice | BigDecimal | 申请退款金额 |
| refundPrice | BigDecimal | 实际退款金额 |
| applyReason | String | 申请原因 |
| applyDescription | String | 申请描述 |
| applyPicUrls | String[] | 凭证图片列表 |
| logisticsId | Long | 退货物流公司ID |
| logisticsNo | String | 退货物流单号 |
| logisticsTrackList | Object[] | 物流轨迹 |
| refundTime | DateTime | 退款时间 |
| reason | String | 拒绝原因(如拒绝) |
| operateHistory | Object[] | 操作记录 |
| createTime | DateTime | 申请时间 |
3.1.7 售后统计
页面描述:
- 数据看板形式展示
- 支持时间范围选择
- 展示核心售后指标
统计指标:
| 指标 | 说明 |
|---|---|
| 售后单总数 | 选定时间范围内的售后申请总数 |
| 待处理数量 | 当前待审核的售后单数量 |
| 退款总金额 | 选定时间范围内的退款总金额 |
| 仅退款数量/金额 | 仅退款的售后单数与金额 |
| 退货退款数量/金额 | 退货退款的售后单数与金额 |
| 售后率 | 售后单数 / 订单总数 × 100% |
| 退款原因分布 | 各退款原因的占比 |
| 平均处理时长 | 从申请到完成的平均耗时 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取售后统计 | GET | /admin-api/trade/after-sale/get-statistics | 获取售后统计数据 |
| 获取退款原因分布 | GET | /admin-api/trade/after-sale/get-reason-statistics | 获取退款原因分布 |
3.1.8 物流配送管理
页面描述:
- 分为三个子页面:物流公司管理、运费模板管理、发货单管理
- 物流公司管理:列表展示、增删改查
- 运费模板管理:列表展示、创建/编辑模板
- 发货单管理:待发货订单列表、发货操作
3.1.8.1 物流公司管理
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 物流公司信息包括:公司名称、编码、联系电话、官网 | 完整的公司信息便于运营选择和用户查询 |
| R-02 | 物流公司编码全局唯一 | 编码用于对接物流查询 API,必须唯一 |
| R-03 | 支持启用/禁用物流公司 | 不合作的物流公司可禁用而非删除,保留历史数据 |
| R-04 | 已关联订单的物流公司不可删除,仅可禁用 | 历史订单仍需展示物流信息,删除会导致数据断裂 |
| R-05 | 支持自定义排序 | 常用物流公司排在前面,提升操作效率 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取物流公司分页 | GET | /admin-api/trade/delivery/express/page | 获取物流公司列表 |
| 获取物流公司详情 | GET | /admin-api/trade/delivery/express/get | 获取物流公司详情 |
| 创建物流公司 | POST | /admin-api/trade/delivery/express/create | 创建物流公司 |
| 更新物流公司 | PUT | /admin-api/trade/delivery/express/update | 更新物流公司 |
| 删除物流公司 | DELETE | /admin-api/trade/delivery/express/delete | 删除物流公司 |
| 获取物流公司精简列表 | GET | /admin-api/trade/delivery/express/simple-list | 获取启用状态的物流公司列表(用于下拉选择) |
请求参数(创建/更新物流公司):
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 更新时必填 | 物流公司ID |
| name | String | 是 | 公司名称 |
| code | String | 是 | 公司编码 |
| logo | String | 否 | 公司Logo URL |
| contactPhone | String | 否 | 联系电话 |
| website | String | 否 | 公司官网 |
| sort | Integer | 否 | 排序值 |
| status | Integer | 否 | 状态(0-启用 1-禁用) |
3.1.8.2 运费模板管理
页面描述:
- 列表展示所有运费模板
- 支持创建/编辑/删除模板
- 模板配置:计费方式、首重/续重费用、指定地区运费
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 计费方式支持:按件数、按重量 | 覆盖绝大多数电商商品的运费计算场景 |
| R-02 | 按件数:首件费用 + 续件费用 | 适合标准化商品(如书籍、电子产品) |
| R-03 | 按重量:首重费用 + 续重费用 | 适合重量差异大的商品(如食品、日用品) |
| R-04 | 支持按地区设置差异化运费(默认全国 + 指定地区) | 偏远地区运费更高,需要差异化定价 |
| R-05 | 可设置满额包邮条件 | 提升客单价的有效营销手段 |
| R-06 | 已关联商品的模板不可删除,仅可禁用 | 避免商品运费计算断裂 |
| R-07 | 订单运费取商品所绑模板的运费,多商品取最高运费 | 合并配送场景下,避免运费重复计算 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取运费模板分页 | GET | /admin-api/trade/delivery/express-template/page | 获取运费模板列表 |
| 获取运费模板详情 | GET | /admin-api/trade/delivery/express-template/get | 获取模板详情 |
| 创建运费模板 | POST | /admin-api/trade/delivery/express-template/create | 创建运费模板 |
| 更新运费模板 | PUT | /admin-api/trade/delivery/express-template/update | 更新运费模板 |
| 删除运费模板 | DELETE | /admin-api/trade/delivery/express-template/delete | 删除运费模板 |
| 计算运费 | POST | /admin-api/trade/delivery/express-template/calculate | 根据模板计算运费 |
请求参数(创建/更新运费模板):
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 更新时必填 | 模板ID |
| name | String | 是 | 模板名称 |
| chargeMode | Integer | 是 | 计费方式(1-按件 2-按重量) |
| sort | Integer | 否 | 排序值 |
| areaTemplates | Object[] | 是 | 地区运费配置列表 |
地区运费配置(areaTemplates 子对象):
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| areaIds | Long[] | 是 | 地区ID列表 |
| startCount | BigDecimal | 是 | 首件/首重数量 |
| startPrice | BigDecimal | 是 | 首件/首重费用 |
| extraCount | BigDecimal | 是 | 续件/续重数量 |
| extraPrice | BigDecimal | 是 | 续件/续重费用 |
| freeDeliveryPrice | BigDecimal | 否 | 满额包邮金额 |
3.1.8.3 物流跟踪查询
页面描述:
- 输入物流单号或选择订单查询物流轨迹
- 时间线形式展示物流节点
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 查询物流轨迹 | GET | /admin-api/trade/delivery/express/track | 根据物流公司+单号查询物流轨迹 |
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| expressId | Long | 是 | 物流公司ID |
| expressNo | String | 是 | 物流单号 |
返回结果:
| 字段名 | 类型 | 说明 |
|---|---|---|
| expressName | String | 物流公司名称 |
| expressNo | String | 物流单号 |
| trackList | Object[] | 物流轨迹列表 |
| trackList[].time | DateTime | 时间节点 |
| trackList[].content | String | 物流描述 |
| trackList[].status | String | 物流状态 |
3.1.9 交易配置
页面描述:
- 配置交易模块的全局参数
- 包含:订单超时配置、售后配置等
配置项:
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 订单超时自动取消时间 | 分钟 | 30 | 待支付订单超时自动取消 |
| 订单超时自动确认收货时间 | 天 | 14 | 待收货订单超时自动确认 |
| 订单自动完成时间 | 天 | 7 | 确认收货后自动完成时间 |
| 售后申请时效 | 天 | 15 | 订单完成后多少天内可申请售后 |
| 售后自动同意时间 | 小时 | 48 | 商家超时未处理自动同意 |
| 售后凭证是否必填 | 布尔 | false | 申请售后是否必须上传凭证 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取交易配置 | GET | /admin-api/trade/config/get | 获取交易配置 |
| 更新交易配置 | PUT | /admin-api/trade/config/save | 保存交易配置 |
3.2 前台用户端
3.2.1 功能清单
| 功能 | 优先级 | 说明 |
|---|---|---|
| 购物车 | P0 | 商品加购、管理、结算 |
| 确认订单 | P0 | 选择地址、优惠券、积分抵扣 |
| 提交订单 | P0 | 生成订单 |
| 订单支付 | P0 | 完成支付 |
| 订单列表 | P0 | 按状态分 Tab 展示订单 |
| 订单详情 | P0 | 查看订单完整信息 |
| 取消订单 | P0 | 取消待支付订单 |
| 确认收货 | P0 | 确认收到商品 |
| 评价订单 | P1 | 对已完成订单评价 |
| 申请售后 | P0 | 退款/退货退款申请 |
| 填写退货物流 | P0 | 售后审核通过后填写物流 |
| 售后进度查看 | P0 | 查看售后处理进度 |
3.2.2 购物车
页面描述:

操作流程:
- 商品详情页选择规格 → 点击"加入购物车"
- 进入购物车 → 勾选需要结算的商品
- 可修改商品数量(+/-)或删除不需要的商品
- 底部展示已选商品合计金额
- 点击"去结算" → 跳转确认订单页
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 同一用户同一 SKU 只能有一条购物车记录,重复加购合并数量 | 避免购物车出现重复商品,简化结算流程 |
| R-02 | 购物车商品数量上限 200 种(可配置) | 防止购物车过大影响性能和用户体验 |
| R-03 | 单个 SKU 数量上限为该 SKU 库存数量 | 防止用户加购超过可售数量 |
| R-04 | 商品下架/删除后在购物车中标识"失效",不可勾选 | 让用户知道商品已不可购买,引导清理 |
| R-05 | 失效商品支持"找相似"推荐 | 将失效流量转化为新商品浏览,提升转化 |
| R-06 | 全选时仅勾选有效商品 | 失效商品不可购买,不应被选中 |
| R-07 | 结算时校验商品库存与价格,若发生变化需提示用户 | 购物车中的商品可能已调价或库存不足 |
| R-08 | 购物车数据支持多端同步 | 用户可能在手机和电脑间切换购物 |
| R-09 | 未登录用户加购数据存储在本地,登录后合并到服务端 | 未登录也能加购,降低使用门槛 |
| R-10 | 商品价格实时取最新价格,展示原价与促销价 | 让用户看到最新优惠信息 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取购物车列表 | GET | /app-api/trade/cart/list | 获取当前用户购物车 |
| 加入购物车 | POST | /app-api/trade/cart/add | 添加商品到购物车 |
| 修改购物车数量 | PUT | /app-api/trade/cart/update-count | 修改商品数量 |
| 删除购物车商品 | DELETE | /app-api/trade/cart/delete | 删除购物车中商品 |
| 清空购物车 | DELETE | /app-api/trade/cart/clean | 清空购物车 |
| 勾选/取消勾选 | PUT | /app-api/trade/cart/select | 设置商品选中状态 |
| 全选/取消全选 | PUT | /app-api/trade/cart/select-all | 全选或取消全选 |
| 合并购物车 | POST | /app-api/trade/cart/merge | 登录后合并本地购物车 |
加入购物车请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| spuId | Long | 是 | 商品 SPU ID |
| skuId | Long | 是 | 商品 SKU ID |
| count | Integer | 是 | 数量 |
修改数量请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 购物车项ID |
| count | Integer | 是 | 新数量 |
购物车列表返回结果:
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Long | 购物车项ID |
| spuId | Long | SPU ID |
| skuId | Long | SKU ID |
| spuName | String | 商品名称 |
| skuProperties | String | 规格描述(如"红色/XL") |
| picUrl | String | 商品图片 |
| count | Integer | 数量 |
| selected | Boolean | 是否选中 |
| price | BigDecimal | 当前单价 |
| originalPrice | BigDecimal | 原价 |
| stock | Integer | 库存 |
| productStatus | Integer | 商品状态 |
| totalPrice | BigDecimal | 小计金额 |
3.2.3 下单流程
页面描述:

操作流程:
- 从购物车结算 / 立即购买 → 进入确认订单页
- 选择/填写收货地址
- 确认商品信息与配送方式
- 选择可用优惠券(系统推荐最优)
- 选择是否使用积分抵扣
- 填写备注(可选)
- 确认价格明细
- 点击"提交订单" → 生成待支付订单
- 跳转支付页面 → 完成支付
价格计算规则:
| 项目 | 计算方式 | 说明 |
|---|---|---|
| 商品金额 | SUM(商品单价 × 数量) | 按勾选商品计算 |
| 运费 | 运费模板计算 | 根据收货地址与商品模板 |
| 优惠券抵扣 | 优惠券面额 | 不超过商品金额 |
| 积分抵扣 | 使用积分 × 兑换比例 | 不超过配置的最大抵扣比例 |
| 实付金额 | 商品金额 + 运费 - 优惠 - 积分抵扣 | 最低为 0.01 元 |
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 提交订单时校验商品库存,库存不足则提示 | 防止超卖,保证订单可履约 |
| R-02 | 提交订单时校验商品价格,若价格变化则提示 | 购物车中价格可能已过期,需确认 |
| R-03 | 提交订单时校验优惠券有效性(过期/已使用) | 防止无效优惠券被使用 |
| R-04 | 提交订单后锁定库存(下单减库存模式,可配置为支付减库存) | 下单减库存体验好但可能被恶意占库存;支付减库存安全但可能超卖 |
| R-05 | 订单创建后 30 分钟未支付自动取消,释放库存与优惠券 | 释放被占用的资源 |
| R-06 | 同一订单不可重复使用同一优惠券 | 防止优惠券重复使用 |
| R-07 | 积分抵扣上限为实付金额的一定比例(可配置,默认 50%) | 避免全额积分抵扣导致无实际支付(无法触发支付回调) |
| R-08 | 提交订单采用防重提交,避免并发创建多个订单 | 防止网络延迟导致用户重复点击创建多笔订单 |
| R-09 | 确认订单页需实时计算价格,地址/优惠券/积分变化时重新计算 | 保证价格准确性 |
| R-10 | 支付成功后扣减用户积分(若使用积分抵扣) | 积分已消费,需同步扣减 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 确认订单(预计算) | POST | /app-api/trade/order/pre-create | 确认订单页数据与价格预计算 |
| 提交订单 | POST | /app-api/trade/order/create | 创建交易订单 |
| 获取可用优惠券 | GET | /app-api/trade/order/available-coupons | 获取当前订单可用优惠券 |
| 积分抵扣计算 | POST | /app-api/trade/order/point-calculate | 计算积分可抵扣金额 |
确认订单请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cartIds | Long[] | 购物车结算时必填 | 购物车项ID列表 |
| buyNowSpuId | Long | 立即购买时必填 | 商品 SPU ID |
| buyNowSkuId | Long | 立即购买时必填 | 商品 SKU ID |
| buyNowCount | Integer | 立即购买时必填 | 购买数量 |
| deliveryAddressId | Long | 否 | 收货地址ID |
| couponId | Long | 否 | 优惠券ID |
| usePoint | Boolean | 否 | 是否使用积分抵扣 |
| pointCount | Integer | 否 | 使用的积分数量 |
| deliveryType | Integer | 是 | 配送方式(1-快递 2-自提) |
| remark | String | 否 | 买家备注 |
提交订单返回结果:
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | Long | 订单ID |
| no | String | 订单编号 |
| payPrice | BigDecimal | 实付金额 |
| payOrderId | Long | 支付单ID |
3.2.4 订单支付
页面描述:
- 展示订单信息与应付金额
- 选择支付方式(微信支付/支付宝/钱包余额)
- 拉起支付 → 支付成功 → 跳转订单详情
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 支持多种支付方式(微信支付、支付宝、钱包余额) | 覆盖主流支付习惯,提升支付成功率 |
| R-02 | 支付超时后订单自动取消 | 与交易配置中的超时时间一致 |
| R-03 | 支付成功后更新订单状态为"待发货" | 触发后续发货流程 |
| R-04 | 支付成功后扣减商品库存(支付减库存模式时) | 与库存扣减模式配置一致 |
| R-05 | 支付失败可重新发起支付 | 给用户重试机会,提升支付成功率 |
| R-06 | 同一订单同时只能有一笔进行中的支付 | 防止重复支付 |
| R-07 | 支付回调需做幂等处理 | 支付渠道可能重复回调,必须幂等 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 发起支付 | POST | /app-api/trade/order/pay | 发起订单支付 |
| 获取支付结果 | GET | /app-api/trade/order/pay-result | 查询支付结果 |
发起支付请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 订单ID |
| payChannel | Integer | 是 | 支付渠道(1-微信 2-支付宝 3-钱包余额) |
| returnUrl | String | 否 | 支付完成回调地址 |
3.2.5 订单列表(用户端)
页面描述:
- 顶部 Tab 栏:全部 / 待支付 / 待发货 / 待收货 / 待评价
- 订单列表:卡片式展示(商品缩略图+名称+规格+金额+状态+操作按钮)
- 下拉加载更多(分页)
- 空状态引导用户去购物
各 Tab 操作按钮:
| Tab | 可用操作 |
|---|---|
| 待支付 | 取消订单、去支付 |
| 待发货 | 提醒发货、申请售后 |
| 待收货 | 查看物流、确认收货、申请售后 |
| 待评价 | 去评价 |
| 已完成 | 再次购买、查看详情 |
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 默认按创建时间倒序排列 | 最新订单优先展示 |
| R-02 | 每个订单卡片展示第一个商品的缩略信息,多商品展示"等 N 件" | 卡片简洁,一屏展示更多订单 |
| R-03 | 下拉分页,每页 10 条 | 移动端适合小分页加载 |
| R-04 | Tab 角标展示各状态订单数量 | 用户一眼看到有多少订单待处理 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取订单分页 | GET | /app-api/trade/order/page | 获取用户订单列表 |
| 获取各状态订单数量 | GET | /app-api/trade/order/count | 获取各状态订单数量(用于 Tab 角标) |
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| status | Integer | 否 | 订单状态(不传则查全部) |
| pageNo | Integer | 是 | 页码 |
| pageSize | Integer | 是 | 每页条数 |
3.2.6 订单详情(用户端)
页面描述:
- 订单状态栏:当前状态 + 状态说明(如"请在 30 分钟内完成支付")
- 收货地址区:收货人、手机号、详细地址
- 商品信息区:商品列表
- 价格明细区:商品金额、运费、优惠、积分抵扣、实付
- 订单信息区:订单编号、下单时间、支付时间、支付方式
- 物流信息区:物流公司、物流单号、物流轨迹(待收货/已完成展示)
- 操作按钮区:根据状态展示不同操作
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取订单详情 | GET | /app-api/trade/order/get-detail | 获取订单完整详情 |
| 取消订单 | PUT | /app-api/trade/order/cancel | 取消待支付订单 |
| 确认收货 | PUT | /app-api/trade/order/receive | 确认收货 |
| 删除订单 | DELETE | /app-api/trade/order/delete | 删除已完成/已取消订单 |
| 获取物流轨迹 | GET | /app-api/trade/order/get-express-track | 获取物流跟踪 |
取消订单请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 订单ID |
| reason | String | 否 | 取消原因 |
确认收货请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 订单ID |
3.2.7 评价订单
页面描述:
- 订单商品列表,每个商品独立评价
- 每项包含:星级评分(1-5 星)、评价内容(文字)、上传图片(最多 9 张)
- 可勾选"匿名评价"
- 支持追加评价
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 仅已完成状态的订单可评价 | 确保用户已收到商品后再评价 |
| R-02 | 每个商品可独立评价,也可一次性全部评价 | 灵活评价方式,提升评价率 |
| R-03 | 评价内容 200 字以内 | 控制内容长度,保证评价质量 |
| R-04 | 图片最多 9 张,支持 JPG/PNG,单张不超过 5MB | 与主流平台一致,控制存储成本 |
| R-05 | 评价提交后不可修改,但可追加评价(30 天内) | 防止篡改评价,同时允许补充信息 |
| R-06 | 匿名评价不展示用户头像和昵称 | 保护用户隐私 |
| R-07 | 订单超过评价时效(默认 15 天)未评价,系统默认五星好评 | 避免订单长期停留在"待评价"状态 |
| R-08 | 评价完成后订单状态流转为"已评价" | 标记订单全链路完成 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 提交评价 | POST | /app-api/trade/order/comment/create | 提交订单评价 |
| 追加评价 | POST | /app-api/trade/order/comment/append | 追加评价 |
| 获取待评价商品 | GET | /app-api/trade/order/comment/pending | 获取待评价的商品列表 |
提交评价请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| orderId | Long | 是 | 订单ID |
| items | Object[] | 是 | 评价商品列表 |
| items[].orderItemId | Long | 是 | 订单项ID |
| items[].descriptionScores | Integer | 是 | 描述评分(1-5) |
| items[].benefitScores | Integer | 是 | 性价比评分(1-5) |
| items[].content | String | 否 | 评价文字 |
| items[].picUrls | String[] | 否 | 评价图片 |
| items[].anonymous | Boolean | 否 | 是否匿名 |
3.2.8 售后管理(用户端)
页面描述:
- 售后列表:按状态分 Tab(全部/待审核/待退货/退款中/已完成/已拒绝)
- 售后详情:售后单信息、商品信息、退款进度、操作记录
- 申请售后页:选择售后类型、填写原因、上传凭证
售后类型说明:
| 类型 | 说明 | 条件 |
|---|---|---|
| 仅退款 | 不退货,退还支付金额 | 未发货 / 商品质量问题无需退货 |
| 退货退款 | 退货并退还支付金额 | 已收到商品 |
售后原因列表:
| 原因分类 | 具体原因 |
|---|---|
| 商品问题 | 质量问题、描述不符、假货、破损、少件/漏发 |
| 物流问题 | 物流损坏、物流超时 |
| 买家原因 | 不想要了、拍多/拍错、其他 |
| 卖家原因 | 卖家发错货、卖家缺货 |
操作流程(仅退款):
- 进入订单详情 → 点击"申请售后"
- 选择"仅退款"
- 选择退款原因
- 填写详细描述(可选)
- 上传凭证图片(可选)
- 确认退款金额
- 提交申请 → 等待商家审核
- 审核通过 → 退款到账
操作流程(退货退款):
- 进入订单详情 → 点击"申请售后"
- 选择"退货退款"
- 选择退款原因
- 填写详细描述(可选)
- 上传凭证图片(可选)
- 确认退款金额
- 提交申请 → 等待商家审核
- 审核通过 → 填写退货物流单号
- 商家确认收货 → 退款到账
业务规则:
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 待发货状态只能申请"仅退款" | 未收到商品无法退货 |
| R-02 | 已发货/已收货状态可申请"仅退款"或"退货退款" | 用户已收到商品,两种售后方式均可 |
| R-03 | 退款金额不得超过该订单项的实付金额 | 防止超额退款 |
| R-04 | 每个订单项同一时间只能有一个进行中的售后单 | 避免多个售后单冲突 |
| R-05 | 售后被拒绝后可重新申请(需在售后时效内) | 给用户修改申请再提交的机会 |
| R-06 | 售后申请提交后可撤销(待审核状态) | 用户可能改变主意 |
| R-07 | 退货退款审核通过后 7 天内需填写物流信息,否则售后单自动关闭 | 避免售后单长期挂起 |
| R-08 | 凭证图片最多 9 张 | 与评价图片规则一致 |
| R-09 | 撤销售后后优惠券和积分不退回 | 防止利用售后套取优惠券/积分 |
| R-10 | 退款原路返回(微信支付退回微信、支付宝退回支付宝、钱包退回钱包) | 符合支付渠道规范 |
接口设计:
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 创建售后申请 | POST | /app-api/trade/after-sale/create | 提交售后申请 |
| 获取售后列表 | GET | /app-api/trade/after-sale/page | 获取用户售后列表 |
| 获取售后详情 | GET | /app-api/trade/after-sale/get-detail | 获取售后详情 |
| 取消售后申请 | PUT | /app-api/trade/after-sale/cancel | 撤销售后申请 |
| 填写退货物流 | PUT | /app-api/trade/after-sale/delivery | 填写退货物流信息 |
| 获取售后操作记录 | GET | /app-api/trade/after-sale/get-log | 获取售后处理进度 |
创建售后申请请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| orderId | Long | 是 | 订单ID |
| orderItemId | Long | 是 | 订单项ID |
| type | Integer | 是 | 售后类型(10-仅退款 20-退货退款) |
| applyRefundPrice | BigDecimal | 是 | 申请退款金额 |
| logisticsId | Long | 退货退款时必填 | 退货物流公司ID |
| logisticsNo | String | 退货退款时必填 | 退货物流单号 |
| applyReason | String | 是 | 申请原因 |
| applyDescription | String | 否 | 详细描述 |
| applyPicUrls | String[] | 否 | 凭证图片URL列表 |
填写退货物流请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 售后单ID |
| logisticsId | Long | 是 | 退货物流公司ID |
| logisticsNo | String | 是 | 退货物流单号 |
四、非功能需求
4.1 性能要求
| 指标 | 要求 | 说明 |
|---|---|---|
| 购物车列表查询 | < 200ms | 含商品信息实时查询 |
| 订单列表查询 | < 500ms | 含多维度筛选 |
| 订单详情查询 | < 300ms | 含物流轨迹 |
| 下单接口 | < 1000ms | 含库存校验、价格计算、订单创建 |
| 支付接口 | < 2000ms | 含调用第三方支付渠道 |
| 售后列表查询 | < 500ms | 响应时间 |
| 物流轨迹查询 | < 3000ms | 含第三方物流 API 调用 |
| 订单导出 | < 60s | 10,000 条数据异步导出 |
| 购物车并发加购 | > 5000 QPS | 高峰期并发能力 |
| 下单并发 | > 1000 QPS | 秒杀/促销场景并发下单 |
4.2 安全要求
| 要求 | 说明 |
|---|---|
| 接口鉴权 | 所有交易接口需登录认证,后台接口需权限校验 |
| 数据隔离 | 用户只能操作自己的订单/购物车/售后 |
| 租户隔离 | 不同租户的订单数据完全隔离 |
| 防重提交 | 下单、支付接口需防重提交(幂等性) |
| 金额校验 | 服务端必须重新计算金额,不信任前端传入的金额 |
| 操作日志 | 所有后台操作记录操作日志(含操作人、操作类型、变更内容) |
| 敏感信息 | 收货人手机号、地址在列表接口中脱敏展示 |
| 退款安全 | 退款金额不得超过实付金额,退款操作需二次确认 |
| 接口限流 | 下单/支付接口限流保护,防止恶意请求 |
| 数据签名 | 支付回调接口需验签 |
4.3 兼容性要求
| 端 | 要求 |
|---|---|
| 后台管理端(PC) | Chrome 80+、Firefox 75+、Safari 13+、Edge 80+ |
| 前台用户端(H5) | iOS Safari 12+、Android Chrome 80+、微信内置浏览器 |
| 前台用户端(小程序) | 微信小程序基础库 2.10.0+ |
| 前台用户端(App) | iOS 12.0+、Android 6.0+ |
| 分辨率适配 | 后台支持 1366×768 及以上;前台适配 320px - 750px 宽度 |
五、数据设计
5.1 核心表结构
5.1.1 购物车表(trade_cart)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PK, AUTO_INCREMENT | 主键 |
| user_id | BIGINT | NOT NULL | 用户ID |
| spu_id | BIGINT | NOT NULL | 商品 SPU ID |
| sku_id | BIGINT | NOT NULL | 商品 SKU ID |
| count | INT | NOT NULL, DEFAULT 1 | 商品数量 |
| selected | TINYINT | NOT NULL, DEFAULT 1 | 是否选中(0-否 1-是) |
| creator | VARCHAR(64) | 创建者 | |
| create_time | DATETIME | NOT NULL | 创建时间 |
| updater | VARCHAR(64) | 更新者 | |
| update_time | DATETIME | NOT NULL | 更新时间 |
| deleted | BIT | NOT NULL, DEFAULT 0 | 删除标记 |
| tenant_id | BIGINT | NOT NULL | 租户ID |
索引:
- idx_user_id:user_id
- uk_user_sku:user_id + sku_id(唯一索引,保证同一用户同一 SKU 只有一条记录)
5.1.2 交易订单表(trade_order)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PK, AUTO_INCREMENT | 主键 |
| user_id | BIGINT | NOT NULL | 用户ID |
| cart_id | VARCHAR(2048) | 购物车项ID列表(逗号分隔) | |
| no | VARCHAR(32) | NOT NULL, UNIQUE | 订单编号 |
| status | TINYINT | NOT NULL | 订单状态(0-待支付 10-待发货 20-待收货 30-已完成 40-已评价 50-已取消) |
| product_count | INT | NOT NULL | 商品数量 |
| all_pay_price | INT | NOT NULL | 商品总金额(分) |
| delivery_price | INT | NOT NULL, DEFAULT 0 | 运费(分) |
| discount_price | INT | NOT NULL, DEFAULT 0 | 优惠金额(分) |
| point_pay_price | INT | NOT NULL, DEFAULT 0 | 积分抵扣金额(分) |
| pay_price | INT | NOT NULL | 实付金额(分) |
| pay_order_id | BIGINT | 支付单ID | |
| pay_type | TINYINT | 支付方式(1-微信 2-支付宝 3-钱包余额) | |
| pay_time | DATETIME | 支付时间 | |
| delivery_type | TINYINT | NOT NULL | 配送方式(1-快递 2-自提) |
| delivery_id | BIGINT | 发货记录ID | |
| receiver_name | VARCHAR(64) | NOT NULL | 收货人姓名 |
| receiver_mobile | VARCHAR(20) | NOT NULL | 收货人手机号 |
| receiver_area_id | BIGINT | 收货地区ID | |
| receiver_post_code | VARCHAR(10) | 收货邮编 | |
| receiver_detail_address | VARCHAR(256) | NOT NULL | 收货详细地址 |
| delivery_express_id | BIGINT | 物流公司ID | |
| delivery_express_no | VARCHAR(64) | 物流单号 | |
| delivery_time | DATETIME | 发货时间 | |
| receive_time | DATETIME | 收货时间 | |
| remark | VARCHAR(512) | 买家备注 | |
| admin_remark | VARCHAR(512) | 商家备注 | |
| close_reason | VARCHAR(256) | 关闭原因 | |
| coupon_id | BIGINT | 使用的优惠券ID | |
| use_point | INT | DEFAULT 0 | 使用的积分数量 |
| creator | VARCHAR(64) | 创建者 | |
| create_time | DATETIME | NOT NULL | 创建时间 |
| updater | VARCHAR(64) | 更新者 | |
| update_time | DATETIME | NOT NULL | 更新时间 |
| deleted | BIT | NOT NULL, DEFAULT 0 | 删除标记 |
| tenant_id | BIGINT | NOT NULL | 租户ID |
订单状态枚举:
| 值 | 状态 | 说明 |
|---|---|---|
| 0 | 待支付 | 等待用户支付 |
| 10 | 待发货 | 支付成功,等待商家发货 |
| 20 | 待收货 | 已发货,等待用户确认收货 |
| 30 | 已完成 | 确认收货后完成 |
| 40 | 已评价 | 用户完成评价 |
| 50 | 已取消 | 用户取消或超时取消 |
索引:
- uk_no:no(唯一索引)
- idx_user_id:user_id
- idx_status:status
- idx_create_time:create_time
- idx_pay_time:pay_time
5.1.3 订单商品表(trade_order_item)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PK, AUTO_INCREMENT | 主键 |
| order_id | BIGINT | NOT NULL | 订单ID |
| order_item_id | BIGINT | 父订单项ID(用于拆单场景) | |
| user_id | BIGINT | NOT NULL | 用户ID |
| spu_id | BIGINT | NOT NULL | 商品 SPU ID |
| spu_name | VARCHAR(256) | NOT NULL | 商品名称(快照) |
| sku_id | BIGINT | NOT NULL | 商品 SKU ID |
| properties | VARCHAR(512) | 规格属性(JSON 快照) | |
| pic_url | VARCHAR(512) | 商品图片(快照) | |
| count | INT | NOT NULL | 购买数量 |
| price | INT | NOT NULL | 商品单价(分) |
| pay_price | INT | NOT NULL | 实付金额(分) |
| discount_price | INT | NOT NULL, DEFAULT 0 | 优惠金额(分) |
| point_pay_price | INT | NOT NULL, DEFAULT 0 | 积分抵扣金额(分) |
| delivery_price | INT | NOT NULL, DEFAULT 0 | 运费分摊(分) |
| after_sale_status | TINYINT | NOT NULL, DEFAULT 0 | 售后状态(0-无售后 1-售后中 2-售后完成) |
| after_sale_id | BIGINT | 关联售后单ID | |
| comment_status | TINYINT | NOT NULL, DEFAULT 0 | 评价状态(0-未评价 1-已评价) |
| creator | VARCHAR(64) | 创建者 | |
| create_time | DATETIME | NOT NULL | 创建时间 |
| updater | VARCHAR(64) | 更新者 | |
| update_time | DATETIME | NOT NULL | 更新时间 |
| deleted | BIT | NOT NULL, DEFAULT 0 | 删除标记 |
| tenant_id | BIGINT | NOT NULL | 租户ID |
索引:
- idx_order_id:order_id
- idx_user_id:user_id
- idx_spu_id:spu_id
5.1.4 售后表(trade_after_sale)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PK, AUTO_INCREMENT | 主键 |
| user_id | BIGINT | NOT NULL | 用户ID |
| order_id | BIGINT | NOT NULL | 订单ID |
| order_item_id | BIGINT | NOT NULL | 订单项ID |
| no | VARCHAR(32) | NOT NULL, UNIQUE | 售后单号 |
| status | TINYINT | NOT NULL | 售后状态 |
| way | TINYINT | NOT NULL | 售后方式(10-仅退款 20-退货退款) |
| type | TINYINT | NOT NULL | 售后类型 |
| order_price | INT | NOT NULL | 订单原价(分) |
| apply_refund_price | INT | NOT NULL | 申请退款金额(分) |
| refund_price | INT | 实际退款金额(分) | |
| logistics_id | BIGINT | 退货物流公司ID | |
| logistics_no | VARCHAR(64) | 退货物流单号 | |
| apply_reason | VARCHAR(128) | NOT NULL | 申请原因 |
| apply_description | VARCHAR(512) | 申请描述 | |
| apply_pic_urls | VARCHAR(2048) | 凭证图片URL列表 | |
| refund_reason | VARCHAR(256) | 拒绝原因 | |
| refund_time | DATETIME | 退款时间 | |
| receive_time | DATETIME | 商家确认收货时间 | |
| creator | VARCHAR(64) | 创建者 | |
| create_time | DATETIME | NOT NULL | 创建时间 |
| updater | VARCHAR(64) | 更新者 | |
| update_time | DATETIME | NOT NULL | 更新时间 |
| deleted | BIT | NOT NULL, DEFAULT 0 | 删除标记 |
| tenant_id | BIGINT | NOT NULL | 租户ID |
售后状态枚举:
| 值 | 状态 | 说明 |
|---|---|---|
| 10 | 待审核 | 用户已提交,等待商家审核 |
| 20 | 商家已同意(仅退款) | 商家同意仅退款 |
| 21 | 商家已同意(退货退款) | 商家同意退货退款 |
| 30 | 待用户发货 | 等待用户填写退货物流 |
| 40 | 待商家收货 | 退货在途或已收到待确认 |
| 50 | 退款中 | 正在执行退款 |
| 60 | 已完成 | 售后流程完结 |
| 70 | 已拒绝 | 商家拒绝售后 |
| 80 | 待协商 | 商家与用户协商中 |
索引:
- uk_no:no(唯一索引)
- idx_user_id:user_id
- idx_order_id:order_id
- idx_order_item_id:order_item_id
- idx_status:status
5.1.5 交易配置表(trade_config)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PK, AUTO_INCREMENT | 主键 |
| config_key | VARCHAR(128) | NOT NULL, UNIQUE | 配置键 |
| config_value | VARCHAR(512) | NOT NULL | 配置值 |
| config_desc | VARCHAR(256) | 配置说明 | |
| creator | VARCHAR(64) | 创建者 | |
| create_time | DATETIME | NOT NULL | 创建时间 |
| updater | VARCHAR(64) | 更新者 | |
| update_time | DATETIME | NOT NULL | 更新时间 |
| deleted | BIT | NOT NULL, DEFAULT 0 | 删除标记 |
| tenant_id | BIGINT | NOT NULL | 租户ID |
默认配置项:
| config_key | config_value | config_desc |
|---|---|---|
| order_close_time | 30 | 待支付订单超时取消时间(分钟) |
| order_auto_receive_time | 14 | 待收货超时自动确认时间(天) |
| order_auto_complete_time | 7 | 确认收货后自动完成时间(天) |
| after_sale_apply_limit | 15 | 售后申请时效(天) |
| after_sale_auto_agree_time | 48 | 商家超时自动同意时间(小时) |
| after_sale_pic_required | false | 售后凭证是否必填 |
| cart_max_count | 200 | 购物车商品种类上限 |
| point_deduction_ratio | 50 | 积分最大抵扣比例(%) |
| stock_reduce_mode | order | 库存扣减模式(order-下单扣 pay-支付扣) |
5.1.6 物流公司表(trade_delivery_express)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PK, AUTO_INCREMENT | 主键 |
| name | VARCHAR(128) | NOT NULL | 物流公司名称 |
| code | VARCHAR(64) | NOT NULL, UNIQUE | 物流公司编码 |
| logo | VARCHAR(512) | 公司Logo URL | |
| contact_phone | VARCHAR(32) | 联系电话 | |
| website | VARCHAR(256) | 公司官网 | |
| sort | INT | NOT NULL, DEFAULT 0 | 排序值 |
| status | TINYINT | NOT NULL, DEFAULT 0 | 状态(0-启用 1-禁用) |
| creator | VARCHAR(64) | 创建者 | |
| create_time | DATETIME | NOT NULL | 创建时间 |
| updater | VARCHAR(64) | 更新者 | |
| update_time | DATETIME | NOT NULL | 更新时间 |
| deleted | BIT | NOT NULL, DEFAULT 0 | 删除标记 |
| tenant_id | BIGINT | NOT NULL | 租户ID |
索引:
- uk_code:code(唯一索引)
- idx_status:status
5.1.7 运费模板表(trade_delivery_express_template)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PK, AUTO_INCREMENT | 主键 |
| name | VARCHAR(128) | NOT NULL | 模板名称 |
| charge_mode | TINYINT | NOT NULL | 计费方式(1-按件 2-按重量) |
| sort | INT | NOT NULL, DEFAULT 0 | 排序值 |
| status | TINYINT | NOT NULL, DEFAULT 0 | 状态(0-启用 1-禁用) |
| creator | VARCHAR(64) | 创建者 | |
| create_time | DATETIME | NOT NULL | 创建时间 |
| updater | VARCHAR(64) | 更新者 | |
| update_time | DATETIME | NOT NULL | 更新时间 |
| deleted | BIT | NOT NULL, DEFAULT 0 | 删除标记 |
| tenant_id | BIGINT | NOT NULL | 租户ID |
5.1.8 运费模板地区配置表(trade_delivery_express_template_area)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PK, AUTO_INCREMENT | 主键 |
| template_id | BIGINT | NOT NULL | 模板ID |
| area_ids | VARCHAR(2048) | NOT NULL | 地区ID列表(逗号分隔) |
| start_count | DECIMAL(10,2) | NOT NULL | 首件/首重数量 |
| start_price | INT | NOT NULL | 首件/首重费用(分) |
| extra_count | DECIMAL(10,2) | NOT NULL | 续件/续重数量 |
| extra_price | INT | NOT NULL | 续件/续重费用(分) |
| free_delivery_price | INT | 满额包邮金额(分) | |
| creator | VARCHAR(64) | 创建者 | |
| create_time | DATETIME | NOT NULL | 创建时间 |
| updater | VARCHAR(64) | 更新者 | |
| update_time | DATETIME | NOT NULL | 更新时间 |
| deleted | BIT | NOT NULL, DEFAULT 0 | 删除标记 |
| tenant_id | BIGINT | NOT NULL | 租户ID |
索引:
- idx_template_id:template_id
六、跨模块联动
6.1 交易 → 商品管理
| 联动点 | 触发时机 | 联动方式 | 说明 |
|---|---|---|---|
| 商品快照 | 下单时 | 数据拷贝 | 订单订单项保存商品名称、规格、图片、单价的快照,后续商品修改不影响历史订单 |
| 库存扣减 | 下单/支付时 | 接口调用 | 根据配置模式(下单扣/支付扣)调用商品模块扣减 SKU 库存 |
| 库存释放 | 订单取消/超时 | 接口调用 | 订单取消时回滚已锁定的库存 |
| 商品状态校验 | 加购/结算时 | 接口调用 | 校验商品是否上架、SKU 是否有库存 |
| 销量更新 | 订单完成后 | 异步消息 | 订单完成后异步更新商品销量数据 |
6.2 交易 → 支付模块
| 联动点 | 触发时机 | 联动方式 | 说明 |
|---|---|---|---|
| 创建支付单 | 提交订单后 | 接口调用 | 调用支付模块创建支付单,获取支付参数 |
| 支付回调 | 支付成功 | 回调通知 | 支付模块回调交易模块更新订单状态 |
| 退款 | 售后审核通过 | 接口调用 | 调用支付模块发起原路退款 |
| 钱包余额扣减 | 使用钱包支付时 | 接口调用 | 调用会员模块扣减钱包余额 |
6.3 交易 → 营销模块
| 联动点 | 触发时机 | 联动方式 | 说明 |
|---|---|---|---|
| 优惠券核销 | 下单时 | 接口调用 | 调用营销模块核销优惠券 |
| 优惠券释放 | 订单取消时 | 接口调用 | 订单取消时退回已核销的优惠券 |
| 满减计算 | 确认订单页 | 接口调用 | 调用营销模块计算满减优惠金额 |
| 积分抵扣 | 下单时 | 接口调用 | 调用会员模块计算积分可抵扣金额并扣减 |
6.4 交易 → 会员模块
| 联动点 | 触发时机 | 联动方式 | 说明 |
|---|---|---|---|
| 积分扣减 | 支付成功后 | 接口调用 | 扣减用户使用的积分 |
| 积分释放 | 订单取消时 | 接口调用 | 退回已扣减的积分 |
| 积分赠送 | 订单完成后 | 异步消息 | 根据消费金额赠送用户积分 |
| 用户等级 | 订单完成后 | 异步消息 | 累计消费金额影响用户等级 |
6.5 交易 → 统计分析
| 联动点 | 触发时机 | 联动方式 | 说明 |
|---|---|---|---|
| 交易数据 | 订单状态变更时 | 异步消息 | 推送订单数据到统计模块用于交易分析 |
| 售后数据 | 售后状态变更时 | 异步消息 | 推送售后数据用于售后分析 |
| 商品销量 | 订单完成后 | 异步消息 | 推送商品维度销量数据 |
七、附录
7.1 名词解释
| 术语 | 通俗解释 | 类比 |
|---|---|---|
| SPU | 标准产品单元,一个"商品"的标识 | 就像"可口可乐"是一个 SPU |
| SKU | 库存单位,具体到某个规格 | "330ml 罐装可口可乐"就是一个 SKU |
| 订单编号 | 系统自动生成的订单身份证号 | 类似快递单号,每单唯一 |
| 售后单号 | 售后申请的唯一编号 | 类似维修工单号 |
| 实付金额 | 用户真正掏了多少钱 | = 商品价 + 运费 - 优惠 - 积分抵扣 |
| 运费模板 | 定义"运费怎么算"的规则表 | 类似快递公司的计费标准 |
| 支付单 | 支付系统生成的支付凭证 | 类似超市的付款小票 |
| 幂等性 | 同一个操作执行多次和执行一次效果一样 | 类似电梯按钮——按多次和按一次效果相同 |
| 下单减库存 | 下单就扣库存,不付就释放 | 类似餐厅预留座位——先占着,超时取消 |
| 支付减库存 | 付了钱才扣库存 | 类似演唱会——付款确认才算数 |
| 物流轨迹 | 快递运输过程中的节点记录 | 类似外卖配送地图上的骑手位置 |
| 仅退款 | 不退商品,只退钱 | 类似外卖洒了——不用退餐,直接退钱 |
| 退货退款 | 退回商品,同时退钱 | 类似网购衣服不合身——寄回去,钱退给你 |
| 满额包邮 | 买够一定金额就免运费 | 类似超市"满 99 元免配送费" |
| 防重提交 | 防止同一操作被重复执行 | 类似地铁闸机——刷一次过一个人,连刷不会过两个 |
7.2 权限标识
| 权限标识 | 说明 | 所属模块 |
|---|---|---|
| trade:cart:query | 查看购物车 | 购物车管理 |
| trade:cart:clean | 清空购物车 | 购物车管理 |
| trade:order:query | 查看订单 | 订单管理 |
| trade:order:detail | 订单详情 | 订单管理 |
| trade:order:delivery | 订单发货 | 订单管理 |
| trade:order:remark | 订单备注 | 订单管理 |
| trade:order:adjust-price | 订单调价 | 订单管理 |
| trade:order:close | 订单关闭 | 订单管理 |
| trade:order:export | 订单导出 | 订单管理 |
| trade:after-sale:query | 查看售后 | 售后管理 |
| trade:after-sale:detail | 售后详情 | 售后管理 |
| trade:after-sale:agree | 同意售后 | 售后管理 |
| trade:after-sale:disagree | 拒绝售后 | 售后管理 |
| trade:after-sale:refund | 执行退款 | 售后管理 |
| trade:after-sale:confirm-receive | 确认退货收货 | 售后管理 |
| trade:after-sale:statistics | 售后统计 | 售后管理 |
| trade:delivery:express:query | 查看物流公司 | 物流管理 |
| trade:delivery:express:create | 新增物流公司 | 物流管理 |
| trade:delivery:express:update | 编辑物流公司 | 物流管理 |
| trade:delivery:express:delete | 删除物流公司 | 物流管理 |
| trade:delivery:express-template:query | 查看运费模板 | 物流管理 |
| trade:delivery:express-template:create | 新增运费模板 | 物流管理 |
| trade:delivery:express-template:update | 编辑运费模板 | 物流管理 |
| trade:delivery:express-template:delete | 删除运费模板 | 物流管理 |
| trade:delivery:track | 物流跟踪查询 | 物流管理 |
| trade:config:query | 查看交易配置 | 交易配置 |
| trade:config:save | 保存交易配置 | 交易配置 |
7.3 接口汇总(后台管理端)
| 序号 | 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|---|
| 1 | 获取购物车分页 | GET | /admin-api/trade/cart/page | 购物车列表 |
| 2 | 清空用户购物车 | DELETE | /admin-api/trade/cart/clean | 清空购物车 |
| 3 | 获取订单分页 | GET | /admin-api/trade/order/page | 订单列表 |
| 4 | 获取订单详情 | GET | /admin-api/trade/order/get-detail | 订单详情 |
| 5 | 订单发货 | PUT | /admin-api/trade/order/delivery | 发货操作 |
| 6 | 订单备注 | PUT | /admin-api/trade/order/update-remark | 更新备注 |
| 7 | 订单调价 | PUT | /admin-api/trade/order/update-price | 调整金额 |
| 8 | 订单关闭 | PUT | /admin-api/trade/order/close | 关闭订单 |
| 9 | 导出订单 | GET | /admin-api/trade/order/export | 导出 Excel |
| 10 | 获取订单统计 | GET | /admin-api/trade/order/get-statistics | 各状态数量 |
| 11 | 获取物流轨迹 | GET | /admin-api/trade/order/get-express-track | 物流查询 |
| 12 | 获取订单操作记录 | GET | /admin-api/trade/order/get-log | 操作日志 |
| 13 | 获取售后分页 | GET | /admin-api/trade/after-sale/page | 售后列表 |
| 14 | 获取售后详情 | GET | /admin-api/trade/after-sale/get-detail | 售后详情 |
| 15 | 同意售后 | PUT | /admin-api/trade/after-sale/agree | 审核通过 |
| 16 | 拒绝售后 | PUT | /admin-api/trade/after-sale/disagree | 审核拒绝 |
| 17 | 确认收货 | PUT | /admin-api/trade/after-sale/confirm-receive | 确认退货 |
| 18 | 执行退款 | PUT | /admin-api/trade/after-sale/refund | 退款操作 |
| 19 | 获取售后统计 | GET | /admin-api/trade/after-sale/get-statistics | 售后统计 |
| 20 | 获取退款原因分布 | GET | /admin-api/trade/after-sale/get-reason-statistics | 原因分布 |
| 21 | 获取物流公司分页 | GET | /admin-api/trade/delivery/express/page | 物流公司列表 |
| 22 | 获取物流公司详情 | GET | /admin-api/trade/delivery/express/get | 物流公司详情 |
| 23 | 创建物流公司 | POST | /admin-api/trade/delivery/express/create | 新增物流公司 |
| 24 | 更新物流公司 | PUT | /admin-api/trade/delivery/express/update | 编辑物流公司 |
| 25 | 删除物流公司 | DELETE | /admin-api/trade/delivery/express/delete | 删除物流公司 |
| 26 | 获取物流公司精简列表 | GET | /admin-api/trade/delivery/express/simple-list | 下拉选择 |
| 27 | 获取运费模板分页 | GET | /admin-api/trade/delivery/express-template/page | 模板列表 |
| 28 | 获取运费模板详情 | GET | /admin-api/trade/delivery/express-template/get | 模板详情 |
| 29 | 创建运费模板 | POST | /admin-api/trade/delivery/express-template/create | 新增模板 |
| 30 | 更新运费模板 | PUT | /admin-api/trade/delivery/express-template/update | 编辑模板 |
| 31 | 删除运费模板 | DELETE | /admin-api/trade/delivery/express-template/delete | 删除模板 |
| 32 | 计算运费 | POST | /admin-api/trade/delivery/express-template/calculate | 运费计算 |
| 33 | 查询物流轨迹 | GET | /admin-api/trade/delivery/express/track | 物流轨迹 |
| 34 | 获取交易配置 | GET | /admin-api/trade/config/get | 配置查询 |
| 35 | 更新交易配置 | PUT | /admin-api/trade/config/save | 配置保存 |
7.4 接口汇总(前台用户端)
| 序号 | 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|---|
| 1 | 获取购物车列表 | GET | /app-api/trade/cart/list | 购物车 |
| 2 | 加入购物车 | POST | /app-api/trade/cart/add | 加购 |
| 3 | 修改购物车数量 | PUT | /app-api/trade/cart/update-count | 改数量 |
| 4 | 删除购物车商品 | DELETE | /app-api/trade/cart/delete | 删除商品 |
| 5 | 清空购物车 | DELETE | /app-api/trade/cart/clean | 清空 |
| 6 | 勾选/取消勾选 | PUT | /app-api/trade/cart/select | 勾选 |
| 7 | 全选/取消全选 | PUT | /app-api/trade/cart/select-all | 全选 |
| 8 | 合并购物车 | POST | /app-api/trade/cart/merge | 登录后合并 |
| 9 | 确认订单 | POST | /app-api/trade/order/pre-create | 预计算 |
| 10 | 提交订单 | POST | /app-api/trade/order/create | 创建订单 |
| 11 | 获取可用优惠券 | GET | /app-api/trade/order/available-coupons | 可用券 |
| 12 | 积分抵扣计算 | POST | /app-api/trade/order/point-calculate | 积分计算 |
| 13 | 发起支付 | POST | /app-api/trade/order/pay | 支付 |
| 14 | 获取支付结果 | GET | /app-api/trade/order/pay-result | 支付结果 |
| 15 | 获取订单分页 | GET | /app-api/trade/order/page | 订单列表 |
| 16 | 获取各状态数量 | GET | /app-api/trade/order/count | Tab 角标 |
| 17 | 获取订单详情 | GET | /app-api/trade/order/get-detail | 订单详情 |
| 18 | 取消订单 | PUT | /app-api/trade/order/cancel | 取消 |
| 19 | 确认收货 | PUT | /app-api/trade/order/receive | 确认收货 |
| 20 | 删除订单 | DELETE | /app-api/trade/order/delete | 删除订单 |
| 21 | 获取物流轨迹 | GET | /app-api/trade/order/get-express-track | 物流查询 |
| 22 | 提交评价 | POST | /app-api/trade/order/comment/create | 评价 |
| 23 | 追加评价 | POST | /app-api/trade/order/comment/append | 追评 |
| 24 | 获取待评价商品 | GET | /app-api/trade/order/comment/pending | 待评价 |
| 25 | 创建售后申请 | POST | /app-api/trade/after-sale/create | 申请售后 |
| 26 | 获取售后列表 | GET | /app-api/trade/after-sale/page | 售后列表 |
| 27 | 获取售后详情 | GET | /app-api/trade/after-sale/get-detail | 售后详情 |
| 28 | 取消售后申请 | PUT | /app-api/trade/after-sale/cancel | 撤销售后 |
| 29 | 填写退货物流 | PUT | /app-api/trade/after-sale/delivery | 退货物流 |
| 30 | 获取售后操作记录 | GET | /app-api/trade/after-sale/get-log | 售后进度 |
7.5 错误码定义
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| TRADE_ORDER_NOT_FOUND | 订单不存在 | 检查订单 ID 是否正确 |
| TRADE_ORDER_STATUS_ERROR | 订单状态不允许当前操作 | 检查订单当前状态是否支持该操作 |
| TRADE_ORDER_PAY_PRICE_ERROR | 订单金额计算异常 | 刷新页面重试,联系管理员 |
| TRADE_STOCK_NOT_ENOUGH | 商品库存不足 | 减少购买数量或选择其他规格 |
| TRADE_COUPON_INVALID | 优惠券不可用 | 检查优惠券是否过期或已使用 |
| TRADE_COUPON_NOT_MATCH | 优惠券不满足使用条件 | 检查优惠券使用门槛 |
| TRADE_AFTER_SALE_EXIST | 该商品已有进行中的售后 | 等待当前售后完成后再申请 |
| TRADE_AFTER_SALE_TIMEOUT | 已超过售后申请时效 | 无法申请售后,联系客服 |
| TRADE_REFUND_PRICE_EXCEED | 退款金额超过实付金额 | 调整退款金额 |
| TRADE_DELIVERY_TEMPLATE_USED | 运费模板已被商品使用,无法删除 | 先解除商品关联再删除 |
| TRADE_CART_FULL | 购物车已满 | 清理购物车后重试 |
| TRADE_ORDER_DUPLICATE | 重复提交订单 | 请稍后重试 |
7.6 变更记录
| 版本 | 日期 | 修改内容 | 修改人 |
|---|---|---|---|
| v1.0 | 2026-09-24 | 初始版本,完成交易管理全部功能设计 | PM Team |
| v2.0 | 2026-09-19 | 增强版:补充业务场景与验收标准、ASCII 原型图、业务规则设计原因、跨模块联动、名词解释类比 | PM Team |
本文档为交易管理模块 PRD v2.0,如有问题请联系产品负责人。