diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java index 708842e68..ffed713c6 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java @@ -59,7 +59,7 @@ public class CouponOrderExpiringSchedule { List list = wxCouponOrderMapper.findExpiredFreeCouponOrderByValidDate(); list.stream().forEach(co -> { - // 券过期 + // 券过期,更改状态及库存退回 couponOrderExpire(co); }); @@ -72,56 +72,17 @@ public class CouponOrderExpiringSchedule { List list = wxCouponOrderMapper.findExpiredCouponOrderByValidDate(); list.stream().forEach(co -> { - // 券过期与退款分离 + // 券过期,更改状态及库存退回 couponOrderExpire(co); - - // 非储值卡, 可以退款 - if(!co.getCouponType().equals(EnumCouponType.CARD_MULTIMCH.getCode()) - && !co.getAutoRefund().equals(EnumCouponAutoRefund.UNSUPPORTED.getCode())) { - WxAppinfo appinfo = new WxAppinfo(); - appinfo.setTenantId(co.getTenantId()); - appinfo.setType(EnumAppType.B.getCode()); - appinfo = wxAppinfoMapper.findList(appinfo).get(0); - - try { - wxRefundOrderService.createRefundOrder(payProperty.isReal(), appinfo, co.getId(), EnumPayType.PAY_AUTO_REFUND, null); - } catch (Exception e) { - logger.error("退款失败:"+e.getMessage()+"couponOrderId="+co.getId()); - } - } - - if (co.getAutoRefund().equals(EnumCouponAutoRefund.UNSUPPORTED.getCode())){ - // 微信分账 - try { - WxPayOrder wxPayOrder = new WxPayOrder(); - wxPayOrder.setTenantId(co.getTenantId()); - wxPayOrder.setOrderId(co.getOrderId()); - wxPayOrder.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); - wxPayOrder = wxPayOrderMapper.selectOne(wxPayOrder); - if (wxPayOrder != null && wxPayOrder.getShare().equals(EnumPayShare.YES.getCode())) { - WxSharingOrderDto wxSharingOrderDto = new WxSharingOrderDto(); - wxSharingOrderDto.setcUserId(wxPayOrder.getcUserId()); - wxSharingOrderDto.setMerchantId(0L); - wxSharingOrderDto.setType(EnumProfitSharingOrderType.PROFIT_SHARING_FINISH.getCode()); - wxSharingOrderDto.setPayAmount(wxPayOrder.getPayAmount()); - wxSharingOrderDto.setOrderId(wxPayOrder.getId()); - wxSharingOrderDto.setPayTimeStart(wxPayOrder.getPayTimeStart()); - wxSharingOrderDto.setPayTimeEnd(wxPayOrder.getPayTimeEnd()); - wxSharingOrderDto.setTenantId(wxPayOrder.getTenantId()); - wxSharingOrderDto.setTransactionId(wxPayOrder.getTransactionId()); - wxSharingOrderDto.setShareAmount(wxPayOrder.getShareAmount()); - wxProfitSharingOrderService.finishSharingOrder(wxSharingOrderDto); - } - - } catch (Exception e) { - logger.error("券过期不退款: " + co.getId() + " ERROR:" + e.getMessage()); - } - - } + // 退款 + couponOrderExpireRefund(co); }); } - private void couponOrderExpire(WxCouponOrder co) { + + + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public void couponOrderExpire(WxCouponOrder co) { // 标记 couponOrder过期 WxCouponOrder updateRecord = new WxCouponOrder(); updateRecord.setId(co.getId()); @@ -138,6 +99,53 @@ public class CouponOrderExpiringSchedule { if(order != null) { wxOrderService.stockBack(order); } + } + private void couponOrderExpireRefund(WxCouponOrder co) { + // 非储值卡, 可以退款 + if(!co.getCouponType().equals(EnumCouponType.CARD_MULTIMCH.getCode()) + && !co.getAutoRefund().equals(EnumCouponAutoRefund.UNSUPPORTED.getCode())) { + WxAppinfo appinfo = new WxAppinfo(); + appinfo.setTenantId(co.getTenantId()); + appinfo.setType(EnumAppType.B.getCode()); + appinfo = wxAppinfoMapper.findList(appinfo).get(0); + + try { + wxRefundOrderService.createRefundOrder(payProperty.isReal(), appinfo, co.getId(), EnumPayType.PAY_AUTO_REFUND, null); + } catch (MallinkException e) { + logger.error("退款失败:"+e.getMessage()+"couponOrderId="+co.getId()); + throw new MallinkException(e.getErrorCode(), e.getMessage()); + } + } + + if (co.getAutoRefund().equals(EnumCouponAutoRefund.UNSUPPORTED.getCode())){ + // 微信分账 + try { + WxPayOrder wxPayOrder = new WxPayOrder(); + wxPayOrder.setTenantId(co.getTenantId()); + wxPayOrder.setOrderId(co.getOrderId()); + wxPayOrder.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); + wxPayOrder = wxPayOrderMapper.selectOne(wxPayOrder); + if (wxPayOrder != null && wxPayOrder.getShare().equals(EnumPayShare.YES.getCode())) { + WxSharingOrderDto wxSharingOrderDto = new WxSharingOrderDto(); + wxSharingOrderDto.setcUserId(wxPayOrder.getcUserId()); + wxSharingOrderDto.setMerchantId(0L); + wxSharingOrderDto.setType(EnumProfitSharingOrderType.PROFIT_SHARING_FINISH.getCode()); + wxSharingOrderDto.setPayAmount(wxPayOrder.getPayAmount()); + wxSharingOrderDto.setOrderId(wxPayOrder.getId()); + wxSharingOrderDto.setPayTimeStart(wxPayOrder.getPayTimeStart()); + wxSharingOrderDto.setPayTimeEnd(wxPayOrder.getPayTimeEnd()); + wxSharingOrderDto.setTenantId(wxPayOrder.getTenantId()); + wxSharingOrderDto.setTransactionId(wxPayOrder.getTransactionId()); + wxSharingOrderDto.setShareAmount(wxPayOrder.getShareAmount()); + wxProfitSharingOrderService.finishSharingOrder(wxSharingOrderDto); + } + + } catch (MallinkException e) { + logger.error("券过期不退款: " + co.getId() + " ERROR:" + e.getMessage()); + throw new MallinkException(e.getErrorCode(), e.getMessage()); + } + + } } } \ No newline at end of file