|
@@ -1,6 +1,7 @@
|
|
|
package com.sqx.scheduler.order;
|
|
package com.sqx.scheduler.order;
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
@@ -14,6 +15,9 @@ import com.sqx.modules.order.entity.TbOrder;
|
|
|
import com.sqx.modules.order.service.AppOrderService;
|
|
import com.sqx.modules.order.service.AppOrderService;
|
|
|
import com.sqx.modules.pay.config.WXConfig;
|
|
import com.sqx.modules.pay.config.WXConfig;
|
|
|
import com.sqx.modules.pay.config.WechatPayConfig;
|
|
import com.sqx.modules.pay.config.WechatPayConfig;
|
|
|
|
|
+import com.sqx.modules.pay.entity.PayDetails;
|
|
|
|
|
+import com.sqx.modules.pay.enums.PayStateEnums;
|
|
|
|
|
+import com.sqx.modules.pay.service.PayDetailsService;
|
|
|
import com.sqx.scheduler.config.SchedulerLock;
|
|
import com.sqx.scheduler.config.SchedulerLock;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -42,6 +46,7 @@ public class OrderScheduler {
|
|
|
private final RedissonClient redissonClient;
|
|
private final RedissonClient redissonClient;
|
|
|
private final AppOrderService orderService;
|
|
private final AppOrderService orderService;
|
|
|
private final CommonInfoService commonInfoService;
|
|
private final CommonInfoService commonInfoService;
|
|
|
|
|
+ private final PayDetailsService payDetailsService;
|
|
|
|
|
|
|
|
private final static String RHT_PAY_BASE_URL = "https://api.ekbuyclub.com";
|
|
private final static String RHT_PAY_BASE_URL = "https://api.ekbuyclub.com";
|
|
|
|
|
|
|
@@ -181,14 +186,14 @@ public class OrderScheduler {
|
|
|
lock.lock();
|
|
lock.lock();
|
|
|
try {
|
|
try {
|
|
|
log.info("超时订单自动取消任务开始运行");
|
|
log.info("超时订单自动取消任务开始运行");
|
|
|
- long time = new Date().getTime();
|
|
|
|
|
|
|
+ //加5分钟在前端强制取消前执行
|
|
|
|
|
+ long time = new Date().getTime()+5*60*1000;
|
|
|
List<TbOrder> orderList = orderService.changeTimeOutOrder(time);
|
|
List<TbOrder> orderList = orderService.changeTimeOutOrder(time);
|
|
|
|
|
|
|
|
if (orderList.size() == 0) {
|
|
if (orderList.size() == 0) {
|
|
|
log.info("没有符合条件的超时订单,超时订单自动取消任务运行....");
|
|
log.info("没有符合条件的超时订单,超时订单自动取消任务运行....");
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
WXConfig config = new WXConfig();
|
|
WXConfig config = new WXConfig();
|
|
|
// 当前都是小程序支付
|
|
// 当前都是小程序支付
|
|
|
config.setAppId(commonInfoService.findOne(74).getValue());
|
|
config.setAppId(commonInfoService.findOne(74).getValue());
|
|
@@ -225,6 +230,7 @@ public class OrderScheduler {
|
|
|
tbOrder.setStatus(5);
|
|
tbOrder.setStatus(5);
|
|
|
orders.add(tbOrder);
|
|
orders.add(tbOrder);
|
|
|
}else if ("SUCCESS".equals(trade_state)){
|
|
}else if ("SUCCESS".equals(trade_state)){
|
|
|
|
|
+ tbOrder.setPayType(1);
|
|
|
orderService.updateOrderAfterPaySuccess(tbOrder);
|
|
orderService.updateOrderAfterPaySuccess(tbOrder);
|
|
|
}
|
|
}
|
|
|
}else {
|
|
}else {
|
|
@@ -232,23 +238,37 @@ public class OrderScheduler {
|
|
|
qqrb.setTraceno(orderNumber);// 商户流水号
|
|
qqrb.setTraceno(orderNumber);// 商户流水号
|
|
|
QrcodeQueryResponseBean response2 = qrcodePay.query(qqrb);
|
|
QrcodeQueryResponseBean response2 = qrcodePay.query(qqrb);
|
|
|
String respCode = response2.getRespCode();
|
|
String respCode = response2.getRespCode();
|
|
|
|
|
+ log.info("超时任务处理订单【{}】查询支付结果,支付通知信息:{}", orderNumber, response2);
|
|
|
// 0未支付,1支付成功,2支付失败,4退款中,5退款成功,6退款失败
|
|
// 0未支付,1支付成功,2支付失败,4退款中,5退款成功,6退款失败
|
|
|
if ("0".equals(respCode)) {
|
|
if ("0".equals(respCode)) {
|
|
|
tbOrder.setStatus(5);
|
|
tbOrder.setStatus(5);
|
|
|
orders.add(tbOrder);
|
|
orders.add(tbOrder);
|
|
|
}else if ("1".equals(respCode)){
|
|
}else if ("1".equals(respCode)){
|
|
|
|
|
+ PayDetails payDetails = payDetailsService.getByOrderNo(orderNumber);
|
|
|
|
|
+ if (!ObjectUtil.isNull(payDetails)) {
|
|
|
|
|
+ payDetails.setState(PayStateEnums.PAY_SUCCESS.getStateCode());
|
|
|
|
|
+ payDetails.setPayTime(response2.getTransDate()+ " " + response2.getTransTime());
|
|
|
|
|
+ payDetails.setTradeNo(response2.getChannelOrderno());
|
|
|
|
|
+ payDetails.setRemark("Scheduled RHT PAY SUCCESS");
|
|
|
|
|
+ payDetailsService.updateDetail(payDetails);
|
|
|
|
|
+ }else {
|
|
|
|
|
+ log.error("超时任务处理订单【{}】支付成功,但未获取到支付订单!支付通知信息:{}", orderNumber, response2);
|
|
|
|
|
+ }
|
|
|
|
|
+ tbOrder.setPayType(1);
|
|
|
orderService.updateOrderAfterPaySuccess(tbOrder);
|
|
orderService.updateOrderAfterPaySuccess(tbOrder);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
} else {
|
|
} else {
|
|
|
tbOrder.setStatus(5);
|
|
tbOrder.setStatus(5);
|
|
|
orders.add(tbOrder);
|
|
orders.add(tbOrder);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ //list为空不要执行
|
|
|
|
|
+ if(!orders.isEmpty()){
|
|
|
|
|
+ orderService.updateBatchById(orders);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- orderService.updateBatchById(orders);
|
|
|
|
|
|
|
|
|
|
log.info("超时订单自动取消运行成功");
|
|
log.info("超时订单自动取消运行成功");
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|