1. 项目介绍
本项目是为餐饮企业(餐厅、饭店)定制的一款软件产品,包括 “系统管理后台” 和 “小程序端应用” 两部分。
其中系统管理后台主要提供给餐饮企业内部员工使用,可以对餐厅的分类、菜品、套餐、订单、员工等进行管理维护,对餐厅的各类数据进行统计,同时也可进行来单语音播报功能。
小程序端主要提供给消费者使用,可以在线浏览菜品、添加购物车、下单、支付、催单等。
2. 功能介绍
1. 管理端功能
员工登录/退出、员工信息管理、分类管理、菜品管理、套餐管理、菜品口味管理、订单管理、数据统计、来单提醒。
2. 用户端功能
微信登录、收件人地址管理、用户历史订单查询、菜品规格查询、购物车功能、下单、支付、分类、菜品浏览。
3. 技术选型
关于本项目的技术选型,将会从 “用户层、网关层、应用层、数据层” 这几个方面进行介绍,主要用于展示项目中使用到的技术框架和中间件等。
用户层
本项目中在构建系统管理后台的前端页面,会用到 H5、Vue.js、ElementUI、apache echarts(展示图表)等技术。
而在构建移动端应用时,我们会使用到微信小程序。
网关层
Nginx 是一个服务器,主要用来作为 Http 服务器,部署静态资源,访问性能高。
在 Nginx 中还有两个比较重要的作用:反向代理和负载均衡。
在进行项目部署时,要实现 Tomcat 的负载均衡,就可以通过 Nginx 来实现。
应用层
数据层
工具
4. 项目环境
前端使用的是打包好的前端工程,用 Nginx 服务器启动。
后端是基于 SpringBoot 2.X 版本的 Java 工程,使用的 Java 版本为 8。
关系型数据库使用的是 MySQL。
非关系型数据库使用的是 Redis。
后端接口文档使用 Swagger。
重点是放在 Java 后端,Java 后端使用的是 Maven 分模块开发,分为 common、pojo 和 server 模块。
MySQL 数据库共计有 11 个表单
5. 项目拆解
项目的详细内容拆解为如下 16 篇文章。
5.1 技术要点
1. 数据库设计
门店餐饮定制化管理系统数据库设计
2. 层级结构
门店餐饮定制化管理系统代码层级结构
3. md5 加密
Java 实现 md5 加密
4. JWT令牌
JWT 令牌:一个区别于 cookie/session 的更安全的校验技术
5. 接口文档
利用 Knife4j 注解实现 Java 生成接口文档
6. 分页查询
PageHelper 分页插件实现分页查询
7. 公共字段填充
利用 Spring AOP 实现数据库表单公共字段填充
8. 对象存储服务
利用阿里云 OSS 实现文件上传功能
9. Redis
Redis 常用命令及其在项目中的应用
10. HttpClient
HttpClient:支持 HTTP 协议的客户端编程工具包
11. 微信登录
微信小程序登录流程
12. 百度地图
对接百度地图,实现校验收货地址是否超出配送范围
13. SpringTask
Spring Task 定时任务
14. WebSocket
WebSocket:基于 TCP 的全双工通信网络协议
15. 可视化图表库
Apache ECharts:一个数据可视化图表库
16. 绘制图表
使用 Apache ECharts 同时绘制多个统计图表
17. Apache POI
Apache POI:Java 操作 Excel 文件
6. 心得体会
做完了这个项目,我学习到了:
-
在前后端分离的开发模式中,是如何协调的,如何测试的;
-
前后端交互中的数据格式也是遵循一定规范的,这相较于传统的 JSP 不分离开发模式,显得更为规范,也降低了项目前后端代码的耦合度,使得前后端分工更加明确;
-
了解到了一些新的技术,比如对象存储,百度地图接口调用,微信登录详细流程等等;
-
同时也对整套的 JavaSE 和 JavaWeb 有了更为深刻的认识;
-
深刻理解了实体类 POJO 当中的 Entity、DTO 和 VO 的区别,以及这三者在项目当中充当什么样的角色和作用。