我的前端页面是拷贝了资料中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. 瑞吉外卖项目详细分析笔记及所有功能补充代码

    目录 项目刨析简介 技术栈 项目介绍 项目源码 一.架构搭建 1.初始化项目结构 2.数据库表结构设计 3.项目基本配置信息添加 公共字段的自动填充 全局异常处理类 返回结果封装的实体类 二.管理端业 ...

  3. 瑞吉外卖项目笔记+踩坑1——基础功能

     导航: [黑马Java笔记+踩坑汇总]JavaSE+JavaWeb+SSM+SpringBoot+瑞吉外卖+SpringCloud/SpringCloudAlibaba+黑马旅游+谷粒商城 目录 1 ...

  4. 瑞吉外卖项目(一)软件开发流程设计及环境搭建

    第一章 软件开发整体介绍 软件开发流程 软件开发流程 需求分析:产品原型.需求规格说明书 设计:产品文档,ui界面设计,概要设计,详细设计,数据库设计 编码:项目代码,单元测试 测试:测试用例,测试报 ...

  5. 黑马瑞吉外卖项目开发笔记

    目录 软件开发整体介绍 开发流程 角色分工 软件环境 瑞吉外卖项目介绍 项目介绍 产品原型展示 技术选型 功能架构 角色 开发环境搭建 数据库环境搭建 Maven环境搭建 1.直接创建maven项目( ...

  6. 瑞吉外卖项目 基于spring Boot+mybatis-plus开发 超详细笔记,有源码链接

    本项目是基于自学b站中 黑马程序员 的瑞吉外卖项目:视频链接: 黑马程序员Java项目实战<瑞吉外卖>,轻松掌握springboot + mybatis plus开发核心技术的真java实 ...

  7. 瑞吉外卖项目day01

    一.软件开发整体介绍 1.1 软件开发流程 需求分析:产品原型.需求规格说明书 设计:产品文档.UI界面设计.概要设计.详细设计.数据库设计 编码:项目代码,是单元测试 上线运维:软件环境安装.配置 ...

  8. 瑞吉外卖项目重难点及易错点知识点总结

    本文是对b站黑马程序员瑞吉外卖项目的总结,实现流程以及简单部分不做详解,重点归纳难点以及易错点.(前面是对项目的介绍,可以直接略过 看第四点总结) 视频链接:https://www.bilibili. ...

  9. 瑞吉外卖项目学习笔记:P1-项目介绍

    瑞吉外卖项目介绍 1.项目介绍 1.1开发步骤 1.2产品原型 1.3技术选型 1.4项目功能架构 1.5角色 1.项目介绍 1.1开发步骤 实现基本要求,移动端应用通过H5实现,用户可通过浏览器访问 ...

最新文章

  1. xmpp muc 群聊协议 1
  2. Tensroflow随笔-测试集
  3. SAP UI5里input field live search的实现例子
  4. 线上问题随笔记录数据库连接池问题
  5. apt-get的更新源
  6. sql server sysobjects 中type 和xtype
  7. 求二叉树中某结点的父结点(左右孩子表示法)
  8. AngularJS表单验证,手动验证或自动验证
  9. 一.反编译Apk得到Java源代码
  10. swf文件格式解析(一)
  11. TCP协议和UDP协议的对比
  12. 谷歌语法和FOFA常用语法总结
  13. 使用Google学术自动生成标准的参考文献格式(Word版+LaTex版)
  14. 计算机领域的nature,Nature:什么是量子互联网?
  15. BUUCTF-[HCTF 2018]admin1
  16. 怎么做极简ui设计?UI界面设计中的极简原则【萧蕊冰】
  17. 计算机键盘感叹号在哪里,键盘上感叹号是哪个键
  18. 手动build unity3d的docker镜像
  19. addEvent和removeEvent优化写法
  20. 思维导图软件TheBrain零基础教程:如何创建新的“想法”

热门文章

  1. 阿迪达斯公布新的公司战略“掌控全场”,聚焦三大重点领域
  2. 易百教程mysql_Mybatis 多对多(易百教程)
  3. 曾国藩六戒—送给自己的未来人生
  4. 阿里云的oss删除低频访问的文件处理方式
  5. 微软:首个中国政府专用版Win10系统已完成
  6. win ce车载系统_突破国际巨头垄断,森思泰克首次实现大批量77GHz车载毫米波雷达的国产化...
  7. 使用http-server开启一个本地服务器
  8. svn小乌龟怎么断开链接,怎么查看电脑中的隐藏文件,svn复制包或修改包名应注意什么
  9. 部署gerrit+mysql+ngnix
  10. android 屏幕投射_将自定义内容从Android应用投射到电视(2020年方法)