| @@ -1328,42 +1328,36 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { | |||||
| //退补贴 | //退补贴 | ||||
| Double subsidyD = 1.0 * cardSend.getSubsidy() * refundFee / cardSend.getDeductionAmount(); | Double subsidyD = 1.0 * cardSend.getSubsidy() * refundFee / cardSend.getDeductionAmount(); | ||||
| subsidyFee = subsidyD.intValue(); | 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 { | try { | ||||
| wxMerchantSubsidyMapper.insert(merchantSubsidy); | |||||
| wxMerchantSubsidyMapper.updateById(wxMerchantSubsidy); | |||||
| } catch (Exception e) { | } 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(), "补贴数据已结算"); | |||||
| } | } | ||||
| } | } | ||||