实战项目-美多商城(七)订单 设计思路整理

发布时间 2023-04-27 15:30:08作者: 清安宁

模型设计

  • 模型设计: 订单信息应该包含那些字段
- 订单号: order_id

- 下单用户: user

- 下单用户收货地址: address

- 商品总数: total_count

- 商品总价: total_amount

- 运费: freight

- 支付方式(本项目两种): pay_method

	- 支付宝
	- 货到付款

- 订单状态(6种): status

	- 待支付
	- 待发货
	- 待收货
	- 待评价
	- 已完成
	- 已取消
  • 模型设计: 订单商品应该包含那些字段
- 订单号: order

- 商品信息模型: sku

- 购买的商品数量: count

- 购买的商品单价: price

- 其他可选字段
	- 评价: comment
	- 评分: score
	- 是否匿名: is_anonymous
	- 是否评价了: is_commented

提交订单页面分析

  • 展示三块数据

    • 收货地址(可选,之前的接口已写好)

    • 支付方式(可选: 货到付款/支付宝,用户自己选择)

    • 商品列表(不可修改,后端要做的事情就是这个[包含运费字段])

  • 接口行为: 属于完全从db获取数据的行为,所以,序列化器不作校验(views只作用户认证)

  • 构造的数据格式(使用两个序列化器搞定)

{
    "freight":"100.00", # 订单序列化器
    "skus":[ # sku序列化器
        {
            ......
        },
        {
            ......
        },
    ]
}

  • redis存储的数据格式如下
- hash: cart_user_id

	{
		'sku_id_1':count1,
		'sku_id_2':count2,
		'sku_id_3':count3,
	}
	
- set: 

	(sku_id_1,sku_id_2,sku_id_3)
	
- 收集数据思路:
	
	- 获取redis该用户的所有购物车数据

	- 根据sku_id获取 sku_queryset数据集
		- 遍历sku_queryset数据集,为每个 sku_obj新增count属性并赋值
		
	- 手动构造最终的数据集,交给'序列化器'序列化,返回给前端
		{ 
            'freight':freight,
            'skus':skus_queryset
        }