From b8b5a3895e741d5348ecdd39ad2e5cbd443f8e89 Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Wed, 01 Apr 2026 12:17:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 ard-route/src/main/java/com/ard/route/service/impl/ArdRouteMissionServiceImpl.java |   77 ++++++++++++++++++++++++++++----------
 1 files changed, 57 insertions(+), 20 deletions(-)

diff --git a/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteMissionServiceImpl.java b/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteMissionServiceImpl.java
index 686d42a..cc01107 100644
--- a/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteMissionServiceImpl.java
+++ b/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteMissionServiceImpl.java
@@ -9,16 +9,18 @@
 import com.ard.common.utils.uuid.IdUtils;
 import com.ard.route.domain.route.ArdRouteMission;
 import com.ard.route.domain.route.ArdRoutePoint;
+import com.ard.route.domain.route.MissionNot;
 import com.ard.route.domain.route.UpdateMission;
 import com.ard.route.mapper.ArdRoutePointMapper;
 import com.ard.route.websocket.utils.MiWebSocketUtils;
 import com.ard.system.mapper.SysUserMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import com.ard.route.mapper.ArdRouteMissionMapper;
 import com.ard.route.service.IArdRouteMissionService;
+
+import static com.ard.common.utils.SecurityUtils.getUserId;
 
 
 /**
@@ -96,25 +98,6 @@
         return ardRouteMissionMapper.insertArdRouteMission(ardRouteMission);
     }
 
-//    /**
-//     * 定时任务,定时发送新增航线任务消息
-//     */
-//    @Scheduled(fixedRate = 2000)
-//    public void sendMissionMessage() {
-//        ArdRouteMission ardRouteMission = new ArdRouteMission();
-//        ardRouteMission.setIsRead("0");
-//        // 获取所有未读的消息给
-//        List<ArdRouteMission> routeMissionLs = ardRouteMissionMapper.selectArdRouteMissionList(ardRouteMission);
-//        for (ArdRouteMission routeMissionL : routeMissionLs) {
-//           if (routeMissionL.getIssuerId() != null){
-//               List<ArdRoutePoint> missionDetailList = ardRoutePointMapper.selectArdRoutePointByMissionId(routeMissionL.getId());
-//               routeMissionL.setMissionDetailList(missionDetailList);
-//               MiWebSocketUtils.sendMessage(routeMissionL.getIssuerId(),JSON.toJSONString(routeMissionL));
-//           }
-//        }
-//    }
-
-
     /**
      * 修改航线任务
      * 
@@ -123,6 +106,7 @@
      */
     @Override
     public int updateArdRouteMission(ArdRouteMission ardRouteMission) {
+        validateForCreate(ardRouteMission,"2");
         ardRouteMission.setUpdateTime(DateUtils.getNowDate());
         ardRouteMission.setIssuerName(getUserName(ardRouteMission.getIssuerId()));
         // 删除航线任务航点
@@ -156,9 +140,25 @@
      */
     @Override
     public int deleteArdRouteMissionByIds(String[] ids) {
+        // 删除航线任务时只能删除自己的航线任务
+        for (String id : ids) {
+            ArdRouteMission ardRouteMission = ardRouteMissionMapper.selectArdRouteMissionById(id);
+            validateForCreate(ardRouteMission,"1");
+        }
         // 删除航线任务航点
         ardRoutePointMapper.deleteArdRoutePointByMissionId(ids[0]);
         return ardRouteMissionMapper.deleteArdRouteMissionByIds(ids);
+    }
+
+    // 验证,只有当前用户是下发人才能删除修改
+    private void validateForCreate(ArdRouteMission mission,String type) {
+        if (!mission.getIssuerId().equals(getUserId())){
+            if ("1".equals(type)){
+                throw new RuntimeException("只能删除下发自己的航线任务信息【" + mission.getMissionName() + "】,无法执行操作!");
+            }else if ("2".equals(type)){
+                throw new RuntimeException("只能修改下发自己的航线任务信息【" + mission.getMissionName() + "】,无法执行操作!");
+            }
+        }
     }
 
     /**
@@ -169,6 +169,10 @@
      */
     @Override
     public int deleteArdRouteMissionById(String id) {
+        ArdRouteMission ardRouteMission = ardRouteMissionMapper.selectArdRouteMissionById(id);
+        if (ardRouteMission != null){
+            validateForCreate(ardRouteMission,"1");
+        }
         ardRoutePointMapper.deleteArdRoutePointByMissionId(id);
         return ardRouteMissionMapper.deleteArdRouteMissionById(id);
     }
@@ -207,4 +211,37 @@
         return ardRouteMissionMapper.updateIsRead(ids, isRead);
     }
 
+    /**
+     * 校验航线任务是否可以创建航线
+     *
+     * @param id ID
+     * @return 结果
+     */
+    @Override
+    public MissionNot selectRouteMissionNot(String id) {
+        // 1. 初始化返回对象,默认允许操作
+        MissionNot missionNot = new MissionNot();
+        missionNot.setIsNot(true);
+
+        // 2. 根据ID查询航线任务
+        ArdRouteMission mission = ardRouteMissionMapper.selectArdRouteMissionById(id);
+
+        // 3. 空值快速返回(任务不存在则无需校验,直接允许操作)
+        if (mission == null) {
+            return missionNot;
+        }
+
+        // 4. 校验任务创建者是否为当前用户
+        // 增加空指针防护:避免issuerId为null导致空指针异常
+        if (mission.getIssuerId() == null || !mission.getIssuerId().equals(getUserId())) {
+            String errorMsg = String.format("创建航线,只能创建下发自己的航线任务信息【%s】,无法执行操作!",
+                    mission.getMissionName());
+            missionNot.setInformation(errorMsg);
+            missionNot.setIsNot(false);
+        }
+
+        // 5. 统一返回结果
+        return missionNot;
+    }
+
 }

--
Gitblit v1.9.3