订单系统就该这么设计,稳的一批~

news2024/11/23 21:49:40

订单功能作为电商系统的核心功能,由于它同时涉及到前台商城和后台管理系统,它的设计可谓是非常重要的。就算不是电商系统中,只要是涉及到需要交易的项目,订单功能都具有很好的参考价值,说它是通用业务功能也不为过。今天就以mall项目中的订单功能为例,来聊聊订单功能的设计与实现。

mall项目简介

这里还是简单介绍下mall项目吧,mall项目是一套基于 SpringBoot + Vue + uni-app 的电商系统,目前在Github已有60K的Star,包括前台商城项目和后台管理系统,能支持完整的订单流程!涵盖商品、订单、购物车、权限、优惠券、会员等功能,功能很强大!

  • 项目地址:https://github.com/macrozheng/mall
  • 学习文档:https://www.macrozheng.com

功能设计

首先我们来看下mall项目中订单功能的设计,由于订单功能同时涉及到前台商城和后台管理系统,这里将分别讲解。

后台管理系统

后台管理系统的订单模块主要包括订单管理、订单设置、退货原因设置、退货申请设置功能。

订单管理

后台管理员在订单列表中可以实现查看订单、删除订单、订单发货、订单跟踪等操作。

针对不同状态下的订单,后台管理员在订单详情页还可以实现修改收货人信息、修改费用信息、关闭订单、备注订单等操作

订单设置

后台管理员可以对订单实现一些基础设置,例如订单超过多少时间自动关闭等等。

退货申请处理

后台管理员可以对退货申请进行处理,比如说确认退货或拒绝退货。

退货原因设置

后台管理员还可以对退货的原因进行设置,以便前台用户退货是进行选择。

前台商城系统

我们将以mall项目的核心订单流程为例,来介绍下前台商城系统中的订单功能。

流程示意图

前台商城系统从加入购物车到完成订单的整个流程可以参考下图。

订单流程

  • 前台会员可以在前台商城中查看商品;

  • 前台会员点击加入购物车后查看购物车;

  • 前台会员点击去结算后创建订单;

  • 前台会员点击去结算后跳转到支付界面;

  • 前台会员确认支付后跳转到我的订单界面;

  • 后台管理系统收到订单;

  • 后台管理员点击订单发货进行发货操作;

  • 确认发货后,前台商城订单状态变为待收货;

  • 前台会员确认收货后,订单状态变为交易完成;

  • 后台管理系统可查看订单详情。

功能整理

对于订单模块的功能,我这里整理了一张思维导图方便大家查看,主要是整理了下有哪些功能以及功能需要涉及哪些字段。

数据库设计

根据我们的功能设计和整理好的思维导图,就可以进行数据库设计了,这里是mall项目订单模块的数据库设计图。

接口设计

对于mall项目中订单模块的接口设计,大家可以参考项目的Swagger接口文档,以Oms开头的接口就是订单模块对应的接口。

总结

今天介绍了下mall项目中订单模块的功能设计、数据库设计和接口设计,由于很多项目中都会涉及到订单功能,掌握订单功能的设计还是非常有必要的!

项目源码地址

https://github.com/macrozheng/mall

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/846985.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单元测试最终结果为Stopped状态(有报错后不继续往下执行)

之前跑了一下项目的单元测试,但是发现一旦有报错后单元测试就不继续往下执行,而且最终的结果是stopped状态,截图如下: 经过排查是因为项目启动的时候有如下的代码: 通过代码可以发现如果项目启动失败,则直接…

如何用python画动漫人物,python画卡通人物代码

大家好,小编来为大家解答以下问题,python画动漫人物代码 星空,如何用python画动漫人物,现在让我们一起来看看吧! 要寒假了,给孩子画一个卡通版蜘蛛侠 完整程序代码: from turtle import * speed…

鉴源实验室|公钥基础设施(PKI)在车联网中的应用

作者 | 付海涛 上海控安可信软件创新研究院汽车网络安全组 来源 | 鉴源实验室 01 PKI与车联网 1.1 PKI概述 公钥基础设施(PKI ,Public Key Infrastructure)是一种在现代数字环境中实现认证和加密的基本框架,主要用于保护网络交互和通信的安…

新手教程:5步掌握系统流程图绘制方法!

流程图通常用于管理、分析、设计许多不同领域的流程,是一个很有用的工具,能够帮助大家更轻松、更有效地解决问题。系统流程图是流程图的常见变体之一。 系统流程图是展示数据流以及决策如何影响周围事件的图表类型。 与其他类型的流程图一样,…

【沁恒蓝牙mesh】CH58x USB功能开发记录(一)

本文主要介绍基于【沁恒蓝牙mesh】CH58x USB功能,结合SDK提供的代码包分析USB的基本常识 【沁恒蓝牙mesh】CH58x USB功能开发记录(一) 1. USB基本常识1.1 **USB 设备类别:**1.2 **USB设备实现方法:**1.3 **CDC设备&…

【我们一起60天准备考研算法面试(大全)-第三十九天 39/60】【序列型DP】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

PDF Expert 3.3 for mac

PDF Expert是一款专业的PDF编辑和阅读工具。它可以帮助用户在Mac、iPad和iPhone等设备上查看、注释、编辑、填写和签署PDF文档。 以下是PDF Expert的特点: PDF编辑:PDF Expert提供了丰富的PDF编辑功能,包括添加、删除、移动、旋转、缩放、裁…

【2.2】Java微服务:Hystrix的详解与使用

目录 分布式系统面临问题 Hystrix概念 Hystrix作用 降级 什么是降级 order服务导入Hystrix依赖(简单判断原则:谁调用远程谁加) 启动类添加注解 业务方法添加注解(冒号里填回调方法名,回调方法返回兜底数据&…

DETR不需要多尺度或局部性设计

文章目录 DETR Doesn’t Need Multi-Scale or Locality Design摘要本文方法Box-to-Pixel Relative Position Bias其他改进 实验结果 DETR Doesn’t Need Multi-Scale or Locality Design 摘要 提出了一种改进的DETR检测器,使用单尺度特征映射和全局交叉注意计算&a…

RFID系统数据编码方式仿真实现

RFID 技术简介 射频识别技术(RFID,即,Radio Frequency Identification)是一种非接触自动识别技术,它利用无线通信的方式自动的从目标中读取信息。   典型的RFID射频识别系统包括标签和读写器两部分。   标签是一块集…

学术资源加速

以下为可以加速访问的学术资源地址: github.comgithubusercontent.comgithubassets.comhuggingface.co 编辑 /etc/network_turbo vim /etc/network_turbo 内容格式参考如下: export no_proxylocalhost,127.0.0.1 export http_proxyhttp://127.0.0.…

5,二叉树【p6-p7】

二叉树 5.1二叉树5.1.1例1:用递归和非递归两种方式实现二叉树的先序、中序、后序遍历5.1.1.1递归序的先序、中序、后序遍历先序遍历:中序遍历:后序遍历: 5.1.1.2非递归序的先序、中序、后序遍历先序遍历:中序遍历&…

基于Java+SpringBoot+Vue的时间管理系统设计与实现(源码+LW+部署文档等)

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

Apache Paimon 学习笔记

本博客对应于 B 站尚硅谷教学视频 尚硅谷大数据Apache Paimon教程(流式数据湖平台),为视频对应笔记的相关整理。 1 概述 1.1 简介 Flink 社区希望能够将 Flink 的 Streaming 实时计算能力和 Lakehouse 新架构优势进一步结合,推…

《深度探索c++对象模型》第七章笔记

非原创,在学习 7 站在对象模型的尖端 On the Cusp of the Object Model 这一章讨论三个著名的C语言扩充性质,它们都会影响CH对象。它们分别是 template、exception handling (EH)和runtime type identification (RTTI) 模版、异常、通过运行…

vite项目中使用@代表根路径

1.配置vite.config.ts import { defineConfig } from vite import vue from vitejs/plugin-vue import path from pathexport default defineConfig({plugins: [vue()],resolve: {alias:{: path.resolve(__dirname, src) }} })2.报错path和__dirname 找不到模块“path”或其相…

K8S系列文章 之 编写自动化部署K8S脚本

介绍 通过ansible脚本shell实现自动化部署k8s基础集群(v1.25.0) 部署结构 1. 通过二进制部署包镜像安装k8s集群、目录etcd节点只支持1-3个节点、最多三个etcd节点 2. 因k8s版本相对较新、需要升级内核来支持后台程序、当前版本只支持Cento7,内核版本(5.19.4-1.el7…

本地构建包含java和maven的镜像

目录 1.前提条件 2.下载 2.1.创建Dockerfile 3.构建镜像 参考文章 1.前提条件 本地环境需要的系统和软件 win10 Docker Desktop Powershell 图1 Win10安装Docker后,直接在Powershell使用Docker命令 有些Developer不习惯win10系统,却想要使用Lin…

使用ResponseBodyAdvice封装统一返回值

目录 ResponseBodyAdvice 接口概述 ResponseBodyAdvice 快速使用 父pom文件 pom文件 ResponseDto MyResponseBodyAdvice DemoController 结果展示 ResponseBodyAdvice 接口概述 在实际项目中,我们经常需要在请求前后进行一些操作,比如&#xf…

Cesium 实战教程 - 三种方式(CZML、nodeTransformations)修改模型节点组件属性(比例、旋转、移动等)

Cesium 实战教程 - 三种方式(CZML、nodeTransformations)修改模型节点组件属性(比例、旋转、移动等) 核心代码完整代码在线示例 关于 Cesium 设置模型组件的动作,之前是通过 CZML articulations 来实现的,…