项目编号:L-BS-LY-01
一,环境介绍
语言环境:Java: jdk1.8
数据库:Mysql: mysql5.7
应用服务器:Tomcat: tomcat8.5.31
开发工具:IDEA或eclipse
二,项目简介
该旅游管理系统是基于SSM(Spring、SpringMVC、MyBatis)和Vue.js框架构建的一款旅游管理平台。它集成了景区管理、售票管理、系统管理、景区审核、游记管理、字典管理、景区档案、景区录入、关于我们等功能模块,为旅游行业管理者和游客提供全方位的管理和服务。
功能描述:
一、后台管理模块:
- 景区管理:管理员可以添加、编辑和删除景区信息,包括景区名称、地址、介绍、图片等。
- 售票管理:管理员可以设置景区的门票价格、售票时间、售票方式等,实现景区门票的在线销售和预约。
- 系统管理:管理员可以设置系统的参数和配置,包括网站名称、域名、主题、样式等。
- 景区审核:管理员可以对景区申请进行审核和批准,确保景区信息的准确性和可靠性。
- 游记管理:管理员可以审核和发布游客的游记文章,展示游客的旅游经历和心得。
- 字典管理:管理员可以添加和编辑系统使用的字典数据,包括省份、城市、景区类型等。
- 景区档案:管理员可以查看景区的详细档案,包括景区的名称、地址、介绍、图片等。
- 景区录入:管理员可以手动录入景区信息,方便管理员对景区信息进行维护和管理。
- 关于我们:管理员可以编辑和发布关于公司的介绍和联系方式等信息。
二、用户前端模块:
- 首页:用户可以浏览旅游线路和推荐旅游景点,分类展示景点和热门景点等信息。同时可以查看景区门票预订情况和游玩攻略等信息。
- 门票预订:用户可以在线预订景区门票,选择游玩日期和人数等信息,实现快捷购票。
- 景区资讯:用户可以查看最新的景区资讯和新闻动态,了解景区的最新情况和活动信息。
- 游玩攻略:用户可以查看其他游客分享的游玩攻略和旅游经验,为自身的旅行提供参考和帮助。
三,系统展示
3.1 后台管理
3.2 用户端
四,核心代码展示
4.1 SbsnOrderServiceImpl
@Service public class SbsnOrderServiceImpl implements SbsnOrderService { @Resource private SbsnOrderDao sbsnOrderDao; @Resource private TSbsnActDao tSbsnActDao; @Resource private TSbsnCode tSbsnCode; @Resource private ScenicDao scenicDao; @Override public PageInfo queryByParam(Page<SbsnOrder> page) { PageHelper.startPage(page.getPageNo(),page.getPageSize()); PageInfo pageInfo = new PageInfo(sbsnOrderDao.queryByParam(page.getData())); return pageInfo; } /** * 查询全部 * @param queryTime * @param scenicName * @return */ @Override public List<Map> queryAll(String queryTime, String scenicName) { return sbsnOrderDao.queryAll(queryTime,scenicName); } /** * 设置订单的初始化信息 * @param sbsnOrder 前台传过来的订单 * @return */ @Override @Transactional public SbsnOrder add(SbsnOrder sbsnOrder) { //设置参数 代付款 sbsnOrder.setCodeid(ConstantUtil.OrderStatus.PENDING_PAYMENT); sbsnOrder.setState(ConstantUtil.OrderStatus.PENDING_PAYMENT); sbsnOrder.setOrdertime(new Date()); //返回添加的主键 int add = sbsnOrderDao.add(sbsnOrder); //添加状态 TSbsnAct tSbsnAct = new TSbsnAct(); tSbsnAct.setOrderid(sbsnOrder.getOrderid()); tSbsnAct.setCodeid(sbsnOrder.getCodeid()); tSbsnAct.setActcode(sbsnOrder.getCodeid()); //查询动作名称 tSbsnAct.setActname(tSbsnCode.queryName(sbsnOrder.getCodeid())); tSbsnAct.setBz("待付款"); tSbsnAct.setCztime(sbsnOrder.getOrdertime()); tSbsnAct.setCzrid(sbsnOrder.getUserid()); //调用添加 tSbsnActDao.add(tSbsnAct); //景区添加票数 Scenic scenic = scenicDao.queryBy(sbsnOrder.getScenicid()); Integer onums = scenic.getOnums(); scenic.setOnums(onums+1); //修改订票信息 scenicDao.update(scenic); return sbsnOrder; } /** * 更改订单状态 * @param sbsnOrder 更改订单状态 * @return */ @Override @Transactional public int update(SbsnOrder sbsnOrder) { //设置参数 已付款 sbsnOrder.setCodeid(ConstantUtil.OrderStatus.PAID); sbsnOrder.setState(ConstantUtil.OrderStatus.PAID); sbsnOrder.setOrdertime(new Date()); // sbsnOrder.setCodeid(12); // sbsnOrder.setState(12); System.out.println(sbsnOrder+"----------------"); int update = sbsnOrderDao.update(sbsnOrder); //设置订单状态 TSbsnAct tSbsnAct = tSbsnActDao.queryById(sbsnOrder.getOrderid()); tSbsnAct.setCodeid(sbsnOrder.getCodeid()); tSbsnAct.setActcode(sbsnOrder.getCodeid()); //查询动作名称 tSbsnAct.setActname(tSbsnCode.queryName(tSbsnAct.getCodeid())); tSbsnAct.setBz("付款成功"); tSbsnActDao.update(tSbsnAct); //更新景区门票 Scenic scenic = scenicDao.queryBy(sbsnOrder.getScenicid()); Integer snums = scenic.getSnums(); scenic.setSnums(snums+1); Integer onums = scenic.getOnums(); scenic.setOnums(onums-1); scenicDao.update(scenic); return update; } /** * 更改订单状态 * @param sbsnOrder 更改订单状态 * @return */ @Override @Transactional public int setOrder(SbsnOrder sbsnOrder) { //设置参数 已付款 sbsnOrder.setCodeid(ConstantUtil.OrderStatus.CANCER); sbsnOrder.setState(ConstantUtil.OrderStatus.CANCER); sbsnOrder.setOrdertime(new Date()); int update = sbsnOrderDao.update(sbsnOrder); //设置订单状态 TSbsnAct tSbsnAct = tSbsnActDao.queryById(sbsnOrder.getOrderid()); tSbsnAct.setCodeid(sbsnOrder.getCodeid()); tSbsnAct.setActcode(sbsnOrder.getCodeid()); //查询动作名称 tSbsnAct.setActname(tSbsnCode.queryName(tSbsnAct.getCodeid())); tSbsnAct.setBz("已取消订单"); tSbsnActDao.update(tSbsnAct); //更新景区门票 Scenic scenic = scenicDao.queryBy(sbsnOrder.getScenicid()); Integer onums = scenic.getOnums(); scenic.setOnums(onums-1); scenicDao.update(scenic); return update; } @Override @Transactional public int sysUpdate(SbsnOrder sbsnOrder) { Integer state = sbsnOrder.getState();//判断用的 Integer codeid = sbsnOrder.getCodeid(); if (codeid==11){ if (state==11){ return sbsnOrderDao.update(sbsnOrder); } sbsnOrder.setCodeid(ConstantUtil.OrderStatus.PENDING_PAYMENT); sbsnOrder.setState(ConstantUtil.OrderStatus.PENDING_PAYMENT); //添加状态 TSbsnAct tSbsnAct = tSbsnActDao.queryById(sbsnOrder.getOrderid()); tSbsnAct.setOrderid(sbsnOrder.getOrderid()); tSbsnAct.setCodeid(ConstantUtil.OrderStatus.PENDING_PAYMENT); tSbsnAct.setActcode(ConstantUtil.OrderStatus.PENDING_PAYMENT); //查询动作名称 tSbsnAct.setActname(tSbsnCode.queryName(sbsnOrder.getCodeid())); tSbsnAct.setBz("待付款"); tSbsnAct.setCztime(sbsnOrder.getOrdertime()); tSbsnAct.setCzrid(sbsnOrder.getUserid()); //调用更改 tSbsnActDao.update(tSbsnAct); //景区票数设置 Scenic scenic = scenicDao.queryBy(sbsnOrder.getScenicid()); if (state!=11){ Integer onums = scenic.getOnums(); scenic.setOnums(onums+1); } if (state==12){ scenic.setSnums(scenic.getSnums()-1); } //修改订票信息 scenicDao.update(scenic); //修改订单信息 return sbsnOrderDao.update(sbsnOrder); }else if (codeid==12){ if (state==12){ return sbsnOrderDao.update(sbsnOrder); } //已付款 return update(sbsnOrder); }else{ if (state==13){ return sbsnOrderDao.update(sbsnOrder); } //已取消 //设置参数 已付款 sbsnOrder.setCodeid(ConstantUtil.OrderStatus.CANCER); sbsnOrder.setState(ConstantUtil.OrderStatus.CANCER); //设置订单状态 TSbsnAct tSbsnAct = tSbsnActDao.queryById(sbsnOrder.getOrderid()); tSbsnAct.setCodeid(codeid); tSbsnAct.setActcode(codeid); //查询动作名称 tSbsnAct.setActname(tSbsnCode.queryName(tSbsnAct.getCodeid())); tSbsnAct.setBz("已取消订单"); tSbsnActDao.update(tSbsnAct); //更新景区门票 Scenic scenic = scenicDao.queryBy(sbsnOrder.getScenicid()); scenic.setSnums(scenic.getSnums()-1); scenicDao.update(scenic); return sbsnOrderDao.update(sbsnOrder); } } @Override public int deleteById(Integer orderid) { return sbsnOrderDao.deleteById(orderid); } }
4.2 NewsServiceImpl
@Service public class NewsServiceImpl implements NewsService { @Autowired private NewsDao newsDao; /** * 根据id查询分页 * @param page * @return */ @Override public PageInfo queryById(Page<DicNechannel> page) { PageHelper.startPage(page.getPageNo(), page.getPageSize()); PageInfo pageInfo = new PageInfo(newsDao.queryById(page.getData())); return pageInfo; } @Override public PageInfo queryByParam(Page<News> page) { PageHelper.startPage(page.getPageNo(),page.getPageSize()); PageInfo pageInfo = new PageInfo(newsDao.queryByParam(page.getData())); System.out.println(pageInfo); return pageInfo; } @Override public int add(News news) { news.setCjtime(DateUtil.getDate()); news.setUpdatetime(DateUtil.getDate()); return newsDao.add(news); } @Override public int update(News news) { news.setUpdatetime(DateUtil.getDate()); return newsDao.update(news); } /** * 首页查询 * @return */ @Override public List<News> queryBy() { return newsDao.queryBy(); } @Override public int deleteById(Integer id) { return newsDao.deleteById(id); } }
五,相关作品展示
基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目
基于Nodejs、Vue等前端技术开发的前端实战项目
基于微信小程序和安卓APP应用开发的相关作品
基于51单片机等嵌入式物联网开发应用
基于各类算法实现的AI智能应用
基于大数据实现的各类数据管理和推荐系统