当前位置: 首页 > news >正文

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

文章目录

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

取消订单

OrderController

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

OrderService

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

OrderServiceImpl

/*** 用户取消订单*/@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

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

OrderService

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

OrderServiceImpl

 /*** 再来一单*/@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.mrgr.cn/news/49157.html

相关文章:

  • 【动手学电机驱动】 TI InstaSPIN-FOC(3)Lab03a 测量电压电流漂移量
  • 5580......
  • LeetCode讲解篇之2606. 找到最大开销的子字符串
  • 攻防世界17-php_rce-CTFWeb进阶
  • 算法_校园最短路径漫游设计
  • 拆解学习【STC宏晶MCU-CM1020电池保护】(一)
  • rpc中常用的数据格式:Protobuf 图文详解
  • 股票做T如何选择买卖点,股票做T时,怎样综合判断买卖点?
  • 连接数据库和基本信息查询的详细理解和实际操作
  • 从0到1,一篇文章彻底讲透AI的Token到底是什么?如何实际应用
  • 深入理解 Transformer:构建先进 NLP 模型的关键技术
  • 物联网5G模块WIFI模块调式记录(Pico)
  • 【JAVA-数据结构】二叉树
  • 一个月学会Java 第13天 抽象类与接口
  • 如何将docker容器中的软件安装到singularity容器中?
  • 联合查询(详细篇)
  • MediaRecorder + Camera2循环录制视频
  • 企业架构之从理论指南到实践指导企业数字化转型
  • 将图片添加到 PDF 的 5 种方法
  • 架构设计笔记-8-系统质量属性与架构评估