diff --git a/mallinkAdmin/src/main/resources/db/migration/V2022032800001__msg.sql b/mallinkAdmin/src/main/resources/db/migration/V2022032800001__msg.sql index 6c88fdcc1..a01bb4f6c 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V2022032800001__msg.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V2022032800001__msg.sql @@ -6,3 +6,5 @@ ADD COLUMN `sort_url` varchar(255) COMMENT '小程序链接' AFTER `plat`; INSERT INTO `mallink`.`wx_msg_validationcode_model`(`id`, `tenant_id`, `parent_tenant_id`, `type`, `name`, `signature`, `content`, `createtime`, `status`, `minutes`, `model_id`, `email_bg_img`, `open`, `msg_type`, `role_type`, `model_code`) VALUES (666429058236550321, '1028', NULL, 33, '抖音退款通知', '富茂', '您购买的[${name}]已发起全部退款申请,预计1-3个自然日商家处理完成,请耐心等待。', '2022-03-28 17:57:59', 1, 0, NULL, NULL, 0, 1, 0, 'SMS_236550321'); INSERT INTO `mallink`.`wx_msg_validationcode_model`(`id`, `tenant_id`, `parent_tenant_id`, `type`, `name`, `signature`, `content`, `createtime`, `status`, `minutes`, `model_id`, `email_bg_img`, `open`, `msg_type`, `role_type`, `model_code`) VALUES (666429058236560256, '1028', NULL, 32, '抖音购买成功通知', '富茂', '您已成功购买[${name}],可在“抖音app>我>右上角≡>我的订单>查看全部”,务必到店之后进行核销,谨防上当受骗。', '2022-03-28 17:57:59', 1, 0, NULL, NULL, 0, 1, 0, 'SMS_236560256'); +-- INSERT INTO `mallink`.`wx_msg_validationcode_model`(`id`, `tenant_id`, `parent_tenant_id`, `type`, `name`, `signature`, `content`, `createtime`, `status`, `minutes`, `model_id`, `email_bg_img`, `open`, `msg_type`, `role_type`, `model_code`) VALUES (666429058237590158, '1028', NULL, 32, '抖音购买通知', '富茂', '您已成功购买[${name}],可在“抖音app>我>右上角≡>我的订单>查看全部”,务必到店之后进行核销,谨防上当受骗。http://ob4.cn/${sortUrl}', '2022-03-29 10:57:59', 1, 0, NULL, NULL, 0, 1, 0, 'SMS_237590158'); + diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushMsgServiceImpl.java index 11b50f440..7bed7baae 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderPushMsgServiceImpl.java @@ -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 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 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); } }