|
|
|
@@ -5,7 +5,9 @@ import com.iformall.domain.po.*; |
|
|
|
import com.iformall.domain.po.msg.BaseMsg; |
|
|
|
import com.iformall.domain.po.msg.FmInsideOrderPushMsg; |
|
|
|
import com.iformall.domain.po.msg.FmInsideOrderRefundMsg; |
|
|
|
import com.iformall.domain.vo.WxOrderCouponVo; |
|
|
|
import com.iformall.enums.EnumComposeOrder; |
|
|
|
import com.iformall.enums.EnumPayType; |
|
|
|
import com.iformall.enums.EnumPayWay; |
|
|
|
import com.iformall.exception.MallinkException; |
|
|
|
import com.iformall.mapper.TtCUserMapper; |
|
|
|
@@ -61,28 +63,58 @@ public class FmInsideOrderPushMsgServiceImpl implements MsgSendService { |
|
|
|
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "主订单未找到" + msg.getBatchOrderId()); |
|
|
|
} |
|
|
|
if(EnumPayWay.PAY_WAY_TT.getCode().equals(batchOrder.getPayVendor()) |
|
|
|
&& EnumComposeOrder.SINGLE.getCode().equals(batchOrder.getOrderType())){ |
|
|
|
&& EnumComposeOrder.SINGLE.getCode().equals(batchOrder.getOrderType()) |
|
|
|
&& batchOrder.getOrders().size() == 1){ |
|
|
|
WxAppinfo appinfo = wxAppinfoService.getCAppInfo(batchOrder,EnumPayWay.PAY_WAY_TT.getPlat()); |
|
|
|
WxOrderCouponVo wxOrderCouponVo = batchOrder.getOrders().get(0); |
|
|
|
if(EnumPayType.PAY_PAYMENT.getCode().equals(wxOrderCouponVo.getPaymentType())){ |
|
|
|
payOrderPush(appinfo,batchOrder); |
|
|
|
}else{ |
|
|
|
//退款 |
|
|
|
//通过退款订单找支付订单 |
|
|
|
WxOrder ref_order = orderService.getById(wxOrderCouponVo.getOrderNumber(), wxOrderCouponVo.getTenantId()); |
|
|
|
WxBatchOrder ref_border = new WxBatchOrder(); |
|
|
|
ref_border.setTenantId(ref_order.getTenantId()); |
|
|
|
ref_border.setParentTenantId(ref_order.getParentTenantId()); |
|
|
|
ref_border.setId(ref_order.getComposeOrderId()); |
|
|
|
WxBatchOrder ref_batchOrder = orderService.batchOrderDetail(ref_border); |
|
|
|
if(ref_batchOrder == null){ |
|
|
|
logger.error("退款 主订单未找到: " + ref_order.getComposeOrderId()); |
|
|
|
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "退款 主订单未找到" + ref_order.getComposeOrderId()); |
|
|
|
} |
|
|
|
if(EnumPayWay.PAY_WAY_TT.getCode().equals(ref_batchOrder.getPayVendor()) |
|
|
|
&& EnumComposeOrder.SINGLE.getCode().equals(ref_batchOrder.getOrderType()) |
|
|
|
&& ref_batchOrder.getOrders().size() == 1){ |
|
|
|
for (WxOrderCouponVo ref_vo:ref_batchOrder.getOrders()) { |
|
|
|
ref_vo.setOrderStatus(wxOrderCouponVo.getOrderStatus()); |
|
|
|
} |
|
|
|
payOrderPush(appinfo,ref_batchOrder); |
|
|
|
} |
|
|
|
|
|
|
|
WxPayOrder orderq = new WxPayOrder(); |
|
|
|
orderq.setOrderId(batchOrder.getId()); |
|
|
|
orderq.updateTenantInfo(batchOrder); |
|
|
|
WxPayOrder payOrder = wxPayOrderService.getByObj(orderq); |
|
|
|
if(payOrder == null){ |
|
|
|
logger.error("支付订单未找到: " + msg.getBatchOrderId()); |
|
|
|
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "支付订单未找到" + msg.getBatchOrderId()); |
|
|
|
} |
|
|
|
if(StringUtils.isBlank(payOrder.getTransactionId())){ |
|
|
|
logger.error("担保支付订单未找到: " + msg.getBatchOrderId()); |
|
|
|
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "担保支付订单未找到" + msg.getBatchOrderId()); |
|
|
|
} |
|
|
|
List<String> openIds = ttCUserMapper.findOpenIdList(batchOrder.getCUserId(),batchOrder.getTenantId()); |
|
|
|
if(openIds == null || openIds.size() > 1){ |
|
|
|
logger.error("支付订单找到多个用户 同步失败: " + msg.getBatchOrderId()); |
|
|
|
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "支付订单找到多个用户" + msg.getBatchOrderId()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
payServiceFactory.getPayAdapterService(EnumPayWay.PAY_WAY_TT.getCode()).payOrderPush(openIds.get(0),appinfo,batchOrder,payOrder); |
|
|
|
|
|
|
|
private void payOrderPush(WxAppinfo appinfo, WxBatchOrder batchOrder) throws Exception{ |
|
|
|
WxPayOrder orderq = new WxPayOrder(); |
|
|
|
orderq.setOrderId(batchOrder.getId()); |
|
|
|
orderq.updateTenantInfo(batchOrder); |
|
|
|
WxPayOrder payOrder = wxPayOrderService.getByObj(orderq); |
|
|
|
if(payOrder == null){ |
|
|
|
logger.error("支付订单未找到: " + batchOrder.getId()); |
|
|
|
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "支付订单未找到" + batchOrder.getId()); |
|
|
|
} |
|
|
|
if(StringUtils.isBlank(payOrder.getTransactionId())){ |
|
|
|
logger.error("担保支付订单未找到: " + batchOrder.getId()); |
|
|
|
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "担保支付订单未找到" + batchOrder.getId()); |
|
|
|
} |
|
|
|
List<String> openIds = ttCUserMapper.findOpenIdList(batchOrder.getCUserId(),batchOrder.getTenantId()); |
|
|
|
if(openIds == null || openIds.size() > 1){ |
|
|
|
logger.error("支付订单找到多个用户 同步失败: " + batchOrder.getId()); |
|
|
|
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), "支付订单找到多个用户" + batchOrder.getId()); |
|
|
|
} |
|
|
|
|
|
|
|
payServiceFactory.getPayAdapterService(EnumPayWay.PAY_WAY_TT.getCode()).payOrderPush(openIds.get(0),appinfo,batchOrder,payOrder); |
|
|
|
} |
|
|
|
} |