苍穹外卖总结

发布于:2024-05-09 ⋅ 阅读:(36) ⋅ 点赞:(0)

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 前后端分离开发流程