取消订单
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
@Override
public 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
@Transactional
public 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());
}