订单管理
今天我们来介绍一下电商系统中最关键的一个模块订单管理。
订单系统简介
我们的订单系统应该包含这些功能:
- 创建订单
- 随着购物流程更新订单状态
- 查询订单,包括订单数据生产各种报表
我们的系统主要涉及这样几张表:
- 订单主表:保存订单的基本信息
- 订单商品表:保存订单的商品信息
- 订单支付表:保存订单的支付和退款信息
- 订单优惠表:保存订单的所有优惠信息
订单管理
- 订单列表:订单分类筛选(全部、代收款、带发货、已完成、已关闭);查询(订单编号、收货人、提交时间、高级检索);展示(订单编号、提交时间、用户账号、订单金额、支付方式、订单来源、订单状态、操作);
- 操作:查看;关闭(填写备注);发货(选择物流公司及单号);跟踪(查询物流轨迹);删除
- 确认收货:查询已发货列表,并可以确认收货
- 到货提醒:查询到货提醒通知
订单设置
退款及退货
- 退货申请处理:
- 申请分类筛选(全部申请、代处理、退货中、已完成、已拒绝)
- 查询(单号、收货人姓名、手机号、申请时间、高级查询)
- 展示(服务单号、申请时间、用户账号、退款金额、联系人、申请状态、处理时间)
- 查看详情
- 退货原因设置
- 添加(原因类型、排序、是否启动)
- 列表(原因类型、排序、是否启用、添加时间、操作)
- 编辑、删除
- 退款申请处理
- 申请分类筛选(全部申请、待处理、已处理、已拒绝)
- 查询(单号、申请时间、处理状态、高级查询)
- 展示(服务单号、申请时间、用户账号、退款金额、申请状态、处理时间)
- 查看详情
订单支付
快递单管理
- 快递单模板
- 自定义打印项
- 发货点信息管理
订单系统中面临的问题
数据不能错(最基本)
一个购物流程,从下单开始、支付、发货,直到收获,这么长的流程中,每个环节都需要更新订单的数据,每次更新都会涉及到多张表的更新操作,这些操作有些是在一台服务器上,有些是在多台服务器上执行,服务器有可能故障,网络也可能出现问题。
那我们如何在这些复杂情况下,保证订单数据一笔都不能错呢?
- 使用事务: 我们通过使用事务来保证我们的更新操作要么都成功,要么都失败,通过事务保证数据不出错;
如何避免重复下单
用户在提交订单的时候,可能手抖点击了多次,浏览器发了多个HTTP请求,结构创建了两个一模一样的订单,这显然不符合我们的预期,那么如何防止这种情况的发生呢?
- 订单服务进行幂等处理: