From 580ed56dec10fe61fa07b61025ecabb0c3f5a13a Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 14 Mar 2023 16:45:33 +0800 Subject: [PATCH] //card --- .../impl/WxRefundOrderServiceImpl.java | 58 +++++++++---------- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java index 14b91b9ea..1f7e7d00b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java @@ -1328,42 +1328,36 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { //退补贴 Double subsidyD = 1.0 * cardSend.getSubsidy() * refundFee / cardSend.getDeductionAmount(); subsidyFee = subsidyD.intValue(); - if(subsidyFee > 0){ - int iSubChargeFee = PayUtils.getPayRate(subsidyFee, payAccount.getRealRate(), false); - Integer realSubsidyFee = subsidyFee - iSubChargeFee; - - WxMerchantSubsidy merchantSubsidy = new WxMerchantSubsidy(); - merchantSubsidy.setId(idWorker.nextId()); - merchantSubsidy.updateTenantInfo(record); - merchantSubsidy.setOrderId(wxOrder.getId()); - merchantSubsidy.setOrderType(EnumOrderType.PREPAIDCARD.getCode()); - merchantSubsidy.setMerchantId(record.getMerchantId()); - merchantSubsidy.setBTenantId(record.getTenantId()); - merchantSubsidy.setCouponOrderId(cardInfo.getId()); - merchantSubsidy.setCouponType(EnumCouponType.CARD_MULTIMCH.getCode()); - merchantSubsidy.setOrderPayment(0-record.getDeductionAmount()); - merchantSubsidy.setReceiverPayment(0-refund); - merchantSubsidy.setRealPayment(0-real_refund); - merchantSubsidy.setSubsidy(0-subsidyFee); - merchantSubsidy.setRealSubsidy(0-realSubsidyFee); - merchantSubsidy.setStatus(EnumMerchantSubsidyStatus.NOT_SUBSIDY.getCode()); - - merchantSubsidy.setType(EnumMerchantSubsidyType.MANUAL.getCode()); - merchantSubsidy.setSource(EnumMerchantSubsidySource.CARD.getCode()); - - //如果是有价卡,并且有补贴,则该记录不能显示在卡消费列表里面 - if (cardInfo.getSaleAmount()>0 && subsidyFee > 0) { - merchantSubsidy.setCardSpendListShow(0); - } - merchantSubsidy.setCreateDate(currentDate); - merchantSubsidy.setUpdateDate(currentDate); + WxMerchantSubsidy merchantSubsidy = new WxMerchantSubsidy(); + merchantSubsidy.updateTenantInfo(record); + merchantSubsidy.setOrderId(wxOrder.getId()); + merchantSubsidy.setOrderType(EnumOrderType.PREPAIDCARD.getCode()); + WxMerchantSubsidy wxMerchantSubsidy = wxMerchantSubsidyMapper.selectOne(new QueryWrapper<>(merchantSubsidy)); + if(wxMerchantSubsidy == null){ + logger.error("未找到补贴数据 error"); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "未找到补贴数据 插入出错!"); + } + + Double realSubsidyD = 1.0 * cardSend.getRealPayment() * refundFee / cardSend.getDeductionAmount(); + Integer realSubsidyFee = realSubsidyD.intValue(); + + if(EnumMerchantSubsidyStatus.NOT_SUBSIDY.getCode().equals(wxMerchantSubsidy.getStatus())){ + wxMerchantSubsidy.setOrderPayment(wxMerchantSubsidy.getOrderPayment()-record.getDeductionAmount()); + wxMerchantSubsidy.setReceiverPayment(wxMerchantSubsidy.getReceiverPayment()-refund); + wxMerchantSubsidy.setRealPayment(wxMerchantSubsidy.getRealPayment()-real_refund); + wxMerchantSubsidy.setSubsidy(wxMerchantSubsidy.getSubsidy()-subsidyFee); + wxMerchantSubsidy.setRealSubsidy(wxMerchantSubsidy.getRealSubsidy()-realSubsidyFee); + wxMerchantSubsidy.setUpdateDate(currentDate); try { - wxMerchantSubsidyMapper.insert(merchantSubsidy); + wxMerchantSubsidyMapper.updateById(wxMerchantSubsidy); } catch (Exception e) { - logger.error("merchantSubsidy info insert error"); - throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "merchantSubsidy info 插入出错!"); + logger.error("退补贴数据 修改失败info update error"); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "merchantSubsidy info 修改出错!"); } + }else{ + logger.error("补贴数据已结算 无法退款 error"); + throw new MallinkException(ErrorCode.SYS_METHOD_NOT_SUPPORT.getCode(), "补贴数据已结算"); } }