订单相关表设计
首先用户浏览商品,将看中的商品加入到购物车,这里应该有一张购物车表:购物车表(order_cart)
# 购物车表(order_cart)
-- -- --
skuId
spuId
用户id
店铺id
商品名称
商品数量
商品价格
状态(下单之后对应商品就不应该显示在购物车了)
选中购物车中的某些商品,进行下单,订单表也就应运而生
# 订单表(order_info)
----
订单编号(如果对编号格式没什么要求,可使用雪花算法idworker来生成)
itemCount (商品项数量,不是商品个数,比如手机*2,鼠标*1,这里应该是2)
用户id
店铺id
下单时间
支付方式(可用数字表示,如1:支付宝,2:微信,3:银行卡...)
支付时间
outTradeNo 支付宝订单号
配送方式
期望配送日期
商品总额
运费
实际付款
订单状态(这里的状态可根据实际项目来定,可以定10,20,30..这样如果中间缺少一个状态可以添加进去)
如果购物车里面有多个店铺的商品,那么应该分别为这些店铺生成对应的订单。平台可以进行合并支付,但是订单还是要归店铺的。
上面是订单的基本信息,接下来是订单商品相关。
# 订单商品表(order_product)
---
订单编号
spuId
skuId
店铺id
商品名称
商品数量
商品价格
这里order_info与order_product是1对多的关系,一个订单可能有多个商品。
下单完成,等着发货,物流信息不能少,接下来是物流表
# 物流表(order_logistics)
---
订单标号
物流公司id
物流公司编号
快递单号
发货时间
收货时间
# 物流跟踪表(order_logistics_flow)
---
订单标号
物流公司标号
快递单号
remark(根据第三方接口返回来的结果信息)
接下来设计一下发票表:
# 订单发票(order_invoice)
---
发票类型
发票抬头
发票内容
发票代码
发票号码
开票日期
校验码
密码区
服务名称
规格型号
数量
单价
金额
合计
税率
税额
销售方名称
销售方纳税人识别号
销售方地址电话
销售方开户行及账号
备注收入款人
开票人
下单完成后进行支付,这里会有支付记录表,方便以后对账
# 支付记录表(order_pay_history)
---
订单编号
支付方式
订单总额
支付金额
pay_json(第三方支付平台参数信息,可使用json方式保存)
remark (备注)
用户收到货后,可以进行评论,下面是评论表
# 订单评论(order_product_comment)
---
spuId
skuId
评论用户id
用户昵称
点赞数
comment(评论内容)
评论分数(1~5分)
评论时间
product_info_json(评论的商品信息,如规格型号之类的)
image_json(评论图片)
注意:如果一开始就想做分布式系统,建议把商品相关的表和订单表放在同一个数据库中,一则是因为订单业务需要查询商品相关的数据,二则是因为放在一起做事务比较容易,不然需要做分布式事务,加大了开发 成本。前期项目规划的时候这点需要考虑到
订单类型
订单类型: 1)单商户类型 2)多商户类型
单商户类型
多商户类型
一个用户可以购买多个商家的多个商品
问题1:订单怎么分配? 一个订单 多个订单
问题2:支付怎么实现? 支付的钱分配给多个商家。
问题3:提交订单后,此时订单处于什么状态? 待支付
问题4: 提交订单,是否减库存? 有的系统是提交订单减库存,有的系统是支付减库存。
订单拆分
提交订单:很多不同的商品 + 运费 + 补运费+优惠券 订单应该做一个拆分,基于这样的拆分方式,才可以支付退 款,退货,优惠券的功能
金额拆分:
订单状态
待付款(1)、
待发货(2:已经付完毕)、
已发货(3)、
已完成(4)、
已关闭(5)、
退款状态(6)