检验数据库课程的学习成果,在实际操作中锻炼将理论知识应用的能力。锻炼系统架构的能力,从需求分析到模型抽象、建库建表、业务流程代码的编写。本次所选课题为“小型超市商品管理系统”,旨在于做一个完整的、具备一定安全防护的超市商品的后台管理系统,除了最基本的用户角色访问控制、商品的增删改查,还应具备一定的系统监控、日志记录,安全报警等功能。通过建立一个管理系统中台,为超市的管理层工作人员带来极度友好的操作体验和在一定程序上改善工作时的心情
小型超市商品管理系统
- RBAC权限管理
- JWT身份验证与鉴权
- 分角色动态更新菜单
- Swagger/Knife4j接口文档
- i18N国际化
- 日志监控
- 异常报警
- 用户角色权限的细粒度管理
- 商品种类的划分、有关详情信息的增删改查
- 顾客评价及回应
- 订单流水报表
- 系统日志监控
- 社会:通过调研观察,很多超市在物流管理方面仍然使用较为传统的方式,大量的人工操作会带来很多的问题,包括但不限于商品损坏、顾客投诉得不到及时处理、报表出错,给超市带来很大的经济损失。鉴于此情况,要跟上时代的步伐,帮助超市搭建中台,有助于减少重复且没有意义的人工操作,解放工作人员的时间
- 技术:由于使用者有限,与计算机运行速度相比较微不足道,不需要考虑的高并发、高可用、高性能
- 经济:该系统只需部署在私人电脑上,没有服务器成本。系统处理的计算量微不足道,不用考虑耗电成本
- 操作系统:
- Debian GNU/Linux 11
- Microsoft Windows 10 企业版
- Java: V1.8.0_301
- NodeJs: V14.18.0
- Vue:2
- MySql: V8.0.26
- MongoDB: V5.0
- Docker: V20.10.16
本系统通过HTTP协议进行交互,属于B/S架构。采用前后端分离,使用electron打包,方便用户在不同的操作系统上运行
使用SpringBoot
作为HTTP通信的搭建框架
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者
SpringBoot
是一个一Java
为语言基础长期发展而来的一款优秀的WEB
框架。以IOC
和AOP
作为两大核心,使其天然区别于其他WEB
框架(包括不限于Django
、Express
、Gin
),有着截然不同的气质。在SpringBoot
中,实例化的对象即是一个Bean,有BeanFactory
通一管理,随时可在程序中依赖注入。
SpringBoot
限制的四层架构天然的符合设计模式,限制了开发者的自由,但同时降低系统模块间的耦合度,提高系统健壮性。
Vue2
+Vuex
+Electron
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式JavaScript框架。 [5] 与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用(SPA)提供驱动。
Vue
是一款由国人尤雨溪开发的前端脚手架,解救前端工作者于劳苦之中。Electron
作为打包工具,可将WEB端应用打包为不同平台的窗口程序。
MySQL
MySQL是一个**关系型数据库管理系统****,**由瑞典[MySQL AB](https://baike.baidu.com/item/MySQL AB/2620844) 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:
登录认证
、权限认证
、Session会话
、单点登录
、OAuth2.0
、微服务网关鉴权
等一系列权限相关问题。
相较于Shiro
、SpringSecurity
,其使用起来更加便捷、简单。其底层封装好了各式各样的API供开发者调用。在老师/老板对系统性能于安全不做过高要求的情况,Sa-Token
不失为一个极佳的选择
Vue-Element-Admin是目前国内最流行的后台管理框架,帮助开发者专注于接口的对接,而非页面的设计开发,快速搭建后台管理系统。
图3-1
打开应用是后端首先判断用户是否具备登录口令,没有的话则先进行登录。登录成功数据库查询用户所分配的角色,根据不同的角色渲染菜单栏,分配不同的功能权限。如图3-2-1所示
图3-2-1
主要业务包括了RBAC的用户角色权限,商品分栏,账单流水、系统日志的管理。及对应的增删改查。如图3-2-2所示
图3-2-2
在每次用户发起操作前,系统都会统一记录操作日志。若该操作引发系统异常,则系统会发送警报
图3-2-3
-
RBAC模块分为用户角色权限。由于本系统较为简单,且不具备可拓展的可能性,故将用户和角色设置为一对一关系,角色和权限之间是多对多的关系
-
商品独立抽象成一张表
-
商品ID与商品名称作为账单表的外键,建立联系
-
日志表对API的签名、入参、出参、URL、请求用户、请求者角色、请求IP、日志名称、请求时间、更新时间
整体UML设计如图3-3-1所示:
图3-3-1
用户表(sys_user)
图3-3-2-1
角色表(sys_role)
图3-3-2-2
权限表(sys_power)
图3-3-2-3
角色权限中间表(sys_role_power)
图3-3-2-4
商品表(goods)
图3-3-2-5
账单表(payment_info)
图3-3-2-6
反馈表(feed_back)
图3-3-2-7
日志表(log_info)
图3-3-2-8
所有表信息如下
图3-3-2-9
通过本次课程设计,锻炼了数据库的开发能力,受益匪浅