massageTask.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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.TJs;
  7. import com.ylx.massage.domain.TOrder;
  8. import com.ylx.massage.enums.OrderStatusEnum;
  9. import com.ylx.massage.service.TJsService;
  10. import com.ylx.massage.service.TOrderService;
  11. import com.ylx.massage.utils.DateTimeUtils;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.springframework.stereotype.Component;
  14. import javax.annotation.Resource;
  15. import java.util.Date;
  16. import java.util.List;
  17. /**
  18. * @author jianlong
  19. * @date 2024-04-19 14:11
  20. */
  21. @Slf4j
  22. @Component("massageTask")
  23. public class massageTask {
  24. @Resource
  25. private TOrderService orderService;
  26. private TJsService jsService;
  27. public void cancelOrder() {
  28. Date nowDate = new Date();
  29. log.info("开始执行取消订单任务当前时间,{}", nowDate);
  30. Date date = DateTimeUtils.addMinute(nowDate, -5);
  31. log.info("开始执行取消订单任务当前时间减5分钟,{}", date);
  32. long total = 1L;
  33. while (total > 0L) {
  34. total = extracted(date);
  35. }
  36. }
  37. private Long extracted(Date nowDate) {
  38. log.info("extracted 开始执行取消订单任务时间,{}", nowDate);
  39. LambdaQueryWrapper<TOrder> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
  40. objectLambdaQueryWrapper.eq(TOrder::getnStatus, OrderStatusEnum.WAIT_PAY.getCode()).
  41. le(TOrder::getDtCreateTime, nowDate).
  42. orderByAsc(TOrder::getDtCreateTime);
  43. Page<TOrder> page = new Page<>();
  44. page.setSize(MassageConstants.TWO_HUNDRED);
  45. Page<TOrder> resPage = orderService.page(page, objectLambdaQueryWrapper);
  46. if (CollectionUtil.isNotEmpty(resPage.getRecords())) {
  47. resPage.getRecords().forEach(order -> {
  48. TOrder newOrder = new TOrder();
  49. //todo 订单锁
  50. newOrder.setcId(order.getcId());
  51. newOrder.setnStatus(OrderStatusEnum.CANCEL.getCode());
  52. orderService.updateById(newOrder);
  53. log.info("取消超时未支付订单orderNo,{}", order.getOrderNo());
  54. });
  55. }
  56. return resPage.getTotal();
  57. }
  58. public void cancelNewJs() {
  59. Date nowDate = new Date();
  60. log.info("开始执行取消新技师标识任务当前时间,{}", nowDate);
  61. long total = 1L;
  62. while (total > 0L) {
  63. LambdaQueryWrapper<TJs> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
  64. Date date = DateTimeUtils.addDays(nowDate, -7);
  65. log.info("开始执行取新技师当前时间减7天,{}", date);
  66. objectLambdaQueryWrapper.eq(TJs::getnB2, MassageConstants.INTEGER_ONE).le(TJs::getcTime, date).orderByAsc(TJs::getcTime);
  67. Page<TJs> page = new Page<>();
  68. page.setSize(MassageConstants.TWO_HUNDRED);
  69. Page<TJs> page1 = jsService.page(page, objectLambdaQueryWrapper);
  70. if (CollectionUtil.isNotEmpty(page1.getRecords())) {
  71. page1.getRecords().forEach(tjs -> {
  72. TJs js = new TJs();
  73. js.setId(tjs.getId());
  74. js.setnB2(MassageConstants.INTEGER_ZERO);
  75. jsService.updateById(js);
  76. log.info("取消新技师标识,{}", js.getcOpenId() + js.getcName());
  77. });
  78. }
  79. total = page1.getTotal();
  80. }
  81. }
  82. public void cancelHotJs() {
  83. Date nowDate = new Date();
  84. log.info("开始执行取消技师热度标识任务当前时间,{}", nowDate);
  85. Date date = DateTimeUtils.addDays(nowDate, -3);
  86. long total = 1L;
  87. while (total > 0L) {
  88. LambdaQueryWrapper<TJs> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
  89. objectLambdaQueryWrapper.eq(TJs::getnB3, MassageConstants.INTEGER_ONE);
  90. Page<TJs> page = new Page<>();
  91. page.setSize(MassageConstants.TWO_HUNDRED);
  92. Page<TJs> page1 = jsService.page(page, objectLambdaQueryWrapper);
  93. if (CollectionUtil.isNotEmpty(page1.getRecords())) {
  94. page1.getRecords().forEach(tjs -> {
  95. List<TOrder> list = orderService.list(new LambdaQueryWrapper<TOrder>().eq(TOrder::getcJsId, tjs.getId()).ge(TOrder::getDtCreateTime, date));
  96. if(CollectionUtil.isEmpty(list) || list.size() < 3){
  97. TJs js = new TJs();
  98. js.setId(tjs.getId());
  99. js.setnB3(MassageConstants.INTEGER_ZERO);
  100. jsService.updateById(js);
  101. log.info("取消热度技师标识,{}", js.getcOpenId() + js.getcName());
  102. }
  103. });
  104. }
  105. total = page1.getTotal();
  106. }
  107. }
  108. }