# 超市订单管理系统
**Repository Path**: chen-sm1/project
## Basic Information
- **Project Name**: 超市订单管理系统
- **Description**: B站狂神说JAVA的超市订单管理系统SpringBoot版,已完成全部模块,附有启动说明和数据库文件
- **Primary Language**: Java
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 14
- **Forks**: 3
- **Created**: 2022-07-10
- **Last Updated**: 2025-06-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: SpringBoot, smbms, JavaScript
## README
## 项目简介
- B站狂神说JAVA的smbms超市管理系统,用Springboot实现,前端使用JSP页面,已完成全部功能
## 环境
* JDK 1.8
* Maven 3.6.0
* Spring Boot 2.3.7.RELEASE
* Intellij IDEA 2021.3
* mysql 5.5.53
* 数据库账号 root 密码 root 数据表名称 smbms
## 运行准备
1. 注意,若为解压方式下载项目,应用idea打开project-master项目,而非外层的project-master文件夹,否则项目启动可能404

2. 数据库导入smbms.sql文件
🔗[**mysql命令怎么导入sql文件**](https://www.imooc.com/article/325974)
3. application.properties文件配置数据库账户密码
4. 启动SmbmsApplication
## 完善(代码在分支v1.0处)
### A.shiro实现认证和授权
[B站楠哥学java shiro教程,讲解得很清晰😚](https://www.bilibili.com/video/BV16C4y187S9?p=1&vd_source=7729af6bf66a517f212a239deae09128)
> 认证主要指登录验证,未登录时无法访问主页
>
> 授权赋予用户权限或角色,可设置拥有对应权限(角色)的用户才能访问指定页面
1. 运行准备
1. 修改smbms_role表
id 1 --> roleName普通员工
id 2 --> roleName系统管理员
id 3 --> roleName经理
2. 修改前端后端有关增删改请求的路径
2. 权限说明
普通员工只能查看供应商,订单与用户数据;而系统管理员或经理可对数据进行增删查改,
若普通员工尝试增删改数据,提交了
1. 表单请求
重定向到权限不足页面
2. ajax请求
返回json数据,提示权限不足
### B.用户头像上传与显示
1. 运行准备
1. 修改smbms_user表
添加icon属性varchar(50),用于存储头像路径
2. 修改前端head.jsp和useradd.jsp代码
2. 实现思路
1. 点击文件输入组件选择头像
2. 选择后触发ajax请求,向/fileupload发送图片数据
3. 后端接收到图片后,生成新的文件名,并将图片存储到本地,返回图片路径
4. ajax请求成功,获取到图片路径,设置图片路径后显示图片,同时将图片路径传入id为icon的输入组件,用于最后添加用户时,后端接收新用户的头像路径
### C.SpringCache整合redis添加缓存
1. 导入SpringCache与redis依赖
```xml
org.springframework.boot
spring-boot-starter-cache
org.springframework.boot
spring-boot-starter-data-redis
```
2. 配置redis属性(也可不配置,使用默认的属性)
```yml
spring:
# redis配置
redis:
host: 127.0.0.1
port: 6379
# password: 123456
database: 0
cache:
redis:
time-to-live: 1800000
# 缓存过期时间 1800000毫秒,即30分钟
```
3. 开启redis
进入redis目录,cmd 执行 redis-server redis.windows.conf
4. 在Service层方法上添加对应注解
1. 对于 根据条件查询数据以及数据数量 的方法,使用Cacheable添加缓存
2. 对于 增删改 方法,使用@CacheEvict清除所有缓存