From c825a6f7e52ce1d61b21c352861c1da082a9fcb6 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 13 十月 2026 17:50:24 +0800
Subject: [PATCH] 修改小程序bug

---
 ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/TVinChargingOrderAppletServiceTest.java |   81 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 81 insertions(+), 0 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/TVinChargingOrderAppletServiceTest.java b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/TVinChargingOrderAppletServiceTest.java
index 2f39d2d..04af75d 100644
--- a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/TVinChargingOrderAppletServiceTest.java
+++ b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/TVinChargingOrderAppletServiceTest.java
@@ -2,9 +2,15 @@
 
 import com.ruoyi.account.api.feignClient.VinManagementClient;
 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.TChargingGun;
+import com.ruoyi.chargingPile.api.model.TChargingPile;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.integration.api.feignClient.SendMessageClient;
+import com.ruoyi.integration.api.model.PlatformStopCharging;
 import com.ruoyi.system.api.model.LoginUserApplet;
 import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.order.api.model.TVinChargingOrder;
@@ -25,7 +31,10 @@
 import java.util.Map;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyList;
 import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.ArgumentMatchers.eq;
@@ -48,6 +57,10 @@
     private SiteClient siteClient;
     @Mock
     private ChargingGunClient chargingGunClient;
+    @Mock
+    private ChargingPileClient chargingPileClient;
+    @Mock
+    private SendMessageClient sendMessageClient;
     @Mock
     private UploadRealTimeMonitoringDataService monitoringDataService;
 
@@ -149,4 +162,72 @@
         assertTrue(service.appletDetail(1001L).isEmpty());
         verify(mapper, never()).accountingStrategyList(1001L);
     }
+
+    @Test
+    void stopChargingByAppletStopsChargingOrderForBoundVinOwner() {
+        LoginUserApplet loginUser = new LoginUserApplet();
+        loginUser.setUserId(88L);
+        when(tokenService.getLoginUserApplet()).thenReturn(loginUser);
+        when(vinManagementClient.getVinIdsByAppUserId(88L)).thenReturn(R.ok(Collections.singletonList(11L)));
+        TVinChargingOrder order = new TVinChargingOrder();
+        order.setId(1001L);
+        order.setVinId(11L);
+        order.setAppUserId(88L);
+        order.setStatus(3);
+        order.setChargingGunId(5);
+        order.setChargingPileId(7);
+        when(mapper.selectById(1001L)).thenReturn(order);
+        TChargingGun gun = new TChargingGun();
+        gun.setCode("GUN_5");
+        when(chargingGunClient.getChargingGunById(5)).thenReturn(R.ok(gun));
+        TChargingPile pile = new TChargingPile();
+        pile.setCode("PILE_7");
+        when(chargingPileClient.getChargingPileById(7)).thenReturn(R.ok(pile));
+        when(mapper.updateById(order)).thenReturn(1);
+
+        AjaxResult result = service.stopChargingByApplet("1001");
+
+        assertTrue(result.isSuccess());
+        assertEquals(4, order.getStatus());
+        assertEquals(1, order.getEndMode());
+        assertNotNull(order.getEndTime());
+        verify(sendMessageClient).platformStopCharging(any(PlatformStopCharging.class));
+    }
+
+    @Test
+    void stopChargingByAppletRejectsWhenVinNotBoundToCurrentUser() {
+        LoginUserApplet loginUser = new LoginUserApplet();
+        loginUser.setUserId(88L);
+        when(tokenService.getLoginUserApplet()).thenReturn(loginUser);
+        when(vinManagementClient.getVinIdsByAppUserId(88L)).thenReturn(R.ok(Collections.emptyList()));
+        TVinChargingOrder order = new TVinChargingOrder();
+        order.setId(1001L);
+        order.setVinId(11L);
+        when(mapper.selectById(1001L)).thenReturn(order);
+
+        AjaxResult result = service.stopChargingByApplet("1001");
+
+        assertFalse(result.isSuccess());
+        verify(sendMessageClient, never()).platformStopCharging(any(PlatformStopCharging.class));
+        verify(mapper, never()).updateById(any(TVinChargingOrder.class));
+    }
+
+    @Test
+    void stopChargingByAppletRejectsFinishedOrder() {
+        LoginUserApplet loginUser = new LoginUserApplet();
+        loginUser.setUserId(88L);
+        when(tokenService.getLoginUserApplet()).thenReturn(loginUser);
+        when(vinManagementClient.getVinIdsByAppUserId(88L)).thenReturn(R.ok(Collections.singletonList(11L)));
+        TVinChargingOrder order = new TVinChargingOrder();
+        order.setId(1001L);
+        order.setVinId(11L);
+        order.setAppUserId(88L);
+        order.setStatus(5);
+        when(mapper.selectById(1001L)).thenReturn(order);
+
+        AjaxResult result = service.stopChargingByApplet("1001");
+
+        assertFalse(result.isSuccess());
+        verify(sendMessageClient, never()).platformStopCharging(any(PlatformStopCharging.class));
+    }
 }

--
Gitblit v1.7.1