puzhibing
2026-07-17 df22fbc272a1a8debe24ae037470a7c3fcb06571
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1328,10 +1328,10 @@
                    BigDecimal thirdRefundAmount = channelRefundAmount.min(getRefundableThirdPayAmount(chargingOrder)).setScale(2, RoundingMode.HALF_UP);
                    BigDecimal balanceRefundAmount = channelRefundAmount.subtract(thirdRefundAmount).min(money(chargingOrder.getBalancePayAmount())).setScale(2, RoundingMode.HALF_UP);
                    //构建退款明细
                    String refundCode = "CDF" + chargingOrder.getCode().substring(2);
                    TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
                    chargingOrderRefund.setChargingOrderId(chargingOrder.getId());
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
                    chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + Double.valueOf(Math.random() * 1000).intValue());
                    chargingOrderRefund.setRefundCode(refundCode);
                    chargingOrderRefund.setRefundAmount(recordedRefundAmount);
                    chargingOrderRefund.setBalanceRefundAmount(balanceRefundAmount);
                    chargingOrderRefund.setThirdRefundAmount(thirdRefundAmount);
@@ -1367,21 +1367,29 @@
                            .eq(TChargingOrder::getId, chargingOrder.getId())
                            .eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId()));
                    if (thirdRefundAmount.compareTo(BigDecimal.ZERO) > 0 && 1 == rechargePaymentType) {
                        WxPaymentRefundModel model = new WxPaymentRefundModel();
                        model.setOut_trade_no(chargingOrder.getCode());
                        model.setOut_refund_no(chargingOrderRefund.getRefundCode());
                        model.setReason("充电失败,取消充电订单");
                        model.setNotify_url("/payment/wx/refund/notify");
                        WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
                        amount.setRefund(thirdRefundAmount.multiply(new BigDecimal(100)).intValue());
                        amount.setTotal(getRefundableThirdPayAmount(chargingOrder).multiply(new BigDecimal(100)).intValue());
                        amount.setCurrency("CNY");
                        model.setAmount(amount);
                        R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
                        if (200 == orderR.getCode()) {
                        Map<String, Object> objectMap = wxPaymentClient.queryRefund(refundCode).getData();
                        Map<String, Object> amount1 = null;
                        if(null != objectMap && null != objectMap.get("refund_id")){
                            amount1 = (Map<String, Object>) objectMap.get("amount");
                        }else{
                            WxPaymentRefundModel model = new WxPaymentRefundModel();
                            model.setOut_trade_no(chargingOrder.getCode());
                            model.setOut_refund_no(chargingOrderRefund.getRefundCode());
                            model.setReason("充电失败,取消充电订单");
                            model.setNotify_url("/payment/wx/refund/notify");
                            WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
                            amount.setRefund(thirdRefundAmount.multiply(new BigDecimal(100)).intValue());
                            amount.setTotal(getRefundableThirdPayAmount(chargingOrder).multiply(new BigDecimal(100)).intValue());
                            amount.setCurrency("CNY");
                            model.setAmount(amount);
                            R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
                            if(200 == orderR.getCode()){
                                amount1 = (Map<String, Object>) orderR.getData().get("amount");
                            }
                        }
                        if (null != amount1) {
                            chargingOrderRefundService.save(chargingOrderRefund);
                            //手续费
                            Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
                            Object refund_fee1 = amount1.get("refund_fee");
                            BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
                            chargingOrderRefund.setRefundFee(refund_fee);
@@ -1486,10 +1494,10 @@
            Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
            Integer payMethod = chargingOrder.getPayMethod();
            //构建退款明细
            String refundCode = "CDF" + chargingOrder.getCode().substring(2);
            TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
            chargingOrderRefund.setChargingOrderId(chargingOrder.getId());
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
            chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + Double.valueOf(Math.random() * 1000).intValue());
            chargingOrderRefund.setRefundCode(refundCode);
            chargingOrderRefund.setRefundAmount(money);
            BigDecimal thirdRefundAmount = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
            BigDecimal balanceRefundAmount = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
@@ -1523,21 +1531,29 @@
                return;
            }
            if (1 == rechargePaymentType) {
                WxPaymentRefundModel model = new WxPaymentRefundModel();
                model.setOut_trade_no(chargingOrder.getCode());
                model.setOut_refund_no(chargingOrderRefund.getRefundCode());
                model.setReason("充电完成退款");
                model.setNotify_url("/payment/wx/refund/notify");
                WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
                amount.setRefund(thirdRefundAmount.multiply(new BigDecimal(100)).intValue());
                amount.setTotal(getRefundableThirdPayAmount(chargingOrder).multiply(new BigDecimal(100)).intValue());
                amount.setCurrency("CNY");
                model.setAmount(amount);
                R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
                if (200 == orderR.getCode()) {
                Map<String, Object> objectMap = wxPaymentClient.queryRefund(refundCode).getData();
                Map<String, Object> amount1 = null;
                if(null != objectMap && null != objectMap.get("refund_id")){
                    amount1 = (Map<String, Object>) objectMap.get("amount");
                }else{
                    WxPaymentRefundModel model = new WxPaymentRefundModel();
                    model.setOut_trade_no(chargingOrder.getCode());
                    model.setOut_refund_no(chargingOrderRefund.getRefundCode());
                    model.setReason("充电完成退款");
                    model.setNotify_url("/payment/wx/refund/notify");
                    WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
                    amount.setRefund(thirdRefundAmount.multiply(new BigDecimal(100)).intValue());
                    amount.setTotal(getRefundableThirdPayAmount(chargingOrder).multiply(new BigDecimal(100)).intValue());
                    amount.setCurrency("CNY");
                    model.setAmount(amount);
                    R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
                    if(200 == orderR.getCode()){
                        amount1 = (Map<String, Object>) orderR.getData().get("amount");
                    }
                }
                if (null != amount1) {
                    chargingOrderRefundService.save(chargingOrderRefund);
                    //手续费
                    Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
                    Object refund_fee1 = amount1.get("refund_fee");
                    BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
                    chargingOrderRefund.setRefundFee(refund_fee);
@@ -3514,10 +3530,10 @@
                    Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
                    if (channelRefundAmount.compareTo(BigDecimal.ZERO) > 0) {
                        //构建退款明细
                        String refundCode = "CDF" + chargingOrder.getCode().substring(2);
                        TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
                        chargingOrderRefund.setChargingOrderId(chargingOrder.getId());
                        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmmssSSS");
                        chargingOrderRefund.setRefundCode("CDF" + sdf1.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
                        chargingOrderRefund.setRefundCode(refundCode);
                        chargingOrderRefund.setRefundAmount(refundAmount);
                        chargingOrderRefund.setBalanceRefundAmount(balanceRefundAmount);
                        chargingOrderRefund.setThirdRefundAmount(thirdRefundAmount);
@@ -3546,20 +3562,29 @@
                                    .eq(TChargingOrder::getId, chargingOrder.getId())
                                    .eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId()));
                        } else if (1 == rechargePaymentType) {
                            WxPaymentRefundModel model = new WxPaymentRefundModel();
                            model.setOut_trade_no(chargingOrder.getCode());
                            model.setOut_refund_no(chargingOrderRefund.getRefundCode());
                            model.setReason("充电完成退款");
                            model.setNotify_url("/payment/wx/refund/notify");
                            WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
                            amount.setRefund(thirdRefundAmount.multiply(new BigDecimal(100)).intValue());
                            amount.setTotal(getRefundableThirdPayAmount(chargingOrder).multiply(new BigDecimal(100)).intValue());
                            amount.setCurrency("CNY");
                            model.setAmount(amount);
                            R<Map<String, Object>> result = wxPaymentClient.refundOrderR(model);
                            if (200 == result.getCode()) {
                            Map<String, Object> objectMap = wxPaymentClient.queryRefund(refundCode).getData();
                            Map<String, Object> amount1 = null;
                            if(null != objectMap && null != objectMap.get("refund_id")){
                                amount1 = (Map<String, Object>) objectMap.get("amount");
                            }else{
                                WxPaymentRefundModel model = new WxPaymentRefundModel();
                                model.setOut_trade_no(chargingOrder.getCode());
                                model.setOut_refund_no(chargingOrderRefund.getRefundCode());
                                model.setReason("充电完成退款");
                                model.setNotify_url("/payment/wx/refund/notify");
                                WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
                                amount.setRefund(thirdRefundAmount.multiply(new BigDecimal(100)).intValue());
                                amount.setTotal(getRefundableThirdPayAmount(chargingOrder).multiply(new BigDecimal(100)).intValue());
                                amount.setCurrency("CNY");
                                model.setAmount(amount);
                                R<Map<String, Object>> result = wxPaymentClient.refundOrderR(model);
                                if (200 == result.getCode()) {
                                    amount1 = (Map<String, Object>) result.getData().get("amount");
                                }
                            }
                            if (null != amount1) {
                                //手续费
                                Map<String, Object> amount1 = (Map<String, Object>) result.getData().get("amount");
                                Object refund_fee1 = amount1.get("refund_fee");
                                BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
                                chargingOrderRefund.setRefundFee(refund_fee);
@@ -3788,7 +3813,7 @@
            if ((tChargingOrder.getRechargeAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount())) == 0) {
                tChargingOrder.setStatus(5);
            }
            String refundCode = "CDF" + tChargingOrder.getCode().substring(2);
            TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
            chargingOrderRefund.setChargingOrderId(tChargingOrder.getId());
            chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
@@ -3796,8 +3821,7 @@
            chargingOrderRefund.setPayType(tChargingOrder.getRechargePaymentType());
            chargingOrderRefund.setRefundTime(LocalDateTime.now());
            chargingOrderRefund.setCode(tChargingOrder.getCode());
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
            chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
            chargingOrderRefund.setRefundCode(refundCode);
            chargingOrderRefund.setRefundTitle("后台退款");
            chargingOrderRefund.setRefundContent("后台退款");
            chargingOrderRefund.setRefundReason("后台退款");
@@ -3824,22 +3848,30 @@
                chargingOrderRefund.setRefundSerialNumber("BALANCE");
                finishManualChargingRefund(tChargingOrder, chargingOrderRefund, manualRefundAmount, balanceRefundAmount, thirdRefundAmount);
            } else if (1 == tChargingOrder.getRechargePaymentType()) {
                WxPaymentRefundModel model = new WxPaymentRefundModel();
                model.setOut_trade_no(tChargingOrder.getCode());
                model.setOut_refund_no(chargingOrderRefund.getRefundCode());
                model.setTransaction_id(tChargingOrder.getRechargeSerialNumber());
                model.setReason("取消订单");
                model.setNotify_url("/payment/wx/refund/notify");
                WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
                amount.setRefund(thirdRefundAmount.multiply(new BigDecimal(100)).intValue());
                amount.setTotal(getRefundableThirdPayAmount(tChargingOrder).multiply(new BigDecimal(100)).intValue());
                amount.setCurrency("CNY");
                model.setAmount(amount);
                R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
                if (200 == orderR.getCode()) {
                Map<String, Object> objectMap = wxPaymentClient.queryRefund(refundCode).getData();
                Map<String, Object> amount1 = null;
                if(null != objectMap && null != objectMap.get("refund_id")){
                    amount1 = (Map<String, Object>) objectMap.get("amount");
                }else{
                    WxPaymentRefundModel model = new WxPaymentRefundModel();
                    model.setOut_trade_no(tChargingOrder.getCode());
                    model.setOut_refund_no(chargingOrderRefund.getRefundCode());
                    model.setTransaction_id(tChargingOrder.getRechargeSerialNumber());
                    model.setReason("取消订单");
                    model.setNotify_url("/payment/wx/refund/notify");
                    WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
                    amount.setRefund(thirdRefundAmount.multiply(new BigDecimal(100)).intValue());
                    amount.setTotal(getRefundableThirdPayAmount(tChargingOrder).multiply(new BigDecimal(100)).intValue());
                    amount.setCurrency("CNY");
                    model.setAmount(amount);
                    R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
                    if (200 == orderR.getCode()) {
                        amount1 = (Map<String, Object>) orderR.getData().get("amount");
                    }
                }
                if (null != amount1) {
                    finishManualChargingRefund(tChargingOrder, chargingOrderRefund, manualRefundAmount, balanceRefundAmount, thirdRefundAmount);
                    //手续费
                    Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
                    Object refund_fee1 = amount1.get("refund_fee");
                    BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
                    chargingOrderRefund.setRefundFee(refund_fee);
@@ -3893,7 +3925,7 @@
            if ((shoppingOrder.getPaymentAmount().subtract(shoppingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount())) == 0) {
                shoppingOrder.setStatus(5);
            }
            String refundCode = "GWF" + shoppingOrder.getCode().substring(2);
            TShoppingOrderRefund shoppingOrderRefund = new TShoppingOrderRefund();
            shoppingOrderRefund.setShoppingOrderId(shoppingOrder.getId());
            shoppingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
@@ -3902,7 +3934,7 @@
            shoppingOrderRefund.setRefundTime(LocalDateTime.now());
            shoppingOrderRefund.setCode(shoppingOrder.getCode());
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
            shoppingOrderRefund.setRefundCode("GWF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
            shoppingOrderRefund.setRefundCode(refundCode);
            shoppingOrderRefund.setRefundTitle("后台退款");
            shoppingOrderRefund.setRefundContent("后台退款");
            shoppingOrderRefund.setRefundReason("后台退款");
@@ -3911,25 +3943,33 @@
            shoppingOrderRefund.setPayAmount(shoppingOrder.getPaymentAmount());
            if (1 == shoppingOrder.getPaymentType()) {
                WxPaymentRefundModel model = new WxPaymentRefundModel();
                model.setOut_trade_no(shoppingOrder.getCode());
                model.setOut_refund_no(shoppingOrderRefund.getRefundCode());
                model.setTransaction_id(shoppingOrder.getSerialNumber());
                model.setReason("取消订单");
                model.setNotify_url("/payment/wx/refund/notify");
                WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
                amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
                amount.setTotal(shoppingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
                amount.setCurrency("CNY");
                model.setAmount(amount);
                R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
                if (200 == orderR.getCode()) {
                Map<String, Object> objectMap = wxPaymentClient.queryRefund(refundCode).getData();
                Map<String, Object> amount1 = null;
                if(null != objectMap && null != objectMap.get("refund_id")){
                    amount1 = (Map<String, Object>) objectMap.get("amount");
                }else{
                    WxPaymentRefundModel model = new WxPaymentRefundModel();
                    model.setOut_trade_no(shoppingOrder.getCode());
                    model.setOut_refund_no(shoppingOrderRefund.getRefundCode());
                    model.setTransaction_id(shoppingOrder.getSerialNumber());
                    model.setReason("取消订单");
                    model.setNotify_url("/payment/wx/refund/notify");
                    WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
                    amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
                    amount.setTotal(shoppingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
                    amount.setCurrency("CNY");
                    model.setAmount(amount);
                    R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
                    if (200 == orderR.getCode()) {
                        amount1 = (Map<String, Object>) orderR.getData().get("amount");
                    }
                }
                if (null != amount1) {
                    shoppingOrder.setRefundStatus(2);
                    shoppingOrder.setRefundAmount((shoppingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : shoppingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
                    shoppingOrderService.updateById(shoppingOrder);
                    shoppingOrderRefundService.save(shoppingOrderRefund);
                    //手续费
                    Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
                    Object refund_fee1 = amount1.get("refund_fee");
                    BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
                    shoppingOrderRefund.setRefundFee(refund_fee);
@@ -3973,6 +4013,7 @@
            if (vipOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount()) == -1) {
                return R.fail("退款金额需小于支付金额");
            }
            String refundCode = "HYF" + vipOrder.getCode().substring(2);
            TVipOrderRefund vipOrderRefund = new TVipOrderRefund();
            vipOrderRefund.setVipOrderId(vipOrder.getId());
            vipOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
@@ -3982,8 +4023,7 @@
            vipOrderRefund.setPayType(vipOrder.getPaymentType());
            vipOrderRefund.setRefundTime(LocalDateTime.now());
            vipOrderRefund.setCode(vipOrder.getCode());
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
            vipOrderRefund.setRefundCode("HYF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
            vipOrderRefund.setRefundCode(refundCode);
            vipOrderRefund.setRefundTitle("后台退款");
            vipOrderRefund.setRefundContent("后台退款");
            vipOrderRefund.setRefundReason("后台退款");
@@ -3992,25 +4032,33 @@
            vipOrderRefund.setPayAmount(vipOrder.getPaymentAmount());
            if (1 == vipOrder.getPaymentType()) {
                WxPaymentRefundModel model = new WxPaymentRefundModel();
                model.setOut_trade_no(vipOrder.getCode());
                model.setOut_refund_no(vipOrderRefund.getRefundCode());
                model.setTransaction_id(vipOrder.getSerialNumber());
                model.setReason("取消订单");
                model.setNotify_url("/payment/wx/refund/notify");
                WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
                amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
                amount.setTotal(vipOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
                amount.setCurrency("CNY");
                model.setAmount(amount);
                R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
                if (200 == orderR.getCode()) {
                Map<String, Object> objectMap = wxPaymentClient.queryRefund(refundCode).getData();
                Map<String, Object> amount1 = null;
                if(null != objectMap && null != objectMap.get("refund_id")){
                    amount1 = (Map<String, Object>) objectMap.get("amount");
                }else{
                    WxPaymentRefundModel model = new WxPaymentRefundModel();
                    model.setOut_trade_no(vipOrder.getCode());
                    model.setOut_refund_no(vipOrderRefund.getRefundCode());
                    model.setTransaction_id(vipOrder.getSerialNumber());
                    model.setReason("取消订单");
                    model.setNotify_url("/payment/wx/refund/notify");
                    WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
                    amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
                    amount.setTotal(vipOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
                    amount.setCurrency("CNY");
                    model.setAmount(amount);
                    R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
                    if (200 == orderR.getCode()) {
                        amount1 = (Map<String, Object>) orderR.getData().get("amount");
                    }
                }
                if (null != amount1) {
                    vipOrder.setRefundStatus(2);
                    vipOrder.setRefundAmount((vipOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : vipOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
                    vipOrderService.updateById(vipOrder);
                    vipOrderRefundService.save(vipOrderRefund);
                    //手续费
                    Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
                    Object refund_fee1 = amount1.get("refund_fee");
                    BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
                    vipOrderRefund.setRefundFee(refund_fee);
@@ -5356,6 +5404,11 @@
                    throw new ServiceException("退款查询失败");
                }
                log.info("退款查询结果:{}", JSON.toJSONString(data));
                Object status = data.get("status");
                if(null == status){
                    throw new ServiceException("无退款数据");
                }
                Map<String, Object> amount = (Map<String, Object>) data.get("amount");
                TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
                chargingOrderRefund.setChargingOrderId(chargingOrder.getId());