基于SpringBoot2+vue2的健身房管理系统
1. 获取地址https://fifteen.xiaobias.com/source/2072. 项目简介健身房管理系统基于Spring Boot MyBatis-Plus Vue技术栈开发。系统主要面向健身房管理员和普通用户提供健身房信息展示、教练管理、课程管理、器材管理、用户会员管理等核心功能。管理员可对健身房、教练、课程、器材及用户进行增删改查操作普通用户登录后可查看健身房、教练、课程和器材信息并管理个人会员有效期。系统采用前后端分离架构后端提供RESTful API前端使用Vue Element UI实现后台管理界面支持token身份验证、字典表动态转换、Excel导入导出等特性。3. 技术栈类别技术/框架版本/说明后端框架Spring Boot2.2.2.RELEASEORM框架MyBatis-Plus2.3数据库MySQL5.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.javaIgnoreAuthRequestMapping(value/login)publicRlogin(Stringusername,Stringpassword,Stringcaptcha,HttpServletRequestrequest){YonghuEntityyonghuyonghuService.selectOne(newEntityWrapperYonghuEntity().eq(username,username));if(yonghunull||!yonghu.getPassword().equals(password))returnR.error(账号或密码不正确);elseif(yonghu.getDaoqiTime().getTime()newDate().getTime()){returnR.error(当前会员已经到期了,请联系管理员续费);}StringtokentokenService.generateToken(yonghu.getId(),username,yonghu,用户);RrR.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.javapublicvoiddictionaryConvert(Objectobj,HttpServletRequestrequest){// 获取所有Types字段ListStringfieldNameListnewArrayList();// ... 反射获取字段 ...ServletContextservletContextrequest.getServletContext();MapString,MapInteger,StringdictionaryMap(MapString,MapInteger,String)servletContext.getAttribute(dictionaryMap);for(Strings:fieldNameList){// 通过Types的值获取Value对应的中文名称并赋值}}5.3 前端 – 路由配置片段router-static.jsconstroutes[{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?useUnicodetruecharacterEncodingutf-8serverTimezoneGMT%2B8username:rootpassword:root6. 部分截图7. 项目总结本项目是一个功能完整的健身房后台管理系统具备以下特点技术栈成熟采用Spring Boot MyBatis-Plus Vue主流前后端分离架构代码结构清晰易于维护和扩展。权限控制简洁基于Token的拦截器实现身份验证无需复杂配置即可区分管理员和普通用户。字典表动态管理通过dictionary表统一管理类型编码并在系统启动时加载到内存数据返回时自动转换提高了可维护性。通用统计接口CommonController提供了丰富的图表统计接口分组求和、日期分组、柱状图等方便前端实现数据可视化。批量导入预留各控制器均预留了Excel批量导入接口虽未完全实现具体字段映射但框架已搭建。用户体验用户登录时自动校验会员有效期前端采用Element UI组件界面美观。总体而言该项目适合作为毕业设计或中小型健身房管理系统的开发基础。