xhxu 3 лет назад
Родитель
Сommit
580ed56dec
1 измененных файлов: 26 добавлений и 32 удалений
  1. +26
    -32
      mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java

+ 26
- 32
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(); 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(), "补贴数据已结算");
} }
} }




Загрузка…
Отмена
Сохранить