基于SpringBoot2+vue2的健身房管理系统
1. 获取地址
https://fifteen.xiaobias.com/source/207
2. 项目简介
健身房管理系统,基于Spring Boot + MyBatis-Plus + Vue技术栈开发。系统主要面向健身房管理员和普通用户,提供健身房信息展示、教练管理、课程管理、器材管理、用户会员管理等核心功能。管理员可对健身房、教练、课程、器材及用户进行增删改查操作;普通用户登录后可查看健身房、教练、课程和器材信息,并管理个人会员有效期。
系统采用前后端分离架构,后端提供RESTful API,前端使用Vue + Element UI实现后台管理界面,支持token身份验证、字典表动态转换、Excel导入导出等特性。
3. 技术栈
| 类别 | 技术/框架 | 版本/说明 |
|---|---|---|
| 后端框架 | Spring Boot | 2.2.2.RELEASE |
| ORM框架 | MyBatis-Plus | 2.3 |
| 数据库 | MySQL | 5.7.32-log(驱动:mysql-connector-java) |
| 权限控制 | 自定义Token拦截器 + Apache Shiro(依赖引入) | Token存储在header,无状态认证 |
| 工具库 | Hutool、Fastjson、Commons-lang3等 | 辅助开发 |
| 前端框架 | Vue CLI | - |
| UI组件库 | Element UI | - |
| 图表库 | ECharts | 后台统计图表 |
| 其他前端依赖 | axios、vue-router、vue-amap、print-js等 | 路由、地图、打印等 |
| 构建工具 | Maven | - |
4. 详细介绍
4.1 系统角色
- 管理员:拥有全部管理权限,可管理基础数据(课程类型、器材类型)、健身房、教练、课程、器材、用户等模块。
- 用户:登录后可查看健身房、教练、课程、器材信息,并查看个人会员到期日期。
4.2 功能模块
4.2.1 基础数据管理
- 课程类型管理:字典表维护(如孕妇康复、瘦身、瑜伽课程等)。
- 器材类型管理:字典表维护(如器材类型1、2、3、4等)。
4.2.2 健身房管理
- 支持添加、编辑、删除、查询健身房信息,包含名称、照片、位置、详细介绍、添加时间等字段。
4.2.3 教练管理
- 管理教练信息:姓名、手机号、头像、性别、所获荣誉、详细介绍。
4.2.4 课程管理
- 课程与教练、健身房关联,包含课程名称、课程类型、上课时间、课程介绍等。
4.2.5 器材管理
- 管理器材名称、类型、照片、数量、介绍等。
4.2.6 用户管理
- 普通用户账户管理:用户名、密码、姓名、手机号、身份证号、头像、性别、邮箱、会员到期日期、注册时间等。管理员可重置用户密码。
4.2.7 登录与权限
- 后端使用自定义Token拦截器验证请求头中的
Token,支持管理员和用户两种身份。 - 用户注册时需验证用户名、手机号、身份证号的唯一性。
- 用户登录时会检查会员是否到期。
4.2.8 其他功能
- 字典表动态转换:系统启动时将数据库字典表加载到ServletContext中,后端返回数据时自动将类型编码转换为对应的中文名称。
- 文件上传/下载:支持图片等文件上传到
/upload目录,并提供下载接口。 - Excel批量导入:各模块预留了批量导入接口(使用POI实现)。
- 报表统计:通用控制器(
CommonController)提供多种统计接口(柱状图、饼状图、分组求和等),前端可调用展示ECharts图表。
4.3 数据库设计
主要数据表如下:
users:管理员表(用户名、密码、角色)yonghu:用户表(账户、密码、姓名、手机号、身份证号、头像、性别、邮箱、会员到期日期等)jianshenfang:健身房表jiaolian:教练表kecheng:课程表(关联教练和健身房)qicai:器材表dictionary:字典表(存储各类类型编码对应关系)token:用户token表config:系统配置表
5. 部分代码
5.1 后端 – 用户登录接口(YonghuController.java)
@IgnoreAuth@RequestMapping(value="/login")publicRlogin(Stringusername,Stringpassword,Stringcaptcha,HttpServletRequestrequest){YonghuEntityyonghu=yonghuService.selectOne(newEntityWrapper<YonghuEntity>().eq("username",username));if(yonghu==null||!yonghu.getPassword().equals(password))returnR.error("账号或密码不正确");elseif(yonghu.getDaoqiTime().getTime()<newDate().getTime()){returnR.error("当前会员已经到期了,请联系管理员续费");}Stringtoken=tokenService.generateToken(yonghu.getId(),username,"yonghu","用户");Rr=R.ok();r.put("token",token);r.put("role","用户");r.put("username",yonghu.getYonghuName());r.put("tableName","yonghu");r.put("userId",yonghu.getId());returnr;}5.2 后端 – 字典表转换核心方法(DictionaryServiceImpl.java)
publicvoiddictionaryConvert(Objectobj,HttpServletRequestrequest){// 获取所有Types字段List<String>fieldNameList=newArrayList<>();// ... 反射获取字段 ...ServletContextservletContext=request.getServletContext();Map<String,Map<Integer,String>>dictionaryMap=(Map<String,Map<Integer,String>>)servletContext.getAttribute("dictionaryMap");for(Strings:fieldNameList){// 通过Types的值获取Value对应的中文名称并赋值}}5.3 前端 – 路由配置片段(router-static.js)
constroutes=[{path:'/index',name:'首页',component:Index,children:[{path:'/',name:'首页',component:Home},{path:'/updatePassword',name:'修改密码',component:UpdatePassword},{path:'/yonghu',name:'用户管理',component:yonghu},{path:'/jianshenfang',name:'健身房管理',component:jianshenfang}// ... 更多路由]}];5.4 配置文件 –application.yml数据库连接
spring:datasource:driverClassName:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://127.0.0.1:3306/jianshenfangguanli?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8username:rootpassword:root6. 部分截图
7. 项目总结
本项目是一个功能完整的健身房后台管理系统,具备以下特点:
- 技术栈成熟:采用Spring Boot + MyBatis-Plus + Vue主流前后端分离架构,代码结构清晰,易于维护和扩展。
- 权限控制简洁:基于Token的拦截器实现身份验证,无需复杂配置即可区分管理员和普通用户。
- 字典表动态管理:通过
dictionary表统一管理类型编码,并在系统启动时加载到内存,数据返回时自动转换,提高了可维护性。 - 通用统计接口:
CommonController提供了丰富的图表统计接口(分组求和、日期分组、柱状图等),方便前端实现数据可视化。 - 批量导入预留:各控制器均预留了Excel批量导入接口(虽未完全实现具体字段映射,但框架已搭建)。
- 用户体验:用户登录时自动校验会员有效期,前端采用Element UI组件,界面美观。
总体而言,该项目适合作为毕业设计或中小型健身房管理系统的开发基础。
