| @@ -59,7 +59,7 @@ public class CouponOrderExpiringSchedule { | |||||
| List<WxCouponOrder> list = wxCouponOrderMapper.findExpiredFreeCouponOrderByValidDate(); | List<WxCouponOrder> list = wxCouponOrderMapper.findExpiredFreeCouponOrderByValidDate(); | ||||
| list.stream().forEach(co -> { | list.stream().forEach(co -> { | ||||
| // 券过期 | |||||
| // 券过期,更改状态及库存退回 | |||||
| couponOrderExpire(co); | couponOrderExpire(co); | ||||
| }); | }); | ||||
| @@ -72,56 +72,17 @@ public class CouponOrderExpiringSchedule { | |||||
| List<WxCouponOrder> list = wxCouponOrderMapper.findExpiredCouponOrderByValidDate(); | List<WxCouponOrder> list = wxCouponOrderMapper.findExpiredCouponOrderByValidDate(); | ||||
| list.stream().forEach(co -> { | list.stream().forEach(co -> { | ||||
| // 券过期与退款分离 | |||||
| // 券过期,更改状态及库存退回 | |||||
| couponOrderExpire(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过期 | // 标记 couponOrder过期 | ||||
| WxCouponOrder updateRecord = new WxCouponOrder(); | WxCouponOrder updateRecord = new WxCouponOrder(); | ||||
| updateRecord.setId(co.getId()); | updateRecord.setId(co.getId()); | ||||
| @@ -138,6 +99,53 @@ public class CouponOrderExpiringSchedule { | |||||
| if(order != null) { | if(order != null) { | ||||
| wxOrderService.stockBack(order); | 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()); | |||||
| } | |||||
| } | |||||
| } | } | ||||
| } | } | ||||