From a878aac2cc6d82a870056d8fd2bf7584fa4659ca Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期三, 09 七月 2025 19:09:26 +0800
Subject: [PATCH] 添加定时退款功能

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |   54 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 49 insertions(+), 5 deletions(-)

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 35a250f..19cee63 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
@@ -51,6 +51,7 @@
 import com.ruoyi.order.service.TChargingOrderService;
 import com.ruoyi.order.service.TOrderEvaluateService;
 import com.ruoyi.order.service.*;
+import com.ruoyi.order.util.RedisLock;
 import com.ruoyi.order.util.mongodb.service.PlatformStartChargingReplyService;
 import com.ruoyi.order.util.mongodb.service.TransactionRecordService;
 import com.ruoyi.order.util.mongodb.service.UploadRealTimeMonitoringDataService;
@@ -71,10 +72,14 @@
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.api.feignClient.SysUserClient;
 import io.seata.spring.annotation.GlobalTransactional;
+import org.redisson.Redisson;
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
@@ -221,6 +226,9 @@
 	private ITChargingOrderSummaryDataService chargingOrderSummaryDataService;
 	@Resource
 	private TOrderAppealService orderAppealService;
+	
+	@Autowired
+	private RedissonClient redissonClient;
 
 
 
@@ -2278,12 +2286,18 @@
 	 */
 	@Override
 	public R endChargeBillingCharge(TransactionRecordMessageVO vo) {
-		Boolean hasKey = redisService.hasKey("endOrder:" + vo.getTransaction_serial_number());
-		if(hasKey){
+		RLock lock = redissonClient.getLock("endOrder:" + vo.getTransaction_serial_number());
+		boolean tryLock = false;
+		try {
+			tryLock = lock.tryLock(100, TimeUnit.SECONDS);
+		} catch (InterruptedException e) {
+			e.printStackTrace();
+			lock.unlock();
 			return R.ok();
 		}
-		//添加1分钟的缓存
-		redisService.setCacheObject("endOrder:" + vo.getTransaction_serial_number(), vo.getTransaction_serial_number(), 1L, TimeUnit.MINUTES);
+		if(!tryLock){
+			return R.ok();
+		}
 		try {
 			TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
 			if(null == chargingOrder){
@@ -2763,7 +2777,7 @@
 		}catch (Exception e) {
 			e.printStackTrace();
 		}finally {
-			redisService.deleteObject("endOrder:" + vo.getTransaction_serial_number());
+			lock.unlock();
 		}
 		return R.ok();
 	}
@@ -4279,4 +4293,34 @@
 		return this.baseMapper.getSumDegreeBySiteIds(siteIds);
 
 	}
+	
+	
+	/**
+	 * 获取启动失败且时间超过1小时的订单
+	 * @return
+	 */
+	@Override
+	public List<TChargingOrder> findFailedStartupOrder() {
+		return this.baseMapper.findFailedStartupOrder();
+	}
+	
+	
+	/**
+	 * 获取停止中的数据
+	 * @return
+	 */
+	@Override
+	public List<TChargingOrder> findStoppedOrder() {
+		return this.baseMapper.findStoppedOrder();
+	}
+	
+	
+	/**
+	 * 获取充电中的数据
+	 * @return
+	 */
+	@Override
+	public List<TChargingOrder> findChargingOrder() {
+		return this.baseMapper.findChargingOrder();
+	}
 }

--
Gitblit v1.7.1