文章目录
- 取消订单
- 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 {Orders ordersDB = orderMapper.selectById(id);if (ordersDB == null) {throw new OrderBusinessException(MessageConstant.ORDER_NOT_FOUND);}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)) {
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());}