package com.ard.gb28181.api; import com.ard.common.core.constant.SecurityConstants; import com.ard.common.core.constant.ServiceNameConstants; import com.ard.common.core.domain.R; import com.ard.common.core.domain.RtpServerParam; import com.ard.gb28181.api.domain.Device; import com.ard.gb28181.api.domain.DeviceChannel; import com.ard.gb28181.api.domain.GbChannelDTO; import com.ard.gb28181.api.domain.GbDeviceDTO; import com.ard.gb28181.api.factory.RemoteGb28181FallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; import java.util.List; /** * gb28181 服务 * * @FileName RemoteGb28181Service * @Description * @Author fengcheng * @date 2026-03-30 **/ @FeignClient(contextId = "remoteGb28181Service", value = ServiceNameConstants.GB28181_SERVICE, fallbackFactory = RemoteGb28181FallbackFactory.class) public interface RemoteGb28181Service { /** * 根据设备id获取设备 * * @param gbDeviceId * @param inner * @return */ @GetMapping("/api/gb28181/getDeviceByDeviceId/{gbDeviceId}") R getDeviceByDeviceId(@PathVariable String gbDeviceId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 请求预览视频流 * * @param rtpServer * @param inner * @return */ @PostMapping("/api/gb28181/playStreamCmd") R playStreamCmd(@RequestBody RtpServerParam rtpServer, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 根据设备id和通道获取设备通道 * * @param gbDeviceId * @param gbChannelId * @param inner * @return */ @GetMapping("/api/gb28181/getDeviceChannelByChannelId/{gbDeviceId}/{gbChannelId}") R getDeviceChannelByChannelId(@PathVariable String gbDeviceId, @PathVariable String gbChannelId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 停止视频流 * * @param rtpServer * @param inner * @return */ @PostMapping("/api/gb28181/streamByeCmd") R streamByeCmd(@RequestBody RtpServerParam rtpServer, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 获取全部设备 * * @param inner * @return */ @GetMapping("/api/gb28181/getAllDevices") R> getAllDevices(@RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 根据国标设备ID获取GbDevice */ @GetMapping("/api/gb28181/getGbDevice/{gbDeviceId}") R getGbDevice(@PathVariable String gbDeviceId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 获取所有GbDevice列表 */ @GetMapping("/api/gb28181/getAllGbDevices") R> getAllGbDevices(@RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 根据国标设备ID和通道ID获取GbChannel */ @GetMapping("/api/gb28181/getGbChannel/{gbDeviceId}/{gbChannelId}") R getGbChannel(@PathVariable String gbDeviceId, @PathVariable String gbChannelId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 根据国标设备ID获取所有通道 */ @GetMapping("/api/gb28181/getGbChannelsByDeviceId/{gbDeviceId}") R> getGbChannelsByDeviceId(@PathVariable String gbDeviceId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 更新GbChannel流状态 */ @PostMapping("/api/gb28181/updateGbChannelStream") R updateGbChannelStream(@RequestBody GbChannelDTO gbChannel, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 通用前端控制命令(参考国标文档A.3.1指令格式) * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param cmdCode 指令码(对应国标文档指令格式中的字节4) * @param parameter1 数据一(对应国标文档指令格式中的字节5, 范围0-255) * @param parameter2 数据二(对应国标文档指令格式中的字节6, 范围0-255) * @param combindCode2 组合码二(对应国标文档指令格式中的字节7, 范围0-15) * @param inner */ @GetMapping("/api/gb28181/common/ptz/{deviceId}/{channelId}") R frontEndCommand(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam Integer cmdCode, @RequestParam Integer parameter1, @RequestParam Integer parameter2, @RequestParam Integer combindCode2, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 云台控制 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param command 控制指令,允许值: left, right, up, down, upleft, upright, downleft, downright, zoomin, zoomout, stop * @param horizonSpeed 水平速度(0-255) * @param verticalSpeed 垂直速度(0-255) * @param zoomSpeed 缩放速度(0-15) * @param inner */ @GetMapping("/api/gb28181/ptz/{deviceId}/{channelId}") R ptz(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam String command, @RequestParam Integer horizonSpeed, @RequestParam Integer verticalSpeed, @RequestParam Integer zoomSpeed, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 光圈控制 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param command 控制指令,允许值: in, out, stop * @param speed 光圈速度(0-255) * @param inner */ @GetMapping("/api/gb28181/fi/iris/{deviceId}/{channelId}") R iris(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam String command, @RequestParam Integer speed, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 聚焦控制 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param command 控制指令,允许值: near, far, stop * @param speed 聚焦速度(0-255) * @param inner */ @GetMapping("/api/gb28181/fi/focus/{deviceId}/{channelId}") R focus(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam String command, @RequestParam Integer speed, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 查询预置位 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param inner * @return */ @GetMapping("/api/gb28181/preset/query/{deviceId}/{channelId}") R queryPreset(@PathVariable String deviceId, @PathVariable String channelId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 预置位指令-设置预置位 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param presetId 预置位编号(1-255) * @param inner */ @GetMapping("/api/gb28181/preset/add/{deviceId}/{channelId}") R addPreset(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam Integer presetId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 预置位指令-调用预置位 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param presetId 预置位编号(1-255) * @param inner */ @GetMapping("/api/gb28181/preset/call/{deviceId}/{channelId}") R callPreset(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam Integer presetId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 预置位指令-删除预置位 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param presetId 预置位编号(1-255) * @param inner */ @GetMapping("/api/gb28181/preset/delete/{deviceId}/{channelId}") R deletePreset(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam Integer presetId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 巡航指令-加入巡航点 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param cruiseId 巡航组号(0-255) * @param presetId 预置位编号(1-255) * @param inner */ @GetMapping("/api/gb28181/cruise/point/add/{deviceId}/{channelId}") R addCruisePoint(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam Integer cruiseId, @RequestParam Integer presetId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 巡航指令-删除一个巡航点 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param cruiseId 巡航组号(1-255) * @param presetId 预置位编号(0-255, 为0时删除整个巡航) * @param inner */ @GetMapping("/api/gb28181/cruise/point/delete/{deviceId}/{channelId}") R deleteCruisePoint(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam Integer cruiseId, @RequestParam Integer presetId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 巡航指令-设置巡航速度 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param cruiseId 巡航组号(0-255) * @param speed 巡航速度(1-4095) * @param inner */ @GetMapping("/api/gb28181/cruise/speed/{deviceId}/{channelId}") R setCruiseSpeed(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam Integer cruiseId, @RequestParam Integer speed, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 巡航指令-设置巡航停留时间 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param cruiseId 巡航组号 * @param time 巡航停留时间(1-4095) * @param inner */ @GetMapping("/api/gb28181/cruise/time/{deviceId}/{channelId}") R setCruiseTime(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam Integer cruiseId, @RequestParam Integer time, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 巡航指令-开始巡航 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param cruiseId 巡航组号 * @param inner */ @GetMapping("/api/gb28181/cruise/start/{deviceId}/{channelId}") R startCruise(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam Integer cruiseId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 巡航指令-停止巡航 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param cruiseId 巡航组号 * @param inner */ @GetMapping("/api/gb28181/cruise/stop/{deviceId}/{channelId}") R stopCruise(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam Integer cruiseId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 扫描指令-开始自动扫描 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param scanId 扫描组号(0-255) * @param inner */ @GetMapping("/api/gb28181/scan/start/{deviceId}/{channelId}") R startScan(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam Integer scanId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 扫描指令-停止自动扫描 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param scanId 扫描组号(0-255) * @param inner */ @GetMapping("/api/gb28181/scan/stop/{deviceId}/{channelId}") R stopScan(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam Integer scanId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 扫描指令-设置自动扫描左边界 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param scanId 扫描组号(0-255) * @param inner */ @GetMapping("/api/gb28181/scan/set/left/{deviceId}/{channelId}") R setScanLeft(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam Integer scanId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 扫描指令-设置自动扫描右边界 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param scanId 扫描组号(0-255) * @param inner */ @GetMapping("/api/gb28181/scan/set/right/{deviceId}/{channelId}") R setScanRight(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam Integer scanId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 扫描指令-设置自动扫描速度 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param scanId 扫描组号(0-255) * @param speed 自动扫描速度(1-4095) * @param inner */ @GetMapping("/api/gb28181/scan/set/speed/{deviceId}/{channelId}") R setScanSpeed(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam Integer scanId, @RequestParam Integer speed, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 辅助开关控制指令-雨刷控制 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param command 控制指令,允许值: on, off * @param inner */ @GetMapping("/api/gb28181/wiper/{deviceId}/{channelId}") R wiper(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam String command, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); /** * 辅助开关控制指令 * * @param deviceId 设备国标编号 * @param channelId 通道国标编号 * @param command 控制指令,允许值: on, off * @param switchId 开关编号 * @param inner */ @GetMapping("/api/gb28181/auxiliary/{deviceId}/{channelId}") R auxiliarySwitch(@PathVariable String deviceId, @PathVariable String channelId, @RequestParam String command, @RequestParam Integer switchId, @RequestHeader(SecurityConstants.FROM_SOURCE) String inner); }