无关风月
2024-09-07 531c94e27fd3dc2abe8ad72485f66e9e141a0bae
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -38,10 +38,7 @@
import com.ruoyi.order.api.query.ChargingOrderQuery;
import com.ruoyi.order.api.query.SettlementListQuery;
import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
import com.ruoyi.order.api.vo.ChargingOrderListVO;
import com.ruoyi.order.api.vo.ChargingOrderTimeVO;
import com.ruoyi.order.api.vo.ChargingOrderVO;
import com.ruoyi.order.api.vo.TCharingOrderVO;
import com.ruoyi.order.api.vo.*;
import com.ruoyi.order.dto.*;
import com.ruoyi.order.mapper.TChargingOrderMapper;
import com.ruoyi.order.mapper.TSettlementConfirmMapper;
@@ -104,7 +101,7 @@
   private ChargingGunClient chargingGunClient;
   @Resource
   private TSettlementConfirmMapper tSettlementConfirmMapper;
   @Resource
   private SiteClient siteClient;
@@ -128,7 +125,7 @@
   
   @Resource
   private AliPaymentClient aliPaymentClient;
   @Resource
   private AppCouponClient appCouponClient;
@@ -447,6 +444,7 @@
               chargingOrder.setVipDiscountAmount(discountAmount);
            }
         }
      }
      this.save(chargingOrder);
@@ -598,7 +596,7 @@
               preChargeCheck1.setFailureCause(failure_cause);
               //启动失败后取消订单,退款操作
               refund(code);
               order.setStatus(5);
               order.setStatus(-1);
               order.setEndMode(0);
            }else{
               preChargeCheck1.setStartupSuccess(2);
@@ -1332,10 +1330,10 @@
      return chargingOrderTimeVO;
   }
   @Override
   public R payRefund(PayOrderRefundDto payOrderQueryDto) {
      return null;
   }
//   @Override
//   public R payRefund(PayOrderRefundDto payOrderQueryDto) {
//      return null;
//   }
   @Override
   public ChargingOrderListInfoVO chargingInfo(String uid) {
@@ -1387,6 +1385,7 @@
      chargingOrderListInfoVO.setList1(list);
      return chargingOrderListInfoVO;
   }
   /**
    * 处理充电订单实时监控数据相关的业务逻辑
@@ -1556,6 +1555,89 @@
      endCharge(orderCode, 0);
   }
   @Override
   public R payRefund(PayOrderRefundDto payOrderQueryDto) {
         if (payOrderQueryDto.getType()==1){
            TChargingOrder tChargingOrder = this.baseMapper.selectById(payOrderQueryDto.getOrderId());
            TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
            chargingOrderRefund.setChargingOrderId(tChargingOrder.getId());
            chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
            chargingOrderRefund.setRefundStatus(1);
            chargingOrderRefund.setPayType(tChargingOrder.getRechargePaymentType());
            chargingOrderRefund.setRefundTime(LocalDateTime.now());
            chargingOrderRefund.setCode(tChargingOrder.getCode());
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
            chargingOrderRefund.setRefundCode("GDF" + sdf.format(new Date()) + (Math.random() * 1000));
            chargingOrderRefund.setRefundTitle("后台退款");
            chargingOrderRefund.setRefundContent("后台退款");
            chargingOrderRefund.setRefundReason("后台退款");
            chargingOrderRefund.setRefundRemark("后台退款");
            chargingOrderRefund.setRefundTotalAmount(tChargingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount()));
            chargingOrderRefund.setPayAmount(tChargingOrder.getPaymentAmount());
            if(1 == tChargingOrder.getRechargePaymentType()){
               WxPaymentRefundModel model = new WxPaymentRefundModel();
               model.setOut_trade_no(tChargingOrder.getCode());
               model.setOut_refund_no(chargingOrderRefund.getRefundCode());
               model.setTransaction_id(tChargingOrder.getRechargeSerialNumber());
               model.setReason("取消订单");
               model.setNotify_url("http://127.0.0.1:9000/order/t-shopping-order/cancelShoppingOrderWxRefund");
               WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
               amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
               amount.setTotal(tChargingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
               amount.setCurrency("CNY");
               model.setAmount(amount);
               R<String> orderR = wxPaymentClient.refundOrderR(model);
               if(200 == orderR.getCode()){
                  chargingOrderRefundService.save(chargingOrderRefund);
               }
            }
            if(2 == tChargingOrder.getRechargePaymentType()){
               RefundReq dto = new RefundReq();
               dto.setOutTradeNo(tChargingOrder.getCode());
               dto.setOutRequestNo(tChargingOrder.getCode());
               dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
               dto.setRefundReason("取消订单");
               RefundResp resp = aliPaymentClient.refund(dto).getData();
               if(null != resp){
                  SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
                     chargingOrderRefundService.save(chargingOrderRefund);
               }
            }
         }
      return null;
   }
   /**
    * 根据车牌号和开始时间查询充电数据
    * @param query
    * @return
    */
   @Override
   public TChargingOrder getChargingOrderByLicensePlate(GetChargingOrderByLicensePlate query) {
      TAppUserCar appUserCar = appUserCarClient.getAppUserCarByLicensePlate(query.getLicensePlate()).getData();
      if(null == appUserCar){
         return null;
      }
      TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserCarId, appUserCar.getId())
            .eq(TChargingOrder::getDelFlag, 0).gt(TChargingOrder::getStartTime, query.getStartTime())
            .eq(TChargingOrder::getRechargePaymentStatus, 2).ne(TChargingOrder::getStatus, -1));
      return one;
   }
   @Override
   public TSettlementConfirm settlementAdd(SettlementConfirmAdd dto) {
      List<Site> data = siteClient.getSiteByIds(Arrays.asList(dto.getSiteId())).getData();