基于SpringBoot+Vue的瑜伽课体验课预约系统
- 一、系统技术说明
- 二、运行说明
- 三、系统的演示
- 四、系统的核心代码演示
一、系统技术说明
框架:Springboot+Vue
数据库:mysql 5.7(一定要5.7版本)
数据库工具:Navicat11
开发软件:idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器/IE浏览器
二、运行说明
- 本系统分为两个管理系统,一个前台,一个后台。前台主要用于学员查看课程,预约课程,查看个人信息以及交友的目的;后台主要用于管理教练与课程的信息。
- 开发环境下后端用idea启动,前端采用node 14启动。
- 后端:处理逻辑; 前端:前后台画面。
启动后端的方式:
1. 把项目导入idea中
2. 找到SpringbootSchemaApplication.java
3. 点击绿色箭头启动
启动前端的方式:
1. 在前端admin的目录下进入命令行
2. 安装包依赖:npm install vite
3. 运行项目:npm run serve
4. 前端front同理
- 前台访问地址:http://localhost:8082/#/index/home
- 后台访问地址:http://localhost:8081/#/login
- 登录的用户名和密码
后台:
管理员用户:admin
管理员密码:admin前台和后台:
教练用户:教练工号1
教练密码:123456前台:
学员用户:用户账号1
学员密码:123456
三、系统的演示
四、系统的核心代码演示
给大家看下系统的核心代码,若想学习的,可以借鉴下
/*** 教练* 后端接口* @author * @email * @date 2023-12-24 18:07:02*/
@RestController
@RequestMapping("/jiaolian")
public class JiaolianController {@Autowiredprivate JiaolianService jiaolianService;@Autowiredprivate TokenService tokenService;/*** 登录*/@IgnoreAuth@RequestMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {JiaolianEntity u = jiaolianService.selectOne(new EntityWrapper<JiaolianEntity>().eq("jiaoliangonghao", username));if(u!=null && u.getStatus().intValue()==1) {return R.error("账号已锁定,请联系管理员。");}if(u==null || !u.getMima().equals(password)) {if(u!=null) {u.setPasswordwrongnum(u.getPasswordwrongnum()+1);if(u.getPasswordwrongnum()>=3) {u.setStatus(1);}jiaolianService.updateById(u);}return R.error("账号或密码不正确");}String token = tokenService.generateToken(u.getId(), username,"jiaolian", "教练" );return R.ok().put("token", token);}/*** 注册*/@IgnoreAuth@RequestMapping("/register")public R register(@RequestBody JiaolianEntity jiaolian){//ValidatorUtils.validateEntity(jiaolian);JiaolianEntity u = jiaolianService.selectOne(new EntityWrapper<JiaolianEntity>().eq("jiaoliangonghao", jiaolian.getJiaoliangonghao()));if(u!=null) {return R.error("注册用户已存在");}Long uId = new Date().getTime();jiaolian.setId(uId);jiaolianService.insert(jiaolian);return R.ok();}/*** 退出*/@RequestMapping("/logout")public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok("退出成功");}/*** 获取用户的session用户信息*/@RequestMapping("/session")public R getCurrUser(HttpServletRequest request){Long id = (Long)request.getSession().getAttribute("userId");JiaolianEntity u = jiaolianService.selectById(id);return R.ok().put("data", u);}/*** 密码重置*/@IgnoreAuth@RequestMapping(value = "/resetPass")public R resetPass(String username, HttpServletRequest request){JiaolianEntity u = jiaolianService.selectOne(new EntityWrapper<JiaolianEntity>().eq("jiaoliangonghao", username));if(u==null) {return R.error("账号不存在");}u.setMima("123456");jiaolianService.updateById(u);return R.ok("密码已重置为:123456");}/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,JiaolianEntity jiaolian,HttpServletRequest request){EntityWrapper<JiaolianEntity> ew = new EntityWrapper<JiaolianEntity>();PageUtils page = jiaolianService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiaolian), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,JiaolianEntity jiaolian, HttpServletRequest request){EntityWrapper<JiaolianEntity> ew = new EntityWrapper<JiaolianEntity>();PageUtils page = jiaolianService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiaolian), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( JiaolianEntity jiaolian){EntityWrapper<JiaolianEntity> ew = new EntityWrapper<JiaolianEntity>();ew.allEq(MPUtil.allEQMapPre( jiaolian, "jiaolian")); return R.ok().put("data", jiaolianService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(JiaolianEntity jiaolian){EntityWrapper< JiaolianEntity> ew = new EntityWrapper< JiaolianEntity>();ew.allEq(MPUtil.allEQMapPre( jiaolian, "jiaolian")); JiaolianView jiaolianView = jiaolianService.selectView(ew);return R.ok("查询教练成功").put("data", jiaolianView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){JiaolianEntity jiaolian = jiaolianService.selectById(id);return R.ok().put("data", jiaolian);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){JiaolianEntity jiaolian = jiaolianService.selectById(id);return R.ok().put("data", jiaolian);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody JiaolianEntity jiaolian, HttpServletRequest request){jiaolian.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(jiaolian);JiaolianEntity u = jiaolianService.selectOne(new EntityWrapper<JiaolianEntity>().eq("jiaoliangonghao", jiaolian.getJiaoliangonghao()));if(u!=null) {return R.error("用户已存在");}jiaolian.setId(new Date().getTime());jiaolianService.insert(jiaolian);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody JiaolianEntity jiaolian, HttpServletRequest request){jiaolian.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(jiaolian);JiaolianEntity u = jiaolianService.selectOne(new EntityWrapper<JiaolianEntity>().eq("jiaoliangonghao", jiaolian.getJiaoliangonghao()));if(u!=null) {return R.error("用户已存在");}jiaolian.setId(new Date().getTime());jiaolianService.insert(jiaolian);return R.ok();}/*** 修改*/@RequestMapping("/update")@Transactionalpublic R update(@RequestBody JiaolianEntity jiaolian, HttpServletRequest request){//ValidatorUtils.validateEntity(jiaolian);jiaolianService.updateById(jiaolian);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){jiaolianService.deleteBatchIds(Arrays.asList(ids));return R.ok();}
}
/*** 登录相关*/
@RequestMapping("users")
@RestController
public class UsersController{@Autowiredprivate UsersService userService;@Autowiredprivate TokenService tokenService;/*** 登录*/@IgnoreAuth@RequestMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));if(user==null || !user.getPassword().equals(password)) {return R.error("账号或密码不正确");}String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());return R.ok().put("token", token);}/*** 注册*/@IgnoreAuth@PostMapping(value = "/register")public R register(@RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}/*** 退出*/@GetMapping(value = "logout")public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok("退出成功");}/*** 密码重置*/@IgnoreAuth@RequestMapping(value = "/resetPass")public R resetPass(String username, HttpServletRequest request){UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));if(user==null) {return R.error("账号不存在");}user.setPassword("123456");userService.update(user,null);return R.ok("密码已重置为:123456");}/*** 列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,UsersEntity user){EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/list")public R list( UsersEntity user){EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();ew.allEq(MPUtil.allEQMapPre( user, "user")); return R.ok().put("data", userService.selectListView(ew));}/*** 信息*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") String id){UsersEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 获取用户的session用户信息*/@RequestMapping("/session")public R getCurrUser(HttpServletRequest request){Long id = (Long)request.getSession().getAttribute("userId");UsersEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 保存*/@PostMapping("/save")public R save(@RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);UsersEntity u = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername()));if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {return R.error("用户名已存在。");}userService.updateById(user);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){userService.deleteBatchIds(Arrays.asList(ids));return R.ok();}
}
/*** 预约查询* 后端接口* @author * @email * @date 2023-12-24 18:07:02*/
@RestController
@RequestMapping("/yuyuechaxun")
public class YuyuechaxunController {@Autowiredprivate YuyuechaxunService yuyuechaxunService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,YuyuechaxunEntity yuyuechaxun,HttpServletRequest request){String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("jiaolian")) {yuyuechaxun.setJiaoliangonghao((String)request.getSession().getAttribute("username"));}if(tableName.equals("yonghu")) {yuyuechaxun.setYonghuzhanghao((String)request.getSession().getAttribute("username"));}EntityWrapper<YuyuechaxunEntity> ew = new EntityWrapper<YuyuechaxunEntity>();PageUtils page = yuyuechaxunService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yuyuechaxun), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,YuyuechaxunEntity yuyuechaxun, HttpServletRequest request){EntityWrapper<YuyuechaxunEntity> ew = new EntityWrapper<YuyuechaxunEntity>();PageUtils page = yuyuechaxunService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yuyuechaxun), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( YuyuechaxunEntity yuyuechaxun){EntityWrapper<YuyuechaxunEntity> ew = new EntityWrapper<YuyuechaxunEntity>();ew.allEq(MPUtil.allEQMapPre( yuyuechaxun, "yuyuechaxun")); return R.ok().put("data", yuyuechaxunService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(YuyuechaxunEntity yuyuechaxun){EntityWrapper< YuyuechaxunEntity> ew = new EntityWrapper< YuyuechaxunEntity>();ew.allEq(MPUtil.allEQMapPre( yuyuechaxun, "yuyuechaxun")); YuyuechaxunView yuyuechaxunView = yuyuechaxunService.selectView(ew);return R.ok("查询预约查询成功").put("data", yuyuechaxunView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){YuyuechaxunEntity yuyuechaxun = yuyuechaxunService.selectById(id);return R.ok().put("data", yuyuechaxun);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){YuyuechaxunEntity yuyuechaxun = yuyuechaxunService.selectById(id);return R.ok().put("data", yuyuechaxun);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody YuyuechaxunEntity yuyuechaxun, HttpServletRequest request){//ValidatorUtils.validateEntity(yuyuechaxun);yuyuechaxunService.insert(yuyuechaxun);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody YuyuechaxunEntity yuyuechaxun, HttpServletRequest request){//ValidatorUtils.validateEntity(yuyuechaxun);yuyuechaxunService.insert(yuyuechaxun);return R.ok();}/*** 修改*/@RequestMapping("/update")@Transactionalpublic R update(@RequestBody YuyuechaxunEntity yuyuechaxun, HttpServletRequest request){//ValidatorUtils.validateEntity(yuyuechaxun);yuyuechaxunService.updateById(yuyuechaxun);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){yuyuechaxunService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** (按值统计)*/@RequestMapping("/value/{xColumnName}/{yColumnName}")public R value(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName,HttpServletRequest request) {Map<String, Object> params = new HashMap<String, Object>();params.put("xColumn", xColumnName);params.put("yColumn", yColumnName);EntityWrapper<YuyuechaxunEntity> ew = new EntityWrapper<YuyuechaxunEntity>();String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("jiaolian")) {ew.eq("jiaoliangonghao", (String)request.getSession().getAttribute("username"));}if(tableName.equals("yonghu")) {ew.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));}List<Map<String, Object>> result = yuyuechaxunService.selectValue(params, ew);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");for(Map<String, Object> m : result) {for(String k : m.keySet()) {if(m.get(k) instanceof Date) {m.put(k, sdf.format((Date)m.get(k)));}}}return R.ok().put("data", result);}/*** (按值统计(多))*/@RequestMapping("/valueMul/{xColumnName}")public R valueMul(@PathVariable("xColumnName") String xColumnName,@RequestParam String yColumnNameMul, HttpServletRequest request) {String[] yColumnNames = yColumnNameMul.split(",");Map<String, Object> params = new HashMap<String, Object>();params.put("xColumn", xColumnName);List<List<Map<String, Object>>> result2 = new ArrayList<List<Map<String,Object>>>();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");EntityWrapper<YuyuechaxunEntity> ew = new EntityWrapper<YuyuechaxunEntity>();String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("jiaolian")) {ew.eq("jiaoliangonghao", (String)request.getSession().getAttribute("username"));}if(tableName.equals("yonghu")) {ew.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));}for(int i=0;i<yColumnNames.length;i++) {params.put("yColumn", yColumnNames[i]);List<Map<String, Object>> result = yuyuechaxunService.selectValue(params, ew);for(Map<String, Object> m : result) {for(String k : m.keySet()) {if(m.get(k) instanceof Date) {m.put(k, sdf.format((Date)m.get(k)));}}}result2.add(result);}return R.ok().put("data", result2);}/*** (按值统计)时间统计类型*/@RequestMapping("/value/{xColumnName}/{yColumnName}/{timeStatType}")public R valueDay(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType,HttpServletRequest request) {Map<String, Object> params = new HashMap<String, Object>();params.put("xColumn", xColumnName);params.put("yColumn", yColumnName);params.put("timeStatType", timeStatType);EntityWrapper<YuyuechaxunEntity> ew = new EntityWrapper<YuyuechaxunEntity>();String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("jiaolian")) {ew.eq("jiaoliangonghao", (String)request.getSession().getAttribute("username"));}if(tableName.equals("yonghu")) {ew.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));}List<Map<String, Object>> result = yuyuechaxunService.selectTimeStatValue(params, ew);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");for(Map<String, Object> m : result) {for(String k : m.keySet()) {if(m.get(k) instanceof Date) {m.put(k, sdf.format((Date)m.get(k)));}}}return R.ok().put("data", result);}/*** (按值统计)时间统计类型(多)*/@RequestMapping("/valueMul/{xColumnName}/{timeStatType}")public R valueMulDay(@PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType,@RequestParam String yColumnNameMul,HttpServletRequest request) {String[] yColumnNames = yColumnNameMul.split(",");Map<String, Object> params = new HashMap<String, Object>();params.put("xColumn", xColumnName);params.put("timeStatType", timeStatType);List<List<Map<String, Object>>> result2 = new ArrayList<List<Map<String,Object>>>();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");EntityWrapper<YuyuechaxunEntity> ew = new EntityWrapper<YuyuechaxunEntity>();String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("jiaolian")) {ew.eq("jiaoliangonghao", (String)request.getSession().getAttribute("username"));}if(tableName.equals("yonghu")) {ew.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));}for(int i=0;i<yColumnNames.length;i++) {params.put("yColumn", yColumnNames[i]);List<Map<String, Object>> result = yuyuechaxunService.selectTimeStatValue(params, ew);for(Map<String, Object> m : result) {for(String k : m.keySet()) {if(m.get(k) instanceof Date) {m.put(k, sdf.format((Date)m.get(k)));}}}result2.add(result);}return R.ok().put("data", result2);}/*** 分组统计*/@RequestMapping("/group/{columnName}")public R group(@PathVariable("columnName") String columnName,HttpServletRequest request) {Map<String, Object> params = new HashMap<String, Object>();params.put("column", columnName);EntityWrapper<YuyuechaxunEntity> ew = new EntityWrapper<YuyuechaxunEntity>();String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("jiaolian")) {ew.eq("jiaoliangonghao", (String)request.getSession().getAttribute("username"));}if(tableName.equals("yonghu")) {ew.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));}List<Map<String, Object>> result = yuyuechaxunService.selectGroup(params, ew);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");for(Map<String, Object> m : result) {for(String k : m.keySet()) {if(m.get(k) instanceof Date) {m.put(k, sdf.format((Date)m.get(k)));}}}return R.ok().put("data", result);}
}
如果觉得系统不错,欢迎点赞关注收藏。
源码链接:(夸克网盘)
链接:https://pan.quark.cn/s/093cbd886c8a
提取码:DWQD