From 3c8d6b8e60f02b9a40fc5acd4dc6c34a6b594eb6 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Mon, 19 Jan 2026 11:23:32 +0800
Subject: [PATCH] 增加用户优先级和所属平台 调整无人机控制逻辑增加优先级判断
---
ard-work/src/main/java/com/ard/work/domain/message/UavControlMessage.java | 31 ++--
ard-work/src/main/java/com/ard/work/service/control/UavControlService.java | 114 ++++++++++---------
ard-system/src/main/resources/mapper/system/SysUserMapper.xml | 52 +++++---
ard-work/src/main/java/com/ard/work/component/websocket/handler/UavControlManager.java | 130 +++++++++++++++++----
ard-common/src/main/java/com/ard/common/core/domain/entity/SysUser.java | 21 +++
5 files changed, 230 insertions(+), 118 deletions(-)
diff --git a/ard-common/src/main/java/com/ard/common/core/domain/entity/SysUser.java b/ard-common/src/main/java/com/ard/common/core/domain/entity/SysUser.java
index 7366e6a..1b56248 100644
--- a/ard-common/src/main/java/com/ard/common/core/domain/entity/SysUser.java
+++ b/ard-common/src/main/java/com/ard/common/core/domain/entity/SysUser.java
@@ -92,6 +92,11 @@
/** 角色ID */
private Long roleId;
+ /** 优先级 */
+ private Integer priority;
+ /** 所属平台 */
+ private String platform;
+
public SysUser()
{
@@ -300,6 +305,22 @@
this.roleId = roleId;
}
+ public Integer getPriority() {
+ return priority;
+ }
+
+ public void setPriority(Integer priority) {
+ this.priority = priority;
+ }
+
+ public String getPlatform() {
+ return platform;
+ }
+
+ public void setPlatform(String platform) {
+ this.platform = platform;
+ }
+
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
diff --git a/ard-system/src/main/resources/mapper/system/SysUserMapper.xml b/ard-system/src/main/resources/mapper/system/SysUserMapper.xml
index dfad20f..6122765 100644
--- a/ard-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ard-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -18,6 +18,8 @@
<result property="delFlag" column="del_flag" />
<result property="loginIp" column="login_ip" />
<result property="loginDate" column="login_date" />
+ <result property="priority" column="priority" />
+ <result property="platform" column="platform" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
@@ -26,7 +28,7 @@
<association property="dept" javaType="SysDept" resultMap="deptResult" />
<collection property="roles" javaType="java.util.List" resultMap="RoleResult" />
</resultMap>
-
+
<resultMap id="deptResult" type="SysDept">
<id property="deptId" column="dept_id" />
<result property="parentId" column="parent_id" />
@@ -36,7 +38,7 @@
<result property="leader" column="leader" />
<result property="status" column="dept_status" />
</resultMap>
-
+
<resultMap id="RoleResult" type="SysRole">
<id property="roleId" column="role_id" />
<result property="roleName" column="role_name" />
@@ -45,9 +47,9 @@
<result property="dataScope" column="data_scope" />
<result property="status" column="role_status" />
</resultMap>
-
+
<sql id="selectUserVo">
- select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
+ select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.priority,u.platform,u.login_date, u.create_by, u.create_time, u.remark,
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
from sys_user u
@@ -55,9 +57,9 @@
left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id
</sql>
-
+
<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
- select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
+ select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.priority,u.platform, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
where u.del_flag = '0'
<if test="userId != null and userId != 0">
@@ -84,7 +86,7 @@
<!-- 数据范围过滤 -->
${params.dataScope}
</select>
-
+
<select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">
select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
from sys_user u
@@ -101,7 +103,7 @@
<!-- 数据范围过滤 -->
${params.dataScope}
</select>
-
+
<select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult">
select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
from sys_user u
@@ -119,29 +121,29 @@
<!-- 数据范围过滤 -->
${params.dataScope}
</select>
-
+
<select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
<include refid="selectUserVo"/>
where u.user_name = #{userName} and u.del_flag = '0'
</select>
-
+
<select id="selectUserById" parameterType="Long" resultMap="SysUserResult">
<include refid="selectUserVo"/>
where u.user_id = #{userId}
</select>
-
+
<select id="checkUserNameUnique" parameterType="String" resultMap="SysUserResult">
select user_id, user_name from sys_user where user_name = #{userName} and del_flag = '0' limit 1
</select>
-
+
<select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult">
select user_id, phonenumber from sys_user where phonenumber = #{phonenumber} and del_flag = '0' limit 1
</select>
-
+
<select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1
</select>
-
+
<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
insert into sys_user(
<if test="userId != null and userId != 0">user_id,</if>
@@ -155,6 +157,8 @@
<if test="password != null and password != ''">password,</if>
<if test="status != null and status != ''">status,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
+ <if test="priority != null and priority != ''">priority,</if>
+ <if test="platform != null and platform != ''">platform,</if>
<if test="remark != null and remark != ''">remark,</if>
create_time
)values(
@@ -169,11 +173,13 @@
<if test="password != null and password != ''">#{password},</if>
<if test="status != null and status != ''">#{status},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
+ <if test="priority != null and priority != ''">#{priority},</if>
+ <if test="platform != null and platform != ''">#{platform},</if>
<if test="remark != null and remark != ''">#{remark},</if>
sysdate()
)
</insert>
-
+
<update id="updateUser" parameterType="SysUser">
update sys_user
<set>
@@ -189,33 +195,35 @@
<if test="loginIp != null and loginIp != ''">login_ip = #{loginIp},</if>
<if test="loginDate != null">login_date = #{loginDate},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ <if test="priority != null">priority = #{priority},</if>
+ <if test="platform != null">platform = #{platform},</if>
<if test="remark != null">remark = #{remark},</if>
update_time = sysdate()
</set>
where user_id = #{userId}
</update>
-
+
<update id="updateUserStatus" parameterType="SysUser">
update sys_user set status = #{status} where user_id = #{userId}
</update>
-
+
<update id="updateUserAvatar" parameterType="SysUser">
update sys_user set avatar = #{avatar} where user_name = #{userName}
</update>
-
+
<update id="resetUserPwd" parameterType="SysUser">
update sys_user set password = #{password} where user_name = #{userName}
</update>
-
+
<delete id="deleteUserById" parameterType="Long">
update sys_user set del_flag = '2' where user_id = #{userId}
</delete>
-
+
<delete id="deleteUserByIds" parameterType="Long">
update sys_user set del_flag = '2' where user_id in
<foreach collection="array" item="userId" open="(" separator="," close=")">
#{userId}
- </foreach>
+ </foreach>
</delete>
-
+
</mapper>
\ No newline at end of file
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 559d2aa..ea5b677 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
@@ -4,10 +4,9 @@
import com.ard.common.constant.CacheConstants;
import com.ard.common.core.domain.entity.SysUser;
import com.ard.common.core.redis.RedisCache;
-import com.ard.work.service.control.UavControlService;
-import com.ard.work.domain.message.BaseMessage;
-import com.ard.work.domain.message.UavControlMessage;
import com.ard.work.component.websocket.utils.WebSocketUtil;
+import com.ard.work.domain.message.*;
+import com.ard.work.service.control.UavControlService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -22,44 +21,119 @@
@Resource
private RedisCache redisCache;
- /**
- * 发送控制请求
- */
- public void sendControlRequest(Long controllerId, String boxSn, String type, Long requester) {
- UavControlMessage message = new UavControlMessage(boxSn, type, requester, null);
- SysUser sysUser = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + requester);
- message.setRequester(sysUser);
- BaseMessage<UavControlMessage> baseMessage = new BaseMessage<>("control", message);
- WebSocketUtil.sendMessage(controllerId, JSON.toJSONString(baseMessage));
+ /* ===================== 1️⃣ 申请控制 ===================== */
+
+ public void sendControlRequest(Long controllerId, String boxSn, String type, Long requesterId) {
+
+ SysUser requester = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + requesterId);
+
+ UavControlMessage msg = new UavControlMessage();
+ msg.setBoxSn(boxSn);
+ msg.setType(type);
+ msg.setAction("request");
+ msg.setOperatorId(requesterId);
+ msg.setOperator(requester);
+
+ BaseMessage<UavControlMessage> base = new BaseMessage<>("control", msg);
+
+ WebSocketUtil.sendMessage(controllerId, JSON.toJSONString(base));
}
- /**
- * 发送控制同意通知
- */
- public void sendControlApproval(Long requesterId, String boxSn, String type) {
- UavControlMessage message = new UavControlMessage(boxSn, type, null, true);
- BaseMessage<UavControlMessage> baseMessage = new BaseMessage<>("control", message);
- WebSocketUtil.sendMessage(requesterId, JSON.toJSONString(baseMessage));
+ /* ===================== 2️⃣ 同意控制 ===================== */
+
+ public void sendControlApproval(Long requesterId, String boxSn, String type, Long controllerId) {
+
+ SysUser controller = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + controllerId);
+
+ UavControlMessage msg = new UavControlMessage();
+ msg.setBoxSn(boxSn);
+ msg.setType(type);
+ msg.setAction("approve");
+ msg.setApproved(true);
+ msg.setController(controller);
+
+ BaseMessage<UavControlMessage> base = new BaseMessage<>("control", msg);
+
+ WebSocketUtil.sendMessage(requesterId, JSON.toJSONString(base));
}
- /**
- * 发送控制拒绝通知
- */
- public void sendControlRejection(Long requesterId, String boxSn, String type) {
- UavControlMessage message = new UavControlMessage(boxSn, type, null, false);
- BaseMessage<UavControlMessage> baseMessage = new BaseMessage<>("control", message);
- WebSocketUtil.sendMessage(requesterId, JSON.toJSONString(baseMessage));
+ /* ===================== 3️⃣ 拒绝控制 ===================== */
+
+ public void sendControlRejection(Long requesterId, String boxSn, String type, Long controllerId) {
+
+ SysUser controller = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + controllerId);
+
+ UavControlMessage msg = new UavControlMessage();
+ msg.setBoxSn(boxSn);
+ msg.setType(type);
+ msg.setAction("reject");
+ msg.setApproved(false);
+ msg.setController(controller);
+
+ BaseMessage<UavControlMessage> base = new BaseMessage<>("control", msg);
+
+ WebSocketUtil.sendMessage(requesterId, JSON.toJSONString(base));
}
/**
* 发送控制释放通知
*/
- public void sendControlRelease(String boxSn, String type) {
- UavControlMessage message = new UavControlMessage(boxSn, type, null, null);
+ public void sendControlRelease(String boxSn, String type, Long operatorId) {
+ SysUser operator = redisCache.getCacheObject(CacheConstants.SYS_USER_KEY + operatorId);
+
+ UavControlMessage message = new UavControlMessage();
+ message.setBoxSn(boxSn);
+ message.setType(type);
+ message.setAction("release");
+ message.setOperatorId(operatorId);
+ message.setOperator(operator);
+
BaseMessage<UavControlMessage> baseMessage = new BaseMessage<>("control", message);
WebSocketUtil.sendMessageAll(JSON.toJSONString(baseMessage));
}
+ /* ===================== 4️⃣ 控制权接管 ===================== */
+
+ 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);
+
+ // 1️⃣ 通知原控制者:你被抢占了
+ UavControlMessage msgOld = new UavControlMessage();
+ msgOld.setBoxSn(boxSn);
+ msgOld.setType(type);
+ msgOld.setAction("takeover");
+ msgOld.setOperatorId(newControllerId);
+ msgOld.setOperator(newController);
+ msgOld.setControllerId(oldControllerId);
+ msgOld.setController(oldController);
+ BaseMessage<UavControlMessage> baseMessage = new BaseMessage<>("control", msgOld);
+ WebSocketUtil.sendMessage(oldControllerId, JSON.toJSONString(baseMessage));
+
+ // 2️⃣ 通知新控制者:你已获得控制权
+ UavControlMessage msgNew = new UavControlMessage();
+ msgNew.setBoxSn(boxSn);
+ msgNew.setType(type);
+ msgNew.setAction("approve"); // 或 "takeover" 也可
+ msgNew.setOperatorId(newControllerId);
+ msgNew.setOperator(newController);
+ baseMessage = new BaseMessage<>("control", msgNew);
+ WebSocketUtil.sendMessage(newControllerId, JSON.toJSONString(baseMessage));
+
+ // 3️⃣ 广播给观战用户(可选)
+ UavControlMessage msgBroadcast = new UavControlMessage();
+ msgBroadcast.setBoxSn(boxSn);
+ msgBroadcast.setType(type);
+ msgBroadcast.setAction("takeover");
+ msgBroadcast.setOperatorId(newControllerId);
+ msgBroadcast.setOperator(newController);
+ msgBroadcast.setControllerId(oldControllerId);
+ msgBroadcast.setController(oldController);
+ baseMessage = new BaseMessage<>("control", msgBroadcast);
+ WebSocketUtil.sendMessageAll(JSON.toJSONString(baseMessage));
+ }
+
/**
* 获取指定设备的当前操作者信息
* 该方法重写自父类,用于获取无人机和载荷的当前控制者用户ID
diff --git a/ard-work/src/main/java/com/ard/work/domain/message/UavControlMessage.java b/ard-work/src/main/java/com/ard/work/domain/message/UavControlMessage.java
index 981895b..e880328 100644
--- a/ard-work/src/main/java/com/ard/work/domain/message/UavControlMessage.java
+++ b/ard-work/src/main/java/com/ard/work/domain/message/UavControlMessage.java
@@ -7,6 +7,12 @@
import java.util.Map;
+/**
+ * 无人机控制消息
+ * @author lsy
+ * @date 2026/1/19
+ */
+
@Data
@AllArgsConstructor
@NoArgsConstructor
@@ -14,20 +20,17 @@
private String boxSn; // 无人机编号
private String type; // 控制类型(fly 或 payload)
- private Long requesterId; // 申请者ID(仅在请求控制时使用)
- private SysUser requester; // 申请者实体
- private Boolean approved; // 控制是否被批准(仅在处理请求控制时使用)
- /**
- * 是否订阅
- */
- private Boolean subscribe;
- private Map<String, Long> controller;
+ private String action; // request / approve / reject / release / takeover
- public UavControlMessage(String boxSn, String type, Long requesterId, Boolean approved) {
- this.boxSn = boxSn;
- this.type = type;
- this.requesterId = requesterId;
- this.approved = approved;
- }
+ /** 本次动作的发起者(申请者 / 接管者) */
+ private Long operatorId;
+ private SysUser operator;
+ /** 当前控制者 */
+ private Long controllerId;
+ private SysUser controller;
+
+ private Boolean approved; // true / false
+
+ private Boolean subscribe; // true 表示订阅,false 表示取消订阅
}
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 4c61618..3014fe2 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
@@ -2,8 +2,9 @@
import com.ard.common.exception.ControlException;
import com.ard.common.utils.SecurityUtils;
-import com.ard.work.domain.message.UavControlType;
+import com.ard.system.service.ISysUserService;
import com.ard.work.component.websocket.handler.UavControlManager;
+import com.ard.work.domain.message.UavControlType;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -12,7 +13,8 @@
import java.util.concurrent.ConcurrentHashMap;
/**
- * UAV控制服务类,负责管理对飞行和载荷的控制请求、释放和权限管理。
+ * UAV控制服务类,负责管理对飞行和载荷的控制请求、释放和权限管理
+ * 支持优先级抢占
*/
@Service
public class UavControlService {
@@ -20,30 +22,23 @@
@Resource
private UavControlManager uavControlManager;
- /**
- * 记录当前获得飞行控制权限的用户
- */
+ @Resource
+ private ISysUserService sysUserService;
+
+ /** 当前飞行控制权限用户 */
private final ConcurrentHashMap<String, Long> uavFlyControlMap = new ConcurrentHashMap<>();
- /**
- * 记录当前获得载荷控制权限的用户
- */
+
+ /** 当前载荷控制权限用户 */
private final ConcurrentHashMap<String, Long> uavPayloadControlMap = new ConcurrentHashMap<>();
- /**
- * 记录飞行控制请求
- */
+ /** 飞行控制请求 */
private final ConcurrentHashMap<String, Long> flyControlRequests = new ConcurrentHashMap<>();
- /**
- * 记录载荷控制请求
- */
+
+ /** 载荷控制请求 */
private final ConcurrentHashMap<String, Long> payloadControlRequests = new ConcurrentHashMap<>();
/**
* 请求获取 UAV 控制权限
- *
- * @param boxSn 设备序列号
- * @param type 控制类型("fly"、"payload")
- * @return 是否立即获得控制权限
*/
public boolean requestControl(String boxSn, String type) {
UavControlType controlType = UavControlType.fromString(type);
@@ -55,31 +50,46 @@
* 处理单个控制类型的请求
*/
private boolean requestSingleControl(String boxSn, UavControlType controlType, Long requester) {
-
ConcurrentHashMap<String, Long> controlMap = getControlMap(controlType);
ConcurrentHashMap<String, Long> requestMap = getRequestMap(controlType);
Long controller = controlMap.get(boxSn);
+
+ // 无人控制 → 直接获取
if (controller == null) {
controlMap.put(boxSn, requester);
+ uavControlManager.sendControlApproval(requester, boxSn, controlType.getType(), requester);
return true;
}
- if (!controller.equals(requester)) {
- requestMap.put(boxSn, requester);
- uavControlManager.sendControlRequest(controller, boxSn, controlType.getType(), requester);
- } else {
+
+ // 已是控制者
+ if (controller.equals(requester)) {
throw new ControlException("当前已拥有控制权");
}
+
+ int requesterPriority = getUserPriority(requester);
+ int controllerPriority = getUserPriority(controller);
+
+ // 优先级高 → 直接接管
+ if (requesterPriority > controllerPriority) {
+ controlMap.put(boxSn, requester);
+
+ // 通知原控制者被抢占
+ uavControlManager.sendControlTakeover(controller, requester, boxSn, controlType.getType());
+
+ // 通知新控制者获得控制
+ uavControlManager.sendControlApproval(requester, boxSn, controlType.getType(), requester);
+ return true;
+ }
+
+ // 优先级相同或更低 → 申请流程
+ requestMap.put(boxSn, requester);
+ uavControlManager.sendControlRequest(controller, boxSn, controlType.getType(), requester);
return false;
}
/**
- * 处理 UAV 控制请求的响应(同意或拒绝)
- *
- * @param boxSn 设备序列号
- * @param approve 是否同意
- * @param type 控制类型
- * @return 是否成功处理
+ * 处理 UAV 控制请求的响应
*/
public boolean handleControlResponse(String boxSn, boolean approve, String type) {
UavControlType controlType = UavControlType.fromString(type);
@@ -88,7 +98,7 @@
}
/**
- * 处理单个控制类型的请求响应
+ * 处理单个控制类型请求响应
*/
private boolean handleSingleControlResponse(String boxSn, boolean approve, UavControlType controlType,
Long controller) {
@@ -101,9 +111,9 @@
if (approve) {
getControlMap(controlType).put(boxSn, requester);
- uavControlManager.sendControlApproval(requester, boxSn, controlType.getType());
+ uavControlManager.sendControlApproval(requester, boxSn, controlType.getType(), controller);
} else {
- uavControlManager.sendControlRejection(requester, boxSn, controlType.getType());
+ uavControlManager.sendControlRejection(requester, boxSn, controlType.getType(), controller);
}
requestMap.remove(boxSn);
@@ -112,10 +122,6 @@
/**
* 释放 UAV 控制权限
- *
- * @param boxSn 设备序列号
- * @param type 控制类型
- * @return 是否成功释放控制
*/
public boolean releaseControl(String boxSn, String type) {
UavControlType controlType = UavControlType.fromString(type);
@@ -124,7 +130,7 @@
}
/**
- * 释放单个控制类型的权限
+ * 释放单个控制类型权限
*/
private boolean releaseSingleControl(String boxSn, UavControlType controlType, Long controller) {
ConcurrentHashMap<String, Long> controlMap = getControlMap(controlType);
@@ -134,42 +140,35 @@
}
controlMap.remove(boxSn);
- uavControlManager.sendControlRelease(boxSn, controlType.getType());
+ uavControlManager.sendControlRelease(boxSn, controlType.getType(), controller);
return true;
}
/**
- * 释放用户所有 UAV 控制权
+ * 释放用户所有控制权限
*/
public void releaseAllControls(Long userId) {
- // 释放飞行控制
uavFlyControlMap.entrySet().removeIf(entry -> entry.getValue().equals(userId));
-
- // 释放载荷控制
uavPayloadControlMap.entrySet().removeIf(entry -> entry.getValue().equals(userId));
}
/**
* 获取当前某设备的控制用户
- *
- * @param boxSn 设备序列号
- * @param type 控制类型
- * @return 当前控制该设备的用户 ID
*/
public Long getCurrentController(String boxSn, String type) {
UavControlType controlType = UavControlType.fromString(type);
return getControlMap(controlType).get(boxSn);
}
- public Map<String,Long> getCurrentController(String boxSn) {
- Long flyController = uavFlyControlMap.get(boxSn);
- Map<String,Long> map=new HashMap<>();
- map.put("flyController",flyController);
- Long payloadController = uavPayloadControlMap.get(boxSn);
- map.put("payloadController",payloadController);
+
+ public Map<String, Long> getCurrentController(String boxSn) {
+ Map<String, Long> map = new HashMap<>();
+ map.put("flyController", uavFlyControlMap.get(boxSn));
+ map.put("payloadController", uavPayloadControlMap.get(boxSn));
return map;
}
+
/**
- * 根据控制类型获取对应的控制 Map
+ * 根据控制类型获取对应控制 Map
*/
private ConcurrentHashMap<String, Long> getControlMap(UavControlType controlType) {
switch (controlType) {
@@ -183,7 +182,7 @@
}
/**
- * 根据控制类型获取对应的请求 Map
+ * 根据控制类型获取对应请求 Map
*/
private ConcurrentHashMap<String, Long> getRequestMap(UavControlType controlType) {
switch (controlType) {
@@ -195,4 +194,11 @@
throw new IllegalArgumentException("不支持的控制类型");
}
}
+
+ /**
+ * 获取用户优先级
+ */
+ private int getUserPriority(Long userId) {
+ return sysUserService.selectUserById(userId).getPriority();
+ }
}
--
Gitblit v1.9.3