massageTask.java 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package com.ylx.massage.task;
  2. import cn.hutool.core.collection.CollectionUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.ylx.common.constant.MassageConstants;
  6. import com.ylx.massage.domain.TOrder;
  7. import com.ylx.massage.enums.OrderStatusEnum;
  8. import com.ylx.massage.service.TOrderService;
  9. import com.ylx.massage.utils.DateTimeUtils;
  10. import lombok.extern.slf4j.Slf4j;
  11. import org.springframework.stereotype.Component;
  12. import javax.annotation.Resource;
  13. import java.util.Date;
  14. /**
  15. * @author jianlong
  16. * @date 2024-04-19 14:11
  17. *
  18. */
  19. @Slf4j
  20. @Component("massageTask")
  21. public class massageTask {
  22. @Resource
  23. private TOrderService orderService;
  24. public void cancelOrder() {
  25. Date nowDate = new Date();
  26. log.info("开始执行取消订单任务当前时间,{}", nowDate);
  27. Date date = DateTimeUtils.addMinute(nowDate, -5);
  28. log.info("开始执行取消订单任务当前时间减5分钟,{}", date);
  29. long total = 1L;
  30. while(total > 0L){
  31. total = extracted(date);
  32. }
  33. }
  34. private Long extracted(Date nowDate) {
  35. log.info("extracted 开始执行取消订单任务时间,{}", nowDate);
  36. LambdaQueryWrapper<TOrder> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
  37. objectLambdaQueryWrapper.eq(TOrder::getnStatus, OrderStatusEnum.WAIT_PAY.getCode()).
  38. le(TOrder::getDtCreateTime, nowDate).
  39. orderByAsc(TOrder::getcTime);
  40. Page<TOrder> page = new Page<>();
  41. page.setSize(MassageConstants.TWO_HUNDRED);
  42. Page<TOrder> resPage = orderService.page(page, objectLambdaQueryWrapper);
  43. if (CollectionUtil.isNotEmpty(resPage.getRecords())) {
  44. resPage.getRecords().forEach(order->{
  45. TOrder newOrder = new TOrder();
  46. //todo 订单锁
  47. newOrder.setcId(order.getcId());
  48. newOrder.setnStatus(OrderStatusEnum.CANCEL.getCode());
  49. orderService.updateById(newOrder);
  50. log.info("取消超时未支付订单orderNo,{}", order.getOrderNo());
  51. });
  52. }
  53. return resPage.getTotal();
  54. }
  55. }