当前位置: 首页 > news >正文

基于SpringBoot+Vue实现九峰山旅游平台系统

 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业讲师以及同行交流合作

主要内容:Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能与大数据、单片机开发、物联网设计与开发设计、简历模板、学习资料、面试题库、技术互助、就业指导等

业务范围:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路等

收藏点赞不迷路  关注作者有好处

文末获取源码 

项目编号:BS-PT-143

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

开发技术:SpringBoot+Vue

二,项目简介

疫情过后,旅游行业得到一定程度的恢复,但相比疫情前的几年,旅游行业的营收还是下降很多,整个旅游产业需要一定时间得以恢复。这两年由于整个经济环境的问题,各地都在大力推广本地的特色旅游,各地的文旅局长也纷纷在互联网平台上进行宣传,为了吸引游客的到来,各地方官员和景区也是使用了浑身招数,目的就希望通过旅游来刺激当地的消费,提升本地的GDP。而目前通过网络进行营销已经是很多景区采用的普遍手段,本文旨在为九峰山旅游景区来开发设计一套旅游平台系统,通过此网站平台来方便旅游者了解九峰山景区,方便在线预定门票和酒店,也可以自由组团进行旅游,达到为九峰山景区进行宣传、吸引游客的目的。

九峰山旅游平台系统通过SpringBoot框架进行开发,利用MySQL关系型数据库作为数据库服务器,主要实现了景点管理,景点评价管理,景点收藏管理,景点订单管理,房间管理,房间评价管理,房间收藏管理,房间订单管理,旅游团管理,旅游团留言管理,旅游团收藏管理,旅游团拼团管理,游玩路线管理,游玩路线留言管理,游玩路线收藏管理等功能。

通过本系统的运行与上线,能够为九峰山旅游景区提供一个比较方便的线上售票和宣传推广的窗口。系统界面设计简洁大方,经过前后端的运行测试,完整的实现了预期功能目标。

三,系统展示

四,核心代码展示


package com.controller;import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;/*** 房间收藏* 后端接口* @author* @email
*/
@RestController
@Controller
@RequestMapping("/fangjianCollection")
public class  FangjianCollectionController {private static final Logger logger = LoggerFactory.getLogger(FangjianCollectionController.class);@Autowiredprivate FangjianCollectionService fangjianCollectionService;@Autowiredprivate TokenService tokenService;@Autowiredprivate DictionaryService dictionaryService;//级联表service@Autowiredprivate FangjianService fangjianService;@Autowiredprivate YonghuService yonghuService;/*** 后端列表*/@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(false)return R.error(511,"永不会进入");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 = fangjianCollectionService.queryPage(params);//字典表数据转换List<FangjianCollectionView> list =(List<FangjianCollectionView>)page.getList();for(FangjianCollectionView c:list){//修改对应字典表字段dictionaryService.dictionaryConvert(c, request);}return R.ok().put("data", page);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id, HttpServletRequest request){logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);FangjianCollectionEntity fangjianCollection = fangjianCollectionService.selectById(id);if(fangjianCollection !=null){//entity转viewFangjianCollectionView view = new FangjianCollectionView();BeanUtils.copyProperties( fangjianCollection , view );//把实体数据重构到view中//级联表FangjianEntity fangjian = fangjianService.selectById(fangjianCollection.getFangjianId());if(fangjian != null){BeanUtils.copyProperties( fangjian , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段view.setFangjianId(fangjian.getId());}//级联表YonghuEntity yonghu = yonghuService.selectById(fangjianCollection.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段view.setYonghuId(yonghu.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody FangjianCollectionEntity fangjianCollection, HttpServletRequest request){logger.debug("save方法:,,Controller:{},,fangjianCollection:{}",this.getClass().getName(),fangjianCollection.toString());String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永远不会进入");else if("用户".equals(role))fangjianCollection.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));Wrapper<FangjianCollectionEntity> queryWrapper = new EntityWrapper<FangjianCollectionEntity>().eq("fangjian_id", fangjianCollection.getFangjianId()).eq("yonghu_id", fangjianCollection.getYonghuId()).eq("fangjian_collection_types", fangjianCollection.getFangjianCollectionTypes());logger.info("sql语句:"+queryWrapper.getSqlSegment());FangjianCollectionEntity fangjianCollectionEntity = fangjianCollectionService.selectOne(queryWrapper);if(fangjianCollectionEntity==null){fangjianCollection.setInsertTime(new Date());fangjianCollection.setCreateTime(new Date());fangjianCollectionService.insert(fangjianCollection);return R.ok();}else {return R.error(511,"表中有相同数据");}}/*** 后端修改*/@RequestMapping("/update")public R update(@RequestBody FangjianCollectionEntity fangjianCollection, HttpServletRequest request){logger.debug("update方法:,,Controller:{},,fangjianCollection:{}",this.getClass().getName(),fangjianCollection.toString());String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("用户".equals(role))
//            fangjianCollection.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));//根据字段查询是否有相同数据Wrapper<FangjianCollectionEntity> queryWrapper = new EntityWrapper<FangjianCollectionEntity>().notIn("id",fangjianCollection.getId()).andNew().eq("fangjian_id", fangjianCollection.getFangjianId()).eq("yonghu_id", fangjianCollection.getYonghuId()).eq("fangjian_collection_types", fangjianCollection.getFangjianCollectionTypes());logger.info("sql语句:"+queryWrapper.getSqlSegment());FangjianCollectionEntity fangjianCollectionEntity = fangjianCollectionService.selectOne(queryWrapper);if(fangjianCollectionEntity==null){fangjianCollectionService.updateById(fangjianCollection);//根据id更新return R.ok();}else {return R.error(511,"表中有相同数据");}}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Integer[] ids){logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());fangjianCollectionService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 批量上传*/@RequestMapping("/batchInsert")public R save( String fileName, HttpServletRequest request){logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");try {List<FangjianCollectionEntity> fangjianCollectionList = new ArrayList<>();//上传的东西Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段Date date = new Date();int lastIndexOf = fileName.lastIndexOf(".");if(lastIndexOf == -1){return R.error(511,"该文件没有后缀");}else{String suffix = fileName.substring(lastIndexOf);if(!".xls".equals(suffix)){return R.error(511,"只支持后缀为xls的excel文件");}else{URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径File file = new File(resource.getFile());if(!file.exists()){return R.error(511,"找不到上传文件,请联系管理员");}else{List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件dataList.remove(0);//删除第一行,因为第一行是提示for(List<String> data:dataList){//循环FangjianCollectionEntity fangjianCollectionEntity = new FangjianCollectionEntity();
//                            fangjianCollectionEntity.setFangjianId(Integer.valueOf(data.get(0)));   //房间 要改的
//                            fangjianCollectionEntity.setYonghuId(Integer.valueOf(data.get(0)));   //用户 要改的
//                            fangjianCollectionEntity.setFangjianCollectionTypes(Integer.valueOf(data.get(0)));   //类型 要改的
//                            fangjianCollectionEntity.setInsertTime(date);//时间
//                            fangjianCollectionEntity.setCreateTime(date);//时间fangjianCollectionList.add(fangjianCollectionEntity);//把要查询是否重复的字段放入map中}//查询是否重复fangjianCollectionService.insertBatch(fangjianCollectionList);return R.ok();}}}}catch (Exception e){e.printStackTrace();return R.error(511,"批量插入数据异常,请联系管理员");}}/*** 前端列表*/@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 = fangjianCollectionService.queryPage(params);//字典表数据转换List<FangjianCollectionView> list =(List<FangjianCollectionView>)page.getList();for(FangjianCollectionView c:list)dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段return R.ok().put("data", page);}/*** 前端详情*/@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id, HttpServletRequest request){logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);FangjianCollectionEntity fangjianCollection = fangjianCollectionService.selectById(id);if(fangjianCollection !=null){//entity转viewFangjianCollectionView view = new FangjianCollectionView();BeanUtils.copyProperties( fangjianCollection , view );//把实体数据重构到view中//级联表FangjianEntity fangjian = fangjianService.selectById(fangjianCollection.getFangjianId());if(fangjian != null){BeanUtils.copyProperties( fangjian , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段view.setFangjianId(fangjian.getId());}//级联表YonghuEntity yonghu = yonghuService.selectById(fangjianCollection.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段view.setYonghuId(yonghu.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody FangjianCollectionEntity fangjianCollection, HttpServletRequest request){logger.debug("add方法:,,Controller:{},,fangjianCollection:{}",this.getClass().getName(),fangjianCollection.toString());Wrapper<FangjianCollectionEntity> queryWrapper = new EntityWrapper<FangjianCollectionEntity>().eq("fangjian_id", fangjianCollection.getFangjianId()).eq("yonghu_id", fangjianCollection.getYonghuId()).eq("fangjian_collection_types", fangjianCollection.getFangjianCollectionTypes());logger.info("sql语句:"+queryWrapper.getSqlSegment());FangjianCollectionEntity fangjianCollectionEntity = fangjianCollectionService.selectOne(queryWrapper);if(fangjianCollectionEntity==null){fangjianCollection.setInsertTime(new Date());fangjianCollection.setCreateTime(new Date());fangjianCollectionService.insert(fangjianCollection);return R.ok();}else {return R.error(511,"您已经收藏过了");}}}

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

 

 


http://www.mrgr.cn/news/54495.html

相关文章:

  • 如何利用 Python抓取网页数据 其他方式抓取网页数据列举
  • Vue项目中如何设置角色菜单权限
  • 通过OpenCV实现 Lucas-Kanade 算法
  • 礼想视界,期待与您携手共创影视未来!
  • 论文 | LARGE LANGUAGE MODELS ARE HUMAN-LEVEL PROMPT ENGINEERS
  • 黑白帽子问题
  • 2025考研各省网上确认时间汇总!(别忘记)
  • Miniconda3 Linux安装教程
  • 垃圾收集器与内存分配机制(三)
  • 父母教养方式测试:理解与优化家庭教育的关键
  • 动态内存管理(上)
  • 偏差和均方根误差,偏差小,拟合的好,均方根误差小,波动程度小
  • 网络数据谁来监管?——法律许可下的用户数据获取与风险解读
  • spark、hadoop和hive自学路线
  • 简易的网站数据流动过程介绍 -- 用户注册/登录逻辑
  • 云开发之Github仓库代码利用
  • 智慧商城项目1-项目初始化创建
  • C语言动态内存管理
  • linux线程 | 同步与互斥 | 深度学习与理解同步
  • 【大数据分析与挖掘算法】matlab实现——DBSCAN聚类方法
  • Git_IDEA集成Git
  • “敌人野猪”受伤和死亡的逻辑和动画
  • xtu oj 不定方程的正整数解
  • yjs机器学习数据操作01——数据的获取、可视化
  • 民宿预订新纪元:SpringBoot实现的在线平台
  • 昇思MindSpore进阶教程--AOE调优工具