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