【SpringBoot开发】之商城项目案例(购物车相关操作)

  🎉🎉欢迎来到我的CSDN主页!🎉🎉

🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚

🌟推荐给大家我的博客专栏《SpringBoot开发之商城项目系列》。🎯🎯

🎁如果感觉还不错的话请给我关注加三连吧!🎁🎁


前言

        在上一期的博客分享中我们一起学习了商品详情的页面跳转以及其数据绑定显示、点金购物车将商品添加到缓存中进行存储,其中获取用户信息将用户的Id一起携带到我们的缓存中进行存储。今天带来的是对其购物车界面上的一些操作实现。

一、购物车功能完善

1. 购物车商品数量的增减

        我们在对其的js中进行编写我们操作购物车中商品数量的函数方法

function update(el,count){//el代表元素  count代表是数量// 	获取到商品的当前数量let ele=$(el).parent().find(".mynum");//获取到数量的元素元素let num=parseInt(ele.text());//获取到当前的数量// 计算新的数量num+=count;// 	判断数量是否正确if (num<=0) return//中断// 	数量没错返回到页面ele.text(num);}

        我们在其操作数量的按钮的元素标签设置点击事件,并且调用其函数

        效果演示如下图所示 

         当然这只是页面上的改变数量并没有在缓存中进行修改,接下来是实现其缓存的改变。

我们首先在redis接口类中编写器改变数量的方法并且其实现 

        我们到购物车的控制层中编写其修改购物车的请求方法

    /*** 编写修改购物车的请求接口* @param vo* @return*/@RequestMapping("/edit")@ResponseBodypublic JsonResponseBody<?> edit(User user,CartVo vo){
//      将数据存放到缓存redisService.editCart(user,vo);return JsonResponseBody.success();}

        最后再前端设置向后台发送修改购物车的请求 

	$(".btns .cart").click(function(){// 	获取绑定在元素上的商品IDlet gid= this.dataset.gid// 	获取商品数量let num = $("div.num span.fl").text()*1;alert(gid+":"+num)// 	发起请求添加购物车$.post('/cart/add',{gid,num},resp=>{// 	前端进行判断if(resp.code==200){alert('添加成功')}},"json")});

       最后是我们的效果展示 

2. 全选与全不选

        我们在cart.js文件中设置全选的点击事件及函数,首先我们将计算总价及总数的函数重写一下。

	//计算总价function jisuan(){let total=0$(".th").each((i,ele)=>{// 	获取th中的价格let price=	$(ele).find(".myprice").text().replace("¥","")*1// 	获取th中的数量let num=	$(ele).find(".mynum").text()*1// 	放入小计中$(ele).find('.sAll').text(price*num);// 	判断元素是否选中let f=$(ele).find('input[type="checkbox"]').prop("checked")if (f) total+=price*num;//选中就计算到总计中})// 	将总价赋值给总计$("#all").text(total)}//计算总共几件商品function zg(){var zsl = 0;$(".th").each((i,ele)=>{// 	获取th中的数量let num=	$(ele).find(".mynum").text()*1// 	判断元素是否选中let f=$(ele).find('input[type="checkbox"]').prop("checked")if (f) zsl+=num;//选中就计算到总计中})// 	将总共的数量赋值给总计$("#sl").text(zsl);}

       重写当个复选框选择及全选框选中的函数方法 

	/*****************商品单选***********************/$("input[type='checkbox']").on('click',function(){jisuan();zg();});/*****************商品全选***********************/$(".checkAll").on('click',function(){$("input[type='checkbox']").prop('checked',this.checked)jisuan();zg();});

         当然我们在修改购物车商品数量的时候也要调用计算的函数

        加下来是我们的演示结果 

3. 删除与批量删除

         删除有两种方法进行删除,一种是表格右侧的删除按钮,一种是选中复选框后的删除。下面我们来进行写方法

         编写其接口方法及实现其方法

         编写后台控制层的请求方法

    /*** 编写修改购物车的请求接口* @param ids* @return*/@RequestMapping("/del")@ResponseBodypublic JsonResponseBody<?> del(User user,@RequestParam("ids[]") List<String> ids){
//      将数据存放到缓存redisService.delCart(user,ids);return JsonResponseBody.success();}

        编写前端的js函数

	//删除购物车商品$('.del').click(function(){// 	获取页面上绑定的属性let gid=$(this).attr('data-gid')// 定义一个数组,存放要删除的商品IDlet ids=[]if (gid){//有idids.push(gid)//将Id放入数组中}else{//没有id// 遍历所有的行$(".th").each((i,ele)=>{// 	判断元素是否选中let f=$(ele).find('input[type="checkbox"]').prop("checked")//if (f) {//选中let id= $(ele).find('.mynum').attr('data-gid')//获取选中的商品id//将Id放入数组中ids.push(id)}})}// 判断Ids是否有值if(ids.length>0){// 	发送请求$.post('/cart/del',{ids},resp=>{if (resp===200){//删除成功alert("删除成功");// 刷新location.reload(true);}},"json")}})

        下面进行效果测试  

         由上图所知,当我们删除完用户购物车中所有的商品时会出想错误,我们只需要找到指定的请求方法,在查询数据时进行判断,若有数据则携带数据跳转购物车界面,没有数据直接跳转购物车界面 


 🎉🎉本期的博客分享到此结束🎉🎉

📚📚各位老铁慢慢消化📚📚

🎯🎯下期博客博主会带来新货🎯🎯

🎁三连加关注,阅读不迷路 !🎁

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

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

相关文章

2023最新租号平台系统源码支持单独租用或合租使用

这是一款租号平台源码&#xff0c;采用常见的租号模式。目前网络上还很少见到此类类型的源码。 平台的主要功能如下&#xff1a; 支持单独租用或采用合租模式&#xff1b; 采用易支付通用接口进行支付&#xff1b; 添加邀请返利功能&#xff0c;以便站长更好地推广&#xf…

每天刷两道题——第三天

1.1两两交换链表中的节点 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09; 输入&#xff1a;[1,2,3,4] 输出&#xff1a;[2,1,4,3…

祝贺首届兽医专业学位研究生创新创业大赛圆满闭幕

为进一步贯彻落实科教兴国、农业强国发展战略&#xff0c;适应兽医行业、产业发展需求&#xff0c;提高兽医专业学位研究生实践创新能力&#xff0c;推动兽医领域高层次应用型人才培养供给侧改革&#xff0c;促进兽医专业学位教育高质量发展&#xff0c;12月28日由中国学位与研…

什么是分布式锁

想象一下&#xff0c;如果没有分布式锁&#xff0c;多个分布式节点同时涌入一个共享资源的访问时&#xff0c;就像一群饥肠辘辘的狼汇聚在一块肉前&#xff0c;谁都想咬一口&#xff0c;最后弄得肉丢了个精光&#xff0c;大家都吃不上。 而有了分布式锁&#xff0c;就像给这块肉…

Python轴承故障诊断 (九)基于VMD+CNN-BiLSTM的故障分类

往期精彩内容&#xff1a; Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 Python轴承故障诊断 (一)短时傅里叶变换STFT Python轴承故障诊断 (二)连续小波变换CWT_pyts 小波变换 故障-CSDN博客 Python轴承故障诊断 (三)经验模态分解EMD_轴承诊断 …

JAVAEE初阶相关内容第二十弹--HTTP协议

写在前&#xff1a;2024年啦&#xff01;新的一年要努力学习啦 本篇博客围绕HTTP协议&#xff0c;对HTTP协议进行了解&#xff0c;需要理解其工作过程&#xff0c;对HTTP协议格式要清楚&#xff0c;通过抓包工具进行协议分析&#xff0c;认识“方法”、“请求报头”&#xff0c…

爬虫与反爬-localStorage指纹(某易某盾滑块指纹检测)(Hook案例)

概述&#xff1a;本文将用于了解爬虫中localStorage的检测原理以及讲述一个用于检测localStorage的反爬虫案例&#xff0c;最后对该参数进行Hook断点定位 目录&#xff1a; 一、LocalStorage 二、爬虫中localStorage的案例&#xff08;以某盾滑块为例&#xff09; 三、如何…

CSP CCF 201512-2 消除类游戏 C++满分题解

解题思路&#xff1a; 1.用两个矩阵来存储原始值&#xff0c;其中一个永远不改变&#xff0c;只用来判断&#xff0c;这样可以防止消除某一行或某一列后影响其它行或列。 2.记录下每一行每个数字出现的次数和每一列每一个数字出现的次数。 3.只有当某一行或某一列的某个数出…

Ubuntu之修改时区/时间

1、查看当前时间及时区状态 sudo timedatectl status # 显示当前时区为Asia/Shanghai 2、查看当前系统时间 sudo date 3、查看当前系统时间及时区 sudo date -R # 显示当前时间及对应时区&#xff0c;时区为“0800”北京时区 4、修改硬件时间 修改日期格式&#xff1a…

51单片机项目(26)——基于51单片机的超声波测距protues仿真

1.功能设计 用51单片机做的超声波测距系统&#xff0c;用的传感器是HCSR04&#xff0c;将距离实时显示在LCD1602屏幕上&#xff01;&#xff01;内含keil工程 完整的protues文件 可以运行&#xff01;&#xff01;&#xff01; 仿真截图&#xff1a;&#xff08;有一丢丢的误差…

[Mac软件]ColorWell For Mac 7.4.0调色板生成器

美丽而直观的调色板和调色板生成器是任何Web或应用程序开发人员工具包的必要补充&#xff01; 创建无限数量的调色板&#xff0c;快速访问所有颜色信息和代码生成&#xff0c;用于应用程序开发&#xff0c;非常简单。可编辑调色板数据库允许您存档和恢复任何调色板&#xff0c…

x-cmd pkg | lazygit - git 命令的终端 UI

目录 简介首次用户功能特点类似工具与竞品进一步探索 简介 lazygit 由 Jesse Duffield 于 2018 年使用 Go 语言构建的 git 终端交互式命令行工具&#xff0c;旨在终端界面中便捷管理 git 存储库。 首次用户 使用 x lazygit 即可自动下载并使用 在终端运行 eval "$(curl …

一站式指南:了解和绘制项目基线

项目基线是记录下来的一个起点&#xff0c;用来建立项目的绩效指标&#xff0c;并将其与之前的基准进行比较。对于所有团队而言&#xff0c;基线是进行有效绩效测量的必需工具。 项目成功的每一步都要依赖于一个坚固的基线。研究表明&#xff0c;在48个大型项目中&#xff0c;…

图神经网络与分子表征:番外——等变术语

本文重点参考了这篇博客&#xff1a;https://nb.bohrium.dp.tech/detail/1342 看论文时经常会遇到 SE3, SO3, O3 等字样&#xff0c;云里雾里&#xff0c;难以理解。本文对这些术语进行集中解释。 文章目录 数学术语GNN 设计要求平移不变性排列、置换不变性镜面等变性旋转等变…

【热点】程序员会不会被人工智能取代?

前两周&#xff0c;ZA技术社区举办了一场主题为“未来&#xff0c;程序员职业会消失吗&#xff1f;”的Geek圆桌派&#xff0c;我作为业务研发的代表参加了此次直播。由于直播时间有限&#xff0c;未能充分表达我的观点&#xff0c;故写此篇博客进行详述。另一方面&#xff0c;…

bootstrap5开发房地产代理公司Hamilton前端页面

一、需求分析 房地产代理网站是指专门为房地产行业提供服务的在线平台。这些网站的主要功能是连接房地产中介机构、房产开发商和潜在的买家或租户&#xff0c;以促成买卖或租赁房产的交易。以下是一些常见的房地产代理网站的功能&#xff1a; 房源发布&#xff1a;房地产代理网…

双语!性能优越|融合黏菌和差分变异的量子哈里斯鹰算法SDMQHHO

前面的文章里卡卡介绍了哈里斯鹰优化算法(Harris Hawks Optimization, HHO).HHO是 Heidari等[1]于2019年提出的一种新型元启发式算法&#xff0c;设计灵感来源于哈里斯鹰在捕食猎物过程中的合作行为以及突然袭击的狩猎风格&#xff0c;具有需调参数少、原理简单易实现、局部搜索…

linux 的直接direct io

目录 什么是 Direct IO java 支持 使用场景 数据库 反思 在之前的文章零拷贝基础上&#xff0c;有一个针对那些不需要在操作系统的 page cache 里保存的情况&#xff0c;即绕过 page cache&#xff0c;对于 linux 提供了 direct io 的功能。 https://blog.csdn.net/zlpzl…

面试高频算法专题:数组的双指针思想及应用(算法村第三关白银挑战)

所谓的双指针其实就是两个变量&#xff0c;不一定真的是指针。 快慢指针&#xff1a;一起向前走对撞指针、相向指针&#xff1a;从两头向中间走背向指针&#xff1a;从中间向两头走 移除值为val的元素 题目描述 27. 移除元素 - 力扣&#xff08;LeetCode&#xff09; 给你…

RobotFrameWork自动化测试框架如何搭建环境?

前言 Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性&#xff0c;支持关键字驱动&#xff0c;可以同时测试多种类型的客户端或者接口&#xff0c;可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发&#xff08;ATDD&#xff…