基于springboot的自助旅游服务平台

简介: 该系统创作于2022年4月,包含详细数据库设计。基于springboot技术,数据层为MyBatis,mysql数据库,页面使用html,具有完整的业务逻辑,适合选题:旅游、自助旅游、旅游服务、旅游攻略、**景点旅游平台等。

项目介绍:



该系统创作于2022年4月,包含详细数据库设计。基于springboot技术,数据层为MyBatis,mysql数据库,页面使用html,具有完整的业务逻辑,适合选题:旅游、自助旅游、旅游服务、旅游攻略、**景点旅游平台等。


项目功能:



65a2e900404a4bd092290a218d20ee56.png


数据库表结构文档:



76aab275ae2c47cb915cbb022a81c95a.png


数据模型:



c4419cc55bd4489fb3137ee189680d7f.png


系统包含技术:



后端:springboot、mybatis

前端:layui,js,css等,html页面

开发工具:idea

数据库:mysql 5.7

JDK版本:jdk1.8


部分截图说明:



下面是用户首页


c6bca92a0bd048eabb62fbd2a7cbef2c.png


旅游路线,分页查询,可以筛选


35767c3b4bed44bdb860a9b2dc669bd8.png


旅游路线详情,可以收藏


53a2f508f7ec4c3f9d950ece96c4726e.png


旅游攻略查询


43857e16f84e4e45a75f5cd99b27d8c8.png


旅游攻略详情


f5402b2fcfc24a2cb21e09ab3e32907e.png


导游服务查询


a52c0464f44743b794f566c75f526f6e.png


服务详情


9b0fb76db3ea456ab4aeb2463bcb9cac.png


登录注册


96611784fa954425940a905125434d64.png


管理员-首页


30b08dae7d644abba3188b5f5eb506f3.png


管理员-对旅游路线进行管理


f05afa05839b41faa90d5d734b89826c.png


管理员-旅游攻略管理


1e683a702b7d4c3c96ed43d059237c65.png


管理员-帖子维护


9d986a84fbdd4c61b026d6b5b95aa839.png


管理员-导游管理


af9a82610b5d475884816dbbe500a594.png


导游-发布帖子


e4769dfde0324b46a96d870dc22a1022.png


部分代码:



拦截器


 @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        if(session.getAttribute("userInfo") != null){
            return true;
        }
        // 不符合条件的给出提示信息,并转发到主页面
        request.setAttribute("msg", "您还没有登录,请先登录!");
        request.getRequestDispatcher("/logout").forward(request, response);
        //返回true通过,返回false拦截
        return false;
    }


美食操作


 /**进入列表页面*/
    @GetMapping("/foodGuild")
    public String userIframe(){
        return "FoodGuildList";
    }
    /**列表数据*/
    @GetMapping("/list")
    @ResponseBody
    public PageResultVo findFoodGuild(FoodGuild foodGuild, Integer limit, Integer page,HttpSession session){
        String type = (String)session.getAttribute("type");
        if(type.equals("02")){
            User user = (User)session.getAttribute("userInfo");
            foodGuild.setUid(String.valueOf(user.getId()));
        }
        PageHelper.startPage(page,limit);
        List<FoodGuild> foodGuildList = foodGuildService.selectByCondition(foodGuild);
        PageInfo<FoodGuild> pages = new PageInfo<>(foodGuildList);
        return JsonData.table(foodGuildList,pages.getTotal());
    }
    /**编辑详情*/
    @GetMapping("/edit")
    @ResponseBody
    public FoodGuild edit(Model model, String id){
        return foodGuildService.selectById(id);
    }
    /**编辑*/
    @PostMapping("/edit")
    @ResponseBody
    public JsonData edit(FoodGuild foodGuild){
        int a = foodGuildService.updateById(foodGuild);
        if (a > 0) {
          return JsonData.success(null,"编辑成功!");
        } else {
          return JsonData.fail("编辑失败");
        }
    }
    /**删除*/
    @PostMapping("/del")
    @ResponseBody
    public JsonData del(String id){
        try{
          foodGuildService.deleteById(Integer.parseInt(id));
        }catch(Exception ex){
          JsonData.fail("出现错误");
        }
        return JsonData.success(null,"删除成功");
    }
    /**审核*/
    @PostMapping("/updateStatus")
    @ResponseBody
    public JsonData updateStatus(String id,String status){
        try{
            FoodGuild foodGuild = new FoodGuild();
            foodGuild.setId(Integer.parseInt(id));
            foodGuild.setStatus(status);
            foodGuildService.updateById(foodGuild);
        }catch(Exception ex){
            JsonData.fail("出现错误");
        }
        return JsonData.success(null,"操作成功");
    }


登录操作


/**
   * 登录
   * 将提交数据(username,password)写入Admin对象
   */
  @RequestMapping(value = "/login")
  @ResponseBody
  public String login(String username,String password,String type, Model model, HttpSession session) {
    Map mp = new HashMap();
    if(username.equals("") || password.equals("")){
      return "202";
    }
    if(type.equals("01")){
      mp.put("username",username);
      mp.put("password",password);
      List<Admin> admins = adminService.queryFilter(mp);
      if(admins!=null && admins.size()==1){
        session.setAttribute("userInfo", admins.get(0));
        session.setAttribute("type", "01");
      }else{
        return "201";
      }
    }else if(type.equals("02")){
      mp.put("phone",username);
      mp.put("password",password);
      mp.put("type","01");
      List<User> users = userService.queryFilter(mp);
      if(users!=null && users.size()==1){
        session.setAttribute("userInfo", users.get(0));
        session.setAttribute("type", "02");
      }else{
        return "201";
      }
    }else{
      mp.put("phone",username);
      mp.put("password",password);
      mp.put("type","02");
      List<User> users = userService.queryFilter(mp);
      if(users!=null && users.size()==1){
        session.setAttribute("userInfo", users.get(0));
        session.setAttribute("type", "03");
      }else{
        return "201";
      }
    }
    return "200";
  }


以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,代码工整,清晰,适合学习使用。


好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~

相关文章
|
4月前
|
Java Spring
Spring boot 运行服务jar外配置配置文件方式总结
Spring boot 运行服务jar外配置配置文件方式总结
858 0
|
24天前
|
JSON Java 网络架构
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
这篇文章介绍了如何使用Spring Boot整合REST方式来搭建和操作Elasticsearch服务。
98 4
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
|
24天前
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
52 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
|
24天前
|
自然语言处理 Java Maven
elasticsearch学习二:使用springboot整合TransportClient 进行搭建elasticsearch服务
这篇博客介绍了如何使用Spring Boot整合TransportClient搭建Elasticsearch服务,包括项目创建、Maven依赖、业务代码和测试示例。
73 0
elasticsearch学习二:使用springboot整合TransportClient 进行搭建elasticsearch服务
|
2月前
|
缓存 前端开发 Java
springboot 的单体服务 字典参数转译
本文介绍了如何在Spring Boot项目中使用缓存来管理字典参数,并确保前后端数据一致性。首先,通过`@EnableCaching`启用缓存功能,接着创建一个自定义的字典缓存类`DicCache`。然后,通过配置类将`DicCache`添加到`cacheManager`中。此外,对字典服务进行改造,使用`@CachePut`和`@CacheEvict`注解保证数据一致性。最后,实现自定义注解`@DicSerializer`和序列化处理类`DictSerializerHandel`,用于在序列化过程中自动转换字典值。通过这种方式,可最小化代码改动并提高系统性能。
springboot 的单体服务 字典参数转译
|
3月前
|
小程序 JavaScript Java
微信小程序+SpringBoot接入后台服务,接口数据来自后端
这篇文章介绍了如何将微信小程序与SpringBoot后端服务进行数据交互,包括后端接口的编写、小程序获取接口数据的方法,以及数据在小程序中的展示。同时,还涉及到了使用Vue搭建后台管理系统,方便数据的查看和管理。
微信小程序+SpringBoot接入后台服务,接口数据来自后端
|
3月前
|
Java Windows
SpringBoot Windows 自启动 - 通过 Windows Service 服务实现
SpringBoot Windows 自启动 - 通过 Windows Service 服务实现
102 2
|
3月前
|
Java 开发者 Spring
"揭秘SpringBoot魔法SPI机制:一键解锁服务扩展新姿势,让你的应用灵活飞天!"
【8月更文挑战第11天】SPI(Service Provider Interface)是Java的服务提供发现机制,用于运行时动态查找和加载服务实现。SpringBoot在其基础上进行了封装和优化,通过`spring.factories`文件提供更集中的配置方式,便于框架扩展和组件替换。本文通过定义接口`HelloService`及其实现类`HelloServiceImpl`,并在`spring.factories`中配置,结合`SpringFactoriesLoader`加载服务,展示了SpringBoot SPI机制的工作流程和优势。
56 5
|
3月前
|
NoSQL Java Linux
springboot+redis+虚拟机 springboot连接linux虚拟机中的redis服务
该博客文章介绍了如何在Spring Boot项目中通过配置和代码实现连接运行在Linux虚拟机上的Redis服务,并提供了详细的步骤和测试结果截图。
springboot+redis+虚拟机 springboot连接linux虚拟机中的redis服务
|
4月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的志愿服务管理系统设计和实现(源码+LW+部署讲解)
基于SpringBoot+Vue的志愿服务管理系统设计和实现(源码+LW+部署讲解)
69 6