本系统采用前后端分离架构,前端主要使用Vue、Uni-App、Echarts等技术,后端使用SpringBoot、MyBatis、Redis、RabbitMQ、Minio等技术,以保证系统的高效性。
为了保证系统的安全性,采用JWT(JSON Web Token)对用户进行权限验证,采用SpringSecurity进行安全性的维护。
- 后端主要技术:springboot,mybatis,redis,rabbitmq 地址:
- 微信小程序:uniapp 地址:
- 管理员端:vue
地址:
- Gitee:BuffetOrderAdmin(gitee.com)
- GitHub:BuffetOrderAdmin(github.com)
部署项目前请先确保环境中redis与rabbitmq配置正确
- 克隆或下载本项目
- Mysql导入根目录下的buffet_order.sql
- Idea打开根目录下的pom.xml后等待Maven下载环境依赖
- 配置resources文件下的application.yml配置端口号,数据库,redis,rabbitmq,微信小程序id等
- 启动项目
session_key默认1小时后过期,过期后response返回状态码为401,小程序接到401后会重新以code请求
- 微信小程序通过请求微信接口获取openId来识别用户
- 订单通过rabbitmq实现延迟队列,默认下完订单后30分钟未付款自动取消
- 管理员通过security实现权限认证和token登录
.
├─main
│ ├─java
│ │ └─com.fch.buffetorder
│ │ │ BuffetorderApplication.java
│ │ │
│ │ ├─api
│ │ │ ResponseBean.java
│ │ │ ResultEnum.java
│ │ │ WebNotify.java // 封装的websocket发送的实体
│ │ ├─aspect //AOP切面
│ │ │ AfterClearCache.java //之后清除缓存
│ │ │ BeforeClearCache.java //之前清除缓存
│ │ │ Cache.java //缓存注解
│ │ │ RedisCacheAdvice.java //AOP的Redis增强方法
│ │ │
│ │ ├─config // 配置
│ │ │ MainConfig.java
│ │ │ MvcConfig.java
│ │ │ RabbitConfig.java
│ │ │ SecurityConfig.java
│ │ │
│ │ ├─controller
│ │ │ AdminController.java //只有身份是admin才能访问
│ │ │ AssistantController.java //只有身份是assistant/admin才能访问
│ │ │ DashboardController.java
│ │ │ FoodController.java
│ │ │ LoginController.java
│ │ │ OrderController.java
│ │ │ TestController.java
│ │ │ UserController.java
│ │ │
│ │ ├─dto
│ │ │ AdminDto.java Admin登录实体
│ │ │ DashboardDto.java 仪表盘所使用数据的实体
│ │ │
│ │ ├─entity
│ │ │ │ Address.java
│ │ │ │ Admin.java
│ │ │ │ Cate.java
│ │ │ │ Detail.java
│ │ │ │ Food.java
│ │ │ │ Order.java
│ │ │ │ OrderJsonInDb.java //订单放的食物细节详细
│ │ │ │ User.java
│ │ │ │
│ │ │ ├─detail //小程序发送的食物单选/多选
│ │ │ │ M.java
│ │ │ │ MultiDetail.java
│ │ │ │ R.java
│ │ │ │ RadioDetail.java
│ │ │ │
│ │ │ └─orderbody //小程序发送的食物细节信息
│ │ │ DM.java
│ │ │ DR.java
│ │ │ OrderBody.java
│ │ │
│ │ ├─filter //Security用到的拦截器
│ │ │ JwtAuthenticationFilter.java //token验证身份
│ │ │ JwtLoginFilter.java //assistant/admin登录进行
│ │ │
│ │ ├─handler
│ │ │ FailureHandler.java //assistant/admin登录失败进行
│ │ │ SuccessHandler.java //assistant/admin登录成功进行
│ │ │
│ │ ├─interceptor // 小程序发送请求经过的拦截器
│ │ │ LoginInterceptor.java
│ │ │
│ │ ├─listener //rabbitmq队列的监听器
│ │ │ DeadListener.java //监听死信队列
│ │ │
│ │ ├─mapper //mapper
│ │ │ AddressMapper.java
│ │ │ AdminMapper.java
│ │ │ CateMapper.java
│ │ │ FoodMapper.java
│ │ │ OrderMapper.java
│ │ │ UserMapper.java
│ │ │
│ │ ├─service
│ │ │ │ AdminService.java
│ │ │ │ CateService.java
│ │ │ │ DashboardService.java
│ │ │ │ FoodService.java
│ │ │ │ OrderService.java
│ │ │ │ UserService.java
│ │ │ │
│ │ │ └─impl
│ │ │ AdminServiceImpl.java
│ │ │ CateServiceImpl.java
│ │ │ DashboardServiceImpl.java
│ │ │ FoodServiceImpl.java
│ │ │ OrderServiceImpl.java
│ │ │ UserServiceImpl.java
│ │ │
│ │ ├─util
│ │ │ JsonUtil.java //主要处理食物的详细信息
│ │ │ JwtUtils.java //jwt
│ │ │ OpenIdUtil.java //获取小程序openId
│ │ │ OrderIdUtil.java //生成订单Id
│ │ │ RedisUtil.java //Redis
│ │ │ RequestUtil.java //封装的请求类
│ │ │ ThreadLocalUtils.java //本地线程类
│ │ │ UploadImgUtil.java //更新图片
│ │ │ WeiXinParam.java //微信参数
│ │ │
│ │ └─websocket
│ │ WebSocket.java
│ │
│ └─resources
│ │ application.yml
│ │ application-wx.yml //存放小程序密钥,需要自己创建
│ │
│ ├─mapper
│ │ AddressMapper.xml
│ │ AdminMapper.xml
│ │ CateMapper.xml
│ │ FoorMapper.xml
│ │ OrderMapper.xml
│ │ UserMapper.xml
│
│
│
└─test
-
application-wx.yml中wx.app-id与wx.app-secret 分别对应AppID(小程序ID)与AppSecret(小程序密钥),若没有可去微信小程序官方申请获取微信公众平台
格式:
#微信配置 wx: app-id: app-secret: grant-type: authorization_code