实习知识整理14:确认从购物车中下单的订单信息并实现相关的逻辑处理

1. 确认订单信息

分析:这个和之前的直接购买的确认订单的信息是一致的,就是需要前端向后端传递数据表中需要的信息,唯一的区别就是在购物车中购买,可能会购买多种商品,用户订单表还是需要插入一条数据,而订单详情表需要插入一或多条数据

 

提交表单向后端传递所需的数据 

后端Controller层需要有对应的字段来接收这些数据 

 

需要写个mapper向数据库中插入数据

之前已经在直接购买的时候,已经写好了向这两个表中插入数据的方法,在这边就可以直接调用了。

UserOrderService.java 接口 

UserOrderServiceImpl.java 实现类

    // 通过购物车确认订单@Overridepublic ResultDTO<UserOrder> cartConfirmOrder(UserOrder userOrder, CartQueryVO cartQueryVO) {ResultDTO<UserOrder> userCartOrderResultDTO = new ResultDTO<>();// 判断用户是否登录if (0!= userOrder.getUserId()) {int orderId = (int)(Math.random() * 1234567890);  // 生成随机的订单编号userOrder.setOrderId(orderId);userOrder.setOrderTime(new Timestamp(System.currentTimeMillis()));  // 将当前系统的时间直接填入// 订单插入成功,才能进行订单详情插入int orderSubmit = userOrderMapper.insertUserOrder(userOrder);if (orderSubmit > 0) {boolean deleteCartFlag = false;// 需要删除对应的购物车信息,同时新增订单详情for (Cart cart : cartQueryVO.getCartList()) {// 构建订单详情OrderDetail orderDetail = new OrderDetail(0, orderId, cart.getItemId(), cart.getBuyCount());int orderDetailSubmit = orderDetailMapper.insertOrderDetail(orderDetail);if (orderDetailSubmit > 0) {// 删除购物车信息int deleteCartResult = cartMapper.deleteCartByCartId(cart.getCartId());if (deleteCartResult > 0) {deleteCartFlag = true;System.out.println(cart.getCartId() + "该购物车记录删除成功");} else {System.out.println(cart.getCartId() + "该购物车记录删除失败");deleteCartFlag = false;break;}} else {userCartOrderResultDTO.setMsg("订单详情生成失败!");userCartOrderResultDTO.setData(null);}}if(deleteCartFlag == true) {userCartOrderResultDTO.setCode(200);userCartOrderResultDTO.setMsg("下单成功!");userCartOrderResultDTO.setData(userOrder);} else {System.out.println("下单失败!");}} else {System.out.println("下单失败!");}} else {userCartOrderResultDTO.setMsg("用户未登录!");}return userCartOrderResultDTO;}

上述的实现类中的方法跟之前直接购买的确认订单的方法相似,只不过这边多了一个处理,就是当用户下单后,对应的商品可以从购物车中删除

 所以在这边就需要写个删除的方法

 

 

 

2. 当用户在购物车修改购买数量时,提交订单时,但是未确认订单,则需要更新购物车中用户更新的商品数量

所以我就写了个方法,根据cartId,来更新购物车

mapper 

 

 

 

CartServiceImpl实现类

当用户点击下单时,调用

 

 

 3. 在购物车界面中,还有就是删除商品的功能

通过url向后端传递cartId和userId两个参数

cartId可以用于删除数据,userId可以用于从购物车中渲染数据 

CartController 

 

CartService.java

 

CartServiceImpl.java 

 

mapper

 

 

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

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

相关文章

风电机叶片表面损坏检测数据集(1万多张+txt标签)

用于深度学习模型训练。有需要的朋友可以和我私聊 数据集信息部分截图 &#xff1a;

写给工程师的 MacBook 商用级大模型知识库部署方案

本文介绍了如何在自己的 MacBook 上部署一套知识库方案辅助自己的知识管理工作&#xff0c;希望能给每位计划自己搭建大模型知识库应用的工程师一点参考。 背景 历史的车轮滚滚向前&#xff0c;大模型技术发展日新月异&#xff0c;每天都有新鲜的技术出炉&#xff0c;让人目不暇…

活动快讯 | 万博智云受邀参加上海经信委,港澳办,香港贸发局主办的沪港主题活动

12月28日下午&#xff0c;上海市经信委、上海市人民政府港澳事务办公室、香港贸发局联合于上海城市数字化转型体验馆三楼会客厅举办沪港主题活动。万博智云CEO Michael受邀参加此次活动&#xff0c;探讨数字经济未来发展局势。 本次主题活动聚焦数据领域&#xff0c;邀请两地政…

J1 - ResNet-50实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 目录 环境步骤环境设置数据准备图像信息查看 模型设计模型训练模型效果展示 总结与心得体会 环境 系统: Linux语言: Python3.8.10深度学习…

UniApp小程序使用vant引入vant weapp

HBuilder X里新建项目指路 HBuilderX新建项目 安装node.js指路 安装node.js 1.通过npm安装 查看npm环境 //打开终端输入命令查看版本 npm -version 1.1.右键打开外部终端窗口 1.2.输入npm init -y命令 1.3.通过命令安装 npm i vant/weapp1.3.3 -S --production 1.4.打开工具…

蓝桥杯单片机进阶教程1——代码书写格式,继电器和蜂鸣器

一、比赛过程中的参考资料 SCH_硬件原理图V30 二、分析考题 通用的考题是正式程序前加上关闭无关外设 还有就是考继电器的吸合&#xff0c;关键点是不要影响到蜂鸣器 三、实验 关闭无关外设&#xff0c;继电器每隔500ms吸合&#xff0c;断开 参考代码&#xff1a; https…

macos Jetbrains IDEA用户自定义vm配置信息存储路径, IDEA点击无反应 无法打开问题解决

Jetbrains Clion, IDEA 用户在应用里面修改了自定义的VM配置后的存储路径为 ~/Library/Application Support/JetBrains/xxx2023.3/xxx.vmoptions xxx为你安装的APP名称, 如 Clion .IntelliJIdea 这里的自定义配置如果配置有误就会直接导致JetBrains软件无法打开, 即 点击打开…

[电磁学]大学物理陈秉乾老师课程笔记

主页有博主其他上万字的精品笔记,都在不断完善ing~ 第一讲 绪论,库仑定律 主要讲解了电磁学中的库伦定律和电场的相关概念&#xff0c;介绍了电荷和电磁相互作用的规律&#xff0c;并讲解了电场强度和电势的概念。 03:14 &#x1f393; 库伦定律&#xff1a;电势能与电荷的关…

攻防技术-单包攻击防范:扫描、畸形、特殊(HCIP)

单包攻击类型介绍 一、扫描窥探攻击 1、地址扫描攻击防范 攻击介绍 运用ping程序探测目标地址&#xff0c;确定目标系统是否存活。也可使用TCP/UDP报文对目标系统发起探测&#xff08;如TCP ping&#xff09;。 防御方法 检测进入防火墙的ICMP、TCP和UDP报文&#xff0c;根…

【C语言深度剖析——第一节(关键字1)】《C语言深度解剖》+蛋哥分析+个人理解

你未曾见过火光&#xff0c;难怪甘愿漂泊寒夜 本文由睡觉待开机原创&#xff0c;未经允许不得转载。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言&#xff0c;共同进步&#xff01; 首先简单介绍一下《C语言深度解剖》&#xff1a; 全书特点&am…

深度解析高防产品---游戏盾

游戏盾是针对游戏行业所推出的高度可定制的网络安全解决方案&#xff0c;游戏盾是高防产品系列中针对游戏行业的安全解决方案。游戏盾专为游戏行业定制&#xff0c;针对性解决游戏行业中复杂的DDoS攻击、游戏CC攻击等问题。游戏盾通过分布式的抗D节点&#xff0c;可以防御TB级大…

【教程】自动检测和安装Python脚本依赖的第三方库

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 背景说明 对于新python环境&#xff0c;要运行某个脚本&#xff0c;可能需要安装很多库&#xff0c;一般可以通过提供的requirements.txt来自动安装。但如果没有这个txt&#xff0c;那就得手动一个一个安装&#…

限流,熔断,降级分析

写在前面 本文一起看下限流&#xff0c;熔断&#xff0c;降级的概念。 1:限流 限制单位时间内的请求数&#xff0c;超过的则拒绝或其他。常用的算法有滑动时间窗口&#xff0c;漏桶算法&#xff0c;令牌桶算法。 2:熔断 在分布式的场景中&#xff0c;一个请求可能涉及到多…

**Python**综合案例

Python综合案例 一、系统需求分析 1、需求分析 使用面向对象编程思想完成学员管理系统的开发,具体如下: ① 系统要求:学员数据存储在文件中 ② 系统功能:添加学员、删除学员、修改学员信息、查询学员信息、显示所有学员信息、保存学员信息及退出系统等功能。 2、角色…

ubuntu:beyond compare 4 This license key has been revoked 解决办法

https://www.cnblogs.com/zhibei/p/12095431.html 错误如图所示&#xff1a; 解决办法&#xff1a; &#xff08;1&#xff09;先用find命令找到bcompare所在位置&#xff1a;sudo find /home/ -name *bcompare &#xff08;2&#xff09;进入 /home/whf/.config,删除/bco…

PAT乙级 1025 反转链表

给定一个常数 K 以及一个单链表 L&#xff0c;请编写程序将 L 中每 K 个结点反转。例如&#xff1a;给定 L 为 1→2→3→4→5→6&#xff0c;K 为 3&#xff0c;则输出应该为 3→2→1→6→5→4&#xff1b;如果 K 为 4&#xff0c;则输出应该为 4→3→2→1→5→6&#xff0c;即…

Live800:客户体验策略是什么?企业如何制定客户体验策略?

客户体验策略是企业为了提升顾客对产品或服务的感知和满意度而采取的一系列措施和方法。它关注的是如何创造一个积极、愉悦和有价值的购买过程&#xff0c;从而建立长期的客户关系和忠诚度。客户体验策略是企业成功的关键之一&#xff0c;因为它能够帮助企业在竞争激烈的市场中…

2023“SEED”第四届江苏大数据--新能源赛道 复赛Btop2总结

第一名是真的强&#xff01;基本都是第一&#xff0c;难以撼动。 昨天新能源赛道终于落下了帷幕&#xff0c;真的不是一般的卷。最后的排名都到了0.0几分的差距。跟队友很辛运复赛B榜单目前进入top3的行列&#xff0c;下面简单总结一下赛事过程。 初赛按照天级别预测未来一周各…

mfc100u.dll文件丢失了要怎么解决?修复mfc100u.dll详细指南

mfc100u.dll文件丢失了要怎么解决?首先让我们扒一扒什么是 mfc100u.dll。这玩意儿是 Microsoft Visual Studio 2010 的一部分&#xff0c;它就像一款程序生活中不可或缺的零件&#xff0c;没了它&#xff0c;程序肯定跑不起来。想想看&#xff0c;没有一个重要的零件&#xff…

QGraphicsItem器件移动及旋转相关问题

一、前言 Qt的图形视图框架中&#xff0c;可以使用如下接口设置图元坐标&#xff1a; void QGraphicsItem::setPos(const QPointF &pos)Sets the position of the item to pos, which is in parent coordinates. For items with no parent, pos is in scene coordinates.…