苍穹外卖总结

1 软件开发流程

需求分析->设计->编码->单元测试->集成测试->上线运维

1.1 需求分析

交付结果:完成需求规格说明书、产品原型

需求规格说明书:系统定义、应用环境、功能规格、性能需求

产品原型:一般通过网页的形式展示当前页面的布局、样式、交互行为、数据展示。

1.2 设计

交付结果:UI设计、数据库设计、接口设计

UI设计:用户界面的设计,主要设计项目的页面效果,小到一个按钮,大到一个页面布局,还有人机交互逻辑。

数据库设计:当前项目设计哪些数据库,每一个数据库里面包含哪些表,表结构之间的关系是如何的,表中的字段有哪些。

接口设计:通过分析原型图,来设计接口。

首先,粗粒度地分析每个页面有多少个接口,

然后,细粒度地分析每个接口的传入参数,返回值参数,还有接口路径及请求方式。

1.3 编码和单元测试

交付结果:编写项目代码、并完成单元测试。

项目代码编写:对项目的模块功能分析,进行编码实现。

单元测试:对编码完成的功能进行单元测试。

1.4 集成测试

由测试人员对部署在测试环境的项目进行功能测试,并出具测试报告

1.5 上线运维

上线之前,运维人员准备服务器上的软件环境安装、配置,配置完毕后,再将开发完成的项目部署到服务器上。

2 苍穹外卖系统

2.1 需求分析

该项目是针对餐饮企业定制一款软件产品,包括系统管理后台和小程序端应用两部分。其中,系统管理后台主要给企业员工内部使用,可以对餐厅的分类、菜品、套餐、订单、员工等进行管理维护,对餐厅的各类数据进行设计,同时还有语音播报功能。小程序端主要提供给消费者使用,可以在线浏览菜品、添加购物车、下单、支付、催单等。

2.2 设计

2.2.1 总体设计

本项目包含后台管理端和前台用户端,管理端主要功能包含员工管理、分类管理、菜品管理、套餐管理、订单管理、工作台、数据统计、来单提醒。用户端主要功能包含微信登录、商品浏览、购物车、用户下单、微信支付、历史订单、地址管理、用户催单。

2.2.2 功能设计

管理端功能:

员工管理:员工的登录/退出,员工的信息管理(员工信息的新增、修改、删除、查找)、员工账号的管理(启用/禁用)。

分类管理:主要对餐厅经营的菜品分类 或 套餐分类 进行管理维护,包含查询、新增、修改、删除等功能。

菜品管理:主要维护各个分类下的菜品信息,包含查询、新增、修改、删除、启售、停售等功能。

套餐管理:主要维护当前餐厅中的套餐信息,包含查询、新增、修改、删除、启售、停售。

订单管理:主要维护移动端下的订单信息,包含查询、取消、派送、完成,以及订单报表下载等功能。

数据统计:主要完成对餐厅的各类数据统计,如营业额、用户数量、订单等等。

工作台:当前正在执行的订单。

来单提醒:当有订单出现,有来单消息提醒。

用户端:

登录退出:用户可以使用微信登系统,以及退出系统

点餐模块:用户可以查找菜品、添加菜品到购物车、删除购物车、清空购物车等功能。

订单支付:用户选完菜品后,可以对购物车菜品进行结算支付,支付成功,等待商家接单。

历史订单:用户可以查看、删除自己历史订单信息,包括订单提交时间,支付时间,派送时间、完成派送时间。

地址管理:用户可以管理自己的下单地址。

用户催单:用户可以在商家接单后开始催单,催单后,商家会接收催单消息。

2.2.3 详细设计

包含各个功能的详细流程,算法设计等等。

2.2.4 技术选型

本项目分为用户层、网关层、应用层、数据层、工具层,针对不同层选择合适的技术。

用户层:对于管理端的前端页面,使用H5、Vue.js、ElementUI、apache echarts等技术。对于用户端的前端使用微信小程序。

网关层:该层使用Nginx服务器,用于部署静态资源,可以提供较高的性能,反向代理和负载均衡。

应用层:该层主要用户后端的任务开发,主要使用

SpringBoot: 快速构建Spring项目,采用"约定优于配置"的思想,简化Spring项目的配置开发。

SpringMVC: 处理前端和后端之间的请求响应。

Spring Task: Spring提供的定时任务框架。

HttpClient: 主要实现了对Http请求的发送。

Spring Cache: Spring提供的数据缓存框架。

JWT: 用于对用户进行身份验证和授权。

阿里云OSS: 对象存储服务,在项目中主要存储文件,图片等资源。

Swagger: 接口开发工具,自动生成接口文档,对接口进行测试。

POI: 封装了对Excel表格的常用操作。

WebSocket: 一种通信协议,使客户端和服务器之间的数据交换更加简单,用户项目的来单、催单功能实现。

**数据层:**该层用于后端与数据库之间的交互。

MySQL: 关系型数据库,本项目的核心数据库

Redis: 基于k-v的内存数据库,访问速度快,经常使用它做缓存

MyBatis: 后端的持久层orm框架,简化与数据库的交互

pagehelper: 分页插件

Spring data redis : 简化java代码操作Redis的API

工具层:项目开发过程中使用的一些项目管理和高效开发的工具

Git: 远程版本控制工具,在团队中协作开发人员进行项目版本控制

Maven: 项目构建管理工具

Junit: 单元测试工具

Postman: 接口测试工具

2.3 开发环境搭建

本项目主要包含前端和后端,前端为管理端(Web端)和用户端(微信小程序端),后端为Java开发。

2.3.1 前端环境搭建

前端工程主要在nginx上搭建

2.3.2 后端环境搭建

1.项目分析

sky-take-out: 父工程

sky-common: 子模块,存放公共类,工具类、常量类、异常类等等。

sky-pojo: 子模块,存放实体类、VO、DTO等(VO:用于在前端展示的数据实体,DTO数据传输对象:用于各层之间传递数据,POJO:普通的Java对象,只有属性和对应的gettter和setter,Entity: 实体,通常和数据库中的表对应)。

sky-server: 子模块,后端服务,存放配置文件、Controller、Service、Mapper、启动类等。

2.Git版本控制

  1. 创建Git本地仓库
  2. 创建Git远程仓库
  3. 将本地文件推送到Git远程仓库
    1. 提交文件至本地仓库
    2. 添加Git远程仓库地址
    3. 推送

3.数据库环境搭建

序号 表名 中文名
1 employee 员工表
2 category 分类表
3 dish 菜品表
4 dish_flavor 菜品口味表
5 setmeal 套餐表
6 setmeal_dish 套餐菜品关系表
7 user 用户表
8 address_book 地址表
9 shopping_cart 购物车表
10 orders 订单表
11 order_detail 订单明细表

2.3.2 前后端联调

前端请求地址:http://localhost/api/employee/login

后端接口地址:http://localhost:8080/admin/employee/login

前端请求的地址通过Nginx的反向代理,得到一个新的请求地址,新的请求地址到后端,请求数据。

3 前后端分离开发流程

相关推荐
Abladol-aj1 小时前
并发和并行的基础知识
java·linux·windows
清水白石0081 小时前
从一个“支付状态不一致“的bug,看大型分布式系统的“隐藏杀机“
java·数据库·bug
吾日三省吾码6 小时前
JVM 性能调优
java
弗拉唐7 小时前
springBoot,mp,ssm整合案例
java·spring boot·mybatis
oi778 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器
少说多做3438 小时前
Android 不同情况下使用 runOnUiThread
android·java
知兀8 小时前
Java的方法、基本和引用数据类型
java·笔记·黑马程序员
蓝黑20209 小时前
IntelliJ IDEA常用快捷键
java·ide·intellij-idea
Ysjt | 深9 小时前
C++多线程编程入门教程(优质版)
java·开发语言·jvm·c++