文章目录
-
- 需求分析
- 整体技术选型
- 设计特点
- 系统功能
- 功能实现
- 测试分析加效果展示
- 总结与反思
- 借鉴参考出处
一、需求分析
为餐饮企业提供一款软件,实现一个外卖管理业务操作系统,分为管理端和用户端。
二、整体技术选型
三、设计特点
项目结构:
表的设计:
四、系统功能
管理端:
用户端:
五、功能逻辑实现
首先将管理端和用户端发起的请求路径做出路径区别 /admin /user 。
管理端
1.管理端先向nginx服务器发起请求,之后将请求再转接到服务端上spring内置tomcat服务器上,首先由自定义的拦截器interceptor拦截请求路径,对于静态页面和login请求不处理,其他都会拦截。
2.用户首先是登录,如果登录失败直接返回401错误码,如果登录成功,下发jwt令牌,每次发起请求都会携带jwt令牌,服务端的拦截器都会先校验jwt令牌是否合法,不合法就无法访问对应页面。
3.合法令牌校验成功后,首先会去访问controller层,拦截后将对应的请求转到service逻辑处理层,再后来就是转到mapper层来访问MySQL数据库,数据库将对应的数据返回给管理端页面。
用户端
1.基于微信小程序实现登录,用户端先向nginx服务器发起请求,之后将请求再转接到服务端上spring内置tomcat服务器上,首先由自定义的拦截器interceptor拦截请求路径,对于静态页面和login请求不处理,其他都会拦截。
2.用户首先是登录,首先是判断该用户是否是合法用户,是否拿到openid,如果用户不合法,登录失败。如果登录成功,下发jwt令牌,每次发起请求都会携带jwt令牌,服务端的拦截器都会先校验jwt令牌是否合法,不合法就无法访问对应页面。
3.合法令牌校验成功后,首先会去访问controller层,拦截后将对应的请求转到service逻辑处理层。
4.对于查询请求在这会先到redis数据库查看有无菜品缓存信息,如果有直接返回。如果没有,才转到mapper层来访问MySQL数据库,数据库将对应的数据先存储再一份到redis数据库,然后才返回给用户端。
5.对于其他类型请求,在这会先到redis数据库,清除对应的菜品信息,等到下一次查询操作再存储新数据,让数据保持着最新。然后转到mapper层来访问MySQL数据库,直接返回给用户端。
六、测试分析加效果展示
胜强(餐饮)外卖系统
七、总结与反思
亮点:
1.redis内存型缓存
2.nginx实现前后端分离
3.全局异常处理器
4.Git代码多版本控制
5.Swagger,postman中间件
6.Spring task定时任务
7.对于excel报表的POI
8.基于注解开发
9.websocket的双向网络连接
不足之处:
在数据库层面:
对于数据库,可以实现多加一台从库,主从库能确保在主库访问异常时,也能对从库进行访问,同时对于数据库的读写分离也能大大提高用户的访问速度。
在服务器层面:
可以将服务搭建在多个服务器上,使用nginx实现负载均衡,减轻单台服务器的压力。
八、借鉴参考出处
有需要我的源码可以在Gitcode上搜索Sky Take Out或者有相关的问题可以加我的vx:hsq 非常乐意帮忙大家!
思路来源:哔哩哔哩动画 bilibili.com 博主:黑马程序员
视频资源:关键词【苍穹外卖】超友情分享给你!
B站学习课程链接:黑马程序员Java项目实战《苍穹外卖》,最适合新手的SpringBoot+SSM的企业级Java项目实战_哔哩哔哩_bilibili
如果想转发和使用请加上作者和网址,谢谢!
如果发现文章有问题请指出,谢谢!
后续会继续与大家分享Java学习路上的一些相关内容,如果感兴趣可以关注我哈!
————————————————
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/100760.html