|
@@ -2,8 +2,10 @@ package com.qs.mp.pay.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.qs.mp.channel.service.IChannelOrderService;
|
|
|
import com.qs.mp.common.enums.BizTypeEnum;
|
|
|
+import com.qs.mp.common.enums.PayOrderStatusEnum;
|
|
|
import com.qs.mp.common.exception.ServiceException;
|
|
|
import com.qs.mp.common.utils.DateUtils;
|
|
|
import com.qs.mp.common.utils.LogUtil;
|
|
@@ -22,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
/**
|
|
|
* @auther duota
|
|
@@ -118,34 +121,35 @@ public class WalletServiceImpl implements IWalletService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- @Async
|
|
|
- public void payOrderStatusHandle(String orderNo) {
|
|
|
+ @Transactional
|
|
|
+ public void payOrderStatusHandle(PayOrder payOrder) {
|
|
|
+ String orderNo = payOrder.getOrderId();
|
|
|
+ // 订单支付状态单独保存
|
|
|
+ LambdaUpdateWrapper<PayOrder> updateWrapper = new LambdaUpdateWrapper<>();
|
|
|
+ updateWrapper.eq(PayOrder::getOrderStatus, PayOrderStatusEnum.WAIT.getValue());
|
|
|
+ updateWrapper.eq(PayOrder::getOrderId, orderNo);
|
|
|
+ boolean ret = payOrderService.update(payOrder, updateWrapper);
|
|
|
+ if (!ret) {
|
|
|
+ throw new ServiceException("支付订单更新失败,orderNo:" + orderNo);
|
|
|
+ }
|
|
|
//查询统一支付订单表,查询订单类型,然后根据不同类型做对应的逻辑处理
|
|
|
//查询支付状态为1:支付成功,2:订单创建成功,等待支付。
|
|
|
- LambdaQueryWrapper<PayOrder> wrapper = new LambdaQueryWrapper();
|
|
|
- wrapper.eq(PayOrder::getOrderId, orderNo);
|
|
|
- wrapper.eq(PayOrder::getOrderStatus, "1");
|
|
|
- List<PayOrder> payOrderList = payOrderService.list(wrapper);
|
|
|
- if (payOrderList.size() != 1) {
|
|
|
- //数据结构异常,告警
|
|
|
- LogUtil.error(logger, "数据结构异常,违反唯一约束,orderNo:" + orderNo);
|
|
|
- }
|
|
|
- //渠道订单
|
|
|
- PayOrder payOrder = payOrderList.get(0);
|
|
|
+ PayOrder order = payOrderService.getById(orderNo);
|
|
|
LogUtil.info(logger, "支付回调,bizType:{0},bizId:{1}" ,
|
|
|
- new Object[]{payOrder.getBizType(), payOrder.getBizId()});
|
|
|
- if (BizTypeEnum.CHANNEL_ORDER == payOrder.getBizType()) {
|
|
|
+ new Object[]{order.getBizType(), order.getBizId()});
|
|
|
+ if (BizTypeEnum.CHANNEL_ORDER == order.getBizType()) {
|
|
|
// 渠道盲票采购订单支付成功,调用业务订单服务处理
|
|
|
- channelOrderService.paySuccess(payOrder);
|
|
|
- } else if (BizTypeEnum.TICKET_ORDER == payOrder.getBizType()) {
|
|
|
+ channelOrderService.paySuccess(order);
|
|
|
+ } else if (BizTypeEnum.TICKET_ORDER == order.getBizType()) {
|
|
|
// 用户盲票购买订单支付成功,调用业务订单服务处理
|
|
|
- userTicketOrderService.paySuccess(payOrder);
|
|
|
- } else if (BizTypeEnum.DELIVER_ORDER == payOrder.getBizType()) {
|
|
|
+ userTicketOrderService.paySuccess(order);
|
|
|
+ } else if (BizTypeEnum.DELIVER_ORDER == order.getBizType()) {
|
|
|
// 用户提货订单支付成功,调用业务订单服务处理
|
|
|
- userDeliverOrderService.paySuccess(payOrder);
|
|
|
+ userDeliverOrderService.paySuccess(order);
|
|
|
} else {
|
|
|
//数据结构异常,告警
|
|
|
LogUtil.error(logger, "该业务单据类型未支持,orderNo:" + orderNo);
|
|
|
+ throw new ServiceException("该业务单据类型未支持,orderNo:" + orderNo);
|
|
|
}
|
|
|
}
|
|
|
|