package cc.mrbird.febs.mall.quartz;
|
|
import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
|
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.selectOrderInfoByStatus(OrderStatusEnum.WAIT_PAY.getValue());
|
if (CollUtil.isNotEmpty(orderList)) {
|
for (MallOrderInfo orderInfo : orderList) {
|
long subTime = DateUtil.between(orderInfo.getOrderTime(), new Date(), DateUnit.MINUTE, false);
|
|
if (subTime > 15) {
|
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) {
|
Long goodsId = mallOrderItem.getGoodsId();
|
Long skuId = mallOrderItem.getSkuId();
|
Integer cnt = mallOrderItem.getCnt();
|
MallGoods mallGoods = mallGoodsMapper.selectById(goodsId);
|
mallGoods.setVolume(mallGoods.getVolume() - cnt);
|
mallGoods.setStock(mallGoods.getStock() + cnt);
|
mallGoodsMapper.updateById(mallGoods);
|
|
MallGoodsSku mallGoodsSku = mallGoodsSkuMapper.selectById(skuId);
|
mallGoodsSku.setSkuVolume(mallGoodsSku.getSkuVolume() - cnt);
|
mallGoodsSku.setStock(mallGoodsSku.getStock() + cnt);
|
mallGoodsSkuMapper.updateById(mallGoodsSku);
|
}
|
}
|
}
|
}
|
}
|
|
}
|
|
// @Scheduled(cron = "0/5 * * * * ? ")
|
// public void wakeup() {
|
// log.info("本地保持唤醒状态");
|
// Long id = 5L;
|
// mallMemberMapper.selectById(id);
|
// }
|
}
|