From 1b81b84edaeea9b200c622e4a34c49b4b1aaac92 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 06 三月 2025 15:28:19 +0800
Subject: [PATCH] 修改bug和漏洞修复

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |   53 ++++-
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java              |   20 ++
 ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java             |  364 ++++++++++++++++++++++----------------------
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TVipServiceImpl.java           |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java    |    2 
 5 files changed, 240 insertions(+), 201 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
index f102abb..f269681 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -2266,4 +2266,6 @@
         return chargingOrderService.getNotPaymentChargingOrder();
     }
     
+ 
+    
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index e50aeb3..9910897 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/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();
diff --git a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java
index cd8aa3b..e7c089c 100644
--- a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java
+++ b/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);
+	}
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
index 27ccbfa..e6d49d2 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
+++ b/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()))){
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TVipServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TVipServiceImpl.java
index ef7f4b5..47fb78a 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TVipServiceImpl.java
+++ b/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());

--
Gitblit v1.7.1