puzhibing
2024-09-27 0ce1f94a0f262a8831f8eb9fd5cf67422dd1d69b
合併代碼
3个文件已修改
38 ■■■■■ 已修改文件
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
@@ -274,14 +274,14 @@
     */
    @PostMapping("/cancelShoppingOrderWxRefund")
    public void cancelShoppingOrderWxRefund(HttpServletRequest request) {
        WxRefundNotifyResp data = wxPaymentClient.refundNotify(request).getData();
        if (null != data) {
            String out_refund_no = data.getOut_refund_no();
            String refund_id = data.getRefund_id();
            String tradeState = data.getTradeState();
            String success_time = data.getSuccess_time();
            shoppingOrderService.cancelShoppingOrderWxRefund(out_refund_no, refund_id, tradeState, success_time);
        }
//        WxRefundNotifyResp data = wxPaymentClient.refundNotify(request).getData();
//        if (null != data) {
//            String out_refund_no = data.getOut_refund_no();
//            String refund_id = data.getRefund_id();
//            String tradeState = data.getTradeState();
//            String success_time = data.getSuccess_time();
//            shoppingOrderService.cancelShoppingOrderWxRefund(out_refund_no, refund_id, tradeState, success_time);
//        }
    }
    
    
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -550,7 +550,9 @@
        //根据当前充值的金额和计费模板算出充电的金额
        BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
        BigDecimal rechargeAmount1 = new BigDecimal(rechargeAmount.toString());
        Long now = System.currentTimeMillis();
        SimpleDateFormat sdf = new SimpleDateFormat("HHmm");
        Long now = Long.valueOf(sdf.format(new Date()));
        Long nowTimeMillis = System.currentTimeMillis();
        //根据支付金额,获取出使用的计费策略明细
        //计算电费金额和服务费
        BigDecimal serviceCharge = BigDecimal.ZERO;
@@ -559,20 +561,27 @@
        BigDecimal discount = chargingOrder.getVipDiscount();
        //先根据额定功率计算出每秒充电度数,然后计算出支付金额能充多少度电
        TChargingGun tChargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
        BigDecimal s_degrees = tChargingGun.getRatedPower().divide(new BigDecimal(3600));
        BigDecimal s_degrees = tChargingGun.getRatedPower().divide(new BigDecimal(3600), 6, RoundingMode.HALF_EVEN);
        TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
        List<AccountingStrategyDetailOrder> list = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
        for (AccountingStrategyDetailOrder accountingStrategyDetailOrder : list) {
            AccountingStrategyOrder accountingStrategyOrder = accountingStrategyOrderClient.getAccountingStrategyOrderById(accountingStrategyDetailOrder.getAccountingStrategyOrderId()).getData();
            Integer start = Integer.valueOf(accountingStrategyDetailOrder.getStartTime().replaceAll(":", ""));
            Integer end = Integer.valueOf(accountingStrategyDetailOrder.getEndTime().replaceAll(":", ""));
            String[] split = accountingStrategyDetailOrder.getEndTime().split(":");
            if(now >= start){
            if(now >= start && now < end){
                Calendar calendar = Calendar.getInstance();
                calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
                calendar.set(Calendar.MINUTE, Integer.valueOf(split[1]));
                //到此策略结束的秒数
                long m = (calendar.getTimeInMillis() - now) / 1000;
                if(null == nowTimeMillis){
                    String[] split1 = accountingStrategyDetailOrder.getStartTime().split(":");
                    Calendar calendar1 = Calendar.getInstance();
                    calendar1.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0]));
                    calendar1.set(Calendar.MINUTE, Integer.valueOf(split1[1]));
                    nowTimeMillis = calendar.getTimeInMillis();
                }
                long m = (calendar.getTimeInMillis() - nowTimeMillis) / 1000;
                //每度电的单价
                BigDecimal total_unit = accountingStrategyDetailOrder.getElectrovalence().add(accountingStrategyDetailOrder.getServiceCharge());
                //每秒需要支付的金额
@@ -585,6 +594,7 @@
                    serviceCharge = accountingStrategyDetailOrder.getServiceCharge().multiply(s_degrees).multiply(new BigDecimal(m));
                    discountAmount = discountAmount.add(serviceCharge.multiply((new BigDecimal(10).subtract(discount)).divide(new BigDecimal(10))));
                    rechargeAmount1 = rechargeAmount1.subtract(multiply.multiply(new BigDecimal(m)));
                    nowTimeMillis = null;
                }else{
                    electrovalence = accountingStrategyDetailOrder.getElectrovalence().multiply(s_degrees).multiply(new BigDecimal(times));
                    serviceCharge = accountingStrategyDetailOrder.getServiceCharge().multiply(s_degrees).multiply(new BigDecimal(times));
ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java
@@ -142,7 +142,7 @@
                    System.err.println("----充电支付回调");
                    break;
            }
            wxV3Pay.ack();
            return R.ok(params);
        } catch (Exception e) {
            log.error("支付回调异常:{}", e, e);