作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业讲师以及同行交流合作
主要内容:Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能与大数据、单片机开发、物联网设计与开发设计、简历模板、学习资料、面试题库、技术互助、就业指导等
业务范围:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路等。
收藏点赞不迷路 关注作者有好处
文末获取源码
项目编号:L-BS-QBBSSPRINGBOOT-181
一,环境介绍
语言环境:Java: jdk1.8
数据库:Mysql: mysql5.7
应用服务器:Tomcat: tomcat8.5.31
开发工具:IDEA或eclipse
技术:springboot+mysql+html+java
二,项目简介
如今社会上各行各业,都在用属于自己专用的软件来进行工作,互联网发展到这个时候,人们已经发现离不开了互联网。互联网的发展,离不开一些新的技术,而新技术的产生往往是为了解决现有问题而产生的。针对于场地预约信息管理方面的不规范,容错率低,管理人员处理数据费工费时,采用新开发的体育馆使用预约平台可以从根源上规范整个数据处理流程的正规性和合法性。
体育馆使用预约平台能够实现场地管理,用户管理,论坛管理,公告管理,场地订单管理等功能。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。
体育馆使用预约平台可以提高场地预约信息管理问题的解决效率,优化场地预约信息处理流程,并且能够保证存储数据的安全,它是一个非常可靠,非常安全的应用程序。
管理员权限操作的功能包括对注册用户信息的管理,对场地,场地预约订单,公告,论坛帖子等信息的管理
图4.2即为设计的用户功能结构,用户权限操作的功能包括参与论坛帖子发布与评论,查看公告,预约场地,收藏场地等。
三,系统展示
3.1 管理员后台功能实现
3.1.1 论坛管理
图3.1 即为编码实现的论坛管理界面,管理员在该界面中查看论坛回复信息,修改论坛帖子内容,可以删除论坛帖子。论坛信息包含帖子标题,用户姓名,用户手机号,用户身份证,查询的时候可以通过这些信息查询出来结果,添加内容的时候需要输入帖子类型,帖子标题,发布内容。
图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(311,"权限为空"); 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 = new 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 = forumService.selectOne(queryWrapper); if(forumEntity==null){ forum.setInsertTime(new Date()); forum.setCreateTime(new Date()); forumService.insert(forum); return R.ok(); }else { return R.error(311,"表中有相同数据"); } }
3.1.2 用户管理
图3.2 即为编码实现的用户管理界面,管理员在该界面中为注册系统的用户重置密码,更改用户的头像,电子邮箱等基础信息,删除需要删除的用户。用户信息包含账号,密码,手机号,身份证,头像,性别,电子信箱,余额等。查询的时候只需要提供用户姓名,手机号,身份证就可以查询。
图3.2 用户管理界面
用户添加:
@RequestMapping("/save") public R save(@RequestBody 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 R.error(311,"权限为空"); Wrapper<YonghuEntity> queryWrapper = new 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 = yonghuService.selectOne(queryWrapper); if(yonghuEntity==null){ yonghu.setCreateTime(new Date()); yonghu.setPassword("123436"); yonghuService.insert(yonghu); return R.ok(); }else { return R.error(311,"账户或者用户手机号或者用户身份证号已经被使用"); } }
3.1.3 场地管理
图3.3 即为编码实现的场地管理界面,管理员在该界面中可以更改场地信息,新增新的场地信息,删除需要删除的场地资料。场地搜索只需要输入场地名称,场地类型就可以查到结果。新增场地则需要输入场地编号,场地名称,照片,类型,原价,现价,时间段,半全场,推荐吃饭地点,场地介绍等。
图3.3 场地管理界面
场地修改:
@RequestMapping("/update") public R update(@RequestBody 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 = new 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 = changdiService.selectOne(queryWrapper); if("".equals(changdi.getChangdiPhoto()) || "null".equals(changdi.getChangdiPhoto())){ changdi.setChangdiPhoto(null); } if(changdiEntity==null){ changdiService.updateById(changdi);//根据id更新 return R.ok(); }else { return R.error(311,"表中有相同数据"); } }
3.1.4 场地订单管理
图3.4 即为编码实现的场地订单管理界面,管理员在该界面中对用户预约的场地订单进行查询,更改等,查看场地预约订单的预约时间段信息以及订单类型等信息。可以通过输入场地名称,类型,用户姓名,用户手机号,用户身份证号来进行查询场地预约信息。
图3.4 场地订单管理界面
场地订单列表:
/** * 后端列表 */ @RequestMapping("/page") public R page(@RequestParam 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 R.error(311,"权限为空"); else if("用户".equals(role)) params.put("yonghuId",request.getSession().getAttribute("userId")); if(params.get("orderBy")==null || params.get("orderBy")==""){ params.put("orderBy","id"); } PageUtils page = changdiOrderService.queryPage(params); //字典表数据转换 List<ChangdiOrderView> list =(List<ChangdiOrderView>)page.getList(); for(ChangdiOrderView c:list){ //修改对应字典表字段 dictionaryService.dictionaryConvert(c, request); } return R.ok().put("data", page); }
3.1.3 公告信息管理
图3.3 即为编码实现的公告信息管理界面,管理员在该界面中负责发布公告信息,更改公告信息的部分信息,删除需要删除的公告。
图3.3 公告信息管理界面
3.2 用户前台功能实现
3.2.1 场地信息
图3.6 即为编码实现的场地信息界面,用户在该界面中对场地进行预定,或收藏场地方便下次查看场地信息。可以看到的场地名称,类型,原价,现价,人数,点击次数,半全场,推荐吃饭地点,订购日期,订购时间段详情介绍。
图3.6 场地信息界面
场地预约:
@RequestMapping("/add") public R add(@RequestBody 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 = changdiService.selectById(changdiOrder.getChangdiId()); if(changdiEntity == null){ return R.error(311,"查不到该场地"); } if(changdiEntity.getChangdiNewMoney() == null){ return R.error(311,"场地价格不能为空"); } Integer userId = (Integer) request.getSession().getAttribute("userId"); YonghuEntity yonghuEntity = yonghuService.selectById(userId); if(yonghuEntity == null) return R.error(311,"用户不能为空"); if(yonghuEntity.getNewMoney() == null) return R.error(311,"用户金额不能为空"); double balance = yonghuEntity.getNewMoney() - changdiEntity.getChangdiNewMoney();//余额 if(balance<0) return R.error(311,"余额不够支付"); List<Integer> changdiOrderTypes = new ArrayList<>(); changdiOrderTypes.add(2); String buyTime = new SimpleDateFormat("yyyy-MM-dd").format(changdiOrder.getBuyTime()); List<ChangdiOrderEntity> changdiOrderEntities = changdiOrderService.selectList(new EntityWrapper<ChangdiOrderEntity>().notIn("changdi_order_types", changdiOrderTypes).eq("shijianduan", changdiOrder.getShijianduan()).eq("buy_time",buyTime)); if(changdiOrderEntities != null && changdiOrderEntities.size()>0) return R.error(311,buyTime+" 那天的 "+changdiOrder.getShijianduan()+" 的时间段已经被预约了"); changdiOrder.setYonghuId(userId); //设置订单支付人id changdiOrder.setInsertTime(new Date()); changdiOrder.setCreateTime(new Date()); changdiOrder.setChangdiOrderTypes(1); changdiOrder.setChangdiOrderTruePrice(changdiEntity.getChangdiNewMoney()); changdiOrder.setChangdiOrderUuidNumber(String.valueOf(new Date().getTime())); changdiOrderService.insert(changdiOrder);//新增订单 yonghuEntity.setNewMoney(balance);//设置金额 yonghuService.updateById(yonghuEntity); return R.ok(); }else{ return R.error(311,"您没有权限支付订单"); } }
3.2.2 在线论坛
图3.7 即为编码实现的在线论坛界面,用户在该界面中对论坛所有帖子进行查看,查看帖子之后可以发布帖子评论,用户也能点击发布帖子链接进入新界面发布自己的帖子。主要可以看到帖子标题,发布人权限,发布时间,可以对这些帖子进行回复操作。
图3.7 在线论坛界面
3.2.3 场地预约
图3.8 即为编码实现的场地预约界面,用户在该界面中浏览已经预约的场地。如果存在误操作,用户可以取消预约的场地。在个人中心我的场地预约里面,有全部场地预约,已使用,取消预约,已预约这几个状态的预约信息,已经取消预约的不能再取消,已预约尚未取消预约的才可以取消预约。
图3.8 场地预约界面
我的预约:
/** * 前端列表 */ @IgnoreAuth @RequestMapping("/list") public R list(@RequestParam 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 = changdiOrderService.queryPage(params); //字典表数据转换 List<ChangdiOrderView> list =(List<ChangdiOrderView>)page.getList(); for(ChangdiOrderView c:list) dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段 return R.ok().put("data", page); }
四,核心代码展示
五,相关作品展示
基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目
基于Nodejs、Vue等前端技术开发的前端实战项目
基于微信小程序和安卓APP应用开发的相关作品
基于51单片机等嵌入式物联网开发应用
基于各类算法实现的AI智能应用
基于大数据实现的各类数据管理和推荐系统