仿天猫网站开发6:用户购物流程梳理
概述
需要登录的前台功能,其实就是整个购物流程。也是项目中的一个重要组成部分,我将这部分称为用户操作(operation)。其实在写此文章前,我已经将功能基本完成了。但是还是发现了一些问题,特别是由于前期没有很好的规划,导致后期URL关系混乱。想到我在做游戏策划时,接触的游戏开发,都是以游戏文档作为基础。而我也曾经一直致力于写一篇逻辑无懈可击的文档。以此来分担程序同学的工作量。因此我决定为了提高之后的项目开发效率,在此之前,先静下心来梳理好业务流程、之后将各个环节和表关系搞清楚,再完成最后的收尾工作。
购物流程
买家用户在购物时,进行的流程如下图所示:
id="embed_dom" src="https://www.processon.com/embed/5922b367e4b0bb04c34c0dfc">上图就是我整理的购物流程,下面对表关系进行梳理,之后对各个功能模块进行分开解析。
购物流程与表关系梳理
购物流程主要围绕两个表,分别是OrderItem和Order表。对应的数据模型是operation/models.py中的两个类,代码如下:
# _*_encoding:utf8_*_from __future__ import unicode_literalsfrom users.models import UserProfile
from product.models import *
# Create your models here.class Order(models.Model):orderCode = models.CharField(max_length=100, verbose_name=u"订单号")address = models.TextField(verbose_name=u"收货地址")post = models.CharField(max_length=100, verbose_name=u"邮政编码")receiver = models.CharField(max_length=100, verbose_name=u"收货人信息")mobile = models.CharField(max_length=11, verbose_name=u"手机号码")userMessage = models.TextField(verbose_name=u"用户备注信息")createDate = models.DateTimeField(verbose_name=u"创建日期", default=timezone.now)payDate = models.DateTimeField(verbose_name=u"支付日期", default=timezone.now)deliveryDate = models.DateTimeField(verbose_name=u"发货日期", default=timezone.now)confirmDate = models.DateTimeField(verbose_name=u"确认收货日期", default=timezone.now)status = models.CharField(choices=(("waitPay", u"等待支付"),("waitDelivery", u"等待发货"),("waitConfirm", u"等待收货"),("finish", u"交易完成"),("delete", u"订单删除"),), default="waitPay",max_length=100, verbose_name=u"订单状态")user = models.ForeignKey(UserProfile, verbose_name=u"用户")class Meta:verbose_name = u"订单"verbose_name_plural = verbose_namedef get_order_item(self):return self.orderitem_set.all()def get_order_count(self):return self.orderitem_set.all().count()class OrderItem(models.Model):number = models.IntegerField(verbose_name=u"购买数量")product = models.ForeignKey(Product, verbose_name=u"产品")order = models.ForeignKey(Order, verbose_name="订单", null=True, blank=True) # 没有订单时为nulluser = models.ForeignKey(UserProfile, verbose_name="用户")status = models.CharField(choices=(("default", u"初始状态"),("waitReview", u"等待评价"),("finish", u"交易完成")),max_length=20, verbose_name=u"订单项状态", default="default")class Meta:verbose_name = u"订单项"verbose_name_plural = verbose_name
| 行为 | 对表的操作 |
|---|---|
| 立即购买 | 新建OrderItem |
| 加入购物车 | 新建OrderItem |
| 查看购物车 | 显示order_id为空的OrderItem |
| 选中购物车中的商品 | 选中OrderItem |
| 结算页面 | 显示选中的OrderItem |
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
