Pu Zhibing
4 天以前 dca440a3ffc59710656931de97f797c4e13c5f3f
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;
@@ -1027,7 +1035,7 @@
         }
         if(3 == rechargePaymentType){
            RefundReq dto = new RefundReq();
            dto.setOutTradeNo(chargingOrder.getCode());
            dto.setOutTradeNo(chargingOrder.getRechargeSerialNumber());
            dto.setOutRequestNo(chargingOrderRefund.getCode());
            dto.setRefundAmount(rechargeAmount.toString());
            dto.setRefundReason("充电失败,取消充电订单");
@@ -1124,7 +1132,7 @@
         }
         if(3 == rechargePaymentType){
            RefundReq dto = new RefundReq();
            dto.setOutTradeNo(chargingOrder.getCode());
            dto.setOutTradeNo(chargingOrder.getRechargeSerialNumber());
            dto.setOutRequestNo(chargingOrderRefund.getCode());
            dto.setRefundAmount(money.toString());
            dto.setRefundReason("充电完成退款");
@@ -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){
@@ -2718,7 +2732,7 @@
               }
               if(3 == rechargePaymentType){
                  RefundReq dto = new RefundReq();
                  dto.setOutTradeNo(chargingOrder.getCode());
                  dto.setOutTradeNo(chargingOrder.getRechargeSerialNumber());
                  dto.setOutRequestNo(chargingOrderRefund.getRefundCode());
                  dto.setRefundAmount(refundAmount.toString());
                  dto.setRefundReason("充电完成退款");
@@ -2763,7 +2777,7 @@
      }catch (Exception e) {
         e.printStackTrace();
      }finally {
         redisService.deleteObject("endOrder:" + vo.getTransaction_serial_number());
         lock.unlock();
      }
      return R.ok();
   }
@@ -2935,7 +2949,7 @@
            }
            if(3 == tChargingOrder.getRechargePaymentType()){
               RefundReq dto = new RefundReq();
               dto.setOutTradeNo(tChargingOrder.getCode());
               dto.setOutTradeNo(tChargingOrder.getRechargeSerialNumber());
               dto.setOutRequestNo(tChargingOrder.getCode());
               dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
               dto.setRefundReason("取消订单");
@@ -3015,20 +3029,20 @@
                  shoppingOrderRefundService.save(chargingOrderRefund);
               }
            }
            if(3 == tChargingOrder.getPaymentType()){
               RefundReq dto = new RefundReq();
               dto.setOutTradeNo(tChargingOrder.getCode());
               dto.setOutRequestNo(tChargingOrder.getCode());
               dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
               dto.setRefundReason("取消订单");
               RefundResp resp = h5AliPaymentClient.refund(dto).getData();
               if(null != resp){
                  tChargingOrder.setRefundStatus(2);
                  tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
                  shoppingOrderService.updateById(tChargingOrder);
                  shoppingOrderRefundService.save(chargingOrderRefund);
               }
            }
//            if(3 == tChargingOrder.getPaymentType()){
//               RefundReq dto = new RefundReq();
//               dto.setOutTradeNo(tChargingOrder.getCode());
//               dto.setOutRequestNo(tChargingOrder.getCode());
//               dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
//               dto.setRefundReason("取消订单");
//               RefundResp resp = h5AliPaymentClient.refund(dto).getData();
//               if(null != resp){
//                  tChargingOrder.setRefundStatus(2);
//                  tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
//                  shoppingOrderService.updateById(tChargingOrder);
//                  shoppingOrderRefundService.save(chargingOrderRefund);
//               }
//            }
         }
@@ -3094,20 +3108,20 @@
               vipOrderRefundService.save(chargingOrderRefund);
            }
         }
         if(3 == tChargingOrder.getPaymentType()){
            RefundReq dto = new RefundReq();
            dto.setOutTradeNo(tChargingOrder.getCode());
            dto.setOutRequestNo(tChargingOrder.getCode());
            dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
            dto.setRefundReason("取消订单");
            RefundResp resp = h5AliPaymentClient.refund(dto).getData();
            if(null != resp){
               tChargingOrder.setRefundStatus(2);
               tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
               vipOrderService.updateById(tChargingOrder);
               vipOrderRefundService.save(chargingOrderRefund);
            }
         }
//         if(3 == tChargingOrder.getPaymentType()){
//            RefundReq dto = new RefundReq();
//            dto.setOutTradeNo(tChargingOrder.getCode());
//            dto.setOutRequestNo(tChargingOrder.getCode());
//            dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
//            dto.setRefundReason("取消订单");
//            RefundResp resp = h5AliPaymentClient.refund(dto).getData();
//            if(null != resp){
//               tChargingOrder.setRefundStatus(2);
//               tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
//               vipOrderService.updateById(tChargingOrder);
//               vipOrderRefundService.save(chargingOrderRefund);
//            }
//         }
      }
      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();
   }
}