个人旅游网(5)——功能详解——购物车功能

news2024/11/27 18:32:57

文章目录

  • 一、设计购物车
  • 二、购物车对redis的一系列操作
  • 三、购物车
    • 3.1、接口详解
      • 3.1.1、addCart(将当前旅游路线加入到购物车中)
      • 3.1.2、showCartItem(显示刚刚加入购物车的商品)
      • 3.1.3、findAll(将购物车里的所有旅游路线展示出来)
      • 3.1.4、deleteCartItem(删除购物车里指定的旅游路线商品)

一、设计购物车

围绕购物车的一切增删改查操作在进行之前,都需要先认识购物车。购物车里到底有什么数据,购物车里面的数据是怎么组织的…
在这里插入图片描述
购物车项:
在这里插入图片描述
购物车:
在这里插入图片描述
在这里插入图片描述

二、购物车对redis的一系列操作

购物车里的数据是存到redis中的,能够持久化存储,高效获取;以往的做法是将购物车数据存储至session中,存储在session中的弊端就是当用户退出会话,或者用户换了个机器登录,或者服务器重启之后,存储在session中的购物车数据就会丢失。

定义一个 CartUtils 工具类,该工具类里提供了 setCartToRedis()方法:将购物车对象存储到redis中,getCartFromRedis()方法:获取redis中的购物车数据,removeCart()方法:删除redis中存储的购物车数据。

(1)、 setCartToRedis()方法
首先获取操作redis的管理类,定义key值,定义value值,value值就是将传入的Cart对象借助工具类序列化,然后通过该管理类将key值value值都set进redis中即可将购物车数据存储在redis中。

(2)、getCartFromRedis()方法
首先获取操作redis的管理类,定义key值,通过管理类根据key值get到redis中存储的序列化的Cart数据,即key的value值,通过工具类判断一下从redis中获取到的value值是否存在,如果存在,将在redis保存时是序列化状态的Cart反序列化成Cart对象,然后返回;如果不存在,就new一个新的Cart对象返回即可。

(3)、根据key值通过管理类的delete直接删除存储在redis中的cart数据。

三、购物车

当用户进入某个旅游路线的详情页后,用户可以对该旅游路线商品进行 加入购物车操作、收藏该条旅游路线、取消收藏该条旅游路线等操作,此次关于购物车的接口总共有 4 个,分别是 addCart(将当前旅游路线加入到购物车中)、showCartItem(在将商品加入购物车成功后,页面立马跳转来显示刚刚加入购物车的商品)、findAll(将购物车里的所有旅游路线展示出来)、deleteCartItem(删除购物车里指定的旅游路线商品)

3.1、接口详解

3.1.1、addCart(将当前旅游路线加入到购物车中)

页面效果图:
在这里插入图片描述
注意:
(1)、将一个商品(下面都用商品指代旅游路线)加入到购物车时,如果这个商品已经存在购物车里了,直接将购物车里的商品数量在原有的基础上进行数量的累加。
(2)、将商品加入购物车时,要注意购物车的商品不能重复,不允许同样的商品上面一条商品记录数量是3,下面那条商品记录的数量是5,有重复的商品,直接按照(1)处理。

接口思路:
(1)、调用CartUtils工具类里的getCartFromRedis()方法先从redis中获取到Cart对象。
(2)、再从购物车对象中获取到所有的购物车项——>即购物车里的所有商品,在购物车里是使用了LinkedHashMap将购物车里的所有商品组织了起来,LinkedHashMap里其key为rid,value值为CartIten。
(3)、然后通过前端用户传入的rid从购物车里获取对应的CartItem,如果CartItem不存在,说明购物车里还没有同类商品,此时还需要通过rid在数据库中查询Route对象,然后将CartItem所需要的数据一一赋值,再将CartItem对象put道LinkedHashMap里;如果CartItem存在,说明购物车里已经有同类商品,将购物车里的商品数量+num即可。
(4)、商品加入购物车时还需要考虑当前添加的数量num是否超过了商品的库存量。如果超过,提示用户添加失败,不能进行加入操作,否则加入成功。
(5)、借助CartUtils工具类将更新后的cart保存至redis。至此,将商品加入购物车成功。

3.1.2、showCartItem(显示刚刚加入购物车的商品)

页面效果图:
在这里插入图片描述
在addCart接口中将cartItem存入session中,然后在当前接口中将session中的cartItem取出来即可显示。

3.1.3、findAll(将购物车里的所有旅游路线展示出来)

页面效果图:
在这里插入图片描述
该接口主要是从redis中将cart对象获取到(直接通过工具类CartUtils里的getCartFromRedis() 获取Cart即可),然后返回给前端即可。

3.1.4、deleteCartItem(删除购物车里指定的旅游路线商品)

先通过CartUtils工具类从redis中获取到Cart,获取Cart里的CartItemMap,通过Map的key ——>rid将rid对应的CartItem从购物车中删除,最后再将更新后的Cart写回redsi中即可。

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

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

相关文章

骨灵冷火!Solon Cloud Gateway 照面发布

骨灵冷火,是练药的好火哟。极冷,又极热。在冰冻中被烧死:) 1、认识 Solon Cloud Gateway Solon Cloud Gateway 是基于 Solon Cloud、Vert.X 和 Solon Rx(reactive-streams) 接口实现。小特点: 纯响应式的接口体验流…

KAN学习Day1——模型框架解析及HelloKAN

说明 最近了解到了一个新东西——KAN,我的毕设导师给推荐的船新框架。我看过很多剖析其原理的文章,发现大家对其持有的观点都各不相同,有的说可以颠覆传统MLP,有的说可以和Transformer同等地位,但是也有人说它训练速度…

YoloV8改进策略:IoU改进|Unified-IoU用于高质量对象检测

摘要 Unified-Unified-IoU(UIoU)是一种新的边界框回归损失函数,旨在改进目标检测任务中的预测框质量,特别是在高IoU阈值和IoU(UIoU)是一种新的边界框回归损失函数,旨在改进目标检测任务中的预测…

nginx的基本使用示例(负载均衡,虚拟主机,动静分离)的详细配置过程

文章目录 前言前置工作httpd主机tomcat主机 nginx主机配置负载均衡配置过程效果展示 虚拟主机配置过程效果展示 动静分离配置过程 排除思路 前言 本篇博客展示nginx的基本使用案例,后端由httpdtomcat组成,linux版本: rocky9.2 虚拟机ipnginx192.168.10…

安防监控视频打手机检测算法核心技术打手机检测算法源码、模型简介

在数字化的今天,智能手机几乎已成为人们生活中不可或缺的一部分。然而,手机的广泛使用也带来了一些挑战,比如在公共场所、教育机构和工作环境中的手机干扰。为了解决这些问题,打手机检测算法应运而生,成为管理人员和机…

hive学习(六)

一、函数 1.单行函数 特点:输入一行,输出一行(一进一出) 可分为日期函数,字符串函数,集合函数,数学函数和流程控制函数等 1)算术运算函数 2)数值函数 --round函数 …

机器学习如何用于音频分析?

机器学习如何用于音频分析? 一、说明 近十年来,机器学习越来越受欢迎。事实上,它被用于医疗保健、农业和制造业等众多行业。随着技术和计算能力的进步,机器学习有很多潜在的应用正在被创造出来。由于数据以多种格式大量可用&…

电赛2024年H题智能小车基于MSPM0G3507主控MCU(利用8路灰度加上MPU6050的解决方式)

一.前言 前段时间,激烈的电赛刚刚结束,很荣幸啊,也是十分的不甘心,本次的湖北赛区H题只拿到了一个省二,看最终的排名,在H题中我们离省一也就差几名。但是整个比赛已经过去了,现在不甘与不舍&…

浏览器按F12进入开发者模式后频繁因为异常而暂停导致无法分析页面xpath

在分析某个内部页面xpath时,遇到一个问题,因为频繁异常而自动暂停导致无法分析页面xpath,如下图: 折腾良久发现把下图右侧的两个抛出异常自动暂停的开关 取消勾选就可以了

微信小程序接入客服功能

前言 用户可使用小程序客服消息功能,与小程序的客服人员进行沟通。客服功能主要用于在小程序内 用户与客服直接沟通用,本篇介绍客服功能的基础开发以及进阶功能的使用,另外介绍多种客服的对接方式。 更多介绍请查看客服消息使用指南 客服视…

2.4 堆栈

🎓 微机原理考点专栏(通篇免费) 欢迎来到我的微机原理专栏!我将帮助你在最短时间内掌握微机原理的核心内容,为你的考研或期末考试保驾护航。 为什么选择我的视频? 全程考点讲解:每一节视频都…

数据结构——排序【下】

目录 一、计数排序 二、快速排序 三、归并排序 四、八大排序时间复杂度及其稳定性 一、计数排序 计数排序是一个非基于比较的排序算法,元素从未排序状态变为已排序状态的过程,是由额外空间的辅助和元素本身的值决定的。该算法于1954年由 Harold H. S…

Github 2024-09-03 Python开源项目日报 Top10

根据Github Trendings的统计,今日(2024-09-03统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10HCL项目1JavaScript项目1Payloads All The Things - 有用的Web应用程序安全负载和绕过列表 创建周期:2639 天开发语言:Python协议…

Go语言?IDEA能支持吗?增删查走起?

序: 最近突然身边突然开始冒出关于go语言的只言片语,很好奇这个go语言是怎么样的?这几天有空就会去网上浏览一遍各位大咖的简介。这边主要是已学习为目的,关键人家都说它好这边记录一下学习过程的进坑和爬坑过程供大家娱乐一下。…

echarts3D地图:旋转、添加纹理图片(vue3)

首先安装echarts和echarts-gl依赖,注意的是,echarts-gl版本需安装低版本,且与echarts5版本不兼容,需要单独安装4版本,这里我安装的4.2.1版本。 $ npm install echarts4npm:echarts4.2.1 echarts-gl1.1.0npm可以安装ec…

帧中继了解

定义 帧中继工作在OSI参考模型的数据链路层,是数据链路层使用简化的方法传送和交换数据单元的一种方式。 帧中继的重要特点之一是将X.25分组交换网中分组节点的差错控制、确认重传、流量控制、拥塞避免等处理过程进行简化,缩短了处理时间,这…

论文速读|通过人类远程操作的深度模仿学习框架:人型机器人的行走操纵技能

项目地址:Deep Imitation Learning for Humanoid Loco-manipulation through Human Teleoperation 本文详细介绍了 TRILL(Teleoperation and Imitation Learning for Loco-manipulation)框架,它是一个用于人型机器人行走操纵技能训…

华为OD机试真题 - 中文分词模拟器(Python/JS/C/C++ 2024 D卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

Spark-Yarn模式如何配置历史服务器

在Spark程序结束之后我们也想看到运行过程怎么办? Yarn模式下,通过以下步骤配置历史服务器即可: mv spark-defaults.conf.template spark-defaults.conf修改spark-default.conf 文件,配置日志存储路径 spark.eventLog.enabled true spark.…

pg小版本升级

文章目录 一、升级计划二、升级步骤1、安装目标版本数据库2、停止数据库实例3、备份数据目录4、调整环境变量,PGHOME/LD_LIRARAY_PATH5、使用新版本启动数据库 三、检查升级后的数据库 一、升级计划 pg14.0 -> pg14.9 查看当前版本信息: select ve…