瑞吉外卖项目移动端再来一单功能
我的前端页面是拷贝了资料中day6的前端页面
这里"/order/again"浏览器传来的数据是orders表中的id数据
注意:数据库中order_detail表中的order_id对应的是orders表中的number字段,而非orders表中的id字段,此处不仔细看容易混淆!
以下是代码实现,仅供参考,新手写代码不规范,勿喷
/*** 再来一单* @param orders* @return*/@PostMapping("/again")public R<String> again(@RequestBody Orders orders){log.info(orders.toString());//设置用户id 指定当前是哪个用户的购物车数据Long currentId = BaseContext.getCurrentId();//得到订单idLong ordersId = orders.getId();LambdaQueryWrapper<Orders> queryWrapper =new LambdaQueryWrapper<>();queryWrapper.eq(Orders::getId,ordersId);//根据订单id得到订单元素Orders one = ordersService.getOne(queryWrapper);//得到订单表中的number 也就是订单明细表中的order_idString number = one.getNumber();LambdaQueryWrapper<OrderDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.eq(OrderDetail::getOrderId,number);//根据订单明细表的order_id得到订单明细集合List<OrderDetail> orderDetails = orderDetailService.list(lambdaQueryWrapper);//新建购物车集合List<ShoppingCart> shoppingCarts = new ArrayList<>();//通过用户id把原来的购物车给清空LambdaQueryWrapper<ShoppingCart> shoppingCartLambdaQueryWrapper = new LambdaQueryWrapper<>();shoppingCartLambdaQueryWrapper.eq(ShoppingCart::getUserId,BaseContext.getCurrentId());shoppingCartService.remove(shoppingCartLambdaQueryWrapper);//遍历订单明细集合,将集合中的元素加入购物车集合for (OrderDetail orderDetail : orderDetails) {ShoppingCart shoppingCart = new ShoppingCart();//得到菜品id或套餐idLong dishId = orderDetail.getDishId();Long setmealId = orderDetail.getSetmealId();//添加购物车部分属性shoppingCart.setUserId(currentId);shoppingCart.setDishFlavor(orderDetail.getDishFlavor());shoppingCart.setNumber(orderDetail.getNumber());shoppingCart.setAmount(orderDetail.getAmount());shoppingCart.setCreateTime(LocalDateTime.now());if(dishId!=null){//订单明细元素中是菜品LambdaQueryWrapper<Dish> dishLambdaQueryWrapper = new LambdaQueryWrapper<>();dishLambdaQueryWrapper.eq(Dish::getId,dishId);//根据订单明细集合中的单个元素获得单个菜品元素Dish dishone = dishService.getOne(dishLambdaQueryWrapper);//根据菜品信息添加购物车信息shoppingCart.setDishId(dishId);shoppingCart.setName(dishone.getName());shoppingCart.setImage(dishone.getImage());//调用保存购物车方法shoppingCarts.add(shoppingCart);}else if(setmealId!=null){//订单明细元素中是套餐LambdaQueryWrapper<Setmeal> setmealLambdaQueryWrapper = new LambdaQueryWrapper<>();setmealLambdaQueryWrapper.eq(Setmeal::getId,setmealId);//根据订单明细集合中的单个元素获得单个套餐元素Setmeal setmealone = setmealService.getOne(setmealLambdaQueryWrapper);//根据套餐信息添加购物车信息shoppingCart.setSetmealId(setmealId);shoppingCart.setName(setmealone.getName());shoppingCart.setImage(setmealone.getImage());//调用保存购物车方法shoppingCarts.add(shoppingCart);}}shoppingCartService.saveBatch(shoppingCarts);return R.success("操作成功");}
瑞吉外卖项目移动端再来一单功能相关推荐
- 瑞吉外卖项目剩余功能补充
目录 菜品启售和停售 菜品批量启售和批量停售 菜品的批量删除 菜品删除逻辑优化 套餐管理的启售,停售 套餐管理的修改 后台按条件查看和展示客户订单 手机端减少购物车中的菜品或者套餐数量(前端展示有一点 ...
- 瑞吉外卖项目详细分析笔记及所有功能补充代码
目录 项目刨析简介 技术栈 项目介绍 项目源码 一.架构搭建 1.初始化项目结构 2.数据库表结构设计 3.项目基本配置信息添加 公共字段的自动填充 全局异常处理类 返回结果封装的实体类 二.管理端业 ...
- 瑞吉外卖项目笔记+踩坑1——基础功能
导航: [黑马Java笔记+踩坑汇总]JavaSE+JavaWeb+SSM+SpringBoot+瑞吉外卖+SpringCloud/SpringCloudAlibaba+黑马旅游+谷粒商城 目录 1 ...
- 瑞吉外卖项目(一)软件开发流程设计及环境搭建
第一章 软件开发整体介绍 软件开发流程 软件开发流程 需求分析:产品原型.需求规格说明书 设计:产品文档,ui界面设计,概要设计,详细设计,数据库设计 编码:项目代码,单元测试 测试:测试用例,测试报 ...
- 黑马瑞吉外卖项目开发笔记
目录 软件开发整体介绍 开发流程 角色分工 软件环境 瑞吉外卖项目介绍 项目介绍 产品原型展示 技术选型 功能架构 角色 开发环境搭建 数据库环境搭建 Maven环境搭建 1.直接创建maven项目( ...
- 瑞吉外卖项目 基于spring Boot+mybatis-plus开发 超详细笔记,有源码链接
本项目是基于自学b站中 黑马程序员 的瑞吉外卖项目:视频链接: 黑马程序员Java项目实战<瑞吉外卖>,轻松掌握springboot + mybatis plus开发核心技术的真java实 ...
- 瑞吉外卖项目day01
一.软件开发整体介绍 1.1 软件开发流程 需求分析:产品原型.需求规格说明书 设计:产品文档.UI界面设计.概要设计.详细设计.数据库设计 编码:项目代码,是单元测试 上线运维:软件环境安装.配置 ...
- 瑞吉外卖项目重难点及易错点知识点总结
本文是对b站黑马程序员瑞吉外卖项目的总结,实现流程以及简单部分不做详解,重点归纳难点以及易错点.(前面是对项目的介绍,可以直接略过 看第四点总结) 视频链接:https://www.bilibili. ...
- 瑞吉外卖项目学习笔记:P1-项目介绍
瑞吉外卖项目介绍 1.项目介绍 1.1开发步骤 1.2产品原型 1.3技术选型 1.4项目功能架构 1.5角色 1.项目介绍 1.1开发步骤 实现基本要求,移动端应用通过H5实现,用户可通过浏览器访问 ...
最新文章
- xmpp muc 群聊协议 1
- Tensroflow随笔-测试集
- SAP UI5里input field live search的实现例子
- 线上问题随笔记录数据库连接池问题
- apt-get的更新源
- sql server sysobjects 中type 和xtype
- 求二叉树中某结点的父结点(左右孩子表示法)
- AngularJS表单验证,手动验证或自动验证
- 一.反编译Apk得到Java源代码
- swf文件格式解析(一)
- TCP协议和UDP协议的对比
- 谷歌语法和FOFA常用语法总结
- 使用Google学术自动生成标准的参考文献格式(Word版+LaTex版)
- 计算机领域的nature,Nature:什么是量子互联网?
- BUUCTF-[HCTF 2018]admin1
- 怎么做极简ui设计?UI界面设计中的极简原则【萧蕊冰】
- 计算机键盘感叹号在哪里,键盘上感叹号是哪个键
- 手动build unity3d的docker镜像
- addEvent和removeEvent优化写法
- 思维导图软件TheBrain零基础教程:如何创建新的“想法”
热门文章
- 阿迪达斯公布新的公司战略“掌控全场”,聚焦三大重点领域
- 易百教程mysql_Mybatis 多对多(易百教程)
- 曾国藩六戒—送给自己的未来人生
- 阿里云的oss删除低频访问的文件处理方式
- 微软:首个中国政府专用版Win10系统已完成
- win ce车载系统_突破国际巨头垄断,森思泰克首次实现大批量77GHz车载毫米波雷达的国产化...
- 使用http-server开启一个本地服务器
- svn小乌龟怎么断开链接,怎么查看电脑中的隐藏文件,svn复制包或修改包名应注意什么
- 部署gerrit+mysql+ngnix
- android 屏幕投射_将自定义内容从Android应用投射到电视(2020年方法)