From 5d2e6ca50091f405dfda9e287b367dd295dc6cf8 Mon Sep 17 00:00:00 2001
From: Xiajijian <1176061145@qq.com>
Date: Mon, 09 Feb 2026 17:39:17 +0800
Subject: [PATCH] 1. 航线任务增加校验,只有下发人和登陆人是一个人才可以删除修改操作。 2. 增加校验航线任务是否可以创建航线接口。

---
 ard-route/src/main/java/com/ard/route/service/impl/ArdRouteMissionServiceImpl.java |   68 +++++++++++++++++++++++++++++++---
 1 files changed, 62 insertions(+), 6 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 d26743a..2afdbb7 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
@@ -3,18 +3,23 @@
 import java.util.List;
 
 import com.alibaba.fastjson2.JSON;
+import com.ard.common.core.domain.entity.SysUser;
 import com.ard.common.utils.DateUtils;
 import com.ard.common.utils.SecurityUtils;
 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.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.stereotype.Service;
 import com.ard.route.mapper.ArdRouteMissionMapper;
 import com.ard.route.service.IArdRouteMissionService;
+
+import static com.ard.common.utils.SecurityUtils.getUserId;
 
 
 /**
@@ -32,6 +37,9 @@
 
     @Autowired
     private ArdRoutePointMapper ardRoutePointMapper;
+
+    @Autowired
+    private SysUserMapper sysUserMapper;
 
     /**
      * 查询航线任务
@@ -77,11 +85,12 @@
         ardRouteMission.setExecuteStatus("0");
         ardRouteMission.setIsRead("0");
         ardRouteMission.setCreateTime(DateUtils.getNowDate());
+        ardRouteMission.setIssuerTime(DateUtils.getNowDate());
+        ardRouteMission.setIssuerName(getUserName(ardRouteMission.getIssuerId()));
         dataProcessingRoutePoint(ardRouteMission.getMissionDetailList(),ardRouteMission.getId());
-        Long userId = ardRouteMission.getIssuerId().longValue();
         try {
             log.debug("给用户{}定时推送,航线任务信息", ardRouteMission.getIssuerName());
-            MiWebSocketUtils.sendMessage(userId,JSON.toJSONString(ardRouteMission));
+            MiWebSocketUtils.sendMessage(ardRouteMission.getIssuerId(),JSON.toJSONString(ardRouteMission));
         } catch (Exception e) {
             log.error("Error sending message to session {}", ardRouteMission.getIssuerName(), e);
         }
@@ -96,12 +105,20 @@
      */
     @Override
     public int updateArdRouteMission(ArdRouteMission ardRouteMission) {
+        validateForCreate(ardRouteMission,"2");
         ardRouteMission.setUpdateTime(DateUtils.getNowDate());
+        ardRouteMission.setIssuerName(getUserName(ardRouteMission.getIssuerId()));
         // 删除航线任务航点
         ardRoutePointMapper.deleteArdRoutePointByMissionId(ardRouteMission.getId());
         // 重新插入航线任务航点
         dataProcessingRoutePoint(ardRouteMission.getMissionDetailList(),ardRouteMission.getId());
         return ardRouteMissionMapper.updateArdRouteMission(ardRouteMission);
+    }
+
+    // 获取用户名称
+    private String getUserName(Long userId) {
+        SysUser sysUser = sysUserMapper.selectUserById(userId);
+        return sysUser.getUserName();
     }
 
     /**
@@ -122,9 +139,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() + "】,无法执行操作!");
+            }
+        }
     }
 
     /**
@@ -135,6 +168,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);
     }
@@ -160,13 +197,32 @@
     /**
      * 批量修改航线任务已读状态
      *
-     * @param ids 主键集合
-     * @param isRead 已读状态
+     * @param updateMission 批量修改已读类型实体
      * @return 结果
      */
     @Override
-    public int updateIsRead(String[] ids, String isRead) {
-        return ardRouteMissionMapper.updateIsRead(ids,isRead);
+    public int updateIsRead(UpdateMission updateMission) {
+        if (updateMission == null || updateMission.getIds() == null || updateMission.getIds().length == 0) {
+            return 0;
+        }
+        String[] ids = updateMission.getIds();
+        String isRead = updateMission.getIsRead();
+        return ardRouteMissionMapper.updateIsRead(ids, isRead);
+    }
+
+    /**
+     * 校验航线任务是否可以创建航线
+     *
+     * @param missionId 航线任务ID
+     * @return 结果
+     */
+    @Override
+    public Boolean selectRouteMissionNot(String missionId) {
+        ArdRouteMission mission = ardRouteMissionMapper.selectArdRouteMissionById(missionId);
+        if (mission != null){
+            throw new RuntimeException("创建航线,只能创建下发自己的航线任务信息【" + mission.getMissionName() + "】,无法执行操作!");
+        }
+        return true;
     }
 
 }

--
Gitblit v1.9.3