Skip to content

wh3364/buffet-order-springboot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

不饿了自助点餐微信小程序

项目介绍

​ 本系统采用前后端分离架构,前端主要使用Vue、Uni-App、Echarts等技术,后端使用SpringBoot、MyBatis、Redis、RabbitMQ、Minio等技术,以保证系统的高效性。

​ 为了保证系统的安全性,采用JWT(JSON Web Token)对用户进行权限验证,采用SpringSecurity进行安全性的维护。

效果图:

微信小程序:
管理员端:

项目部署

部署项目前请先确保环境中redis与rabbitmq配置正确

  1. 克隆或下载本项目
  2. Mysql导入根目录下的buffet_order.sql
  3. Idea打开根目录下的pom.xml后等待Maven下载环境依赖
  4. 配置resources文件下的application.yml配置端口号,数据库,redis,rabbitmq,微信小程序id等
  5. 启动项目

特性/功能

小程序登录流程

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

数据库er图

注意事项

  • application-wx.yml中wx.app-id与wx.app-secret 分别对应AppID(小程序ID)与AppSecret(小程序密钥),若没有可去微信小程序官方申请获取微信公众平台

    格式:

    #微信配置
    wx:
      app-id: 
      app-secret: 
      grant-type: authorization_code
    

About

这是一个自助点餐系统的后端

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages