苍穹外卖学习笔记(二十一)

server/2024/10/18 6:01:00/

文章目录

    • 取消订单
      • OrderController
      • OrderService
      • OrderServiceImpl
    • 再来一单
      • OrderController
      • OrderService
      • OrderServiceImpl

取消订单

OrderController

java"> /*** 取消订单*/@PutMapping("/cancel/{id}")@ApiOperation("取消订单")public Result cancel(@PathVariable("id") Long id) throws Exception {orderService.userCancelById(id);return Result.success();}

OrderService

java">/*** 用户取消订单*/void userCancelById(Long id) throws Exception;

OrderServiceImpl

java">/*** 用户取消订单*/@Transactional@Overridepublic void userCancelById(Long id) throws Exception {// 根据订单id查询订单Orders ordersDB = orderMapper.selectById(id);//校验订单是否存在if (ordersDB == null) {throw new OrderBusinessException(MessageConstant.ORDER_NOT_FOUND);}//订单状态 1待付款 2待接单 3已接单 4派送中 5已完成 6已取消if (ordersDB.getStatus() > 2) {throw new OrderBusinessException(MessageConstant.ORDER_STATUS_ERROR);}Orders orders = Orders.builder().id(ordersDB.getId()).status(Orders.CANCELLED).cancelReason("用户取消").cancelTime(LocalDateTime.now()).build();// 订单处于待接单状态下取消,需要进行退款if (ordersDB.getStatus().equals(Orders.TO_BE_CONFIRMED)) {//调用微信支付退款接口
//            weChatPayUtil.refund(
//                    ordersDB.getNumber(), //商户订单号
//                    ordersDB.getNumber(), //商户退款单号
//                    new BigDecimal(0.01),//退款金额,单位 元
//                    new BigDecimal(0.01));//原订单金额//支付状态修改为 退款orders.setPayStatus(Orders.REFUND);}orderMapper.update(orders, new LambdaQueryWrapper<Orders>().eq(Orders::getId, id));}

再来一单

OrderController

java"> /*** 再来一单*/@PostMapping("/repetition/{id}")@ApiOperation("再来一单")public Result repetition(@PathVariable Long id) {orderService.repetition(id);return Result.success();}

OrderService

java">/*** 再来一单*/void repetition(Long id);

OrderServiceImpl

java"> /*** 再来一单*/@Override@Transactionalpublic void repetition(Long id) {Long userId = BaseContext.getCurrentId();LambdaQueryWrapper<OrderDetail> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(OrderDetail::getOrderId, id);List<OrderDetail> orderDetailList = orderDetailMapper.selectList(queryWrapper);List<ShoppingCart> shoppingCartList = orderDetailList.stream().map(x -> {//将订单详情转换为购物车对象ShoppingCart shoppingCart = new ShoppingCart();// 将原订单详情里面的菜品信息重新复制到购物车对象中BeanUtils.copyProperties(x, shoppingCart, "id");shoppingCart.setUserId(userId);shoppingCart.setCreateTime(LocalDateTime.now());return shoppingCart;}).collect(Collectors.toList());// 将购物车对象批量添加到数据库MybatisBatch<ShoppingCart> mybatisBatch = new MybatisBatch<>(sqlSessionFactory, shoppingCartList);MybatisBatch.Method<ShoppingCart> method = new MybatisBatch.Method<>(ShoppingCartMapper.class);mybatisBatch.execute(method.insert());}

http://www.ppmy.cn/server/131269.html

相关文章

数据结构编程实践20讲(Python版)—08红黑树

本文目录 08 红黑树(Red-Black Tree)S1 说明S2 示例S3:红黑树代码问题1:数据库索引问题2:时间调度问题3:内存管理往期链接 01 数组02 链表03 栈04 队列05 二叉树06 二叉搜索树07 AVL树08 红黑树(Red-Black Tree) S1 说明 红黑树是一种自平衡的二叉搜索树(BST),它具有以…

Agent ReAct小解

ReAct在AI Agent中是一种设计思想&#xff0c;它强调在执行任务时结合推理&#xff08;Reasoning&#xff09;和行动&#xff08;Acting&#xff09;两个方面&#xff0c;使得Agent能够在复杂和动态的环境中更有效地工作。以下是对Agent ReAct的详细解释&#xff1a; 一、ReAc…

windows下,在vscode中使用cuda进行c++编程

安装cuda CUDA Toolkit Downloads | NVIDIA Developer 这里网上教程多的是&#xff0c;在这个网址下载安装即可 我这台电脑因为重装过&#xff0c;所以省去了安装步骤&#xff0c;但是要重新配置环境变量。我重新找到了重装之前的CUDA位置(关注这个bin文件夹所在的目录) 在…

Django makemigrations时出现TypeError: ‘module‘ object is not iterable

使用Python 3.11、Django 5.1.2 写完model进行makemigrations时出现报错 报错的最下面提到了我自己创建的一个应用里的urls.py&#xff0c;尝试着给里面加上一个列表 然后问题解决了。。。 不知道为什么 makemigrations的时候会去检查urls。。。

图书馆自习室座位预约管理微信小程序+ssm(lw+演示+源码+运行)

摘 要 随着电子商务快速发展世界各地区,各个高校对图书馆也起来越重视.图书馆代表着一间学校或者地区的文化标志&#xff0c;因为图书馆丰富的图书资源能够带给我们重要的信息资源&#xff0c;图书馆管理系统是学校管理机制重要的一环&#xff0c;,面对这一世界性的新动向和新…

获取鸿蒙设备Udid遇到的问题

参考官方文档&#xff1a;注册调试设备-调试应用&#xff08;HarmonyOS&#xff09;-AppGallery Connect帮助中心 - 华为HarmonyOS开发者 (huawei.com) 坑一&#xff1a;The sdk hdc.exe version is too low, please upgrade to the latest version. 升级dev工具和sdk配置为api…

java脚手架系列4--测试用例、拦截器

异常处理、拦截器、数据库连接 1 测试用例 单元测试是一个老生常谈的问题&#xff0c;无论是后端对自己的代码质量把的第一道关也好&#xff0c;也是对测试减缓压力。这里就不过多讲述测试用例的重要性&#xff0c;但是有2个框架我们必须了解一下。 1.1 JUnit和mockito 我们…

【汇编语言】寄存器(CPU工作原理)(七)—— 查看CPU和内存,用机器指令和汇编指令编程

文章目录 前言1. 预备知识&#xff1a;Debug的使用1.1 什么是Debug&#xff1f;1.2 我们用到的Debug功能1.3 进入Debug1.3.1 对于16位或者32位机器的进入方式1.3.2 对于64位机器的进入方式 1.4 R命令1.5 D命令1.6 E命令1.7 U命令1.8 T命令1.9 A命令 2. 总结3. 实操练习结语 前言…