From e031959940a80792a60e2d8b83499cd168fa83d6 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 12 三月 2026 17:18:18 +0800
Subject: [PATCH] 修改事务注解

---
 xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java                 |   10 -
 xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserNotificationServiceImpl.java     |    4 
 xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysUserController.java                             |    8 +
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTradingStrategyServiceImpl.java            |    5 
 xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/task/VehicleDocumentExpiryTask.java              |    1 
 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleDetectionController.java          |    5 
 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehiclePreparationController.java        |    5 
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java                |    3 
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java                  |    5 +
 xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysGroupServiceImpl.java                         |    8 +
 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java                      |    6 
 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleCleanController.java              |    5 
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java                     |    8 +
 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java                   |    9 +
 xp-robotaxi-gateway-boot/pom.xml                                                                                          |   28 ----
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/SysDictTypeServiceImpl.java                  |    5 
 xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysUserServiceImpl.java                          |   14 ++
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpPointManagementController.java               |    9 -
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpElectronicFenceController.java               |   10 -
 xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java                           |    5 +
 xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpPolicyApplicationServiceImpl.java |    1 
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpSystemSettingServiceImpl.java              |    2 
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRideGuideServiceImpl.java                  |    5 
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java                              |   16 ++
 xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java                 |    6 +
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpCruisePlanServiceImpl.java                 |   11 +
 xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java           |   11 -
 xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetServiceImpl.java             |    9 +
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpElectronicFenceServiceImpl.java            |    9 +
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpFrequentlyAskedQuestionsServiceImpl.java   |    5 
 xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpSystemSettingServiceImpl.java                   |    2 
 xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java                           |   13 +-
 xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysRoleBakServiceImplBak.java                    |   17 ++-
 xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceServiceImpl.java                 |    7 +
 34 files changed, 160 insertions(+), 107 deletions(-)

diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysUserController.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysUserController.java
index 07e6b94..3748718 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysUserController.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysUserController.java
@@ -24,6 +24,8 @@
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.apache.commons.lang3.ArrayUtils;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
@@ -282,7 +284,8 @@
     }
 
     @PostMapping("/updateSysUser")
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public R<Boolean> updateSysUser(@RequestBody SysUser sysUser) {
         try {
             sysUser.setUpdateBy(SecurityUtils.getUsername());
@@ -449,7 +452,8 @@
      */
     @ResponseBody
     @PostMapping("/addSysUser")
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public R<Long> addSysUser(@RequestBody SysUser user) {
 //        if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
 //            throw new RuntimeException("手机号已开通账号");
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysGroupServiceImpl.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysGroupServiceImpl.java
index a8a0198..ee2562c 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysGroupServiceImpl.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysGroupServiceImpl.java
@@ -28,6 +28,8 @@
 import com.xiaopeng.common.security.utils.SecurityUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.beans.BeanUtils;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -61,7 +63,8 @@
      * @param dto 新增权限组请求
      */
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void addGroup(SysGroupAddDTO dto) {
         // 校验组名唯一性
         if (!checkGroupNameUnique(dto.getGroupName(), null)) {
@@ -83,7 +86,8 @@
      * @param dto 编辑权限组请求
      */
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void editGroup(SysGroupEditDTO dto) {
         // 校验权限组是否存在
         SysGroup existGroup = this.getById(dto.getId());
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysRoleBakServiceImplBak.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysRoleBakServiceImplBak.java
index e307d4d..b5e479e 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysRoleBakServiceImplBak.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysRoleBakServiceImplBak.java
@@ -14,6 +14,8 @@
 import com.xiaopeng.account.mapper.SysUserRoleMapper;
 import com.xiaopeng.account.service.ISysRoleBakService;
 import com.xiaopeng.api.model.account.*;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -205,7 +207,8 @@
 	 * @return 结果
 	 */
 	@Override
-	@Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
 	public int insertRole(SysRoleBak role) {
 		// 新增角色信息
 		roleMapper.insertRole(role);
@@ -219,7 +222,8 @@
 	 * @return 结果
 	 */
 	@Override
-	@Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
 	public int updateRole(SysRoleBak role) {
 		// 修改角色信息
 //        roleMapper.updateRole(role);
@@ -246,7 +250,8 @@
 	 * @return 结果
 	 */
 	@Override
-	@Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
 	public int authDataScope(SysRoleBak role) {
 		// 修改角色信息
 		roleMapper.updateRole(role);
@@ -320,7 +325,8 @@
 	 * @return 结果
 	 */
 	@Override
-	@Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
 	public int deleteRoleById(Long roleId) {
 		// 删除角色与菜单关联
 		roleMenuMapper.deleteRoleMenuByRoleId(roleId);
@@ -336,7 +342,8 @@
 	 * @return 结果
 	 */
 	@Override
-	@Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
 	public int deleteRoleByIds(Long[] roleIds) {
 		for (Long roleId : roleIds) {
 			checkRoleAllowed(new SysRoleBak(roleId));
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysUserServiceImpl.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysUserServiceImpl.java
index 9855bdb..3cef6a2 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysUserServiceImpl.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysUserServiceImpl.java
@@ -14,6 +14,8 @@
 import com.xiaopeng.common.core.utils.StringUtils;
 import com.xiaopeng.common.core.web.page.PageInfo;
 import com.xiaopeng.common.security.service.TokenService;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -157,7 +159,8 @@
 	 * @return 结果
 	 */
 	@Override
-	@Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
 	public int insertUser(SysUser user) {
 		// 新增用户信息
 //		int rows = userMapper.insertUser(user);
@@ -177,7 +180,8 @@
 	 * @return 结果
 	 */
 	@Override
-	@Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
 	public int updateUser(SysUser user) {
 		return userMapper.updateUser(user);
 	}
@@ -189,7 +193,8 @@
 	 * @param roleIds 角色组
 	 */
 	@Override
-	@Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
 	public void insertUserAuth(Long userId, Long[] roleIds) {
 		userRoleMapper.deleteUserRoleByUserId(userId);
 		insertUserRole(userId, roleIds);
@@ -244,7 +249,8 @@
 	 * @return 结果
 	 */
 	@Override
-	@Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
 	public int deleteUserByIds(Long[] userIds) {
 		for (Long userId : userIds) {
 			SysUser sysUser = new SysUser();
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserNotificationServiceImpl.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserNotificationServiceImpl.java
index 9782c46..aeef453 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserNotificationServiceImpl.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserNotificationServiceImpl.java
@@ -49,8 +49,8 @@
         return pageInfo;
     }
     @Override
-//    @Transactional(rollbackFor = Exception.class)
-//    @ShardingSphereTransactionType(TransactionType.BASE)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void addNotificationBatch(List<XpOperationsUserNotification> notifications) {
         saveBatch(notifications);
     }
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java
index d0f7881..a6b0699 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java
@@ -34,6 +34,8 @@
 import com.xiaopeng.common.security.utils.SecurityUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -178,8 +180,10 @@
         return vo;
     }
 
-    @Transactional(rollbackFor = Exception.class)
+
     @Override
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void saveCertificate(XpOperationsUserDTO dto) {
         XpOperationsUser xpOperationsUser = BeanUtil.copyProperties(dto, XpOperationsUser.class);
         updateById(xpOperationsUser);
diff --git a/xp-robotaxi-gateway-boot/pom.xml b/xp-robotaxi-gateway-boot/pom.xml
index ff261da..64c3918 100644
--- a/xp-robotaxi-gateway-boot/pom.xml
+++ b/xp-robotaxi-gateway-boot/pom.xml
@@ -38,31 +38,15 @@
         </dependency>
 
         <!-- SpringCloud Alibaba Nacos -->
-        <!--<dependency>
+        <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
-        </dependency>-->
+        </dependency>
 
         <!-- SpringCloud Alibaba Nacos Config -->
-        <!--<dependency>
+        <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
-        </dependency>-->
-        <dependency>
-            <groupId>com.xiaopeng.logan</groupId>
-            <artifactId>logan2-namor-client</artifactId>
-            <version>1.16.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.xiaopeng.logan</groupId>
-            <artifactId>logan-starter-core</artifactId>
-            <version>2.3.5</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.springframework.boot</groupId>
-                    <artifactId>spring-boot-starter-web</artifactId>
-                </exclusion>
-            </exclusions>
         </dependency>
 
         <!-- SpringCloud Alibaba Sentinel -->
@@ -165,15 +149,11 @@
     </dependencies>
 
     <build>
-        <!--<finalName>${project.artifactId}</finalName>-->
+        <finalName>${project.artifactId}</finalName>
         <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
-                <configuration>
-                    <classifier>exec</classifier>
-                    <executable>true</executable>
-                </configuration>
                 <executions>
                     <execution>
                         <goals>
diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
index cde62f6..8d4c967 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
@@ -26,6 +26,8 @@
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
 import org.springframework.data.mongodb.core.query.Criteria;
@@ -78,7 +80,6 @@
 
     @ApiOperation(value = "事故任务确认到达", tags = "运维APP-任务中心")
     @GetMapping("/api/v1/task/confirmArrive")
-    @Transactional
     public R confirmArrive(Long id) {
         Long userId = tokenService.getLoginOperationUser().getXpOperationsUser().getId();
         return xpTaskService.confirmArrive(id, userId);
@@ -182,9 +183,10 @@
         return xpTaskService.cleanDetail(id);
     }
 
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     @ApiOperation(value = "处理车辆事故", tags = "运维APP-任务中心")
     @PostMapping("/api/v1/task/handleVehicleAccident")
-    @Transactional
     public R handleVehicleAccident(@RequestBody HandleVehicleAccidentDto dto) {
         LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser();
         XpOperationsUser xpOperationsUser = loginOperationUser.getXpOperationsUser();
diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleCleanController.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleCleanController.java
index 52bf763..fd1e430 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleCleanController.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleCleanController.java
@@ -17,6 +17,8 @@
 import com.xiaopeng.maintenance.service.XpTaskService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
@@ -55,7 +57,8 @@
     /**
      * 车辆运维-车辆运维-车身清洁
      */
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     @ApiOperation(value = "车辆运维-车辆运维-车身清洁", tags = {"运维APP-车辆管理"})
     @PostMapping("/api/v1/vehicleClean/add")
     public R<String> add(@RequestBody XpVehicleCleanDTO dto) {
diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleDetectionController.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleDetectionController.java
index 90cab63..2043acc 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleDetectionController.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleDetectionController.java
@@ -15,6 +15,8 @@
 import com.xiaopeng.maintenance.service.XpTaskService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
@@ -72,7 +74,8 @@
     /**
      * 车辆详情-车辆运维-车辆检测提交
      */
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     @ApiOperation(value = "车辆运维-车辆运维-车辆检测提交", tags = {"运维APP-车辆管理"})
     @PostMapping("/api/v1/vehicleDetection/saveDetection")
     public R<String> saveDetection(@RequestBody XpVehicleDetectionDTO dto) {
diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehiclePreparationController.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehiclePreparationController.java
index 9607961..ee9d716 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehiclePreparationController.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehiclePreparationController.java
@@ -14,6 +14,8 @@
 import com.xiaopeng.maintenance.service.XpTaskService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
@@ -46,7 +48,8 @@
     /**
      * 车辆详情-车辆运维-车辆整备
      */
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     @ApiOperation(value = "车辆运维-车辆运维-车辆整备", tags = {"运维APP-车辆管理"})
     @PostMapping("/api/v1/vehiclePreparation/savePreparation")
     public R<String> savePreparation(@RequestBody XpVehiclePreparationDTO dto) {
diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
index 0f80441..5d2f7e9 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
@@ -49,6 +49,8 @@
 import com.xiaopeng.maintenance.utils.UUIDUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.BeanUtils;
@@ -185,8 +187,11 @@
         return pageInfo;
     }
 
-    @Transactional(rollbackFor = Exception.class)
+
+
     @Override
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void saveVehicleAccident(SaveVehicleAccidentDto dto, XpOperationsUser xpOperationsUser) {
         XpTask xpTask = new XpTask();
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
@@ -797,6 +802,8 @@
     }
 
     @Override
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public R confirmArrive(Long id, Long userId) {
         RLock lock = redissonClient.getLock("TASK_CONFIRM_" + id);
 
diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java
index 53b4552..208c58c 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java
@@ -96,8 +96,6 @@
      */
     @PostMapping("/add")
     @ApiOperation(value = "新增电子围栏")
-//    @Transactional
-//    @ShardingSphereTransactionType(TransactionType.BASE)
     public R add(@Validated @RequestBody ElectronicFenceAddDto dto) {
         return xpElectronicFenceService.addElectronic(dto);
     }
@@ -110,8 +108,6 @@
     @PostMapping("/updateStatus")
     @ResponseBody
     @ApiOperation(value = "修改状态")
-//    @Transactional
-//    @ShardingSphereTransactionType(TransactionType.BASE)
     public R updateStatus(@RequestBody ElectronicFenceAreaUpdateStatusDto dto) {
         XpElectronicFenceArea electronicFenceArea = xpElectronicFenceAreaService.getById(dto.getId());
         if (electronicFenceArea == null) {
@@ -150,8 +146,6 @@
      */
     @PostMapping("/edit")
     @ApiOperation(value = "编辑电子围栏")
-//    @Transactional
-//    @ShardingSphereTransactionType(TransactionType.BASE)
     public R edit(@Validated @RequestBody ElectronicFenceUpdateDto dto) {
         return xpElectronicFenceService.editElectronic(dto);
     }
@@ -161,8 +155,8 @@
      */
     @PostMapping("/copy")
     @ApiOperation(value = "复制电子围栏")
-//    @Transactional
-//    @ShardingSphereTransactionType(TransactionType.BASE)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public R<Long> copy(@RequestParam("id") Integer id) {
         XpElectronicFence electronicFence = xpElectronicFenceService.getById(id);
         if (electronicFence.getStatus()==2){
diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java
index 42f0251..5f32645 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java
@@ -25,7 +25,10 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.beans.BeanUtils;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
@@ -148,8 +151,6 @@
     @PostMapping("/add")
     @ResponseBody
     @ApiOperation(value = "新增点位")
-//    @Transactional
-//    @ShardingSphereTransactionType(TransactionType.BASE)
     public R<XpPoint> add(@Validated @RequestBody PointAddDto pointAddDto) {
         return R.ok(xpPointService.addPointWithGeneratedNumber(pointAddDto));
     }
@@ -160,8 +161,6 @@
     @GetMapping("/deletePoint")
     @ResponseBody
     @ApiOperation(value = "删除点位")
-//    @Transactional
-//    @ShardingSphereTransactionType(TransactionType.BASE)
     public R deletePoint(@RequestParam("ids") String ids) {
         xpPointService.removeBatchByIds(Arrays.stream(ids.split(",")).map(Long::parseLong).collect(Collectors.toList()));
         return R.ok();
@@ -172,8 +171,8 @@
      */
     @PostMapping("/edit")
     @ApiOperation(value = "编辑点位")
-//    @Transactional
-//    @ShardingSphereTransactionType(TransactionType.BASE)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public R edit(@Validated @RequestBody PointUpdateDto pointAddDto) {
         XpPoint xpPoint = xpPointService.getById(pointAddDto.getId());
         if (!xpPoint.getElectronicAreaId().equals(pointAddDto.getElectronicAreaId())) {
@@ -203,8 +202,6 @@
      */
     @PostMapping("/enableDisable")
     @ApiOperation(value = "启用/禁用")
-//    @Transactional
-//    @ShardingSphereTransactionType(TransactionType.BASE)
     public R enableDisable(@RequestBody XpPointEnableDisableDto dto) {
         XpPoint xpPoint = xpPointService.getById(dto.getId());
         xpPoint.setOperationStatus(dto.getOperationStatus());
diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceServiceImpl.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceServiceImpl.java
index b4be938..7d7be61 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceServiceImpl.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceServiceImpl.java
@@ -31,6 +31,8 @@
 import com.xiaopeng.map.utils.PolygonOverlapService;
 import lombok.extern.slf4j.Slf4j;
 import net.sourceforge.pinyin4j.PinyinHelper;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.locationtech.jts.geom.Coordinate;
 import org.locationtech.jts.geom.GeometryFactory;
 import org.locationtech.jts.geom.LinearRing;
@@ -42,6 +44,7 @@
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.awt.geom.Point2D;
@@ -195,6 +198,8 @@
         return pinyinInitials.toString();
     }
     @Override
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public R addElectronic(ElectronicFenceAddDto dto) {
         // 获取现有的运营区域(areaType=1)
         LambdaQueryWrapper<XpElectronicFenceArea> xpElectronicFenceAreaLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -383,6 +388,8 @@
     }
 
     @Override
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public R editElectronic(ElectronicFenceUpdateDto dto) {
             // 获取现有的运营区域(areaType=1),排除当前正在编辑的电子围栏
             LambdaQueryWrapper<XpElectronicFenceArea> xpElectronicFenceAreaLambdaQueryWrapper = new LambdaQueryWrapper<>();
diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java
index d9c0c52..a13d498 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java
@@ -39,11 +39,14 @@
 import com.xiaopeng.map.vo.OrderDistanceVo;
 import lombok.extern.slf4j.Slf4j;
 import net.sourceforge.pinyin4j.PinyinHelper;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.time.LocalTime;
@@ -88,6 +91,8 @@
     private RedissonClient redissonClient;
 
     @Override
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public XpPoint addPointWithGeneratedNumber(PointAddDto pointAddDto) {
         if (pointAddDto == null) {
             throw new ServiceException("参数不能为空", I18nKeyConstant.SYSTEM_EXCEPTION);
diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpSystemSettingServiceImpl.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpSystemSettingServiceImpl.java
index fae6d58..ef0c32d 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpSystemSettingServiceImpl.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpSystemSettingServiceImpl.java
@@ -46,7 +46,7 @@
         return 15;
     }
 
-    @Transactional(rollbackFor = Exception.class)
+
     @Override
     public void saveSystemSetting(XpSystemSetting xpSystemSetting) {
         saveOrUpdate(xpSystemSetting);
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpElectronicFenceController.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpElectronicFenceController.java
index e92d0c3..1af5b19 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpElectronicFenceController.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpElectronicFenceController.java
@@ -84,8 +84,6 @@
      */
     @PostMapping("/add")
     @ApiOperation(value = "新增电子围栏")
-//    @Transactional
-//    @ShardingSphereTransactionType(TransactionType.BASE)
     public R add(@Validated @RequestBody ElectronicFenceAddDto dto) {
         return xpElectronicFenceService.addElectronic(dto);
     }
@@ -98,8 +96,6 @@
     @PostMapping("/updateStatus")
     @ResponseBody
     @ApiOperation(value = "修改状态")
-//    @Transactional
-//    @ShardingSphereTransactionType(TransactionType.BASE)
     public R updateStatus(@RequestBody ElectronicFenceAreaUpdateStatusDto dto) {
         XpElectronicFenceArea electronicFenceArea = xpElectronicFenceAreaService.getById(dto.getId());
         if (electronicFenceArea == null) {
@@ -138,8 +134,6 @@
      */
     @PostMapping("/edit1")
     @ApiOperation(value = "编辑电子围栏")
-//    @Transactional
-//    @ShardingSphereTransactionType(TransactionType.BASE)
     public R edit(@Validated @RequestBody ElectronicFenceUpdateDto dto) {
         return xpElectronicFenceService.editElectronic(dto);
     }
@@ -149,8 +143,8 @@
      */
     @PostMapping("/copy")
     @ApiOperation(value = "复制电子围栏")
-//    @Transactional
-//    @ShardingSphereTransactionType(TransactionType.BASE)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public R<Long> copy(@RequestParam("id") Integer id) {
         XpElectronicFence electronicFence = xpElectronicFenceService.getById(id);
         if (electronicFence.getStatus()==2){
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java
index 9a53ade..7114ce3 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java
@@ -27,6 +27,8 @@
 import io.swagger.annotations.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.context.MessageSource;
 import org.springframework.context.i18n.LocaleContextHolder;
 import org.springframework.transaction.annotation.Transactional;
@@ -82,7 +84,6 @@
     @PostMapping("/api/v1/invitation/add")
     @ResponseBody
     @ApiOperation(value = "生成邀请码")
-    @Transactional
     public R add(@RequestBody InvitationAddDto dto){
         long existing = xpInvitationCodeService.count();
         long incoming = Arrays.stream(Optional.ofNullable(dto.getPhones()).orElse("").split(","))
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpPointManagementController.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpPointManagementController.java
index f933b07..d6a06a9 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpPointManagementController.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpPointManagementController.java
@@ -84,12 +84,9 @@
     /**
      * 新增点位
      */
-    @Transactional(rollbackFor = Exception.class)
     @PostMapping("/addPoint")
     @ResponseBody
     @ApiOperation(value = "新增点位")
-//    @Transactional
-//    @ShardingSphereTransactionType(TransactionType.BASE)
     public R add(@Validated  @RequestBody PointAddDto pointAddDto) {
         XpPoint xpPoint = new XpPoint();
         BeanUtils.copyProperties(pointAddDto, xpPoint);
@@ -102,8 +99,6 @@
     @GetMapping("/deletePoint")
     @ResponseBody
     @ApiOperation(value = "删除点位")
-//    @Transactional
-//    @ShardingSphereTransactionType(TransactionType.BASE)
     public R deletePoint(@RequestParam("ids") String ids) {
         xpPointService.removeBatchByIds(Arrays.stream(ids.split(",")).map(Long::parseLong).collect(Collectors.toList()));
         return R.ok();
@@ -113,8 +108,6 @@
      */
     @PostMapping("/editPoint")
     @ApiOperation(value = "编辑点位")
-//    @Transactional
-//    @ShardingSphereTransactionType(TransactionType.BASE)
     public R edit(@Validated@RequestBody PointUpdateDto pointAddDto) {
         XpPoint xpPoint = new XpPoint();
         BeanUtils.copyProperties(pointAddDto, xpPoint);
@@ -134,8 +127,6 @@
      */
     @PostMapping("/enableDisablePoint")
     @ApiOperation(value = "启用/禁用")
-//    @Transactional
-//    @ShardingSphereTransactionType(TransactionType.BASE)
     public R enableDisable(@RequestBody XpPointEnableDisableDto dto) {
         XpPoint xpPoint = xpPointService.getById(dto.getId());
         xpPoint.setOperationStatus(dto.getOperationStatus());
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java
index cc0f9ea..bedcc93 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java
@@ -32,6 +32,8 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -104,7 +106,6 @@
     @PostMapping("/api/v1/whitelist/add")
     @ResponseBody
     @ApiOperation(value = "新增白名单")
-    @Transactional
     public R add(@Validated @RequestBody WhitelistAddDto dto) {
         if (!StringUtils.hasLength(dto.getAccount())) {
             return R.fail("请输入账号");
@@ -198,9 +199,12 @@
         }
     }
 
+
+
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     @Log(title = "白名单导入", businessType = BusinessType.IMPORT)
     @ApiOperation(value = "白名单导入")
-    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
     @PostMapping("/base/v1/whitelist/importExcel")
     public AjaxResult<String> importExcel(@RequestParam("file") MultipartFile file) {
 
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/SysDictTypeServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/SysDictTypeServiceImpl.java
index c58a680..110e969 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/SysDictTypeServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/SysDictTypeServiceImpl.java
@@ -10,6 +10,8 @@
 import com.xiaopeng.operation.mapper.SysDictDataMapper;
 import com.xiaopeng.operation.mapper.SysDictTypeMapper;
 import com.xiaopeng.operation.service.ISysDictTypeService;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -190,7 +192,8 @@
      * @return 结果
      */
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public int updateDictType(SysDictType dict)
     {
         SysDictType oldDict = dictTypeMapper.selectDictTypeById(dict.getDictId());
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpCruisePlanServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpCruisePlanServiceImpl.java
index cf628db..e7e5d2d 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpCruisePlanServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpCruisePlanServiceImpl.java
@@ -28,6 +28,8 @@
 import com.xiaopeng.operation.vo.XpCruisePlanVehicleVO;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -77,7 +79,8 @@
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void add(XpCruisePlanAddDTO dto) {
         //1.校验巡游计划名称
         validatePlanName(dto.getPlanName(), null);
@@ -105,7 +108,8 @@
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void edit(XpCruisePlanEditDTO dto) {
         if (dto.getId() == null) {
             throw new ServiceException("巡游计划ID不能为空", I18nKeyConstant.CRUISE_PLAN_ID_EMPTY);
@@ -142,7 +146,8 @@
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void deleteById(Long id) {
         xpCruisePlanPointService.lambdaUpdate()
                 .eq(XpCruisePlanPoint::getCruisePlanId, id)
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpElectronicFenceServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpElectronicFenceServiceImpl.java
index ca57a99..3c413b7 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpElectronicFenceServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpElectronicFenceServiceImpl.java
@@ -33,6 +33,8 @@
 import com.xiaopeng.operation.utils.PolygonOverlapService;
 import lombok.extern.slf4j.Slf4j;
 import net.sourceforge.pinyin4j.PinyinHelper;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.geo.Point;
 import org.springframework.data.mongodb.core.MongoTemplate;
@@ -40,6 +42,7 @@
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
@@ -114,7 +117,11 @@
         }
         return pinyinInitials.toString();
     }
+
+
     @Override
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public R addElectronic(ElectronicFenceAddDto dto) {
         try {
             // 获取现有的运营区域(areaType=1)
@@ -296,6 +303,8 @@
     }
 
     @Override
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public R editElectronic(ElectronicFenceUpdateDto dto) {
         try {
             // 获取现有的运营区域(areaType=1),排除当前正在编辑的电子围栏
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpFrequentlyAskedQuestionsServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpFrequentlyAskedQuestionsServiceImpl.java
index 194ec8c..42963d2 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpFrequentlyAskedQuestionsServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpFrequentlyAskedQuestionsServiceImpl.java
@@ -5,6 +5,8 @@
 import com.xiaopeng.operation.mapper.XpFrequentlyAskedQuestionsMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xiaopeng.operation.service.IXpFrequentlyAskedQuestionsService;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -20,8 +22,9 @@
  */
 @Service
 public class XpFrequentlyAskedQuestionsServiceImpl extends ServiceImpl<XpFrequentlyAskedQuestionsMapper, XpFrequentlyAskedQuestions> implements IXpFrequentlyAskedQuestionsService {
-    @Transactional(rollbackFor = Exception.class)
     @Override
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void saveQuestion(XpFrequentlyAskedQuestionsDTO dto) {
         //先删除原有的常见问题
         remove(null);
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRideGuideServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRideGuideServiceImpl.java
index 04df95a..78730a2 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRideGuideServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRideGuideServiceImpl.java
@@ -9,6 +9,8 @@
 import com.xiaopeng.operation.service.XpRideGuideService;
 import com.xiaopeng.operation.vo.XpRideGuideNextVo;
 import com.xiaopeng.operation.vo.XpRideGuideVo;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -53,8 +55,9 @@
      * 保存乘车指南
      * @param dto
      */
-    @Transactional(rollbackFor = Exception.class)
     @Override
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void saveGuide(XpRideGuideDTO dto) {
         //根据类型删除已配置的乘车指南
         lambdaUpdate().remove();
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpSystemSettingServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpSystemSettingServiceImpl.java
index 3ddacab..099a186 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpSystemSettingServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpSystemSettingServiceImpl.java
@@ -54,7 +54,7 @@
         return 15;
     }
 
-    @Transactional(rollbackFor = Exception.class)
+
     @Override
     public void saveSystemSetting(XpSystemSetting xpSystemSetting) {
         if (Objects.nonNull(xpSystemSetting.getId())) {
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTradingStrategyServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTradingStrategyServiceImpl.java
index 409fbcf..61f38fb 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTradingStrategyServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTradingStrategyServiceImpl.java
@@ -12,6 +12,8 @@
 import com.xiaopeng.operation.service.IXpTradingStrategyService;
 import com.xiaopeng.operation.vo.XpTradingStrategyDetailVO;
 import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -58,7 +60,8 @@
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void editStrategy(XpTradingStrategyEditDTO dto) {
         // 1. 校验策略是否存在
         XpTradingStrategy strategy = this.getById(dto.getId());
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java
index 0b0e0cc..8709618 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java
@@ -16,8 +16,11 @@
 import com.xiaopeng.operation.query.WhitelistPageListQuery;
 import com.xiaopeng.operation.service.IXpWhitelistService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
 import java.util.ArrayList;
@@ -59,6 +62,8 @@
     }
 
     @Override
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public R addWhitelist(WhitelistAddDto dto, SysUser sysUser) {
         List<String> accounts = Arrays.stream(dto.getAccount().split(","))
                 .map(String::trim)
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
index d257b52..db3f47e 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -93,6 +93,8 @@
 import com.xiaopeng.order.vo.OrderDetailVo;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -491,8 +493,10 @@
         return new HashMap<>();
     }
 
-    @Transactional(rollbackFor = Exception.class)
+
     @Override
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void cancelOrCloseOrder(Long orderId, Integer type) {
         // 1. 校验订单是否存在
         XpOrder order = this.getById(orderId);
@@ -686,8 +690,9 @@
     /**
      * 改派订单
      */
-    @Transactional(rollbackFor = Exception.class)
     @Override
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void reassignOrder(Long orderId, Long newVehicleId, String reassignReason) {
         // 1. 校验订单是否存在
         XpOrder order = this.getById(orderId);
@@ -1114,6 +1119,7 @@
      */
     @Override
     @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void cancelOrder(Long orderId, String uid) {
         XpOrder order = this.getById(orderId);
         if (order.getStatus() == 0) {
@@ -1227,6 +1233,7 @@
 
     @Override
     @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void cancelOrder(String orderId) {
         XpOrder order = this.getById(orderId);
         if (order == null) {
@@ -1287,6 +1294,7 @@
      */
     @Override
     @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void comment(XpOrderCommentDto dto, String uid) {
         XpOrder xpOrder = this.getById(dto.getOrderId());
         if (xpOrder == null) {
@@ -2347,8 +2355,8 @@
      * @param dto
      */
     @Override
-//    @Transactional
-//    @ShardingSphereTransactionType(TransactionType.BASE)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void popOrder(PopOrderDto dto) {
         String orderType = dto.getOrderType();
         Long orderId = dto.getOrderId();
diff --git a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetServiceImpl.java b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetServiceImpl.java
index 4cedd64..2cdeded 100644
--- a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetServiceImpl.java
+++ b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetServiceImpl.java
@@ -38,6 +38,8 @@
 import com.xiaopeng.vehicleConvoy.service.IXpFleetVehicleService;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.beans.BeanUtils;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -80,7 +82,8 @@
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public R<Void> add(FleetAddDTO dto) {
         // 1. 校验车队名称不能重复
         long count = this.count(new LambdaQueryWrapper<XpFleet>()
@@ -136,7 +139,6 @@
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public R<Void> edit(FleetEditDTO dto) {
         // 1. 查询车队是否存在
         XpFleet fleet = this.getById(dto.getId());
@@ -533,7 +535,8 @@
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void deleteById(Long id) {
         long vehicleCount = xpFleetVehicleService.count(new LambdaQueryWrapper<XpFleetVehicle>()
                 .eq(XpFleetVehicle::getFleetId, id));
diff --git a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpPolicyApplicationServiceImpl.java b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpPolicyApplicationServiceImpl.java
index 1f2074b..1139d05 100644
--- a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpPolicyApplicationServiceImpl.java
+++ b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpPolicyApplicationServiceImpl.java
@@ -207,7 +207,6 @@
         return new HashMap<>();
     }
 
-    @Transactional(rollbackFor = Exception.class)
     @Override
     public void batchAudit(XpPolicyApplicationAuditDTO dto) {
         // 1.查询待审核的保单申请记录
diff --git a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
index 0f2fcf8..5ffbdf7 100644
--- a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
+++ b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
@@ -50,6 +50,8 @@
 import com.xiaopeng.vehicleConvoy.util.VehicleControlUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
+import org.apache.shardingsphere.transaction.core.TransactionType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.i18n.LocaleContextHolder;
 import org.springframework.data.geo.Point;
@@ -350,7 +352,6 @@
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public void addVehicle(VehicleAddDTO dto) {
         String normalizedVehicleCode = trimToNull(dto.getVehicleCode());
         String normalizedVin = normalizeVin(dto.getVehicleVin());
@@ -382,7 +383,6 @@
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public void editVehicle(VehicleEditDTO dto) {
         String normalizedVehicleCode = trimToNull(dto.getVehicleCode());
         String normalizedVin = normalizeVin(dto.getVehicleVin());
@@ -475,7 +475,8 @@
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional
+    @ShardingSphereTransactionType(TransactionType.BASE)
     public void improveInfo(VehicleImproveInfoDTO dto) {
         // 校验已填写的时间字段是否在有效范围内
         validateTimeFields(dto);
@@ -657,7 +658,6 @@
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public void batchOperation(String idStr) {
         if (StringUtils.isBlank(idStr)) {
             return;
@@ -750,7 +750,6 @@
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public void batchStock(String idStr) {
         if (StringUtils.isBlank(idStr)) {
             return;
@@ -764,7 +763,6 @@
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public void batchSetElectronic(List<Long> ids, Long electronicId) {
         if (CollectionUtils.isEmpty(ids)) {
             return;
@@ -835,7 +833,6 @@
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public void importVehicles(List<XpVehicleImportExcel> importList) {
         if (CollectionUtils.isEmpty(importList)) {
             return;
diff --git a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/task/VehicleDocumentExpiryTask.java b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/task/VehicleDocumentExpiryTask.java
index f7ea872..d7d37bb 100644
--- a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/task/VehicleDocumentExpiryTask.java
+++ b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/task/VehicleDocumentExpiryTask.java
@@ -27,7 +27,6 @@
     private final IXpVehicleService xpVehicleService;
 
     @Scheduled(cron = "0 0 1 * * ?", zone = "GMT+8")
-    @Transactional(rollbackFor = Exception.class)
     public void checkAndStockExpiredVehicles() {
         LocalDate today = LocalDate.now(ZONE_GMT8);
         LocalDateTime todayStart = today.atStartOfDay();

--
Gitblit v1.7.1