springboot体育馆使用预约平台

一、技术路线:

开发语言:Java

使用框架:spring boot

前端技术:JavaScript、VUE.js(2.X)、css3

数据库:MySQL 5.7

数据库管理工具:Navicat或sqlyog

开发工具:IDEA或Ecplise

二、项目介绍:

https://www.bilibili.com/video/BV16F411k7wb?t=0.4


三、运行截图:

编程人员在搭建的开发环境中,运用编程技术实现本系统设计的各个操作权限的功能。在本节中,就展示部分操作权限的功能与界面。

3.1 管理员后台功能实现

3.1.1 论坛管理

图3.1 即为编码实现的论坛管理界面,管理员在该界面中查看论坛回复信息,修改论坛帖子内容,可以删除论坛帖子。论坛信息包含帖子标题,用户姓名,用户手机号,用户身份证,查询的时候可以通过这些信息查询出来结果,添加内容的时候需要输入帖子类型,帖子标题,发布内容。

081965a43970c5512df5ebb293317c8f.jpeg


图3.1 论坛管理界面

管理员添加论坛:

@RequestMapping("/save")
public R save(@RequestBody ForumEntity forum, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,forum:{}",this.getClass().getName(),forum.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isEmpty(role))
return R.error(511,"权限为空");
else if("用户".equals(role))
forum.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
else if("管理员".equals(role))
forum.setUsersId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
Wrapper<ForumEntity> queryWrapper =&nbsp;new&nbsp;EntityWrapper<ForumEntity>()
.eq("forum_name", forum.getForumName())
.eq("yonghu_id", forum.getYonghuId())
.eq("users_id", forum.getUsersId())
.eq("super_ids", forum.getSuperIds())
.eq("forum_types", forum.getForumTypes())
.eq("forum_state_types", forum.getForumStateTypes())
;
logger.info("sql语句:"+
queryWrapper.getSqlSegment());
ForumEntity forumEntity =&nbsp;forumService.selectOne(queryWrapper);
if(forumEntity==null){
forum.setInsertTime(new&nbsp;Date());
forum.setCreateTime(new&nbsp;Date());
forumService.insert(forum);
return&nbsp;R.ok();
}else&nbsp;{
return&nbsp;R.error(511,"表中有相同数据");
}
}

3.1.2 用户管理

图3.2 即为编码实现的用户管理界面,管理员在该界面中为注册系统的用户重置密码,更改用户的头像,电子邮箱等基础信息,删除需要删除的用户。用户信息包含账号,密码,手机号,身份证,头像,性别,电子信箱,余额等。查询的时候只需要提供用户姓名,手机号,身份证就可以查询。

8c56b48c9ad5514e8070cfe01e841120.jpeg


图3.2 用户管理界面

用户添加:

@RequestMapping("/save")
public&nbsp;R save(@RequestBody&nbsp;YonghuEntity yonghu, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,yonghu:{}",this.getClass().getName(),yonghu.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isEmpty(role))
return&nbsp;R.error(511,"权限为空");
Wrapper<YonghuEntity> queryWrapper =&nbsp;new&nbsp;EntityWrapper<YonghuEntity>()
.eq("username", yonghu.getUsername())
.or()
.eq("yonghu_phone", yonghu.getYonghuPhone())
.or()
.eq("yonghu_id_number", yonghu.getYonghuIdNumber())
;
logger.info("sql语句:"+
queryWrapper.getSqlSegment());
YonghuEntity yonghuEntity =&nbsp;yonghuService.selectOne(queryWrapper);
if(yonghuEntity==null){
yonghu.setCreateTime(new&nbsp;Date());
yonghu.setPassword("123456");
yonghuService.insert(yonghu);
return&nbsp;R.ok();
}else&nbsp;{
return&nbsp;R.error(511,"账户或者用户手机号或者用户身份证号已经被使用");
}
}

3.1.3 场地管理

图3.3 即为编码实现的场地管理界面,管理员在该界面中可以更改场地信息,新增新的场地信息,删除需要删除的场地资料。场地搜索只需要输入场地名称,场地类型就可以查到结果。新增场地则需要输入场地编号,场地名称,照片,类型,原价,现价,时间段,半全场,推荐吃饭地点,场地介绍等。

daff3e2cc692aae4cd799772f920f8e7.jpeg


图3.3 场地管理界面

场地修改:

@RequestMapping("/update")
public&nbsp;R update(@RequestBody&nbsp;ChangdiEntity changdi, HttpServletRequest request){
logger.debug("update方法:,,Controller:{},,changdi:{}",this.getClass().getName(),changdi.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
Wrapper<ChangdiEntity> queryWrapper =&nbsp;new&nbsp;EntityWrapper<ChangdiEntity>()
.notIn("id",changdi.getId())
.andNew()
.eq("changdi_uuid_number",
changdi.getChangdiUuidNumber())
.eq("changdi_name", changdi.getChangdiName())
.eq("changdi_types", changdi.getChangdiTypes())
.eq("shijianduan", changdi.getShijianduan())
.eq("shijianduan_ren", changdi.getShijianduanRen())
.eq("changdi_clicknum",
changdi.getChangdiClicknum())
.eq("banquan_types", changdi.getBanquanTypes())
.eq("shangxia_types", changdi.getShangxiaTypes())
.eq("tuijian", changdi.getTuijian())
.eq("changdi_delete", changdi.getChangdiDelete())
;
logger.info("sql语句:"+
queryWrapper.getSqlSegment());
ChangdiEntity changdiEntity =&nbsp;changdiService.selectOne(queryWrapper);
if("".equals(changdi.getChangdiPhoto()) ||&nbsp;"null".equals(changdi.getChangdiPhoto())){
changdi.setChangdiPhoto(null);
}
if(changdiEntity==null){
changdiService.updateById(changdi);//根据id更新
return&nbsp;R.ok();
}else&nbsp;{
return&nbsp;R.error(511,"表中有相同数据");
}
}

3.1.4 场地订单管理

图3.4 即为编码实现的场地订单管理界面,管理员在该界面中对用户预约的场地订单进行查询,更改等,查看场地预约订单的预约时间段信息以及订单类型等信息。可以通过输入场地名称,类型,用户姓名,用户手机号,用户身份证号来进行查询场地预约信息。

41db274714ccc97b6c69faf2480a3b18.jpeg


图3.4 场地订单管理界面

场地订单列表:

/**
* 后端列表
*/
@RequestMapping("/page")
public&nbsp;R page(@RequestParam&nbsp;Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isEmpty(role))
return&nbsp;R.error(511,"权限为空");
else if("用户".equals(role))
params.put("yonghuId",request.getSession().getAttribute("userId"));
if(params.get("orderBy")==null&nbsp;|| params.get("orderBy")==""){
params.put("orderBy","id");
}
PageUtils page =&nbsp;changdiOrderService.queryPage(params);
//字典表数据转换
List<ChangdiOrderView> list =(List<ChangdiOrderView>)page.getList();
for(ChangdiOrderView c:list){
//修改对应字典表字段
dictionaryService.dictionaryConvert(c, request);
}
return&nbsp;R.ok().put("data", page);
}

3.1.5 公告信息管理

图3.5 即为编码实现的公告信息管理界面,管理员在该界面中负责发布公告信息,更改公告信息的部分信息,删除需要删除的公告。

fe09c170b2676ea673333eb8d127a670.jpeg


图3.5 公告信息管理界面

3.2 用户前台功能实现

3.2.1 场地信息

图3.6 即为编码实现的场地信息界面,用户在该界面中对场地进行预定,或收藏场地方便下次查看场地信息。可以看到的场地名称,类型,原价,现价,人数,点击次数,半全场,推荐吃饭地点,订购日期,订购时间段详情介绍。

a1df4c8c8f71be934ad044d335d73a4c.jpeg


图3.6 场地信息界面

场地预约:

@RequestMapping("/add")
public&nbsp;R add(@RequestBody&nbsp;ChangdiOrderEntity changdiOrder, HttpServletRequest request){
logger.debug("add方法:,,Controller:{},,changdiOrder:{}",this.getClass().getName(),changdiOrder.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if("用户".equals(role)){
ChangdiEntity changdiEntity =&nbsp;changdiService.selectById(changdiOrder.getChangdiId());
if(changdiEntity ==&nbsp;null){
return&nbsp;R.error(511,"查不到该场地");
}
if(
changdiEntity.getChangdiNewMoney() ==&nbsp;null){
return&nbsp;R.error(511,"场地价格不能为空");
}
Integer userId = (Integer) request.getSession().getAttribute("userId");
YonghuEntity yonghuEntity =&nbsp;yonghuService.selectById(userId);
if(yonghuEntity ==&nbsp;null)
return&nbsp;R.error(511,"用户不能为空");
if(yonghuEntity.getNewMoney() ==&nbsp;null)
return&nbsp;R.error(511,"用户金额不能为空");
double&nbsp;balance = yonghuEntity.getNewMoney() -
changdiEntity.getChangdiNewMoney();//余额
if(balance<0)
return&nbsp;R.error(511,"余额不够支付");
List<Integer> changdiOrderTypes =&nbsp;new&nbsp;ArrayList<>();
changdiOrderTypes.add(2);
String buyTime =&nbsp;new&nbsp;SimpleDateFormat("yyyy-MM-dd").format(changdiOrder.getBuyTime());
List<ChangdiOrderEntity> changdiOrderEntities =&nbsp;changdiOrderService.selectList(new&nbsp;EntityWrapper<ChangdiOrderEntity>().notIn("changdi_order_types", changdiOrderTypes).eq("shijianduan",
changdiOrder.getShijianduan()).eq("buy_time",buyTime));
if(changdiOrderEntities !=&nbsp;null&nbsp;&& changdiOrderEntities.size()>0)
return&nbsp;R.error(511,buyTime+" 那天的 "+
changdiOrder.getShijianduan()+" 的时间段已经被预约了");
changdiOrder.setYonghuId(userId);&nbsp;//设置订单支付人id

changdiOrder.setInsertTime(new&nbsp;Date());

changdiOrder.setCreateTime(new&nbsp;Date());

changdiOrder.setChangdiOrderTypes(1);

changdiOrder.setChangdiOrderTruePrice(changdiEntity.getChangdiNewMoney());

changdiOrder.setChangdiOrderUuidNumber(String.valueOf(new&nbsp;Date().getTime()));
changdiOrderService.insert(changdiOrder);//新增订单
yonghuEntity.setNewMoney(balance);//设置金额
yonghuService.updateById(yonghuEntity);
return&nbsp;R.ok();
}else{
return&nbsp;R.error(511,"您没有权限支付订单");
}
}

3.2.2 在线论坛

图3.7 即为编码实现的在线论坛界面,用户在该界面中对论坛所有帖子进行查看,查看帖子之后可以发布帖子评论,用户也能点击发布帖子链接进入新界面发布自己的帖子。主要可以看到帖子标题,发布人权限,发布时间,可以对这些帖子进行回复操作。

3570400fa2cef59a3cbbd70edf2ceaeb.jpeg


图3.7 在线论坛界面

3.2.3 场地预约

图3.8 即为编码实现的场地预约界面,用户在该界面中浏览已经预约的场地。如果存在误操作,用户可以取消预约的场地。在个人中心我的场地预约里面,有全部场地预约,已使用,取消预约,已预约这几个状态的预约信息,已经取消预约的不能再取消,已预约尚未取消预约的才可以取消预约。

dc32317c17b1f7eedd4338f893a350b9.jpeg


图3.8 场地预约界面

我的预约:

/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public&nbsp;R list(@RequestParam&nbsp;Map<String, Object> params, HttpServletRequest request){
logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
// 没有指定排序字段就默认id倒序
if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){
params.put("orderBy","id");
}
PageUtils page =&nbsp;changdiOrderService.queryPage(params);
//字典表数据转换
List<ChangdiOrderView> list =(List<ChangdiOrderView>)page.getList();
for(ChangdiOrderView c:list)
dictionaryService.dictionaryConvert(c, request);&nbsp;//修改对应字典表字段
return&nbsp;R.ok().put("data", page);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Spring Boot的体育馆预约系统任务书通常包括以下内容: 1. 项目背景和目标:介绍项目的背景和目标,例如为什么需要开发这个系统以及预期的效果和目标。 2. 功能需求:列出系统需要实现的功能,例如用户注册登录、场馆信息管理、场地预约、订单管理等。 3. 非功能需求:列出系统的非功能性需求,例如性能要求、安全要求、可扩展性要求等。 4. 技术选型:介绍使用的技术栈,例如Spring Boot作为后端框架、MySQL作为数据库、前端使用Vue.js等。 5. 系统架构设计:描述系统的整体架构设计,例如前后端分离、采用RESTful API进行通信等。 6. 数据库设计:设计数据库表结构,包括用户表、场馆表、场地表、订单表等。 7. 模块划分:将系统划分为不同的模块,例如用户模块、场馆管理模块、订单模块等。 8. 接口设计:定义系统的接口,包括请求参数、响应格式等。 9. 流程设计:描述系统的核心流程,例如用户预约流程、场馆审核流程等。 10. 安全设计:介绍系统的安全设计,例如用户身份验证、权限控制等。 11. 测试计划:制定系统的测试计划,包括单元测试、集成测试、系统测试等。 12. 项目进度计划:规划项目的开发进度,包括各个阶段的时间安排和里程碑。 13. 风险管理:识别项目可能面临的风险,并提供相应的应对措施。 14. 团队组成和分工:介绍项目团队的组成和成员分工。 15. 预算和资源需求:估计项目所需的预算和资源,例如人力资源、硬件设备等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值