package cc.mrbird.febs.mall.quartz;
|
|
import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
|
import cc.mrbird.febs.common.exception.FebsException;
|
import cc.mrbird.febs.mall.entity.MallGoods;
|
import cc.mrbird.febs.mall.entity.MallGoodsSku;
|
import cc.mrbird.febs.mall.entity.MallOrderInfo;
|
import cc.mrbird.febs.mall.entity.MallOrderItem;
|
import cc.mrbird.febs.mall.mapper.*;
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.date.DateUnit;
|
import cn.hutool.core.date.DateUtil;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @author wzy
|
* @date 2021-09-25
|
**/
|
@Slf4j
|
@Component
|
public class OrderOvertimeJob {
|
|
@Autowired
|
private MallOrderInfoMapper orderInfoMapper;
|
|
@Autowired
|
private MallMemberMapper mallMemberMapper;
|
|
@Autowired
|
private MallOrderItemMapper mallOrderItemMapper;
|
|
@Autowired
|
private MallGoodsMapper mallGoodsMapper;
|
|
@Autowired
|
private MallGoodsSkuMapper mallGoodsSkuMapper;
|
|
@Scheduled(cron = "0 0/5 * * * ? ")
|
public void overtimeJob() {
|
log.info("订单超时任务执行");
|
List<MallOrderInfo> orderList = orderInfoMapper.selectOrderInfoUpTime(OrderStatusEnum.WAIT_PAY.getValue());
|
if (CollUtil.isNotEmpty(orderList)) {
|
for (MallOrderInfo orderInfo : orderList) {
|
//更新订单状态
|
orderInfo.setStatus(OrderStatusEnum.CANCEL.getValue());
|
orderInfo.setCancelType(MallOrderInfo.CANCEL_OVERTIME_NO_PAY);
|
orderInfoMapper.updateById(orderInfo);
|
|
List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfo.getId());
|
if(CollUtil.isNotEmpty(mallOrderItemList)){
|
for(MallOrderItem mallOrderItem : mallOrderItemList){
|
MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(mallOrderItem.getSkuId());
|
if (sku == null) {
|
throw new FebsException("购买商品或sku不存在");
|
}
|
|
// if (sku.getStock() < mallOrderItem.getCnt()) {
|
// throw new FebsException(sku.getSkuName() + "库存不足");
|
// }
|
|
MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
|
Integer goodsResult = mallGoodsMapper.updateStockAndVolumeByGoodsId(mallGoods.getId(), mallOrderItem.getCnt());
|
if(1 != goodsResult){
|
throw new FebsException(mallGoods.getGoodsName() + "库存不足");
|
}
|
|
Integer skuResult = mallGoodsSkuMapper.updateStockAndVolumeBySkuId(sku.getId(),mallOrderItem.getCnt());
|
if(1 != skuResult){
|
throw new FebsException(sku.getSkuName() + "库存不足");
|
}
|
}
|
}
|
}
|
}
|
|
}
|
|
// @Scheduled(cron = "0/5 * * * * ? ")
|
// public void wakeup() {
|
// log.info("本地保持唤醒状态");
|
// Long id = 5L;
|
// mallMemberMapper.selectById(id);
|
// }
|
}
|