Pu Zhibing
2025-03-06 1b81b84edaeea9b200c622e4a34c49b4b1aaac92
修改bug和漏洞修复
5个文件已修改
441 ■■■■ 已修改文件
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java 364 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TVipServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -2266,4 +2266,6 @@
        return chargingOrderService.getNotPaymentChargingOrder();
    }
    
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -648,21 +648,19 @@
                        long times = rechargeAmount1.divide(s_total_amount, 0, RoundingMode.DOWN).longValue();
                        if(times > m){
                            //充电时间跨度两个计费策略,需要继续对下一个策略进行计算
                            serviceCharge = s_server_amount.multiply(new BigDecimal(m));
                            serviceCharge = serviceCharge.add(s_server_amount.multiply(new BigDecimal(m)));
                            rechargeAmount1 = rechargeAmount1.subtract(s_total_amount.multiply(new BigDecimal(m)));
                            if(null != discount){
                                discountAmount = discountAmount.add(serviceCharge.multiply(new BigDecimal(1).subtract(discount)));
                            }
                            nowTimeMillis = null;
                        }else{
                            serviceCharge = s_server_amount.multiply(new BigDecimal(times));
                            if(null != discount){
                                discountAmount = discountAmount.add(serviceCharge.multiply(new BigDecimal(1).subtract(discount)));
                            }
                            serviceCharge = serviceCharge.add(s_server_amount.multiply(new BigDecimal(times)));
                            break;
                        }
                    }
                }
                if(null != discount){
                    discountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(discount));
                }
                if(discountAmount.compareTo(BigDecimal.ZERO) >= 0){
                    //计算会员最大优惠金额
                    TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
@@ -673,9 +671,12 @@
                    }
                }
                discountAmount = discountAmount.setScale(4, RoundingMode.HALF_EVEN);
                if(discountAmount.compareTo(BigDecimal.ZERO) >= 0){
                    data.setChargeNum(data.getChargeNum() - 1);
                    appUserVipDetailClient.updateAppUserVipDetail(data);
                }
            }
        }
        
        //机子上显示的金额为用户充值的金额+会员折扣金额
        BigDecimal account_balance = chargingOrder.getRechargeAmount().add(discountAmount).setScale(4, RoundingMode.HALF_EVEN);
@@ -924,6 +925,18 @@
                    BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
                    chargingOrderRefund.setRefundFee(refund_fee);
                    chargingOrderRefundService.updateById(chargingOrderRefund);
                    //回退会员折扣次数
                    if(chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0){
                        TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
                        GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
                        getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
                        getAppUserVipDetail.setVipId(appUser.getVipId());
                        TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
                        if(null != data){
                            data.setChargeNum(data.getChargeNum() + 1);
                            appUserVipDetailClient.updateAppUserVipDetail(data);
                        }
                    }
                }
            }
            if(2 == rechargePaymentType){
@@ -935,6 +948,19 @@
                RefundResp resp = aliPaymentClient.refund(dto).getData();
                if(null != resp){
                    chargingOrderRefundService.save(chargingOrderRefund);
                    //回退会员折扣次数
                    if(chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO) > 0){
                        TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
                        GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
                        getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
                        getAppUserVipDetail.setVipId(appUser.getVipId());
                        TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
                        if(null != data){
                            data.setChargeNum(data.getChargeNum() + 1);
                            appUserVipDetailClient.updateAppUserVipDetail(data);
                        }
                    }
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
@@ -2075,10 +2101,10 @@
        if(null == chargingOrder){
            return R.ok();
        }
//        Integer status = chargingOrder.getStatus();
//        if(status == 5){
//            return R.ok();
//        }
        Integer status = chargingOrder.getStatus();
        if(status == 5){
            return R.ok();
        }
        
        //如果使用优惠券需要判断优惠券是否满足使用条件
        //根据实际的充电金额计算退款金额   退回费用=(原金额/总金额)*(总金额-实际充电金额)
@@ -3728,7 +3754,6 @@
        chargingOrder.setStatus(2);
        chargingOrder.setPayTime(LocalDateTime.now());
        chargingOrder.setChargeAmount(chargingOrder.getRechargeAmount());
        chargingOrder.setVipDiscountAmount(BigDecimal.ZERO);
        this.save(chargingOrder);
        
        Integer accountingStrategyId = tChargingGun.getAccountingStrategyId();
ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java
@@ -1,182 +1,182 @@
//package com.ruoyi.order;
//
//import com.alibaba.fastjson2.JSON;
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.ruoyi.account.api.feignClient.*;
//import com.ruoyi.account.api.model.TAppUserCar;
//import com.ruoyi.chargingPile.api.feignClient.*;
//import com.ruoyi.chargingPile.api.model.Site;
//import com.ruoyi.chargingPile.api.model.TChargingGun;
//import com.ruoyi.chargingPile.api.model.TChargingPile;
//import com.ruoyi.common.core.web.domain.AjaxResult;
//import com.ruoyi.common.redis.service.RedisService;
//import com.ruoyi.common.security.service.TokenService;
//import com.ruoyi.integration.api.feignClient.*;
//import com.ruoyi.integration.api.model.ChargingHandshake;
//import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
//import com.ruoyi.order.api.feignClient.AccountingStrategyDetailOrderClient;
//import com.ruoyi.order.api.model.TChargingOrder;
//import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
//import com.ruoyi.order.api.vo.AccountingStrategyDetailOrderVo;
//import com.ruoyi.order.api.vo.ChargingOrderInfoVO;
//import com.ruoyi.order.api.vo.TransactionRecordMessageVO;
//import com.ruoyi.order.dto.ChargingDetails;
//import com.ruoyi.order.dto.MyChargingOrderInfo;
//import com.ruoyi.order.mapper.TSettlementConfirmMapper;
//import com.ruoyi.order.service.*;
//import com.ruoyi.order.vo.EndOfChargePageInfo;
//import com.ruoyi.other.api.feignClient.IntegralRuleClient;
//import com.ruoyi.other.api.feignClient.UserTagClient;
//import com.ruoyi.other.api.feignClient.VipClient;
//import com.ruoyi.payment.api.feignClient.AliPaymentClient;
//import com.ruoyi.payment.api.feignClient.WxPaymentClient;
//import org.junit.jupiter.api.Test;
//import org.springframework.boot.test.context.SpringBootTest;
//
//import javax.annotation.Resource;
//import java.io.PrintWriter;
//import java.math.BigDecimal;
//import java.util.*;
//
//@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiOrderApplication.class)
//public class RuoYiOrderApplicationTests {
//
//    @Resource
//    private TChargingOrderService chargingOrderService;
//
//    @Resource
//    private ChargingGunClient chargingGunClient;
//    @Resource
//    private TSettlementConfirmMapper tSettlementConfirmMapper;
//
//    @Resource
//    private SiteClient siteClient;
//
//    @Resource
//    private AppUserCarClient appUserCarClient;
//    @Resource
//    private AppUserClient appUserClient;
//
//    @Resource
//    private ChargingPileClient chargingPileClient;
//
//    @Resource
//    private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
//
//    @Resource
//    private TokenService tokenService;
//
//    @Resource
//    private WxPaymentClient wxPaymentClient;
//
//    @Resource
//    private AliPaymentClient aliPaymentClient;
//
//    @Resource
//    private AppCouponClient appCouponClient;
//
//    @Resource
//    private AppUserVipDetailClient appUserVipDetailClient;
//
//    @Resource
//    private RedisService redisService;
//
//    @Resource
//    private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient;
//
//    @Resource
//    private ChargingHandshakeClient chargingHandshakeClient;
//
//    @Resource
//    private SendMessageClient sendMessageClient;
//
//    @Resource
//    private TOrderEvaluateService orderEvaluateService;
//
//    @Resource
//    private AccountingStrategyDetailClient accountingStrategyDetailClient;
//
//    @Resource
//    private AccountingStrategyDetailOrderClient accountingStrategyDetailOrderClient;
//
//    @Resource
//    private AccountingStrategyClient accountingStrategyClient;
//
//    @Resource
//    private PlatformStartChargingReplyClient platformStartChargingReplyClient;
//
//    @Resource
//    private TChargingOrderRefundService chargingOrderRefundService;
//
//    @Resource
//    private PlatformStopChargingReplyClient platformStopChargingReplyClient;
//
//    @Resource
//    private AccountingStrategyOrderService accountingStrategyOrderService;
//
//    @Resource
//    private AccountingStrategyDetailOrderService accountingStrategyDetailOrderService;
//
//    @Resource
//    private InviteUserClient inviteUserClient;
//
//    @Resource
//    private AppUserIntegralChangeClient appUserIntegralChangeClient;
//
//    @Resource
//    private IntegralRuleClient integralRuleClient;
//
//    @Resource
//    private VipClient vipClient;
//
//    @Resource
//    private UserTagClient userTagClient;
//
//    @Resource
//    private AppUserTagClient appUserTagClient;
//
//    @Resource
//    private SecurityDetectionClient securityDetectionClient;
//
//
//    @Test
//    public void test(){
//        TransactionRecordMessageVO vo = JSON.parseObject("{\n" +
//                "\t\"charging_gun_code\": \"01\",\n" +
//                "\t\"charging_pile_code\": \"2024123100001005\",\n" +
//                "\t\"end_time\": \"2025-03-04 00:00:43.00\",\n" +
//                "\t\"flat_amount2\": 0.000000,\n" +
//                "\t\"flat_amount4\": 0.000000,\n" +
//                "\t\"flat_amount6\": 2.350000,\n" +
//                "\t\"flat_charge2\": 0.000000,\n" +
//                "\t\"flat_charge4\": 0.000000,\n" +
//                "\t\"flat_charge6\": 1.989000,\n" +
//                "\t\"loss_peak_charge3\": 0,\n" +
//                "\t\"loss_peak_charge5\": 0,\n" +
//                "\t\"loss_total_electricity\": 0,\n" +
//                "\t\"loss_valley_charge1\": 0,\n" +
//                "\t\"loss_valley_charge7\": 0,\n" +
//                "\t\"payment_amount\": 27.320000,\n" +
//                "\t\"peak_amount3\": 0.000000,\n" +
//                "\t\"peak_amount5\": 0.000000,\n" +
//                "\t\"peak_charge3\": 0.000000,\n" +
//                "\t\"peak_charge5\": 0.000000,\n" +
//                "\t\"physical_card_number\": \"1234567812345678\",\n" +
//                "\t\"result\": \"{\\\"service_id\\\":\\\"transaction_record\\\",\\\"transaction_serial_number\\\":\\\"CD38820250303225620557\\\",\\\"charging_pile_code\\\":\\\"2024123100001005\\\",\\\"charging_gun_code\\\":\\\"01\\\",\\\"start_time\\\":\\\"2025-03-03 22:56:18.00\\\",\\\"end_time\\\":\\\"2025-03-04 00:00:43.00\\\",\\\"valley_charge1\\\":\\\"0.066000\\\",\\\"loss_valley_charge1\\\":\\\"0\\\",\\\"valley_amount1\\\":\\\"0.040000\\\",\\\"flat_charge2\\\":\\\"0.000000\\\",\\\"loss_flat_charg2\\\":\\\"0\\\",\\\"flat_amount2\\\":\\\"0.000000\\\",\\\"peak_charge3\\\":\\\"0.000000\\\",\\\"loss_peak_charge3\\\":\\\"0\\\",\\\"peak_amount3\\\":\\\"0.000000\\\",\\\"flat_charge4\\\":\\\"0.000000\\\",\\\"loss_flat_charg4\\\":\\\"0\\\",\\\"flat_amount4\\\":\\\"0.000000\\\",\\\"peak_charge5\\\":\\\"0.000000\\\",\\\"loss_peak_charge5\\\":\\\"0\\\",\\\"peak_amount5\\\":\\\"0.000000\\\",\\\"flat_charge6\\\":\\\"1.989000\\\",\\\"loss_flat_charg6\\\":\\\"0\\\",\\\"flat_amount6\\\":\\\"2.350000\\\",\\\"valley_charge7\\\":\\\"33.103000\\\",\\\"loss_valley_charge7\\\":\\\"0\\\",\\\"valley_amount7\\\":\\\"24.910000\\\",\\\"total_electricity\\\":\\\"35.158001\\\",\\\"loss_total_electricity\\\":\\\"0\\\",\\\"payment_amount\\\":\\\"27.320000\\\",\\\"trade_date\\\":\\\"0\\\",\\\"stop_reason\\\":\\\"1\\\",\\\"physical_card_number\\\":\\\"1234567812345678\\\"}\",\n" +
//                "\t\"retryTimes\": 0,\n" +
//                "\t\"sendTime\": 1741017648977,\n" +
//                "\t\"serviceId\": \"transaction_record\",\n" +
//                "\t\"source\": \"\",\n" +
//                "\t\"start_time\": \"2025-03-03 22:56:18.00\",\n" +
//                "\t\"stop_reason\": 1,\n" +
//                "\t\"total_electricity\": 35.158001,\n" +
//                "\t\"trade_date\": \"0\",\n" +
//                "\t\"transaction_serial_number\": \"CD38820250303225620557\",\n" +
//                "\t\"valley_amount1\": 0.040000,\n" +
//                "\t\"valley_amount7\": 24.910000,\n" +
//                "\t\"valley_charge1\": 0.066000,\n" +
//                "\t\"valley_charge7\": 33.103000\n" +
//                "}", TransactionRecordMessageVO.class);
//        chargingOrderService.endChargeBillingCharge(vo);
//    }
//}
package com.ruoyi.order;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.account.api.feignClient.*;
import com.ruoyi.account.api.model.TAppUserCar;
import com.ruoyi.chargingPile.api.feignClient.*;
import com.ruoyi.chargingPile.api.model.Site;
import com.ruoyi.chargingPile.api.model.TChargingGun;
import com.ruoyi.chargingPile.api.model.TChargingPile;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.integration.api.feignClient.*;
import com.ruoyi.integration.api.model.ChargingHandshake;
import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
import com.ruoyi.order.api.feignClient.AccountingStrategyDetailOrderClient;
import com.ruoyi.order.api.model.TChargingOrder;
import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
import com.ruoyi.order.api.vo.AccountingStrategyDetailOrderVo;
import com.ruoyi.order.api.vo.ChargingOrderInfoVO;
import com.ruoyi.order.api.vo.TransactionRecordMessageVO;
import com.ruoyi.order.dto.ChargingDetails;
import com.ruoyi.order.dto.MyChargingOrderInfo;
import com.ruoyi.order.mapper.TSettlementConfirmMapper;
import com.ruoyi.order.service.*;
import com.ruoyi.order.vo.EndOfChargePageInfo;
import com.ruoyi.other.api.feignClient.IntegralRuleClient;
import com.ruoyi.other.api.feignClient.UserTagClient;
import com.ruoyi.other.api.feignClient.VipClient;
import com.ruoyi.payment.api.feignClient.AliPaymentClient;
import com.ruoyi.payment.api.feignClient.WxPaymentClient;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.*;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiOrderApplication.class)
public class RuoYiOrderApplicationTests {
    @Resource
    private TChargingOrderService chargingOrderService;
    @Resource
    private ChargingGunClient chargingGunClient;
    @Resource
    private TSettlementConfirmMapper tSettlementConfirmMapper;
    @Resource
    private SiteClient siteClient;
    @Resource
    private AppUserCarClient appUserCarClient;
    @Resource
    private AppUserClient appUserClient;
    @Resource
    private ChargingPileClient chargingPileClient;
    @Resource
    private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
    @Resource
    private TokenService tokenService;
    @Resource
    private WxPaymentClient wxPaymentClient;
    @Resource
    private AliPaymentClient aliPaymentClient;
    @Resource
    private AppCouponClient appCouponClient;
    @Resource
    private AppUserVipDetailClient appUserVipDetailClient;
    @Resource
    private RedisService redisService;
    @Resource
    private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient;
    @Resource
    private ChargingHandshakeClient chargingHandshakeClient;
    @Resource
    private SendMessageClient sendMessageClient;
    @Resource
    private TOrderEvaluateService orderEvaluateService;
    @Resource
    private AccountingStrategyDetailClient accountingStrategyDetailClient;
    @Resource
    private AccountingStrategyDetailOrderClient accountingStrategyDetailOrderClient;
    @Resource
    private AccountingStrategyClient accountingStrategyClient;
    @Resource
    private PlatformStartChargingReplyClient platformStartChargingReplyClient;
    @Resource
    private TChargingOrderRefundService chargingOrderRefundService;
    @Resource
    private PlatformStopChargingReplyClient platformStopChargingReplyClient;
    @Resource
    private AccountingStrategyOrderService accountingStrategyOrderService;
    @Resource
    private AccountingStrategyDetailOrderService accountingStrategyDetailOrderService;
    @Resource
    private InviteUserClient inviteUserClient;
    @Resource
    private AppUserIntegralChangeClient appUserIntegralChangeClient;
    @Resource
    private IntegralRuleClient integralRuleClient;
    @Resource
    private VipClient vipClient;
    @Resource
    private UserTagClient userTagClient;
    @Resource
    private AppUserTagClient appUserTagClient;
    @Resource
    private SecurityDetectionClient securityDetectionClient;
    @Test
    public void test(){
        TransactionRecordMessageVO vo = JSON.parseObject("{\n" +
                "\t\"charging_gun_code\": \"01\",\n" +
                "\t\"charging_pile_code\": \"2024123100001005\",\n" +
                "\t\"end_time\": \"2025-03-04 00:00:43.00\",\n" +
                "\t\"flat_amount2\": 0.000000,\n" +
                "\t\"flat_amount4\": 0.000000,\n" +
                "\t\"flat_amount6\": 2.350000,\n" +
                "\t\"flat_charge2\": 0.000000,\n" +
                "\t\"flat_charge4\": 0.000000,\n" +
                "\t\"flat_charge6\": 1.989000,\n" +
                "\t\"loss_peak_charge3\": 0,\n" +
                "\t\"loss_peak_charge5\": 0,\n" +
                "\t\"loss_total_electricity\": 0,\n" +
                "\t\"loss_valley_charge1\": 0,\n" +
                "\t\"loss_valley_charge7\": 0,\n" +
                "\t\"payment_amount\": 27.320000,\n" +
                "\t\"peak_amount3\": 0.000000,\n" +
                "\t\"peak_amount5\": 0.000000,\n" +
                "\t\"peak_charge3\": 0.000000,\n" +
                "\t\"peak_charge5\": 0.000000,\n" +
                "\t\"physical_card_number\": \"1234567812345678\",\n" +
                "\t\"result\": \"{\\\"service_id\\\":\\\"transaction_record\\\",\\\"transaction_serial_number\\\":\\\"CD38820250303225620557\\\",\\\"charging_pile_code\\\":\\\"2024123100001005\\\",\\\"charging_gun_code\\\":\\\"01\\\",\\\"start_time\\\":\\\"2025-03-03 22:56:18.00\\\",\\\"end_time\\\":\\\"2025-03-04 00:00:43.00\\\",\\\"valley_charge1\\\":\\\"0.066000\\\",\\\"loss_valley_charge1\\\":\\\"0\\\",\\\"valley_amount1\\\":\\\"0.040000\\\",\\\"flat_charge2\\\":\\\"0.000000\\\",\\\"loss_flat_charg2\\\":\\\"0\\\",\\\"flat_amount2\\\":\\\"0.000000\\\",\\\"peak_charge3\\\":\\\"0.000000\\\",\\\"loss_peak_charge3\\\":\\\"0\\\",\\\"peak_amount3\\\":\\\"0.000000\\\",\\\"flat_charge4\\\":\\\"0.000000\\\",\\\"loss_flat_charg4\\\":\\\"0\\\",\\\"flat_amount4\\\":\\\"0.000000\\\",\\\"peak_charge5\\\":\\\"0.000000\\\",\\\"loss_peak_charge5\\\":\\\"0\\\",\\\"peak_amount5\\\":\\\"0.000000\\\",\\\"flat_charge6\\\":\\\"1.989000\\\",\\\"loss_flat_charg6\\\":\\\"0\\\",\\\"flat_amount6\\\":\\\"2.350000\\\",\\\"valley_charge7\\\":\\\"33.103000\\\",\\\"loss_valley_charge7\\\":\\\"0\\\",\\\"valley_amount7\\\":\\\"24.910000\\\",\\\"total_electricity\\\":\\\"35.158001\\\",\\\"loss_total_electricity\\\":\\\"0\\\",\\\"payment_amount\\\":\\\"27.320000\\\",\\\"trade_date\\\":\\\"0\\\",\\\"stop_reason\\\":\\\"1\\\",\\\"physical_card_number\\\":\\\"1234567812345678\\\"}\",\n" +
                "\t\"retryTimes\": 0,\n" +
                "\t\"sendTime\": 1741017648977,\n" +
                "\t\"serviceId\": \"transaction_record\",\n" +
                "\t\"source\": \"\",\n" +
                "\t\"start_time\": \"2025-03-03 22:56:18.00\",\n" +
                "\t\"stop_reason\": 1,\n" +
                "\t\"total_electricity\": 35.158001,\n" +
                "\t\"trade_date\": \"0\",\n" +
                "\t\"transaction_serial_number\": \"CD38820250303225620557\",\n" +
                "\t\"valley_amount1\": 0.040000,\n" +
                "\t\"valley_amount7\": 24.910000,\n" +
                "\t\"valley_charge1\": 0.066000,\n" +
                "\t\"valley_charge7\": 33.103000\n" +
                "}", TransactionRecordMessageVO.class);
        chargingOrderService.endChargeBillingCharge(vo);
    }
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
@@ -344,17 +344,29 @@
    @ApiOperation(value = "购买会员", tags = {"小程序-个人中心"})
    @GetMapping("/vipInfo/pay")
    public Object vipInfoPay(@RequestParam("vipId")Integer vipId,@RequestParam("buyType") Integer buyType,
        @RequestParam("payType") Integer payType
    ) {
        @RequestParam("payType") Integer payType) {
        LocalDateTime now = LocalDateTime.now();
        TVip byId = vipService.getById(vipId);
        if (byId==null){
            return R.ok("当前会员不存在,请刷新后重试。");
        }
        if(byId.getReveal() == 0){
            return R.ok("无效的会员");
        }
        if(1 == buyType && byId.getMonthlyCardDiscountReveal() == 0){
            return R.ok("无效的会员");
        }
        if(2 == buyType && byId.getSeasonCardDiscountReveal() == 0){
            return R.ok("无效的会员");
        }
        if(3 == buyType && byId.getAnnualCardReveal() == 0){
            return R.ok("无效的会员");
        }
        BigDecimal payMoney = BigDecimal.ZERO;
        BigDecimal discountMoney = BigDecimal.ZERO;
        BigDecimal discount = BigDecimal.ZERO;
        LocalDateTime now = LocalDateTime.now();
        switch (buyType){
            case 1:
                if (byId.getMonthlyCardDiscountStart()!=null&&(now.isAfter(byId.getMonthlyCardDiscountStart())&&now.isBefore(byId.getMonthlyCardDiscountEnd()))){
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TVipServiceImpl.java
@@ -124,7 +124,7 @@
            paymentOrder.setAmount(shopOrder.getPaymentAmount());
            paymentOrder.setOpenId(user.getWxOpenid());
            paymentOrder.setDescription("购买会员");
            return    AjaxResult.success(wxPaymentClient.orderPay(paymentOrder).getData());
            return AjaxResult.success(wxPaymentClient.orderPay(paymentOrder).getData());
        }else {
            AliPaymentReq req = new AliPaymentReq();
            req.setOutTradeNo(shopOrder.getCode());