57 lines
2.2 KiB
Java
57 lines
2.2 KiB
Java
package com.peanut.modules.mq.Consumer;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.peanut.config.Constants;
|
|
import com.peanut.config.DelayQueueConfig;
|
|
import com.peanut.modules.common.dao.BuyOrderProductDao;
|
|
import com.peanut.modules.common.dao.ShopProductDao;
|
|
import com.peanut.modules.common.entity.BuyOrder;
|
|
import com.peanut.modules.common.entity.BuyOrderProduct;
|
|
import com.peanut.modules.common.entity.ShopProduct;
|
|
import com.peanut.modules.book.service.BuyOrderService;
|
|
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.util.List;
|
|
|
|
/**
|
|
* @Description: 消息超时取消死信队列消费者
|
|
* @Author: Cauchy
|
|
* @CreateTime: 2023/10/10
|
|
*/
|
|
@Component
|
|
public class OrderCancelConsumer {
|
|
|
|
@Autowired
|
|
BuyOrderService buyOrderService;
|
|
@Autowired
|
|
BuyOrderProductDao buyOrderProductDao;
|
|
@Autowired
|
|
ShopProductDao shopProductDao;
|
|
|
|
@RabbitListener(queues = DelayQueueConfig.ORDER_CANCEL_DEAD_LETTER_QUEUE)
|
|
public void orderConsumer(String orderId) {
|
|
BuyOrder buyOrder = buyOrderService.getById(orderId);
|
|
if(buyOrder == null){
|
|
|
|
return;
|
|
}
|
|
if(Constants.ORDER_STATUS_TO_BE_PAID.equals(buyOrder.getOrderStatus())){
|
|
buyOrder.setOrderStatus(Constants.ORDER_STATUS_OUT_OF_TIME);
|
|
//回滚库存
|
|
// LambdaQueryWrapper<BuyOrderProduct> wrapper = new LambdaQueryWrapper<>();
|
|
// wrapper.eq(BuyOrderProduct::getOrderId,buyOrder.getOrderId());
|
|
// List<BuyOrderProduct> buyOrderProducts = buyOrderProductDao.selectList(wrapper);
|
|
// for (BuyOrderProduct b : buyOrderProducts){
|
|
// ShopProduct shopProduct = shopProductDao.selectById(b.getProductId());
|
|
// shopProduct.setProductStock(shopProduct.getProductStock()+b.getQuantity());
|
|
// shopProductDao.updateById(shopProduct);
|
|
// }
|
|
}
|
|
buyOrderService.updateById(buyOrder);
|
|
if(Constants.ORDER_STATUS_OUT_OF_TIME.equals(buyOrder.getOrderStatus())){
|
|
buyOrderService.removeById(buyOrder);
|
|
}
|
|
}
|
|
} |