feign wvp 接口定义
This commit is contained in:
parent
d2d278ae76
commit
0a7fefaead
@ -0,0 +1,23 @@
|
||||
package cn.skcks.docking.gb28181.wvp.dto.common;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
public class GeneralTimeReq {
|
||||
@DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN)
|
||||
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
|
||||
private Date startTime;
|
||||
|
||||
@DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN)
|
||||
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
|
||||
private Date endTime;
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package cn.skcks.docking.gb28181.wvp.dto.download;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class DownloadStartReq {
|
||||
@DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN)
|
||||
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
|
||||
private Date startTime;
|
||||
|
||||
@DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN)
|
||||
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
|
||||
private Date endTime;
|
||||
|
||||
private int downloadSpeed = 4;
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
package cn.skcks.docking.gb28181.wvp.dto.download;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class DownloadStartResp {
|
||||
private String app;
|
||||
|
||||
@DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN)
|
||||
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
|
||||
private Date endTime;
|
||||
|
||||
private String flv;
|
||||
private String fmp4;
|
||||
private String hls;
|
||||
private String httpsFlv;
|
||||
private String httpsFmp4;
|
||||
private String httpsHls;
|
||||
private String httpsTs;
|
||||
private String mediaServerId;
|
||||
private Double progress;
|
||||
private String rtc;
|
||||
private String rtcs;
|
||||
private String rtmp;
|
||||
private String rtsp;
|
||||
|
||||
@DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN)
|
||||
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
|
||||
private Date startTime;
|
||||
private String stream;
|
||||
private List<TracksDTO> tracks;
|
||||
private String ts;
|
||||
private String wsFlv;
|
||||
private String wsFmp4;
|
||||
private String wsHls;
|
||||
private String wsTs;
|
||||
private String wssFlv;
|
||||
private String wssFmp4;
|
||||
private String wssHls;
|
||||
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public static class TracksDTO {
|
||||
private Integer channels;
|
||||
private Integer codecId;
|
||||
private Integer codecType;
|
||||
private Integer fps;
|
||||
private Integer height;
|
||||
private Boolean ready;
|
||||
private Integer sampleBit;
|
||||
private Integer sampleRate;
|
||||
private Integer width;
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package cn.skcks.docking.gb28181.wvp.dto.media.proxy;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class AddDownloadTaskReq {
|
||||
/**
|
||||
* 应用id
|
||||
* <p>WvpProxyClient.downloadStart 或 WvpProxyClient.downloadProgress 返回值中获取的 app 字段</p>
|
||||
*/
|
||||
private String app;
|
||||
|
||||
/**
|
||||
* 流id
|
||||
* <p>WvpProxyClient.downloadStart 或 WvpProxyClient.downloadProgress 返回值中获取的 stream 字段</p>
|
||||
*/
|
||||
private String stream;
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package cn.skcks.docking.gb28181.wvp.dto.media.proxy;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class GetDownloadTaskReq {
|
||||
/**
|
||||
* 应用id
|
||||
* <p>WvpProxyClient.downloadStart 或 WvpProxyClient.downloadProgress 返回值中获取的 app 字段</p>
|
||||
*/
|
||||
private String app;
|
||||
|
||||
/**
|
||||
* 流id
|
||||
* <p>WvpProxyClient.downloadStart 或 WvpProxyClient.downloadProgress 返回值中获取的 stream 字段</p>
|
||||
*/
|
||||
private String stream;
|
||||
|
||||
private String taskId;
|
||||
|
||||
@JsonProperty("isEnd")
|
||||
private Boolean isEnd;
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package cn.skcks.docking.gb28181.wvp.dto.media.proxy;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class GetDownloadTaskResp {
|
||||
private String id;
|
||||
private String app;
|
||||
private String stream;
|
||||
@DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN)
|
||||
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
|
||||
private Date startTime;
|
||||
|
||||
@DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN)
|
||||
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
|
||||
private Date endTime;
|
||||
|
||||
@DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN)
|
||||
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
|
||||
private String createTime;
|
||||
private String percentage;
|
||||
private String recordFile;
|
||||
private String downloadFile;
|
||||
private String playFile;
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package cn.skcks.docking.gb28181.wvp.dto.record;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class QueryRecordReq {
|
||||
@DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN)
|
||||
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
|
||||
private Date startTime;
|
||||
|
||||
@DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN)
|
||||
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
|
||||
private Date endTime;
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package cn.skcks.docking.gb28181.wvp.dto.record;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class QueryRecordResp {
|
||||
|
||||
private String channelId;
|
||||
private Integer count;
|
||||
private String deviceId;
|
||||
private String name;
|
||||
private List<RecordListDTO> recordList;
|
||||
private String sn;
|
||||
private Integer sumNum;
|
||||
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public static class RecordListDTO {
|
||||
private String deviceId;
|
||||
|
||||
@DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN)
|
||||
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
|
||||
private String endTime;
|
||||
private String filePath;
|
||||
private String name;
|
||||
private Integer secrecy;
|
||||
|
||||
@DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN)
|
||||
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
|
||||
private String startTime;
|
||||
private String type;
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
package cn.skcks.docking.gb28181.wvp.dto.stream;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class StreamContent {
|
||||
private String app;
|
||||
@DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN)
|
||||
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
|
||||
private Date endTime;
|
||||
private String flv;
|
||||
private String fmp4;
|
||||
private String hls;
|
||||
private String httpsFlv;
|
||||
private String httpsFmp4;
|
||||
private String httpsHls;
|
||||
private String httpsTs;
|
||||
private String mediaServerId;
|
||||
private Double progress;
|
||||
private String rtc;
|
||||
private String rtcs;
|
||||
private String rtmp;
|
||||
private String rtsp;
|
||||
|
||||
@DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN)
|
||||
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
|
||||
private Date startTime;
|
||||
private String stream;
|
||||
private List<TracksDTO> tracks;
|
||||
private String ts;
|
||||
private String wsFlv;
|
||||
private String wsFmp4;
|
||||
private String wsHls;
|
||||
private String wsTs;
|
||||
private String wssFlv;
|
||||
private String wssFmp4;
|
||||
private String wssHls;
|
||||
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public static class TracksDTO {
|
||||
private Integer channels;
|
||||
private Integer codecId;
|
||||
private Integer codecType;
|
||||
private Integer fps;
|
||||
private Integer height;
|
||||
private Boolean ready;
|
||||
private Integer sampleBit;
|
||||
private Integer sampleRate;
|
||||
private Integer width;
|
||||
}
|
||||
}
|
@ -1,12 +1,20 @@
|
||||
package cn.skcks.docking.gb28181.wvp.proxy;
|
||||
|
||||
import cn.skcks.docking.gb28181.common.json.JsonResponse;
|
||||
import cn.skcks.docking.gb28181.wvp.dto.common.GeneralTimeReq;
|
||||
import cn.skcks.docking.gb28181.wvp.dto.device.GetDeviceChannelsReq;
|
||||
import cn.skcks.docking.gb28181.wvp.dto.device.GetDeviceChannelsResp;
|
||||
import cn.skcks.docking.gb28181.wvp.dto.device.GetDeviceTreeReq;
|
||||
import cn.skcks.docking.gb28181.wvp.dto.device.GetDeviceTreeResp;
|
||||
import cn.skcks.docking.gb28181.wvp.dto.download.DownloadStartReq;
|
||||
import cn.skcks.docking.gb28181.wvp.dto.login.WvpLoginReq;
|
||||
import cn.skcks.docking.gb28181.wvp.dto.login.WvpLoginResp;
|
||||
import cn.skcks.docking.gb28181.wvp.dto.media.proxy.AddDownloadTaskReq;
|
||||
import cn.skcks.docking.gb28181.wvp.dto.media.proxy.GetDownloadTaskReq;
|
||||
import cn.skcks.docking.gb28181.wvp.dto.media.proxy.GetDownloadTaskResp;
|
||||
import cn.skcks.docking.gb28181.wvp.dto.record.QueryRecordReq;
|
||||
import cn.skcks.docking.gb28181.wvp.dto.record.QueryRecordResp;
|
||||
import cn.skcks.docking.gb28181.wvp.dto.stream.StreamContent;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.cloud.openfeign.SpringQueryMap;
|
||||
import org.springframework.http.MediaType;
|
||||
@ -19,9 +27,74 @@ public interface WvpProxyClient {
|
||||
@GetMapping(value = "/api/user/login", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
|
||||
JsonResponse<WvpLoginResp> login(@SpringQueryMap WvpLoginReq req);
|
||||
|
||||
@GetMapping(value = "/api/device/query/tree/channel/{deviceId}")
|
||||
JsonResponse<GetDeviceTreeResp> getDeviceTree(@RequestHeader("access-token") String token, @PathVariable String deviceId, @SpringQueryMap GetDeviceTreeReq req);
|
||||
@GetMapping("/api/device/query/tree/channel/{deviceId}")
|
||||
JsonResponse<GetDeviceTreeResp> getDeviceTree(@RequestHeader("access-token") String token,
|
||||
@PathVariable String deviceId,
|
||||
@SpringQueryMap GetDeviceTreeReq req);
|
||||
|
||||
@GetMapping(value = "/api/device/query/devices/{deviceId}/channels")
|
||||
JsonResponse<GetDeviceChannelsResp> getDeviceChannels(@RequestHeader("access-token") String token, @PathVariable String deviceId, @SpringQueryMap GetDeviceChannelsReq req);
|
||||
@GetMapping("/api/device/query/devices/{deviceId}/channels")
|
||||
JsonResponse<GetDeviceChannelsResp> getDeviceChannels(@RequestHeader("access-token") String token,
|
||||
@PathVariable String deviceId,
|
||||
@SpringQueryMap GetDeviceChannelsReq req);
|
||||
|
||||
@GetMapping("/api/gb_record/query/{deviceId}/{channelId}")
|
||||
JsonResponse<QueryRecordResp> queryRecord(@RequestHeader("access-token") String token,
|
||||
@PathVariable String deviceId,
|
||||
@PathVariable String channelId,
|
||||
@SpringQueryMap QueryRecordReq req);
|
||||
|
||||
// /api/playback/start/44050100001180000001/44050100001310000001?startTime=2023-09-07%2000:20:01&endTime=2023-09-07%2000:25:01
|
||||
@GetMapping("/api/playback/start/{deviceId}/{channelId}")
|
||||
JsonResponse<StreamContent> playbackStart(@RequestHeader("access-token") String token,
|
||||
@PathVariable String deviceId,
|
||||
@PathVariable String channelId,
|
||||
@SpringQueryMap GeneralTimeReq req);
|
||||
|
||||
// /api/playback/stop/44050100001180000001/44050100001310000001/44050100001180000001_44050100001310000001_20230908083001_20230908083501
|
||||
@GetMapping("/api/gb_record/download/start/{deviceId}/{channelId}")
|
||||
JsonResponse<StreamContent> downloadStart(@RequestHeader("access-token") String token,
|
||||
@PathVariable String deviceId,
|
||||
@PathVariable String channelId,
|
||||
@SpringQueryMap DownloadStartReq req);
|
||||
|
||||
// /api/gb_record/download/progress/44050100001180000001/44050100001310000001/59777645
|
||||
@GetMapping("/api/gb_record/download/progress/{deviceId}/{channelId}/{stream}")
|
||||
JsonResponse<StreamContent> downloadProgress(@RequestHeader("access-token") String token,
|
||||
@PathVariable String deviceId,
|
||||
@PathVariable String channelId,
|
||||
@PathVariable String stream);
|
||||
|
||||
/**
|
||||
* 停止下载, 部分设备会出现长时间卡住不动 且 wvp 会出现 100 错误, 故调用即可无需理会返回值
|
||||
* @param token 认证token
|
||||
* @param deviceId 国标设备id/下级平台id
|
||||
* @param channelId 通道id
|
||||
* @param stream downloadStart中的 stream
|
||||
*/
|
||||
// /api/gb_record/download/stop/44050100001180000001/44050100001310000001/59777645
|
||||
@GetMapping("/api/gb_record/download/stop/{deviceId}/{channelId}/{stream}")
|
||||
JsonResponse<Void> downloadStop(@RequestHeader("access-token") String token,
|
||||
@PathVariable String deviceId,
|
||||
@PathVariable String channelId,
|
||||
@PathVariable String stream);
|
||||
|
||||
/**
|
||||
* 添加视频裁剪合并 任务 到 wvp-assist 服务, 返回 taskId 用于后续操作
|
||||
* @param token 认证token
|
||||
* @param mediaServerId 流媒体服务id, 从 downloadStart/downloadProgress 获得
|
||||
* @return 返回 taskId 用于后续操作
|
||||
*/
|
||||
// /record_proxy/your_server_id/api/record/file/download/task/add?app=rtp&stream=59777645
|
||||
@GetMapping("/record_proxy/{mediaServerId}/api/record/file/download/task/add")
|
||||
JsonResponse<String> addDownloadTask2MediaServer(@RequestHeader("access-token") String token,
|
||||
@PathVariable String mediaServerId,
|
||||
@SpringQueryMap AddDownloadTaskReq req);
|
||||
|
||||
// /record_proxy/your_server_id/api/record/file/download/task/list?app=rtp&stream=59777645&taskId=0490d767d94ce20aedce57c862b6bfe9&isEnd=true
|
||||
@GetMapping("/record_proxy/{mediaServerId}/api/record/file/download/task/list")
|
||||
JsonResponse<GetDownloadTaskResp> getDownloadTask4MediaServer(@RequestHeader("access-token") String token,
|
||||
@PathVariable String mediaServerId,
|
||||
@SpringQueryMap GetDownloadTaskReq req);
|
||||
|
||||
// /api/gb_record/download/progress/44050100001180000001/44050100001310000001/59777645
|
||||
}
|
||||
|
@ -25,8 +25,8 @@ spring:
|
||||
username: root
|
||||
password: 123456a
|
||||
url: jdbc:mysql://192.168.1.241:3306/gb28181_docking_platform?createDatabaseIfNotExist=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
|
||||
profiles:
|
||||
active: local
|
||||
# profiles:
|
||||
# active: local
|
||||
cloud:
|
||||
openfeign:
|
||||
httpclient:
|
||||
|
Loading…
Reference in New Issue
Block a user