From 8fe9faddf234f7087a516d7e1e068b558289e605 Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Tue, 10 Feb 2026 14:54:24 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
ard-device/src/main/java/com/ard/device/channel/service/impl/ArdChannelServiceImpl.java | 16 ++-
ard-work/src/main/java/com/ard/work/component/websocket/handler/UavAllManager.java | 4
ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java | 12 ---
ard-admin/src/main/java/com/ard/web/controller/monitor/CacheController.java | 2
ard-route/src/main/java/com/ard/route/service/impl/ArdRouteMissionServiceImpl.java | 31 ++++++-
ard-work/src/main/java/com/ard/work/service/control/UavControlService.java | 2
ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskServiceImpl.java | 2
ard-work/src/main/java/com/ard/work/component/websocket/handler/UavControlManager.java | 16 ++--
ard-device/src/main/java/com/ard/device/camera/config/AsyncConfiguration.java | 42 ++++++++++
ard-device/src/main/java/com/ard/device/camera/service/impl/ArdCameraServiceImpl.java | 34 +++----
ard-system/src/main/java/com/ard/system/service/impl/SysUserServiceImpl.java | 10 +-
ard-route/src/main/java/com/ard/route/service/IArdRouteMissionService.java | 5
ard-admin/src/main/java/com/ard/web/controller/route/ArdRouteMissionController.java | 7 -
ard-route/src/main/java/com/ard/route/domain/route/MissionNot.java | 18 ++++
ard-common/src/main/java/com/ard/common/constant/CacheConstants.java | 4
15 files changed, 134 insertions(+), 71 deletions(-)
diff --git a/ard-admin/src/main/java/com/ard/web/controller/monitor/CacheController.java b/ard-admin/src/main/java/com/ard/web/controller/monitor/CacheController.java
index 45fd229..b68983e 100644
--- a/ard-admin/src/main/java/com/ard/web/controller/monitor/CacheController.java
+++ b/ard-admin/src/main/java/com/ard/web/controller/monitor/CacheController.java
@@ -43,9 +43,7 @@
caches.add(new SysCache(CacheConstants.REPEAT_SUBMIT_KEY, "防重提交"));
caches.add(new SysCache(CacheConstants.RATE_LIMIT_KEY, "限流处理"));
caches.add(new SysCache(CacheConstants.PWD_ERR_CNT_KEY, "密码错误次数"));
- caches.add(new SysCache(CacheConstants.CAMERA_LIST_KEY, "相机列表"));
caches.add(new SysCache(CacheConstants.UAV_ONLINE_KEY, "在线无人机"));
- caches.add(new SysCache(CacheConstants.SYS_USER_KEY, "用户列表"));
}
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
diff --git a/ard-admin/src/main/java/com/ard/web/controller/route/ArdRouteMissionController.java b/ard-admin/src/main/java/com/ard/web/controller/route/ArdRouteMissionController.java
index b71e9a2..eaf0c9b 100644
--- a/ard-admin/src/main/java/com/ard/web/controller/route/ArdRouteMissionController.java
+++ b/ard-admin/src/main/java/com/ard/web/controller/route/ArdRouteMissionController.java
@@ -120,10 +120,9 @@
* 校验航线任务是否可以创建航线
*/
@ApiOperation("校验航线任务是否可以创建航线")
- //@PreAuthorize("@ss.hasPermi('route:mission:query')")
- @GetMapping(value = "/{missionId}")
- public Boolean routeMissionNot(@PathVariable("missionId") String missionId) {
- return ardRouteMissionService.selectRouteMissionNot(missionId);
+ @GetMapping("routeMissionNot/{id}")
+ public AjaxResult routeMissionNot(@PathVariable("id") String id) {
+ return success(ardRouteMissionService.selectRouteMissionNot(id));
}
}
diff --git a/ard-common/src/main/java/com/ard/common/constant/CacheConstants.java b/ard-common/src/main/java/com/ard/common/constant/CacheConstants.java
index 5dd4433..ca0fc18 100644
--- a/ard-common/src/main/java/com/ard/common/constant/CacheConstants.java
+++ b/ard-common/src/main/java/com/ard/common/constant/CacheConstants.java
@@ -55,7 +55,7 @@
/**
* 所有相机 redis key
*/
- public static final String CAMERA_LIST_KEY = "camera_list:";
+ public static final String CAMERA_LIST = "camera:list";
/**
* 在线无人机 redis key
@@ -65,5 +65,5 @@
/**
* 用户列表 redis key
*/
- public static final String SYS_USER_KEY = "sys_user:";
+ public static final String SYS_USER= "user:list";
}
diff --git a/ard-device/src/main/java/com/ard/device/camera/config/AsyncConfiguration.java b/ard-device/src/main/java/com/ard/device/camera/config/AsyncConfiguration.java
new file mode 100644
index 0000000..5c6ebb0
--- /dev/null
+++ b/ard-device/src/main/java/com/ard/device/camera/config/AsyncConfiguration.java
@@ -0,0 +1,42 @@
+package com.ard.device.camera.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.ThreadPoolExecutor;
+
+/**
+ * @ClassName: AsyncConfiguration
+ * @Description: 异步线程配置类
+ * @Author: Administrator
+ * @Date: 2023年02月03日 11:25
+ * @Version: 1.0
+ **/
+@Configuration
+@EnableAsync(proxyTargetClass = true)
+public class AsyncConfiguration {
+
+ @Bean("globalExecutor")
+ public ThreadPoolTaskExecutor globalExecutor(){
+ ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+ //配置核心线程数
+ executor.setCorePoolSize(18);
+ //配置最大线程数
+ executor.setMaxPoolSize(36);
+ //配置队列大小
+ executor.setQueueCapacity(100);
+ //线程的名称前缀
+ executor.setThreadNamePrefix("globalExecutor-");
+ //线程活跃时间(秒)
+ executor.setKeepAliveSeconds(3000);
+ //等待所有任务结束后再关闭线程池
+ executor.setWaitForTasksToCompleteOnShutdown(true);
+ //设置拒绝策略
+ executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+ //执行初始化
+ executor.initialize();
+ return executor;
+ }
+}
diff --git a/ard-device/src/main/java/com/ard/device/camera/service/impl/ArdCameraServiceImpl.java b/ard-device/src/main/java/com/ard/device/camera/service/impl/ArdCameraServiceImpl.java
index a7f7f73..79c115c 100644
--- a/ard-device/src/main/java/com/ard/device/camera/service/impl/ArdCameraServiceImpl.java
+++ b/ard-device/src/main/java/com/ard/device/camera/service/impl/ArdCameraServiceImpl.java
@@ -28,6 +28,7 @@
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -59,6 +60,8 @@
@Resource
protected Validator validator;
+ @Resource(name = "globalExecutor")
+ private ThreadPoolTaskExecutor executorService;
@Override
public void run(ApplicationArguments args) {
@@ -67,23 +70,15 @@
public void initCamera() {
//清空相机缓存
- redisService.deleteObject(redisService.keys(getCacheKey("*")));
+ redisService.deleteObject(CacheConstants.CAMERA_LIST);
//重新加载相机到缓存
ardCameraMapper.selectArdCameraList(new ArdCamera()).forEach(ardCamera -> {
- ardCameraMapper.resetCameraLoginId(ardCamera);
- redisService.setCacheObject(getCacheKey(ardCamera.getId()), ardCamera);
- cameraSDKService.login(ardCamera);
+ redisService.setCacheMapValue(CacheConstants.CAMERA_LIST, ardCamera.getId(), ardCamera);
+ // 提交到线程池异步执行
+ executorService.submit(() -> {
+ cameraSDKService.login(ardCamera);
+ });
});
- }
-
- /**
- * 设置cache key
- *
- * @param configKey 参数键
- * @return 缓存键key
- */
- private String getCacheKey(String configKey) {
- return CacheConstants.CAMERA_LIST_KEY + configKey;
}
@@ -146,6 +141,7 @@
ardCamera.setUserId(SecurityUtils.getUserId());
int res = ardCameraMapper.insertArdCamera(ardCamera);
if (res > 0) {
+ redisService.setCacheMapValue(CacheConstants.CAMERA_LIST, ardCamera.getId(), ardCamera);
cameraSDKService.login(ardCamera);//sdk登录获取通道信息
}
return res;
@@ -163,6 +159,7 @@
ardCamera.setUpdateBy(SecurityUtils.getUsername());
int res = ardCameraMapper.updateArdCamera(ardCamera);
if (res > 0) {
+ redisService.setCacheMapValue(CacheConstants.CAMERA_LIST, ardCamera.getId(), ardCamera);
cameraSDKService.logout(ardCamera);//sdk注销
cameraSDKService.login(ardCamera);//sdk登录获取通道信息
}
@@ -182,7 +179,7 @@
ArdCamera camera = ardCameraMapper.selectArdCameraById(id);
if (camera != null) {
//redis中删除
- redisService.deleteObject(getCacheKey(id));
+ redisService.deleteCacheMapValue(CacheConstants.CAMERA_LIST, id);
//删除当前相机的所有通道
ardChannelService.deleteArdChannelByDeviceId(id);
//sdk注销
@@ -203,7 +200,7 @@
int i = ardCameraMapper.deleteArdCameraById(id);
if (i > 0) {
//redis中删除
- redisService.deleteObject(getCacheKey(id));
+ redisService.deleteCacheMapValue(CacheConstants.CAMERA_LIST, id);
//删除当前相机的所有通道
ardChannelService.deleteArdChannelByDeviceId(id);
//sdk注销
@@ -305,7 +302,7 @@
@Override
public ArdCamera checkAirportHasCamera(ArdCamera camera) {
ArdCamera info = ardCameraMapper.checkAirportHasCamera(camera);
- if (StringUtils.isNotNull(info)&& !info.getId().equals(camera.getId())) {
+ if (StringUtils.isNotNull(info) && !info.getId().equals(camera.getId())) {
return info;
}
return null;
@@ -369,8 +366,6 @@
public void LoginEventListener(LoginEvent loginEvent) {
ArdCamera camera = loginEvent.getCamera();
ardCameraMapper.updateArdCamera(camera);
- // SDK 登录成功后写入 Redis
- redisService.setCacheObject(getCacheKey(camera.getId()), camera);
}
/**
@@ -426,6 +421,7 @@
log.error("同步相机在线状态异常:{}", ex.getMessage());
}
}
+
/**
* 同步相机通道
*/
diff --git a/ard-device/src/main/java/com/ard/device/channel/service/impl/ArdChannelServiceImpl.java b/ard-device/src/main/java/com/ard/device/channel/service/impl/ArdChannelServiceImpl.java
index bfae263..f5671f0 100644
--- a/ard-device/src/main/java/com/ard/device/channel/service/impl/ArdChannelServiceImpl.java
+++ b/ard-device/src/main/java/com/ard/device/channel/service/impl/ArdChannelServiceImpl.java
@@ -39,6 +39,7 @@
private IArdVtduService ardVtduService;
@Resource
private MediamtxConfig mediamtxConfig;
+
/**
* 查询通道管理
*
@@ -154,10 +155,10 @@
ArdChannel ardChannel = new ArdChannel();
ardChannel.setUseDataScope(false);
List<ArdChannel> channels = this.selectArdChannelList(ardChannel);
- if (channels == null || channels.isEmpty()) {
- // log.warn("没有获取到通道数据,退出同步");
- return;
- }
+// if (channels == null || channels.isEmpty()) {
+// // log.warn("没有获取到通道数据,退出同步");
+// return;
+// }
List<ArdVtdu> ardVtduList = ardVtduService.selectArdVtduList(new ArdVtdu());
Set<String> validNames = channels.stream()
@@ -172,7 +173,8 @@
"rtsp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtspPort() + "/" + name; //
// 拼接 webrtcUrl
String rtmpUrl =
- "rtmp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtmpPort() + "/" + name; // 拼接
+ "rtmp://" + mediamtxConfig.getPlayHost() + ":" + mediamtxConfig.getRtmpPort() + "/" + name;
+ // 拼接
// webrtcUrl
String protocol = mediamtxConfig.isHttps() ? "https://" : "http://";
String webrtcUrl =
@@ -225,7 +227,7 @@
log.info("删除不再存在的媒体记录:{}", Arrays.toString(namesArray));
}
} catch (Exception e) {
- log.error("定时同步Vtdu任务异常:{}", e.getMessage());
+ log.error("定时同步Vtdu任务异常:{}", e.getMessage());
}
}
@@ -233,7 +235,7 @@
// 根据通道信息获取rtsp源地址
private String getRtspSource(ArdChannel channel) {
String rtspSource = "";
- ArdCamera ardCamera = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + channel.getDeviceId());
+ ArdCamera ardCamera = redisCache.getCacheMapValue(CacheConstants.CAMERA_LIST, channel.getDeviceId());
if (ardCamera != null) {
switch (ardCamera.getFactory()) {
case "1":
diff --git a/ard-route/src/main/java/com/ard/route/domain/route/MissionNot.java b/ard-route/src/main/java/com/ard/route/domain/route/MissionNot.java
new file mode 100644
index 0000000..c7eeaac
--- /dev/null
+++ b/ard-route/src/main/java/com/ard/route/domain/route/MissionNot.java
@@ -0,0 +1,18 @@
+package com.ard.route.domain.route;
+
+import lombok.Data;
+
+@Data
+public class MissionNot {
+
+ /**
+ * 是否类型
+ */
+ private Boolean isNot;
+
+ /**
+ * 消息
+ */
+ private String information;
+
+}
diff --git a/ard-route/src/main/java/com/ard/route/service/IArdRouteMissionService.java b/ard-route/src/main/java/com/ard/route/service/IArdRouteMissionService.java
index df6181c..7fbc762 100644
--- a/ard-route/src/main/java/com/ard/route/service/IArdRouteMissionService.java
+++ b/ard-route/src/main/java/com/ard/route/service/IArdRouteMissionService.java
@@ -1,6 +1,7 @@
package com.ard.route.service;
import com.ard.route.domain.route.ArdRouteMission;
+import com.ard.route.domain.route.MissionNot;
import com.ard.route.domain.route.UpdateMission;
import java.util.List;
@@ -81,9 +82,9 @@
/**
* 校验航线任务是否可以创建航线
*
- * @param missionId 航线任务ID
+ * @param id ID
* @return 结果
*/
- public Boolean selectRouteMissionNot(String missionId);
+ public MissionNot selectRouteMissionNot(String id);
}
diff --git a/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java b/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java
index 5ecf63c..0dd708b 100644
--- a/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java
+++ b/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java
@@ -140,7 +140,6 @@
*/
@Override
public String insertArdRouteInfo(ArdRouteInfo ardRouteInfo) {
- validateForCreate(ardRouteInfo);
checkRouteMissionStatus(ardRouteInfo,"1");
checkRouteMissionStatus(ardRouteInfo,"2");
ardRouteInfo.setId(IdUtils.simpleUUID());
@@ -179,17 +178,6 @@
break;
default:
throw new RuntimeException("不支持的操作类型!!!");
- }
- }
- }
-
- // 验证,只有当前用户是下发人才能创建航线
- private void validateForCreate(ArdRouteInfo ardRouteInfo) {
- ArdRouteMission mission = ardRouteMissionMapper.selectArdRouteMissionById(ardRouteInfo.getMissionId());
- if (mission != null){
- if (!mission.getIssuerId().equals(getUserId())){
- throw new RuntimeException("创建航线,只能创建下发自己的航线任务信息【" + mission.getMissionName() + "】,无法执行操作!");
- //return "创建航线,只能创建下发自己的航线任务信息【" + mission.getMissionName() + "】,无法执行操作!";
}
}
}
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 2afdbb7..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,6 +9,7 @@
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;
@@ -213,16 +214,34 @@
/**
* 校验航线任务是否可以创建航线
*
- * @param missionId 航线任务ID
+ * @param id ID
* @return 结果
*/
@Override
- public Boolean selectRouteMissionNot(String missionId) {
- ArdRouteMission mission = ardRouteMissionMapper.selectArdRouteMissionById(missionId);
- if (mission != null){
- throw new RuntimeException("创建航线,只能创建下发自己的航线任务信息【" + mission.getMissionName() + "】,无法执行操作!");
+ 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;
}
- return true;
+
+ // 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;
}
}
diff --git a/ard-system/src/main/java/com/ard/system/service/impl/SysUserServiceImpl.java b/ard-system/src/main/java/com/ard/system/service/impl/SysUserServiceImpl.java
index 81066c5..5753692 100644
--- a/ard-system/src/main/java/com/ard/system/service/impl/SysUserServiceImpl.java
+++ b/ard-system/src/main/java/com/ard/system/service/impl/SysUserServiceImpl.java
@@ -83,7 +83,7 @@
// 将用户列表存入 Redis,使用用户 ID 作为 Redis 键
userList.forEach(user -> {
- redisCache.setCacheObject(CacheConstants.SYS_USER_KEY + user.getUserId(), user);
+ redisCache.setCacheMapValue(CacheConstants.SYS_USER, user.getUserId().toString(), user);
});
log.info("用户信息已成功加载到 Redis!");
@@ -266,7 +266,7 @@
// 新增用户信息
int rows = userMapper.insertUser(user);
// 同步到 Redis
- redisCache.setCacheObject(CacheConstants.SYS_USER_KEY + user.getUserId(), user);
+ redisCache.setCacheMapValue(CacheConstants.SYS_USER, user.getUserId().toString(), user);
// 新增用户岗位关联
insertUserPost(user);
// 新增用户与角色管理
@@ -306,7 +306,7 @@
// 更新用户信息
int result = userMapper.updateUser(user);
// 同步到 Redis
- redisCache.setCacheObject(CacheConstants.SYS_USER_KEY + user.getUserId(), user);
+ redisCache.setCacheMapValue(CacheConstants.SYS_USER, user.getUserId().toString(), user);
return result;
}
@@ -445,7 +445,7 @@
// 删除用户信息
int result = userMapper.deleteUserById(userId);
// 从 Redis 删除用户信息
- redisCache.deleteObject(CacheConstants.SYS_USER_KEY + userId);
+ redisCache.deleteCacheMapValue(CacheConstants.SYS_USER, userId.toString());
return result;
}
@@ -471,7 +471,7 @@
// 批量删除 Redis 中的用户信息
for (Long userId : userIds) {
- redisCache.deleteObject(CacheConstants.SYS_USER_KEY + userId);
+ redisCache.deleteCacheMapValue(CacheConstants.SYS_USER, userId.toString());
}
return result;
}
diff --git a/ard-work/src/main/java/com/ard/work/component/websocket/handler/UavAllManager.java b/ard-work/src/main/java/com/ard/work/component/websocket/handler/UavAllManager.java
index b993a9a..8a1c7c2 100644
--- a/ard-work/src/main/java/com/ard/work/component/websocket/handler/UavAllManager.java
+++ b/ard-work/src/main/java/com/ard/work/component/websocket/handler/UavAllManager.java
@@ -57,12 +57,12 @@
map.put("signal", uavSignalInfo);
// 获取当前控制飞行的用户ID
Long flyUserId = uavControlService.getCurrentController(boxSn, "fly");
- SysUser flyUser = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + flyUserId);
+ SysUser flyUser = redisCache.getCacheMapValue(CacheConstants.SYS_USER, flyUserId.toString());
// 将飞行当前控制者用户ID添加到映射中
map.put("flyController", flyUser);
// 获取当前控制载荷的用户ID
Long payloadUserId = uavControlService.getCurrentController(boxSn, "payload");
- SysUser payloadUser = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + payloadUserId);
+ SysUser payloadUser = redisCache.getCacheMapValue(CacheConstants.SYS_USER, payloadUserId.toString());
// 将载荷当前控制者用户ID添加到映射中
map.put("payloadController", payloadUser);
return map;
diff --git a/ard-work/src/main/java/com/ard/work/component/websocket/handler/UavControlManager.java b/ard-work/src/main/java/com/ard/work/component/websocket/handler/UavControlManager.java
index 86e880b..87bc052 100644
--- a/ard-work/src/main/java/com/ard/work/component/websocket/handler/UavControlManager.java
+++ b/ard-work/src/main/java/com/ard/work/component/websocket/handler/UavControlManager.java
@@ -26,7 +26,7 @@
*/
public void sendControlRequest(Long controllerId, String boxSn, String type, Long requesterId) {
- SysUser requester = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + requesterId);
+ SysUser requester = redisCache.getCacheMapValue(CacheConstants.SYS_USER, requesterId.toString());
UavControlMessage msg = new UavControlMessage();
msg.setBoxSn(boxSn);
@@ -45,7 +45,7 @@
*/
public void sendControlApproval(Long requesterId, String boxSn, String type, Long controllerId) {
- SysUser controller = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + controllerId);
+ SysUser controller = redisCache.getCacheMapValue(CacheConstants.SYS_USER, controllerId.toString());
UavControlMessage msg = new UavControlMessage();
msg.setBoxSn(boxSn);
@@ -64,7 +64,7 @@
*/
public void sendControlRejection(Long requesterId, String boxSn, String type, Long controllerId) {
- SysUser controller = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + controllerId);
+ SysUser controller = redisCache.getCacheMapValue(CacheConstants.SYS_USER, controllerId.toString());
UavControlMessage msg = new UavControlMessage();
msg.setBoxSn(boxSn);
@@ -83,8 +83,8 @@
*/
public void sendControlTakeover(Long oldControllerId, Long newControllerId, String boxSn, String type) {
- SysUser newController = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + newControllerId);
- SysUser oldController = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + oldControllerId);
+ SysUser newController = redisCache.getCacheMapValue(CacheConstants.SYS_USER, newControllerId.toString());
+ SysUser oldController = redisCache.getCacheMapValue(CacheConstants.SYS_USER, oldControllerId.toString());
// 1️⃣ 通知原控制者:你被抢占了
UavControlMessage msgOld = new UavControlMessage();
@@ -125,7 +125,7 @@
* 控制权释放
*/
public void sendControlRelease(String boxSn, String type, Long operatorId) {
- SysUser operator = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + operatorId);
+ SysUser operator = redisCache.getCacheMapValue(CacheConstants.SYS_USER, operatorId.toString());
UavControlMessage message = new UavControlMessage();
message.setBoxSn(boxSn);
@@ -155,10 +155,10 @@
Map<String, Object> map = new HashMap<>();
map.put("boxSn", boxSn);
// 将飞行当前控制者用户ID添加到映射中
- SysUser flyUser = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + flyUserId);
+ SysUser flyUser = redisCache.getCacheMapValue(CacheConstants.SYS_USER, flyUserId.toString());
map.put("flyController", flyUser);
// 将载荷当前控制者用户ID添加到映射中
- SysUser payloadUser = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + payloadUserId);
+ SysUser payloadUser = redisCache.getCacheMapValue(CacheConstants.SYS_USER, payloadUserId.toString());
map.put("payloadController", payloadUser);
// 返回包含当前控制者信息的映射
return map;
diff --git a/ard-work/src/main/java/com/ard/work/service/control/UavControlService.java b/ard-work/src/main/java/com/ard/work/service/control/UavControlService.java
index 66f5d32..df7efa9 100644
--- a/ard-work/src/main/java/com/ard/work/service/control/UavControlService.java
+++ b/ard-work/src/main/java/com/ard/work/service/control/UavControlService.java
@@ -141,7 +141,7 @@
// 🚨 其他请求者自动拒绝(强烈建议)
for (Long other : requesters) {
if (!other.equals(requester)) {
- requesters.remove(requester);
+ requesters.remove(other);
uavControlManager.sendControlRejection(other, boxSn, controlType.getType(), controller);
}
}
diff --git a/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskServiceImpl.java
index 64afb12..35a510a 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/work/service/impl/ArdFlightTaskServiceImpl.java
@@ -132,7 +132,7 @@
Long flyUserId = uavControlService.getCurrentController(flightTask.getBoxSn(), "fly");
if (flyUserId != null) {
- SysUser flyUser = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + flyUserId);
+ SysUser flyUser = redisCache.getCacheMapValue(CacheConstants.SYS_USER, flyUserId.toString());
if (flyUser != null && flyUser.getNickName() != null) {
flightTask.setCreateBy(flyUser.getNickName());
}
--
Gitblit v1.9.3