个人旅游网(4)——功能详解——收藏功能

news2024/9/22 9:59:30

文章目录

  • 一、收藏排行榜功能
    • 1.1、接口详解
      • 1.1.1、findRouteList
  • 二、收藏功能
    • 2.1、接口详解
      • 2.1.1、find(用于判断当前旅游路线是否已被收藏)
      • 2.1.2、add-favorite(用于实现收藏功能)
      • 2.1.3、remove-favorite(用于实现取消收藏的功能)

一、收藏排行榜功能

收藏排行榜页面效果图:
在这里插入图片描述
该功能主要由一个接口 findRouteList 完成,在此接口中需要完成所有旅游线路的查询、模糊搜索、分页这3个功能。

1.1、接口详解

1.1.1、findRouteList

(1)、首先需要设置好当前页面的分页条件
当前页面我以每页8条数据,并且是以旅游路线的名称作为分页。

//设置分页条件
        PageHelper.startPage(favoriteDTO.getPageNum(),8);

(2)、查询所有的旅游路线数据
由于前端传过来的参数是以json格式组织的,因此定义一个 FavoriteDTO 类,里面存储从前端传过来的多个参数。findRoutes() 是从数据库中查询出所有的旅游路线数据。

//查询数据
        List<Route> routeList = this.routeMapper.findRoutes(favoriteDTO);

(3)、编写数据库中的sql语句
在这里插入图片描述
在这里插入图片描述

二、收藏功能

页面效果图:
在这里插入图片描述
在这里插入图片描述
收藏功能一共涉及 3 个接口,分别是 find(与 isLogged接口的作用类似,用于判断当前旅游路线是否已被收藏)、add-favorite(用于实现收藏功能)、remove-favorite(用于实现取消收藏的功能)。外加一个辅助的方法 updateFavoriteNum() ,该方法用于实现收藏功能时上坪旅游路线的收藏数+1的功能。

2.1、接口详解

2.1.1、find(用于判断当前旅游路线是否已被收藏)

前端传入一个 rid 参数,后端接收此参数,并根据 rid 从数据库的favorite表中查询数据,如果 Favorite 对象存在,说明该旅游路线已被收藏;如果Favorite 对象不存在,说明该旅游路线未被收藏。
在这里插入图片描述

2.1.2、add-favorite(用于实现收藏功能)

(1)、首先根据rid从数据库中查询Favorite对象,如果Favorite对象为空,说明当前用户之前未对该旅游路线进行过收藏,可以进行收藏操作,新增(save)一个 Favorite 对象,如果Favorite对象不为空,抛出一个 不可重复收藏的异常,阻止用户进行重复收藏操作。

(2)、借助updateFavoriteNum() 进行收藏操作。该方法首先通过rid在数据库中查询 Route对象,从Route对象中获取当前旅游路线的收藏次数,使用 update 语句将 Route 对象中的收藏次数修改为 收藏次数 + 1,即可完成收藏操作。

(3)、判断新增操作的受影响行数,如果受影响行数row 为0,说明收藏失败,回滚事务。否则,收藏成功。

2.1.3、remove-favorite(用于实现取消收藏的功能)

(1)、首先根据rid从数据库中查询Favorite对象,如果Favorite对象不为空,说明当前用户之前已对该旅游路线进行过收藏,可以进行取消收藏操作,删除(delete)对于 rid、uid下的 Favorite 对象,如果Favorite对象为空,抛出一个 不可重复取消收藏的异常,阻止用户进行重复取消收藏操作。

(2)、借助updateFavoriteNum() 进行取消收藏操作。该方法首先通过rid在数据库中查询 Route对象,从Route对象中获取当前旅游路线的收藏次数,使用 delete 语句将 Route 对象中的收藏次数修改为 收藏次数 - 1,即可完成取消收藏操作。

(3)、如果取消收藏操作失败,回滚事务。否则,取消收藏成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2096233.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ubuntu20.04搭建kubernetes1.28.13集群配置calico网络插件

写在前面 这里是我在搭建过程中从某站找到的教学视频,搭载的都是最新的,大家可以参考一下 搭建kubernetes集群学习视频: 视频链接。最后面会有我遇见报错信息的所有连接和解决方案,自行查看 不说废话,直接开搭 搭建集群大纲 一、三台虚拟机的初始化 二、三台虚拟机连接…

内存管理篇-19 TLB和Table wake unit

TLB这几节&#xff0c;停下来感觉怪怪的。没有从TLB的引入&#xff0c;工作原理&#xff0c;实际源码应用来深入分析。 TLB 是一种高速缓存&#xff0c;用于存储最近使用的页表项&#xff08;Page Table Entries, PTEs&#xff09;。它的主要目的是加速虚拟地址到物理地址的转换…

卷积公式的几何学理解

1、Required Knowledge 1.1、概率密度函数 用于描述连续型随机变量在不同取值上的概率密度&#xff0c;记作 f ( x ) f(x) f(x)。 如随机变量 X X X的分布为正态分布&#xff0c;则其概率密度函数为&#xff1a; f ( x ) 1 σ 2 π e − ( x − μ ) 2 2 σ 2 f(x)\frac{1}…

容器化你的应用:使用 Docker 入门指南

Docker 是一个流行的平台&#xff0c;它允许开发者将应用程序及其依赖项打包在一起&#xff0c;形成一个轻量级、可移植的容器。这种做法极大地简化了开发、测试和部署流程&#xff0c;因为无论是在本地还是在云端&#xff0c;容器都能确保应用的一致性。本指南将带你从头开始学…

粗心的懒洋洋做Python二级真题(错一大堆,分享错题)

以下内容&#xff0c;皆为原创&#xff0c;制作不易。感谢大家的点赞和关注。 一.数据流图 数据流图&#xff08;Data Flow Diagram&#xff0c;简称DFD&#xff09;是一种图形化表示法&#xff0c;用于展示信息系统中数据的流动和处理过程。 考点&#xff1a;数据流图是系统逻…

【我要成为配环境高手】Visual Studio中Qt安装与配置(无伤速通)

1.下载安装Qt和VSIX插件 2.本地环境变量配置 添加如下&#xff1a; D:\ProgramData\Qt\Qt5.14.2\5.14.2\msvc2017_64\libD:\ProgramData\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin3.VS配置 ⭐项目右键->属性->调试->环境&#xff0c;添加如下&#xff1a;(很重要&#x…

TCP的连接与断开

三次握手 主动发起连接建立的应用进程叫做客户端(client)。被动等待连接建立的应用进程叫做服务器(server)。 第一次握手&#xff1a;Client将同步比特SYN置为1&#xff08;表示这是一个连接请求或连接接受报文&#xff09;&#xff0c;并发送初始报文段序号seq x&#xff0…

kali——nikto的使用

目录 前言 使用方法 查看帮助&#xff08;--help&#xff09; 常规扫描&#xff08;-h&#xff09; 指定端口扫描&#xff08;-h -p&#xff09; 目录猜解&#xff08;-h -C&#xff09; 扫描敏感目录&#xff08;-h&#xff09; 保存扫描信息 前言 linux自带的nikto工…

【Motion Forecasting】SIMPL:简单且高效的自动驾驶运动预测Baseline

SIMPL: A Simple and Efficient Multi-agent Motion Prediction Baseline for Autonomous Driving 这项工作发布于2024年&#xff0c;前一段时间我已经对这篇文章的摘要和结论进行了学习和总结&#xff0c;这一部分详见https://blog.csdn.net/Coffeemaker88/article/details/1…

快速构建一个ui界面程序--pyqt入门

快速构建一个ui界面程序--pyqt入门 0 背景1 环境准备1.1 安装python1.2 安装pyqt 2 UI设计2.1 启动UI设计可视化工具2.2 生成*.ui文件2.3 编译ui生成对应的py 3 使用UI 0 背景 本文档用于记录开发者如何快速构建一个简单UI程序。开发者使用文档中提及的工具并用于商业活动时&a…

【法如faro】三维激光软件Scene2023数据处理(自动配准并转换坐标)流程

Scene2023数据处理(自动配准并转换坐标)的主要流程为:新建项目、导入数据、处理、自动注册、坐标系转换、模型导出立和面模型导出等。 文章目录 一、新建项目二、导入数据三、处理四、自动注册五、坐标系转换六、模型导出七、立面模型导出八、创建项目点云九、导出一、新建项…

将二叉搜索树转化为排序的双向链表

题目描述 将一个 二叉搜索树 就地转化为一个 已排序的双向循环链表 。 对于双向循环列表&#xff0c;你可以将左右孩子指针作为双向循环链表的前驱和后继指针&#xff0c;第一个节点的前驱是最后一个节点&#xff0c;最后一个节点的后继是第一个节点。 特别地&#xff0c;我…

shell了解和问答机制

GUI&#xff08;图形用户界面&#xff09; 定义与特点&#xff1a; GUI全称为Graphical User Interface&#xff0c;即图形用户界面。 它是一种采用图形方式显示的计算机操作用户界面&#xff0c;允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项&#xff0c;以选择命令…

海康二次开发学习笔记12-从Group外部输入图像

从Group外部输入图像 用OpenCV从本地读图 当Group内部无图像源模块时,可以通过代码的方式将图片传入Group内部.实现方式有多种,可以使用OpenCV从本地读图,可在程序集搜索引用OpenCvSharp&#xff0c;同时将其复制本地的属性改为False. 1. 界面设计 增加加载图像按钮 2. 处理…

【学习笔记】卫星通信NTN 3GPP标准化进展分析(二)- 3GPP Release16 内容

一、引言&#xff1a; 本文来自3GPP Joern Krause, 3GPP MCC (May 14,2024) Non-Terrestrial Networks (NTN) (3gpp.org) 本文总结了NTN标准化进程以及后续的研究计划&#xff0c;是学习NTN协议的入门。 【学习笔记】卫星通信NTN 3GPP标准化进展分析&#xff08;一&#xff…

学习Kerberos

学习Kerberos Kerberos的 是一种分布式、基于票证的身份验证服务&#xff0c;因为基于分布式&#xff0c;可能这种类型的协议我们平时接触比较少&#xff0c;Web端一般都是通过Cookie、Token、Oauth、Password等各种协议认证&#xff0c;客户端通过Ssh、Password等认证方式&am…

WAF的功能、检测、指纹及绕过

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330&scene21#wechat_redirect 《网安面试指南》…

尝试用java spring boot+VUE3实现前后端分离部署

前言 这几天开学了&#xff0c;公司这边几个和学校对接的项目都挺忙的&#xff0c;然后我又开始有点闲的情况了。问大佬能不能继续看看若依的项目&#xff0c;大佬让我自己去学了。在看若依的项目的时候在想&#xff0c;python的FLASK后端实现和JAVA spring boot的实现差别大不…

Redis与SpringMVC的整合与最佳实践

整合Redis与Spring MVC&#xff08;现在通常是Spring Boot的一部分&#xff09;可以提高应用性能&#xff0c;特别是在处理大量数据缓存和会话状态管理方面。 下面是一些关于如何整合Redis与Spring MVC的最佳实践&#xff1a; 1. 引入依赖 首先&#xff0c;你需要在你的项目中…

Linux之grafana+onealert报警

grafana介绍 Grafana是一个开源的度量分析和可视化工具&#xff0c;可以通过将采集的数据分析&#xff0c;查询&#xff0c;然后进行可视化的展示,并能实现报警。 grafana安装与登录 在grafana服务器上安装grafana 下载地址&#xff1a;https://grafana.com/grafana/downloa…