如何设计一个电商系统(二) - 订单管理

订单管理

今天我们来介绍一下电商系统中最关键的一个模块订单管理

订单系统简介

我们的订单系统应该包含这些功能:

  • 创建订单
  • 随着购物流程更新订单状态
  • 查询订单,包括订单数据生产各种报表

我们的系统主要涉及这样几张表:

  1. 订单主表:保存订单的基本信息
  2. 订单商品表:保存订单的商品信息
  3. 订单支付表:保存订单的支付和退款信息
  4. 订单优惠表:保存订单的所有优惠信息
订单管理
  • 订单列表:订单分类筛选(全部、代收款、带发货、已完成、已关闭);查询(订单编号、收货人、提交时间、高级检索);展示(订单编号、提交时间、用户账号、订单金额、支付方式、订单来源、订单状态、操作);
  • 操作:查看;关闭(填写备注);发货(选择物流公司及单号);跟踪(查询物流轨迹);删除
  • 确认收货:查询已发货列表,并可以确认收货
  • 到货提醒:查询到货提醒通知
订单设置
退款及退货
  • 退货申请处理:
    1. 申请分类筛选(全部申请、代处理、退货中、已完成、已拒绝)
    2. 查询(单号、收货人姓名、手机号、申请时间、高级查询)
    3. 展示(服务单号、申请时间、用户账号、退款金额、联系人、申请状态、处理时间)
    4. 查看详情
  • 退货原因设置
    1. 添加(原因类型、排序、是否启动)
    2. 列表(原因类型、排序、是否启用、添加时间、操作)
    3. 编辑、删除
  • 退款申请处理
    1. 申请分类筛选(全部申请、待处理、已处理、已拒绝)
    2. 查询(单号、申请时间、处理状态、高级查询)
    3. 展示(服务单号、申请时间、用户账号、退款金额、申请状态、处理时间)
    4. 查看详情
订单支付
快递单管理
  • 快递单模板
  • 自定义打印项
  • 发货点信息管理

订单系统中面临的问题

数据不能错(最基本)

一个购物流程,从下单开始、支付、发货,直到收获,这么长的流程中,每个环节都需要更新订单的数据,每次更新都会涉及到多张表的更新操作,这些操作有些是在一台服务器上,有些是在多台服务器上执行,服务器有可能故障,网络也可能出现问题。
那我们如何在这些复杂情况下,保证订单数据一笔都不能错呢?

  • 使用事务: 我们通过使用事务来保证我们的更新操作要么都成功,要么都失败,通过事务保证数据不出错;

如何避免重复下单

用户在提交订单的时候,可能手抖点击了多次,浏览器发了多个HTTP请求,结构创建了两个一模一样的订单,这显然不符合我们的预期,那么如何防止这种情况的发生呢?

  • 订单服务进行幂等处理:

如何解决并发更新问题

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值