项目编号: S 039 ,文末获取源码。 \color{red}{项目编号:S039,文末获取源码。} 项目编号:S039,文末获取源码。
基于JAVA+Vue+SpringBoot+MySQL的天沐瑜伽馆管理系统,包含了瑜伽课程、课程预约、课程安排、课程评价、瑜伽器械、系统公告模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,天沐瑜伽馆管理系统基于角色的访问控制,给瑜伽学员、瑜伽教练、瑜伽管理员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。
源码下载
本文设计的天沐瑜伽馆管理系统的包括了系统数据中心模块,用来存放管理系统通用的模块,另外分别设计了瑜伽课程模块、课程预约模块、系统公告模块、课程评价模块和瑜伽器械模块这五大模块,用于存放系统的核心业务逻辑。
数据中心模块包含了对天沐瑜伽馆管理系统的基础模块,比如管理谁可以登录这套系统,记录这些人登录系统做了什么,不同的人拥有不同权限的管理。
瑜伽课程模块用于对瑜伽课程的数据进行管理,其中包括课程名称、课程介绍、课程类型、讲师ID、讲师、课程图片、课程价格、创建人等,可以通过此模块对瑜伽课程数据进行添加、编辑更新、删除、查询操作。
课程预约模块是学生对课程的预约信息进行管理,学生可以对喜欢的瑜伽课程进行预约操作,包括团课和私教课程,瑜伽课程预约的字段包括课程ID、课程名称、课程介绍、课程类型、课程图片、课程价格、预约人、预约时间等,学生可以对管理员发布的瑜伽课程进行预约,也可以查询自己的历史预约情况,管理员可以维护学生的预约记录。
系统公告模块用于管理员对系统公告的维护,系统公告的作用就是通知相关信息给学员,比如瑜伽课程的停课、调课信息等。系统公告字段其中包括公告标题、公告内容、图片、状态、排序值、发布人、创建人、创建时间等,瑜伽管理员可以增加、删除、编辑和条件查询系统公告,瑜伽学生可以查询系统公告。
课程评价模块是维护学生的瑜伽课程的评价,当学生完成对某个瑜伽课程的学习后,有权对该瑜伽课程进行评价,以便于改善该课程的质量,瑜伽评价字段包括课程ID、课程名称、评价等级、评语、学生ID、学生、评价时间、创建人等。
瑜伽器械模块是维护瑜伽课程中所需要的器械数据,瑜伽机械是学生学习瑜伽课程的必备条件,所以系统设计了这个模块,瑜伽器械字段包括器械名称、品牌、功能用途、厂商、采购价、图片、备注、创建人等,瑜伽管理员可以新增、删除、修改瑜伽机械信息,瑜伽学员可以查询管理员发布的瑜伽器械明细。
本章是对天沐瑜伽馆管理系统的设计部分。这个章节介绍了天沐瑜伽馆管理系统的设计基本思想,和各个模块的设计思想,设计了瑜伽课程模块、课程预约模块、系统公告模块、课程评价模块、瑜伽器械模块和数据中心模块。
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询瑜伽课程")
public Result<IPage<YogaCurriculum>> getByPage(@ModelAttribute YogaCurriculum yogaCurriculum ,@ModelAttribute PageVo page){
QueryWrapper<YogaCurriculum> qw = new QueryWrapper<>();
if(!ZwzNullUtils.isNull(yogaCurriculum.getTitle())) {
qw.like("title",yogaCurriculum.getTitle());
}
if(!ZwzNullUtils.isNull(yogaCurriculum.getType())) {
qw.eq("type",yogaCurriculum.getType());
}
if(!ZwzNullUtils.isNull(yogaCurriculum.getUserName())) {
qw.like("user_name",yogaCurriculum.getUserName());
}
User currUser = securityUtil.getCurrUser();
IPage<YogaCurriculum> data = iYogaCurriculumService.page(PageUtil.initMpPage(page),qw);
for (YogaCurriculum vo : data.getRecords()) {
QueryWrapper<YogaOrder> orderQw = new QueryWrapper<>();
orderQw.eq("curriculum_id",vo.getId());
orderQw.eq("order_id",currUser.getId());
vo.setOrderFlag(iYogaOrderService.count(orderQw));
}
return new ResultUtil<IPage<YogaCurriculum>>().setData(data);
}
@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "新增预约")
public Result<Object> addOne(@RequestParam String id){
YogaCurriculum c = iYogaCurriculumService.getById(id);
if(c == null) {
return ResultUtil.error("瑜伽课程不存在");
}
YogaOrder o = new YogaOrder();
o.setCurriculumId(c.getId());
o.setCurriculumName(c.getTitle());
o.setContent(c.getContent());
o.setType(c.getType());
o.setUserId(c.getUserId());
o.setUserName(c.getUserName());
o.setImage(c.getImage());
o.setPrice(c.getPrice());
User currUser = securityUtil.getCurrUser();
o.setOrderId(currUser.getId());
o.setOrderName(currUser.getNickname());
o.setOrderTime(DateUtil.now());
// 扣除费用
User user = iUserService.getById(currUser.getId());
if(o.getPrice().compareTo(user.getMoney()) > 0) {
return ResultUtil.error("余额不足");
}
user.setMoney(user.getMoney().subtract(o.getPrice()));
iUserService.saveOrUpdate(user);
iYogaOrderService.saveOrUpdate(o);
return ResultUtil.success();
}
@RequestMapping(value = "/addAppraise", method = RequestMethod.GET)
@ApiOperation(value = "新增评价")
public Result<YogaArrange> addAppraise(@RequestParam String id,@RequestParam String level,@RequestParam String content){
YogaCurriculum c = iYogaCurriculumService.getById(id);
if(c == null) {
return ResultUtil.error("瑜伽课程不存在");
}
User currUser = securityUtil.getCurrUser();
YogaAppraise a = new YogaAppraise();
a.setCurriculumId(c.getId());
a.setCurriculumName(c.getTitle());
a.setLevel(level);
a.setContent(content);
a.setOrderId(currUser.getId());
a.setOrderName(currUser.getNickname());
a.setOrderTime(DateUtil.now());
iYogaAppraiseService.saveOrUpdate(a);
return ResultUtil.success();
}
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询瑜伽器械")
public Result<IPage<YogaApparatus>> getByPage(@ModelAttribute YogaApparatus yogaApparatus ,@ModelAttribute PageVo page){
QueryWrapper<YogaApparatus> qw = new QueryWrapper<>();
if(!ZwzNullUtils.isNull(yogaApparatus.getTitle())) {
qw.like("title",yogaApparatus.getTitle());
}
if(!ZwzNullUtils.isNull(yogaApparatus.getBrand())) {
qw.like("brand",yogaApparatus.getBrand());
}
if(!ZwzNullUtils.isNull(yogaApparatus.getPurpose())) {
qw.like("purpose",yogaApparatus.getPurpose());
}
IPage<YogaApparatus> data = iYogaApparatusService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<YogaApparatus>>().setData(data);
}
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增公告")
public Result<Announcement> insert(Announcement announcement){
if(Objects.equals(0,announcement.getSortOrder().compareTo(BigDecimal.ZERO))) {
announcement.setSortOrder(BigDecimal.valueOf(iAnnouncementService.count() + 1L));
}
User currUser = securityUtil.getCurrUser();
announcement.setPublisher(currUser.getNickname());
iAnnouncementService.saveOrUpdate(announcement);
return new ResultUtil<Announcement>().setData(announcement);
}
下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!