From 5c3d044bb3b0bdaf170e683d97992d5773ea706d Mon Sep 17 00:00:00 2001
From: zhibing.pu <393733352@qq.com>
Date: 星期六, 31 八月 2024 14:52:59 +0800
Subject: [PATCH] 完善功能

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |   65 +++++++++++++++++++++++++-------
 1 files changed, 51 insertions(+), 14 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 e8b1df8..ad94c84 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
@@ -10,10 +10,12 @@
 import com.ruoyi.account.api.model.TAppUserCar;
 import com.ruoyi.account.api.model.TAppUserVipDetail;
 import com.ruoyi.account.api.vo.GetAppUserVipDetail;
+import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient;
 import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient;
 import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient;
 import com.ruoyi.chargingPile.api.feignClient.SiteClient;
 import com.ruoyi.chargingPile.api.model.Site;
+import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
 import com.ruoyi.chargingPile.api.model.TChargingGun;
 import com.ruoyi.chargingPile.api.model.TChargingPile;
 import com.ruoyi.common.core.domain.R;
@@ -31,6 +33,7 @@
 import com.ruoyi.order.api.model.TChargingOrder;
 import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
 import com.ruoyi.order.api.model.TChargingOrderRefund;
+import com.ruoyi.order.api.model.TOrderEvaluate;
 import com.ruoyi.order.api.query.ChargingOrderQuery;
 import com.ruoyi.order.api.vo.ChargingOrderVO;
 import com.ruoyi.order.api.vo.TCharingOrderVO;
@@ -38,6 +41,7 @@
 import com.ruoyi.order.mapper.TChargingOrderMapper;
 import com.ruoyi.order.service.TChargingOrderAccountingStrategyService;
 import com.ruoyi.order.service.TChargingOrderService;
+import com.ruoyi.order.service.TOrderEvaluateService;
 import com.ruoyi.payment.api.feignClient.AliPaymentClient;
 import com.ruoyi.payment.api.feignClient.WxPaymentClient;
 import com.ruoyi.payment.api.vo.*;
@@ -110,6 +114,12 @@
 	@Resource
 	private SendMessageClient sendMessageClient;
 	
+	@Resource
+	private TOrderEvaluateService orderEvaluateService;
+	
+	@Resource
+	private AccountingStrategyDetailClient accountingStrategyDetailClient;
+	
 	
 	
 
@@ -140,6 +150,9 @@
 			BigDecimal payMoney = tChargingOrder.getStatus() < 4 ? tChargingOrder.getRechargeAmount() : tChargingOrder.getPaymentAmount();
 			myChargingOrderList.setPayMoney(payMoney);
 			myChargingOrderList.setCreateTime(tChargingOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+			long count = orderEvaluateService.count(new LambdaQueryWrapper<TOrderEvaluate>().eq(TOrderEvaluate::getOrderType, 1)
+					.eq(TOrderEvaluate::getOrderId, tChargingOrder.getId()).eq(TOrderEvaluate::getDelFlag, 0));
+			myChargingOrderList.setEvaluate(count + 1L);
 			orderLists.add(myChargingOrderList);
 		}
 		list = this.baseMapper.getMyChargingOrderList(appUserId, query.getType(), null, null);
@@ -248,6 +261,8 @@
 			BigDecimal payMoney = tChargingOrder.getStatus() < 4 ? tChargingOrder.getRechargeAmount() : tChargingOrder.getPaymentAmount();
 			myChargingOrderList.setPayMoney(payMoney);
 			myChargingOrderList.setCreateTime(tChargingOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+			myChargingOrderList.setElectricCharge(tChargingOrder.getElectrovalence());
+			myChargingOrderList.setServiceCharge(tChargingOrder.getServiceCharge());
 			list.add(myChargingOrderList);
 		}
 		return list;
@@ -425,21 +440,43 @@
 		//根据当前充值的金额和计费模板算出充电的金额
 		BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
 		//计算充电金额,会员需要将折扣金额加入到充电总金额中
+		TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
+		TAccountingStrategyDetail strategyDetail = accountingStrategyDetailClient.getNowData(chargingGun.getAccountingStrategyId()).getData();
+		//总单价
+		BigDecimal totalUnitPrice = strategyDetail.getServiceCharge().add(strategyDetail.getElectrovalence());
+		//计算能充电的度数
+		BigDecimal degrees = rechargeAmount.divide(totalUnitPrice);
+		//计算电费金额和服务费
+		BigDecimal serviceCharge = strategyDetail.getServiceCharge().multiply(degrees);
+		BigDecimal electrovalence = strategyDetail.getElectrovalence().multiply(degrees);
 		
-//		TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
-//		if(){
-//			appUser.getVipId()
-//		}
-//
-//
-//		//调用远程启动充电消息
-//		PlatformStartCharging platformStartCharging = new PlatformStartCharging();
-//		platformStartCharging.setTransaction_serial_number(chargingOrder.getCode());
-//		platformStartCharging.setCharging_pile_code();
-//		platformStartCharging.setCharging_gun_code();
-//		platformStartCharging.setCard_number();
-//		platformStartCharging.setAccount_balance()
-//		sendMessageClient.platformStartCharging(platformStartCharging);
+		//再处理会员折扣
+		BigDecimal discount = BigDecimal.ZERO;
+		TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
+		if(null != appUser.getVipId()){
+			GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+			getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
+			getAppUserVipDetail.setVipId(appUser.getVipId());
+			TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
+			if(data.getChargeNum() > 0){
+				discount = serviceCharge.multiply(data.getDiscount().divide(new BigDecimal(10)));
+				data.setChargeNum(data.getChargeNum() - 1);
+				appUserVipDetailClient.
+			}
+		}
+		electrovalence = electrovalence.add(discount);
+
+		//调用远程启动充电消息
+		PlatformStartCharging platformStartCharging = new PlatformStartCharging();
+		platformStartCharging.setTransaction_serial_number(chargingOrder.getCode());
+		platformStartCharging.setCharging_pile_code();
+		platformStartCharging.setCharging_gun_code();
+		platformStartCharging.setCard_number();
+		platformStartCharging.setAccount_balance(electrovalence);
+		sendMessageClient.platformStartCharging(platformStartCharging);
+		//异步线程检测远程启动的应答结果。如果失败,则需要全额退款
+		
+		
 		return AjaxResult.success();
 	}
 	

--
Gitblit v1.7.1