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


    博主主页猫头鹰源码

    博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战

    主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询

    文末联系获取

    项目介绍: 

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

    项目功能:

    数据库表结构文档:

    数据模型:

    系统包含技术:

    后端:springboot、mybatis
    前端:layui,js,css等,html页面
    开发工具:idea
    数据库:mysql 5.7
    JDK版本:jdk1.8

    部分截图说明:

    下面是用户首页

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

    旅游路线详情,可以收藏

    旅游攻略查询

    旅游攻略详情

    导游服务查询

     服务详情

    登录注册

    管理员-首页

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

     管理员-旅游攻略管理

     管理员-帖子维护

     管理员-导游管理

    导游-发布帖子

    部分代码:

    拦截器

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

    美食操作

    1. /**进入列表页面*/
    2. @GetMapping("/foodGuild")
    3. public String userIframe(){
    4. return "FoodGuildList";
    5. }
    6. /**列表数据*/
    7. @GetMapping("/list")
    8. @ResponseBody
    9. public PageResultVo findFoodGuild(FoodGuild foodGuild, Integer limit, Integer page,HttpSession session){
    10. String type = (String)session.getAttribute("type");
    11. if(type.equals("02")){
    12. User user = (User)session.getAttribute("userInfo");
    13. foodGuild.setUid(String.valueOf(user.getId()));
    14. }
    15. PageHelper.startPage(page,limit);
    16. List foodGuildList = foodGuildService.selectByCondition(foodGuild);
    17. PageInfo pages = new PageInfo<>(foodGuildList);
    18. return JsonData.table(foodGuildList,pages.getTotal());
    19. }
    20. /**编辑详情*/
    21. @GetMapping("/edit")
    22. @ResponseBody
    23. public FoodGuild edit(Model model, String id){
    24. return foodGuildService.selectById(id);
    25. }
    26. /**编辑*/
    27. @PostMapping("/edit")
    28. @ResponseBody
    29. public JsonData edit(FoodGuild foodGuild){
    30. int a = foodGuildService.updateById(foodGuild);
    31. if (a > 0) {
    32. return JsonData.success(null,"编辑成功!");
    33. } else {
    34. return JsonData.fail("编辑失败");
    35. }
    36. }
    37. /**删除*/
    38. @PostMapping("/del")
    39. @ResponseBody
    40. public JsonData del(String id){
    41. try{
    42. foodGuildService.deleteById(Integer.parseInt(id));
    43. }catch(Exception ex){
    44. JsonData.fail("出现错误");
    45. }
    46. return JsonData.success(null,"删除成功");
    47. }
    48. /**审核*/
    49. @PostMapping("/updateStatus")
    50. @ResponseBody
    51. public JsonData updateStatus(String id,String status){
    52. try{
    53. FoodGuild foodGuild = new FoodGuild();
    54. foodGuild.setId(Integer.parseInt(id));
    55. foodGuild.setStatus(status);
    56. foodGuildService.updateById(foodGuild);
    57. }catch(Exception ex){
    58. JsonData.fail("出现错误");
    59. }
    60. return JsonData.success(null,"操作成功");
    61. }

    登录操作

    1. /**
    2. * 登录
    3. * 将提交数据(username,password)写入Admin对象
    4. */
    5. @RequestMapping(value = "/login")
    6. @ResponseBody
    7. public String login(String username,String password,String type, Model model, HttpSession session) {
    8. Map mp = new HashMap();
    9. if(username.equals("") || password.equals("")){
    10. return "202";
    11. }
    12. if(type.equals("01")){
    13. mp.put("username",username);
    14. mp.put("password",password);
    15. List admins = adminService.queryFilter(mp);
    16. if(admins!=null && admins.size()==1){
    17. session.setAttribute("userInfo", admins.get(0));
    18. session.setAttribute("type", "01");
    19. }else{
    20. return "201";
    21. }
    22. }else if(type.equals("02")){
    23. mp.put("phone",username);
    24. mp.put("password",password);
    25. mp.put("type","01");
    26. List users = userService.queryFilter(mp);
    27. if(users!=null && users.size()==1){
    28. session.setAttribute("userInfo", users.get(0));
    29. session.setAttribute("type", "02");
    30. }else{
    31. return "201";
    32. }
    33. }else{
    34. mp.put("phone",username);
    35. mp.put("password",password);
    36. mp.put("type","02");
    37. List users = userService.queryFilter(mp);
    38. if(users!=null && users.size()==1){
    39. session.setAttribute("userInfo", users.get(0));
    40. session.setAttribute("type", "03");
    41. }else{
    42. return "201";
    43. }
    44. }
    45. return "200";
    46. }

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

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

  • 相关阅读:
    关于前后端分离的Cookie的事项
    Aigtek高精度电流源仪器设计规范
    解锁横向招聘:创新您的人才搜索
    Python字符串类型详解(二)——字符串处理函数及处理方法
    【K8S】常用的 Kubernetes(K8S)指令
    Web框架开发-Form组件和ajax实现注册
    opencv创建窗口—cv.namedWindow()
    2022西门子白帽黑客大赛丨工控安全赛事新起点 人才培养见真章
    Leftover Hash Lemma(LHL):剩余哈希引理
    B站基于Iceberg+Alluxio助力湖仓一体项目落地实践
  • 原文地址:https://blog.csdn.net/mtyedu/article/details/126652377