消费者、商家、管理员协同设计|订单与库存闭环|源码资料领取

用一张订单理解整个系统

用户看到的是“选商品—下单—收货”,系统内部却要同时处理商品状态、库存、价格快照、配送信息、评价和权限。本文不按传统论文目录展开,而是沿着一张订单的生命周期拆解系统。

一、订单开始之前:三类角色先把边界划清

注册用户负责浏览商品、购物车、下单、查看配送和评价;商家负责商品、库存、订单处理与配送;管理员负责平台用户、商品、订单、公告和资讯等全局管理。角色职责清晰,才能避免商家修改其他店铺商品、用户查看他人订单等越权问题。

图1 注册用户业务用例

图2 商家用户业务用例

二、商品上架:不仅是新增一条记录

商品上架应包含分类、标题、主图、价格、库存、规格、详情和上下架状态。商品被下架后,历史订单仍需保留购买时的名称和价格,因此订单明细要保存商品快照,而不是每次都读取当前商品表。

  • 商品编辑必须校验所属商家。
  • 价格使用定点小数,禁止使用浮点数直接结算。
  • 库存变更记录来源,例如上架入库、订单扣减、取消返还。
  • 图片上传限制格式和大小,并生成统一访问地址。

三、购物车:临时选择与实时校验

购物车保存的是用户的购买意向,不代表库存已经锁定。用户进入结算页时,需要重新读取商品状态、当前价格和可售库存,并提示失效商品。这样可以避免商品已下架或库存不足时仍然生成订单。

图3 购物商城功能模块结构

四、创建订单:最需要事务控制的一步

创建订单涉及订单主表、订单明细、库存扣减和购物车清理。任何一步失败都应整体回滚。高并发场景下,还要通过数据库行锁、乐观锁版本号或原子更新避免超卖。

from django.db import transaction

@transaction.atomic
def create_order(user, cart_items, address):
    order = Order.objects.create(user=user, address=address, status='PENDING')
    total = 0
    for item in cart_items:
        product = Product.objects.select_for_update().get(id=item.product_id)
        if product.stock < item.quantity or not product.is_on_sale:
            raise ValueError('商品库存不足或已下架')
        product.stock -= item.quantity
        product.save(update_fields=['stock'])
        OrderItem.objects.create(
            order=order, product_id=product.id,
            product_name=product.name, unit_price=product.price,
            quantity=item.quantity
        )
        total += product.price * item.quantity
    order.total_amount = total
    order.save(update_fields=['total_amount'])
    return order

图4 商城核心操作流程

五、配送与状态机:订单不能随意跳转

订单状态建议按“待支付—待发货—已发货—已完成—已取消”推进。商家填写物流公司和单号后,系统记录发货时间;用户确认收货后进入完成状态。取消订单时必须判断是否已发货,并根据状态决定是否返还库存。

  1. 待支付订单超时自动关闭并返还库存。
  2. 商家只能处理归属自己的订单。
  3. 发货操作必须校验物流信息并避免重复提交。
  4. 评价只允许已完成订单的购买用户提交一次。

六、数据模型:订单明细是关键

电商数据库的主链路通常是用户—购物车—订单—订单明细—商品—商家。订单主表保存收货信息、金额和状态,订单明细保存商品快照。公告、商城资讯、收藏和评价作为辅助模块,分别服务于运营、内容和用户互动。

图5 购物商城核心实体关系

七、接口与权限设计

Django 可以通过中间件或权限类统一处理身份认证。接口层只接收参数并返回结果,库存、订单状态和权限校验集中在服务层。后台列表应支持分页、条件筛选和排序,避免一次读取大量数据。

  • 消费者接口:商品查询、购物车、订单、评价、收藏。
  • 商家接口:商品维护、库存调整、订单发货、评价回复。
  • 管理员接口:用户与商家审核、全局商品订单、公告资讯、权限配置。

八、系统界面展示

图6 购物商城商品列表

图7 订单提交页面

图8 订单配送管理页面

图9 商家商品添加页面

九、测试重点:用异常场景验证稳定性

正常流程能跑通只是第一步。电商系统更需要验证库存只剩一件时多人同时购买、重复点击提交订单、商家越权修改商品、已发货订单取消、订单金额被前端篡改等场景。所有结算金额必须由后端重新计算。

十、可继续完善的方向

  • 增加优惠券、满减和促销规则引擎。
  • 引入 Redis 缓存热门商品与分类数据。
  • 使用消息队列异步处理超时订单、库存回补和通知。
  • 增加销售趋势、复购率、库存周转等经营分析指标。

资料获取

源码及配套资料领取

需要《Django 购物商城》完整源码、数据库 SQL、部署说明、论文文档及答辩 PPT,可在评论区留言“Django 购物商城”或私信发送项目名称获取。整理资料仅用于学习交流,请结合自己的需求完成二次开发与功能完善。

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐