Files
nuttyreading-java/src/main/java/com/peanut/modules/mq/Consumer/OrderCancelConsumer.java
wangjinlei 86cb5c7d97 bug
2024-05-27 16:20:05 +08:00

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);
}
}
}