| | |
| | | package com.ard.tianyu.service.control; |
| | | |
| | | import com.ard.common.exception.NoPermissionException; |
| | | import com.ard.common.exception.ControlException; |
| | | import com.ard.common.utils.SecurityUtils; |
| | | import com.ard.tianyu.websocket.domain.UavControlType; |
| | | import com.ard.tianyu.websocket.handler.UavControlManager; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | |
| | | public class UavControlService { |
| | | |
| | | @Resource |
| | | private WebSocketService webSocketService; |
| | | private UavControlManager uavControlManager; |
| | | |
| | | /** |
| | | * 记录当前获得飞行控制权限的用户 |
| | |
| | | } |
| | | if (!controller.equals(requester)) { |
| | | requestMap.put(boxSn, requester); |
| | | webSocketService.sendControlRequest(controller, boxSn, controlType.getType(), requester); |
| | | uavControlManager.sendControlRequest(controller, boxSn, controlType.getType(), requester); |
| | | } else { |
| | | throw new NoPermissionException("当前已拥有控制权"); |
| | | throw new ControlException("当前已拥有控制权"); |
| | | } |
| | | return false; |
| | | } |
| | |
| | | Long requester = requestMap.get(boxSn); |
| | | |
| | | if (requester == null || requester.equals(controller)) { |
| | | throw new NoPermissionException("无控制请求"); |
| | | throw new ControlException("无控制请求"); |
| | | } |
| | | |
| | | if (approve) { |
| | | getControlMap(controlType).put(boxSn, requester); |
| | | webSocketService.sendControlApproval(requester, boxSn, controlType.getType()); |
| | | uavControlManager.sendControlApproval(requester, boxSn, controlType.getType()); |
| | | } else { |
| | | webSocketService.sendControlRejection(requester, boxSn, controlType.getType()); |
| | | uavControlManager.sendControlRejection(requester, boxSn, controlType.getType()); |
| | | } |
| | | |
| | | requestMap.remove(boxSn); |
| | |
| | | ConcurrentHashMap<String, Long> controlMap = getControlMap(controlType); |
| | | |
| | | if (!controller.equals(controlMap.get(boxSn))) { |
| | | throw new NoPermissionException("没有该设备的" + controlType.getType().toUpperCase() + "控制权"); |
| | | throw new ControlException("没有该设备的" + controlType.getType().toUpperCase() + "控制权"); |
| | | } |
| | | |
| | | controlMap.remove(boxSn); |
| | | webSocketService.sendControlRelease(boxSn, controlType.getType()); |
| | | uavControlManager.sendControlRelease(boxSn, controlType.getType()); |
| | | return true; |
| | | } |
| | | |