mirror of
https://gitee.com/pan648540858/wvp-GB28181-pro.git
synced 2026-05-24 05:57:49 +08:00
[1078] 适配新的数据库结构
This commit is contained in:
parent
fd5079a652
commit
f0eb101130
@ -8,7 +8,9 @@ public enum ChannelDataType {
|
|||||||
|
|
||||||
GB28181(1,"国标28181"),
|
GB28181(1,"国标28181"),
|
||||||
STREAM_PUSH(2,"推流设备"),
|
STREAM_PUSH(2,"推流设备"),
|
||||||
STREAM_PROXY(3,"拉流代理");
|
STREAM_PROXY(3,"拉流代理"),
|
||||||
|
JT_1078(200,"部标设备"),
|
||||||
|
;
|
||||||
|
|
||||||
public final int value;
|
public final int value;
|
||||||
|
|
||||||
|
|||||||
@ -144,9 +144,6 @@ public class CommonGBChannel {
|
|||||||
@Schema(description = "关联的设备ID")
|
@Schema(description = "关联的设备ID")
|
||||||
private Integer dataDeviceId;
|
private Integer dataDeviceId;
|
||||||
|
|
||||||
@Schema(description = "关联的部标标通道ID")
|
|
||||||
private Integer jtChannelId;
|
|
||||||
|
|
||||||
@Schema(description = "创建时间")
|
@Schema(description = "创建时间")
|
||||||
private String createTime;
|
private String createTime;
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.genersoft.iot.vmp.jt1078.bean;
|
package com.genersoft.iot.vmp.jt1078.bean;
|
||||||
|
|
||||||
|
import com.genersoft.iot.vmp.common.enums.ChannelDataType;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel;
|
import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -38,6 +39,8 @@ public class JTChannel extends CommonGBChannel {
|
|||||||
@Schema(description = "流信息")
|
@Schema(description = "流信息")
|
||||||
private String stream;
|
private String stream;
|
||||||
|
|
||||||
|
private Integer dataType = ChannelDataType.JT_1078.value;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "JTChannel{" +
|
return "JTChannel{" +
|
||||||
@ -58,7 +61,6 @@ public class JTChannel extends CommonGBChannel {
|
|||||||
if (ObjectUtils.isEmpty(this.getGbName())) {
|
if (ObjectUtils.isEmpty(this.getGbName())) {
|
||||||
this.setGbName(this.getName());
|
this.setGbName(this.getName());
|
||||||
}
|
}
|
||||||
this.setJtChannelId(this.getId());
|
|
||||||
return this;
|
return this;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.genersoft.iot.vmp.jt1078.controller;
|
package com.genersoft.iot.vmp.jt1078.controller;
|
||||||
|
|
||||||
|
import com.genersoft.iot.vmp.common.StreamInfo;
|
||||||
import com.genersoft.iot.vmp.conf.ftpServer.FtpSetting;
|
import com.genersoft.iot.vmp.conf.ftpServer.FtpSetting;
|
||||||
import com.genersoft.iot.vmp.conf.UserSetting;
|
import com.genersoft.iot.vmp.conf.UserSetting;
|
||||||
import com.genersoft.iot.vmp.conf.exception.ControllerException;
|
import com.genersoft.iot.vmp.conf.exception.ControllerException;
|
||||||
@ -96,11 +97,12 @@ public class JT1078Controller {
|
|||||||
jt1078PlayService.stopPlay(phoneNumber, channelId);
|
jt1078PlayService.stopPlay(phoneNumber, channelId);
|
||||||
});
|
});
|
||||||
|
|
||||||
jt1078PlayService.play(phoneNumber, channelId, type, (code, msg, streamInfo) -> {
|
jt1078PlayService.play(phoneNumber, channelId, type, wvpResult -> {
|
||||||
WVPResult<StreamContent> wvpResult = new WVPResult<>();
|
WVPResult<StreamContent> wvpResultForFinish = new WVPResult<>();
|
||||||
if (code == InviteErrorCode.SUCCESS.getCode()) {
|
wvpResultForFinish.setCode(wvpResult.getCode());
|
||||||
wvpResult.setCode(ErrorCode.SUCCESS.getCode());
|
wvpResultForFinish.setMsg(wvpResult.getMsg());
|
||||||
wvpResult.setMsg(ErrorCode.SUCCESS.getMsg());
|
if (wvpResult.getCode() == InviteErrorCode.SUCCESS.getCode()) {
|
||||||
|
StreamInfo streamInfo = wvpResult.getData();
|
||||||
|
|
||||||
if (streamInfo != null) {
|
if (streamInfo != null) {
|
||||||
if (userSetting.getUseSourceIpAsStreamIp()) {
|
if (userSetting.getUseSourceIpAsStreamIp()) {
|
||||||
@ -114,16 +116,10 @@ public class JT1078Controller {
|
|||||||
}
|
}
|
||||||
streamInfo.changeStreamIp(host);
|
streamInfo.changeStreamIp(host);
|
||||||
}
|
}
|
||||||
wvpResult.setData(new StreamContent(streamInfo));
|
wvpResultForFinish.setData(new StreamContent(streamInfo));
|
||||||
}else {
|
|
||||||
wvpResult.setCode(code);
|
|
||||||
wvpResult.setMsg(msg);
|
|
||||||
}
|
}
|
||||||
}else {
|
|
||||||
wvpResult.setCode(code);
|
|
||||||
wvpResult.setMsg(msg);
|
|
||||||
}
|
}
|
||||||
result.setResult(wvpResult);
|
result.setResult(wvpResultForFinish);
|
||||||
});
|
});
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@ -165,15 +161,16 @@ public class JT1078Controller {
|
|||||||
jt1078PlayService.stopPlay(phoneNumber, channelId);
|
jt1078PlayService.stopPlay(phoneNumber, channelId);
|
||||||
});
|
});
|
||||||
|
|
||||||
jt1078PlayService.startTalk(phoneNumber, channelId, app, stream, mediaServerId, onlySend, (code, msg, streamInfo) -> {
|
jt1078PlayService.startTalk(phoneNumber, channelId, app, stream, mediaServerId, onlySend, wvpResult -> {
|
||||||
WVPResult<StreamContent> wvpResult = new WVPResult<>();
|
WVPResult<StreamContent> wvpResultForFinish = new WVPResult<>();
|
||||||
if (code == InviteErrorCode.SUCCESS.getCode()) {
|
wvpResultForFinish.setCode(wvpResult.getCode());
|
||||||
wvpResult.setCode(ErrorCode.SUCCESS.getCode());
|
wvpResultForFinish.setMsg(wvpResult.getMsg());
|
||||||
wvpResult.setMsg(ErrorCode.SUCCESS.getMsg());
|
if (wvpResult.getCode() == InviteErrorCode.SUCCESS.getCode()) {
|
||||||
|
|
||||||
if (streamInfo != null) {
|
if (wvpResult.getData() != null) {
|
||||||
|
StreamInfo streamInfo = wvpResult.getData();
|
||||||
if (userSetting.getUseSourceIpAsStreamIp()) {
|
if (userSetting.getUseSourceIpAsStreamIp()) {
|
||||||
streamInfo=streamInfo.clone();//深拷贝
|
streamInfo = wvpResult.getData().clone();//深拷贝
|
||||||
String host;
|
String host;
|
||||||
try {
|
try {
|
||||||
URL url=new URL(request.getRequestURL().toString());
|
URL url=new URL(request.getRequestURL().toString());
|
||||||
@ -183,16 +180,10 @@ public class JT1078Controller {
|
|||||||
}
|
}
|
||||||
streamInfo.changeStreamIp(host);
|
streamInfo.changeStreamIp(host);
|
||||||
}
|
}
|
||||||
wvpResult.setData(new StreamContent(streamInfo));
|
wvpResultForFinish.setData(new StreamContent(streamInfo));
|
||||||
}else {
|
|
||||||
wvpResult.setCode(code);
|
|
||||||
wvpResult.setMsg(msg);
|
|
||||||
}
|
}
|
||||||
}else {
|
|
||||||
wvpResult.setCode(code);
|
|
||||||
wvpResult.setMsg(msg);
|
|
||||||
}
|
}
|
||||||
result.setResult(wvpResult);
|
result.setResult(wvpResultForFinish);
|
||||||
});
|
});
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@ -293,15 +284,14 @@ public class JT1078Controller {
|
|||||||
jt1078PlayService.stopPlay(phoneNumber, channelId);
|
jt1078PlayService.stopPlay(phoneNumber, channelId);
|
||||||
});
|
});
|
||||||
|
|
||||||
jt1078PlayService.playback(phoneNumber, channelId, startTime, endTime,type, rate, playbackType, playbackSpeed, (code, msg, streamInfo) -> {
|
jt1078PlayService.playback(phoneNumber, channelId, startTime, endTime,type, rate, playbackType, playbackSpeed, wvpResult -> {
|
||||||
WVPResult<StreamContent> wvpResult = new WVPResult<>();
|
WVPResult<StreamContent> wvpResultForFinish = new WVPResult<>();
|
||||||
if (code == InviteErrorCode.SUCCESS.getCode()) {
|
wvpResultForFinish.setCode(wvpResult.getCode());
|
||||||
wvpResult.setCode(ErrorCode.SUCCESS.getCode());
|
wvpResultForFinish.setMsg(wvpResult.getMsg());
|
||||||
wvpResult.setMsg(ErrorCode.SUCCESS.getMsg());
|
if (wvpResult.getCode() == InviteErrorCode.SUCCESS.getCode()) {
|
||||||
|
StreamInfo streamInfo = wvpResult.getData();
|
||||||
if (streamInfo != null) {
|
if (streamInfo != null) {
|
||||||
if (userSetting.getUseSourceIpAsStreamIp()) {
|
if (userSetting.getUseSourceIpAsStreamIp()) {
|
||||||
streamInfo=streamInfo.clone();//深拷贝
|
|
||||||
String host;
|
String host;
|
||||||
try {
|
try {
|
||||||
URL url=new URL(request.getRequestURL().toString());
|
URL url=new URL(request.getRequestURL().toString());
|
||||||
@ -311,16 +301,10 @@ public class JT1078Controller {
|
|||||||
}
|
}
|
||||||
streamInfo.changeStreamIp(host);
|
streamInfo.changeStreamIp(host);
|
||||||
}
|
}
|
||||||
wvpResult.setData(new StreamContent(streamInfo));
|
wvpResultForFinish.setData(new StreamContent(streamInfo));
|
||||||
}else {
|
|
||||||
wvpResult.setCode(code);
|
|
||||||
wvpResult.setMsg(msg);
|
|
||||||
}
|
}
|
||||||
}else {
|
|
||||||
wvpResult.setCode(code);
|
|
||||||
wvpResult.setMsg(msg);
|
|
||||||
}
|
}
|
||||||
result.setResult(wvpResult);
|
result.setResult(wvpResultForFinish);
|
||||||
});
|
});
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@ -385,8 +369,8 @@ public class JT1078Controller {
|
|||||||
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
|
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
|
||||||
response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(phoneNumber + "_" + channelId + ".mp4", "UTF-8"));
|
response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(phoneNumber + "_" + channelId + ".mp4", "UTF-8"));
|
||||||
response.setStatus(HttpServletResponse.SC_OK);
|
response.setStatus(HttpServletResponse.SC_OK);
|
||||||
service.recordDownload(phoneNumber, channelId, startTime, endTime, alarmSign, mediaType, streamType, storageType, (code, msg, data) -> {
|
service.recordDownload(phoneNumber, channelId, startTime, endTime, alarmSign, mediaType, streamType, storageType, wvpResult -> {
|
||||||
String filePath = "ftp" + data;
|
String filePath = "ftp" + wvpResult.getData();
|
||||||
File file = new File(filePath);
|
File file = new File(filePath);
|
||||||
if (!file.exists()) {
|
if (!file.exists()) {
|
||||||
log.warn("[下载录像] 收到通知时未找到录像文件: {}", filePath);
|
log.warn("[下载录像] 收到通知时未找到录像文件: {}", filePath);
|
||||||
|
|||||||
@ -5,10 +5,10 @@ import java.util.Map;
|
|||||||
public class JTChannelProvider {
|
public class JTChannelProvider {
|
||||||
|
|
||||||
public final static String BASE_SQL =
|
public final static String BASE_SQL =
|
||||||
"SELECT jc.*, jc.id as jt_channel_id, wdc.*, wdc.id as gb_id " +
|
"SELECT jc.*, jc.id as data_device_id, wdc.*, wdc.id as gb_id " +
|
||||||
" from wvp_jt_channel jc " +
|
" from wvp_jt_channel jc " +
|
||||||
" LEFT join wvp_device_channel wdc " +
|
" LEFT join wvp_device_channel wdc " +
|
||||||
" on jc.id = wdc.jt_channel_id ";
|
" on jc.id = wdc.data_device_id and wdc.data_type = 200 ";
|
||||||
|
|
||||||
public String selectChannelByChannelId(Map<String, Object> params ){
|
public String selectChannelByChannelId(Map<String, Object> params ){
|
||||||
StringBuilder sqlBuild = new StringBuilder();
|
StringBuilder sqlBuild = new StringBuilder();
|
||||||
|
|||||||
@ -1,69 +0,0 @@
|
|||||||
package com.genersoft.iot.vmp.jt1078.event;
|
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.common.GeneralCallback;
|
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 管理callback回调,支持设置超时时间,未设置则按照五分钟超时自动移除
|
|
||||||
*/
|
|
||||||
@Component
|
|
||||||
public class CallbackManager {
|
|
||||||
|
|
||||||
private final long expire = 5 * 60 * 1000;
|
|
||||||
|
|
||||||
static class ManagerCallBack {
|
|
||||||
public String key;
|
|
||||||
public GeneralCallback<?> callback;
|
|
||||||
public long createTime;
|
|
||||||
public long expire;
|
|
||||||
}
|
|
||||||
|
|
||||||
private final Map<String, ManagerCallBack> allCallbacks = new ConcurrentHashMap<>();
|
|
||||||
|
|
||||||
|
|
||||||
public void addCallback(String key, GeneralCallback<?> callback) {
|
|
||||||
ManagerCallBack managerCallBack = new ManagerCallBack();
|
|
||||||
managerCallBack.callback = callback;
|
|
||||||
managerCallBack.key = key;
|
|
||||||
managerCallBack.createTime = System.currentTimeMillis();
|
|
||||||
managerCallBack.expire = expire;
|
|
||||||
allCallbacks.put(key, managerCallBack);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addCallback(String key, GeneralCallback<Object> callback, long timeout) {
|
|
||||||
ManagerCallBack managerCallBack = new ManagerCallBack();
|
|
||||||
managerCallBack.callback = callback;
|
|
||||||
managerCallBack.key = key;
|
|
||||||
managerCallBack.createTime = System.currentTimeMillis();
|
|
||||||
managerCallBack.expire = timeout;
|
|
||||||
allCallbacks.put(key, managerCallBack);
|
|
||||||
}
|
|
||||||
|
|
||||||
public GeneralCallback<?> getCallback(String key){
|
|
||||||
ManagerCallBack managerCallBack = allCallbacks.get(key);
|
|
||||||
if (managerCallBack != null) {
|
|
||||||
return managerCallBack.callback;
|
|
||||||
}else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeCallback(String key){
|
|
||||||
allCallbacks.remove(key);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 对订阅数据进行过期清理
|
|
||||||
*/
|
|
||||||
@Scheduled(fixedRate=expire) //每5分钟执行一次
|
|
||||||
public void execute(){
|
|
||||||
for (ManagerCallBack callBack : allCallbacks.values()) {
|
|
||||||
if ((System.currentTimeMillis() - callBack.createTime - callBack.expire) > 0) {
|
|
||||||
allCallbacks.remove(callBack.key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,20 +1,20 @@
|
|||||||
package com.genersoft.iot.vmp.jt1078.service;
|
package com.genersoft.iot.vmp.jt1078.service;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.common.GeneralCallback;
|
import com.genersoft.iot.vmp.common.CommonCallback;
|
||||||
import com.genersoft.iot.vmp.common.StreamInfo;
|
import com.genersoft.iot.vmp.common.StreamInfo;
|
||||||
import com.genersoft.iot.vmp.jt1078.bean.*;
|
import com.genersoft.iot.vmp.jt1078.bean.*;
|
||||||
import com.genersoft.iot.vmp.jt1078.proc.request.J1205;
|
import com.genersoft.iot.vmp.jt1078.proc.request.J1205;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface Ijt1078PlayService {
|
public interface Ijt1078PlayService {
|
||||||
JTMediaStreamType checkStreamFromJt(String stream);
|
JTMediaStreamType checkStreamFromJt(String stream);
|
||||||
|
|
||||||
void play(String phoneNumber, Integer channelId, int type, GeneralCallback<StreamInfo> callback);
|
void play(String phoneNumber, Integer channelId, int type, CommonCallback<WVPResult<StreamInfo>> callback);
|
||||||
|
|
||||||
void playback(String phoneNumber, Integer channelId, String startTime, String endTime, Integer type,
|
void playback(String phoneNumber, Integer channelId, String startTime, String endTime, Integer type,
|
||||||
Integer rate, Integer playbackType, Integer playbackSpeed, GeneralCallback<StreamInfo> callback);
|
Integer rate, Integer playbackType, Integer playbackSpeed, CommonCallback<WVPResult<StreamInfo>> callback);
|
||||||
|
|
||||||
void stopPlay(String phoneNumber, Integer channelId);
|
void stopPlay(String phoneNumber, Integer channelId);
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ public interface Ijt1078PlayService {
|
|||||||
|
|
||||||
void stopPlayback(String phoneNumber, Integer channelId);
|
void stopPlayback(String phoneNumber, Integer channelId);
|
||||||
|
|
||||||
void startTalk(String phoneNumber, Integer channelId, String app, String stream, String mediaServerId, Boolean onlySend, GeneralCallback<StreamInfo> callback);
|
void startTalk(String phoneNumber, Integer channelId, String app, String stream, String mediaServerId, Boolean onlySend, CommonCallback<WVPResult<StreamInfo>> callback);
|
||||||
|
|
||||||
void stopTalk(String phoneNumber, Integer channelId);
|
void stopTalk(String phoneNumber, Integer channelId);
|
||||||
|
|
||||||
|
|||||||
@ -1,9 +1,10 @@
|
|||||||
package com.genersoft.iot.vmp.jt1078.service;
|
package com.genersoft.iot.vmp.jt1078.service;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.common.GeneralCallback;
|
import com.genersoft.iot.vmp.common.CommonCallback;
|
||||||
import com.genersoft.iot.vmp.common.StreamInfo;
|
import com.genersoft.iot.vmp.common.StreamInfo;
|
||||||
import com.genersoft.iot.vmp.jt1078.bean.*;
|
import com.genersoft.iot.vmp.jt1078.bean.*;
|
||||||
import com.genersoft.iot.vmp.jt1078.proc.request.J1205;
|
import com.genersoft.iot.vmp.jt1078.proc.request.J1205;
|
||||||
|
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -32,7 +33,7 @@ public interface Ijt1078Service {
|
|||||||
|
|
||||||
void wiper(String phoneNumber, Integer channelId, String command);
|
void wiper(String phoneNumber, Integer channelId, String command);
|
||||||
|
|
||||||
JTDeviceConfig queryConfig(String phoneNumber, String[] params, GeneralCallback<StreamInfo> callback);
|
JTDeviceConfig queryConfig(String phoneNumber, String[] params, CommonCallback<WVPResult<StreamInfo>> callback);
|
||||||
|
|
||||||
void setConfig(String phoneNumber, JTDeviceConfig config);
|
void setConfig(String phoneNumber, JTDeviceConfig config);
|
||||||
|
|
||||||
@ -100,7 +101,7 @@ public interface Ijt1078Service {
|
|||||||
|
|
||||||
void changeStreamType(String phoneNumber, Integer channelId, Integer streamType);
|
void changeStreamType(String phoneNumber, Integer channelId, Integer streamType);
|
||||||
|
|
||||||
void recordDownload(String phoneNumber, Integer channelId, String startTime, String endTime, Integer alarmSign, Integer mediaType, Integer streamType, Integer storageType, GeneralCallback<String> fileCallback);
|
void recordDownload(String phoneNumber, Integer channelId, String startTime, String endTime, Integer alarmSign, Integer mediaType, Integer streamType, Integer storageType, CommonCallback<WVPResult<String>> fileCallback);
|
||||||
|
|
||||||
PageInfo<JTChannel> getChannelList(int page, int count, int deviceId, String query);
|
PageInfo<JTChannel> getChannelList(int page, int count, int deviceId, String query);
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package com.genersoft.iot.vmp.jt1078.service.impl;
|
package com.genersoft.iot.vmp.jt1078.service.impl;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.common.GeneralCallback;
|
import com.genersoft.iot.vmp.common.CommonCallback;
|
||||||
import com.genersoft.iot.vmp.common.StreamInfo;
|
import com.genersoft.iot.vmp.common.StreamInfo;
|
||||||
import com.genersoft.iot.vmp.common.VideoManagerConstants;
|
import com.genersoft.iot.vmp.common.VideoManagerConstants;
|
||||||
import com.genersoft.iot.vmp.conf.DynamicTask;
|
import com.genersoft.iot.vmp.conf.DynamicTask;
|
||||||
@ -10,8 +10,6 @@ import com.genersoft.iot.vmp.conf.ftpServer.FtpSetting;
|
|||||||
import com.genersoft.iot.vmp.gb28181.bean.SendRtpInfo;
|
import com.genersoft.iot.vmp.gb28181.bean.SendRtpInfo;
|
||||||
import com.genersoft.iot.vmp.jt1078.bean.*;
|
import com.genersoft.iot.vmp.jt1078.bean.*;
|
||||||
import com.genersoft.iot.vmp.jt1078.cmd.JT1078Template;
|
import com.genersoft.iot.vmp.jt1078.cmd.JT1078Template;
|
||||||
import com.genersoft.iot.vmp.jt1078.dao.JTChannelMapper;
|
|
||||||
import com.genersoft.iot.vmp.jt1078.dao.JTTerminalMapper;
|
|
||||||
import com.genersoft.iot.vmp.jt1078.event.FtpUploadEvent;
|
import com.genersoft.iot.vmp.jt1078.event.FtpUploadEvent;
|
||||||
import com.genersoft.iot.vmp.jt1078.proc.request.J1205;
|
import com.genersoft.iot.vmp.jt1078.proc.request.J1205;
|
||||||
import com.genersoft.iot.vmp.jt1078.proc.response.*;
|
import com.genersoft.iot.vmp.jt1078.proc.response.*;
|
||||||
@ -35,6 +33,7 @@ import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
|||||||
import com.genersoft.iot.vmp.utils.DateUtil;
|
import com.genersoft.iot.vmp.utils.DateUtil;
|
||||||
import com.genersoft.iot.vmp.utils.MediaServerUtils;
|
import com.genersoft.iot.vmp.utils.MediaServerUtils;
|
||||||
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
||||||
|
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -160,10 +159,10 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private final Map<String, List<GeneralCallback<StreamInfo>>> inviteErrorCallbackMap = new ConcurrentHashMap<>();
|
private final Map<String, List<CommonCallback<WVPResult<StreamInfo>>>> inviteErrorCallbackMap = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void play(String phoneNumber, Integer channelId, int type, GeneralCallback<StreamInfo> callback) {
|
public void play(String phoneNumber, Integer channelId, int type, CommonCallback<WVPResult<StreamInfo>> callback) {
|
||||||
JTDevice device = jt1078Service.getDevice(phoneNumber);
|
JTDevice device = jt1078Service.getDevice(phoneNumber);
|
||||||
if (device == null) {
|
if (device == null) {
|
||||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "设备不存在");
|
throw new ControllerException(ErrorCode.ERROR100.getCode(), "设备不存在");
|
||||||
@ -175,7 +174,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
}
|
}
|
||||||
// 检查流是否已经存在,存在则返回
|
// 检查流是否已经存在,存在则返回
|
||||||
String playKey = VideoManagerConstants.INVITE_INFO_1078_PLAY + phoneNumber + ":" + channelId;
|
String playKey = VideoManagerConstants.INVITE_INFO_1078_PLAY + phoneNumber + ":" + channelId;
|
||||||
List<GeneralCallback<StreamInfo>> errorCallbacks = inviteErrorCallbackMap.computeIfAbsent(playKey, k -> new ArrayList<>());
|
List<CommonCallback<WVPResult<StreamInfo>>> errorCallbacks = inviteErrorCallbackMap.computeIfAbsent(playKey, k -> new ArrayList<>());
|
||||||
errorCallbacks.add(callback);
|
errorCallbacks.add(callback);
|
||||||
StreamInfo streamInfo = (StreamInfo) redisTemplate.opsForValue().get(playKey);
|
StreamInfo streamInfo = (StreamInfo) redisTemplate.opsForValue().get(playKey);
|
||||||
if (streamInfo != null) {
|
if (streamInfo != null) {
|
||||||
@ -185,8 +184,8 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
MediaInfo mediaInfo = mediaServerService.getMediaInfo(mediaServer, "rtp", streamInfo.getStream());
|
MediaInfo mediaInfo = mediaServerService.getMediaInfo(mediaServer, "rtp", streamInfo.getStream());
|
||||||
if (mediaInfo != null) {
|
if (mediaInfo != null) {
|
||||||
log.info("[1078-点播] 点播已经存在,直接返回, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
log.info("[1078-点播] 点播已经存在,直接返回, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||||
for (GeneralCallback<StreamInfo> errorCallback : errorCallbacks) {
|
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||||
errorCallback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), streamInfo);
|
errorCallback.run(new WVPResult<>(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), streamInfo));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -197,8 +196,8 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
String stream = "jt_" + phoneNumber + "_" + channelId;
|
String stream = "jt_" + phoneNumber + "_" + channelId;
|
||||||
MediaServer mediaServer = mediaServerService.getMediaServerForMinimumLoad(null);
|
MediaServer mediaServer = mediaServerService.getMediaServerForMinimumLoad(null);
|
||||||
if (mediaServer == null) {
|
if (mediaServer == null) {
|
||||||
for (GeneralCallback<StreamInfo> errorCallback : errorCallbacks) {
|
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||||
errorCallback.run(InviteErrorCode.FAIL.getCode(), "未找到可用的媒体节点", streamInfo);
|
errorCallback.run(new WVPResult<>(InviteErrorCode.FAIL.getCode(), "未找到可用的媒体节点", streamInfo));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -210,11 +209,11 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
// TODO 发送9105 实时音视频传输状态通知, 通知丢包率
|
// TODO 发送9105 实时音视频传输状态通知, 通知丢包率
|
||||||
StreamInfo info = onPublishHandler(mediaServer, hookData, phoneNumber, channelId);
|
StreamInfo info = onPublishHandler(mediaServer, hookData, phoneNumber, channelId);
|
||||||
|
|
||||||
for (GeneralCallback<StreamInfo> errorCallback : errorCallbacks) {
|
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||||
if (errorCallback == null) {
|
if (errorCallback == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
errorCallback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), info);
|
errorCallback.run(new WVPResult<>(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), info));
|
||||||
}
|
}
|
||||||
subscribe.removeSubscribe(hook);
|
subscribe.removeSubscribe(hook);
|
||||||
redisTemplate.opsForValue().set(playKey, info);
|
redisTemplate.opsForValue().set(playKey, info);
|
||||||
@ -240,9 +239,9 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
// 设置超时监听
|
// 设置超时监听
|
||||||
dynamicTask.startDelay(playKey, () -> {
|
dynamicTask.startDelay(playKey, () -> {
|
||||||
log.info("[1078-点播] 超时, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
log.info("[1078-点播] 超时, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||||
for (GeneralCallback<StreamInfo> errorCallback : errorCallbacks) {
|
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||||
errorCallback.run(InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getCode(),
|
errorCallback.run(new WVPResult<>(InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getCode(),
|
||||||
InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getMsg(), null);
|
InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getMsg(), null));
|
||||||
}
|
}
|
||||||
mediaServerService.closeRTPServer(mediaServer, stream);
|
mediaServerService.closeRTPServer(mediaServer, stream);
|
||||||
subscribe.removeSubscribe(hook);
|
subscribe.removeSubscribe(hook);
|
||||||
@ -271,10 +270,10 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
String playKey = VideoManagerConstants.INVITE_INFO_1078_PLAY + phoneNumber + ":" + channelId;
|
String playKey = VideoManagerConstants.INVITE_INFO_1078_PLAY + phoneNumber + ":" + channelId;
|
||||||
dynamicTask.stop(playKey);
|
dynamicTask.stop(playKey);
|
||||||
// 清理回调
|
// 清理回调
|
||||||
List<GeneralCallback<StreamInfo>> generalCallbacks = inviteErrorCallbackMap.get(playKey);
|
List<CommonCallback<WVPResult<StreamInfo>>> generalCallbacks = inviteErrorCallbackMap.get(playKey);
|
||||||
if (generalCallbacks != null && !generalCallbacks.isEmpty()) {
|
if (generalCallbacks != null && !generalCallbacks.isEmpty()) {
|
||||||
for (GeneralCallback<StreamInfo> callback : generalCallbacks) {
|
for (CommonCallback<WVPResult<StreamInfo>> callback : generalCallbacks) {
|
||||||
callback.run(InviteErrorCode.ERROR_FOR_FINISH.getCode(), InviteErrorCode.ERROR_FOR_FINISH.getMsg(), null);
|
callback.run(new WVPResult<>(InviteErrorCode.ERROR_FOR_FINISH.getCode(), InviteErrorCode.ERROR_FOR_FINISH.getMsg(), null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
jt1078Template.checkTerminalStatus(phoneNumber);
|
jt1078Template.checkTerminalStatus(phoneNumber);
|
||||||
@ -355,12 +354,12 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void playback(String phoneNumber, Integer channelId, String startTime, String endTime, Integer type,
|
public void playback(String phoneNumber, Integer channelId, String startTime, String endTime, Integer type,
|
||||||
Integer rate, Integer playbackType, Integer playbackSpeed, GeneralCallback<StreamInfo> callback) {
|
Integer rate, Integer playbackType, Integer playbackSpeed, CommonCallback<WVPResult<StreamInfo>> callback) {
|
||||||
log.info("[1078-回放] 回放,设备:{}, 通道: {}, 开始时间: {}, 结束时间: {}, 音视频类型: {}, 码流类型: {}, " +
|
log.info("[1078-回放] 回放,设备:{}, 通道: {}, 开始时间: {}, 结束时间: {}, 音视频类型: {}, 码流类型: {}, " +
|
||||||
"回放方式: {}, 快进或快退倍数: {}", phoneNumber, channelId, startTime, endTime, type, rate, playbackType, playbackSpeed);
|
"回放方式: {}, 快进或快退倍数: {}", phoneNumber, channelId, startTime, endTime, type, rate, playbackType, playbackSpeed);
|
||||||
// 检查流是否已经存在,存在则返回
|
// 检查流是否已经存在,存在则返回
|
||||||
String playbackKey = VideoManagerConstants.INVITE_INFO_1078_PLAYBACK + phoneNumber + ":" + channelId;
|
String playbackKey = VideoManagerConstants.INVITE_INFO_1078_PLAYBACK + phoneNumber + ":" + channelId;
|
||||||
List<GeneralCallback<StreamInfo>> errorCallbacks = inviteErrorCallbackMap.computeIfAbsent(playbackKey, k -> new ArrayList<>());
|
List<CommonCallback<WVPResult<StreamInfo>>> errorCallbacks = inviteErrorCallbackMap.computeIfAbsent(playbackKey, k -> new ArrayList<>());
|
||||||
errorCallbacks.add(callback);
|
errorCallbacks.add(callback);
|
||||||
String logInfo = String.format("phoneNumber:%s, channelId:%s, startTime:%s, endTime:%s", phoneNumber, channelId, startTime, endTime);
|
String logInfo = String.format("phoneNumber:%s, channelId:%s, startTime:%s, endTime:%s", phoneNumber, channelId, startTime, endTime);
|
||||||
StreamInfo streamInfo = (StreamInfo) redisTemplate.opsForValue().get(playbackKey);
|
StreamInfo streamInfo = (StreamInfo) redisTemplate.opsForValue().get(playbackKey);
|
||||||
@ -371,8 +370,8 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
MediaInfo mediaInfo = mediaServerService.getMediaInfo(mediaServer, "rtp", streamInfo.getStream());
|
MediaInfo mediaInfo = mediaServerService.getMediaInfo(mediaServer, "rtp", streamInfo.getStream());
|
||||||
if (mediaInfo != null) {
|
if (mediaInfo != null) {
|
||||||
log.info("[1078-回放] 回放已经存在,直接返回, logInfo: {}", logInfo);
|
log.info("[1078-回放] 回放已经存在,直接返回, logInfo: {}", logInfo);
|
||||||
for (GeneralCallback<StreamInfo> errorCallback : errorCallbacks) {
|
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||||
errorCallback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), streamInfo);
|
errorCallback.run(new WVPResult<>(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), streamInfo));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -385,8 +384,8 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
String stream = "jt_" + phoneNumber + "_" + channelId + "_" + startTimeParam + "_" + endTimeParam;
|
String stream = "jt_" + phoneNumber + "_" + channelId + "_" + startTimeParam + "_" + endTimeParam;
|
||||||
MediaServer mediaServer = mediaServerService.getMediaServerForMinimumLoad(null);
|
MediaServer mediaServer = mediaServerService.getMediaServerForMinimumLoad(null);
|
||||||
if (mediaServer == null) {
|
if (mediaServer == null) {
|
||||||
for (GeneralCallback<StreamInfo> errorCallback : errorCallbacks) {
|
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||||
errorCallback.run(InviteErrorCode.FAIL.getCode(), "未找到可用的媒体节点", streamInfo);
|
errorCallback.run(new WVPResult<>(InviteErrorCode.FAIL.getCode(), "未找到可用的媒体节点", streamInfo));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -397,11 +396,11 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
log.info("[1078-回放] 回放成功, logInfo: {}", logInfo);
|
log.info("[1078-回放] 回放成功, logInfo: {}", logInfo);
|
||||||
StreamInfo info = onPublishHandler(mediaServer, hookData, phoneNumber, channelId);
|
StreamInfo info = onPublishHandler(mediaServer, hookData, phoneNumber, channelId);
|
||||||
|
|
||||||
for (GeneralCallback<StreamInfo> errorCallback : errorCallbacks) {
|
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||||
if (errorCallback == null) {
|
if (errorCallback == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
errorCallback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), info);
|
errorCallback.run(new WVPResult<>(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), info));
|
||||||
}
|
}
|
||||||
subscribe.removeSubscribe(hookSubscribe);
|
subscribe.removeSubscribe(hookSubscribe);
|
||||||
redisTemplate.opsForValue().set(playbackKey, info);
|
redisTemplate.opsForValue().set(playbackKey, info);
|
||||||
@ -409,9 +408,9 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
// 设置超时监听
|
// 设置超时监听
|
||||||
dynamicTask.startDelay(playbackKey, () -> {
|
dynamicTask.startDelay(playbackKey, () -> {
|
||||||
log.info("[1078-回放] 回放超时, logInfo: {}", logInfo);
|
log.info("[1078-回放] 回放超时, logInfo: {}", logInfo);
|
||||||
for (GeneralCallback<StreamInfo> errorCallback : errorCallbacks) {
|
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||||
errorCallback.run(InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getCode(),
|
errorCallback.run(new WVPResult<>(InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getCode(),
|
||||||
InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getMsg(), null);
|
InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getMsg(), null));
|
||||||
}
|
}
|
||||||
|
|
||||||
}, userSetting.getPlayTimeout());
|
}, userSetting.getPlayTimeout());
|
||||||
@ -456,13 +455,13 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
mediaServerService.closeRTPServer(streamInfo.getMediaServer(), streamInfo.getStream());
|
mediaServerService.closeRTPServer(streamInfo.getMediaServer(), streamInfo.getStream());
|
||||||
}
|
}
|
||||||
// 清理回调
|
// 清理回调
|
||||||
List<GeneralCallback<StreamInfo>> generalCallbacks = inviteErrorCallbackMap.get(playKey);
|
List<CommonCallback<WVPResult<StreamInfo>>> generalCallbacks = inviteErrorCallbackMap.get(playKey);
|
||||||
if (generalCallbacks != null && !generalCallbacks.isEmpty()) {
|
if (generalCallbacks != null && !generalCallbacks.isEmpty()) {
|
||||||
for (GeneralCallback<StreamInfo> callback : generalCallbacks) {
|
for (CommonCallback<WVPResult<StreamInfo>> callback : generalCallbacks) {
|
||||||
if (callback == null) {
|
if (callback == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
callback.run(InviteErrorCode.ERROR_FOR_FINISH.getCode(), InviteErrorCode.ERROR_FOR_FINISH.getMsg(), null);
|
callback.run(new WVPResult<>(InviteErrorCode.ERROR_FOR_FINISH.getCode(), InviteErrorCode.ERROR_FOR_FINISH.getMsg(), null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -484,7 +483,7 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
playbackControl(phoneNumber, channelId, 2, null, null);
|
playbackControl(phoneNumber, channelId, 2, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, GeneralCallback<String>> fileUploadMap = new ConcurrentHashMap<>();
|
private Map<String, CommonCallback<WVPResult<String>>> fileUploadMap = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
@EventListener
|
@EventListener
|
||||||
public void onApplicationEvent(FtpUploadEvent event) {
|
public void onApplicationEvent(FtpUploadEvent event) {
|
||||||
@ -495,9 +494,9 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
if (!event.getFileName().contains(key)) {
|
if (!event.getFileName().contains(key)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
GeneralCallback<String> callback = fileUploadMap.get(key);
|
CommonCallback<WVPResult<String>> callback = fileUploadMap.get(key);
|
||||||
if (callback != null) {
|
if (callback != null) {
|
||||||
callback.run(ErrorCode.SUCCESS.getCode(), ErrorCode.SUCCESS.getMsg(), event.getFileName());
|
callback.run(new WVPResult<>(ErrorCode.SUCCESS.getCode(), ErrorCode.SUCCESS.getMsg(), event.getFileName()));
|
||||||
fileUploadMap.remove(key);
|
fileUploadMap.remove(key);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -528,10 +527,10 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void startTalk(String phoneNumber, Integer channelId, String app, String stream, String mediaServerId, Boolean onlySend,
|
public void startTalk(String phoneNumber, Integer channelId, String app, String stream, String mediaServerId, Boolean onlySend,
|
||||||
GeneralCallback<StreamInfo> callback) {
|
CommonCallback<WVPResult<StreamInfo>> callback) {
|
||||||
// 检查流是否已经存在,存在则返回
|
// 检查流是否已经存在,存在则返回
|
||||||
String playKey = VideoManagerConstants.INVITE_INFO_1078_TALK + phoneNumber + ":" + channelId;
|
String playKey = VideoManagerConstants.INVITE_INFO_1078_TALK + phoneNumber + ":" + channelId;
|
||||||
List<GeneralCallback<StreamInfo>> errorCallbacks = inviteErrorCallbackMap.computeIfAbsent(playKey, k -> new ArrayList<>());
|
List<CommonCallback<WVPResult<StreamInfo>>> errorCallbacks = inviteErrorCallbackMap.computeIfAbsent(playKey, k -> new ArrayList<>());
|
||||||
errorCallbacks.add(callback);
|
errorCallbacks.add(callback);
|
||||||
StreamInfo streamInfo = (StreamInfo) redisTemplate.opsForValue().get(playKey);
|
StreamInfo streamInfo = (StreamInfo) redisTemplate.opsForValue().get(playKey);
|
||||||
if (streamInfo != null) {
|
if (streamInfo != null) {
|
||||||
@ -541,8 +540,8 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
String receiveStream = "jt_" + phoneNumber + "_" + channelId + "_talk";
|
String receiveStream = "jt_" + phoneNumber + "_" + channelId + "_talk";
|
||||||
MediaServer mediaServer = mediaServerService.getOne(mediaServerId);
|
MediaServer mediaServer = mediaServerService.getOne(mediaServerId);
|
||||||
if (mediaServer == null) {
|
if (mediaServer == null) {
|
||||||
for (GeneralCallback<StreamInfo> errorCallback : errorCallbacks) {
|
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||||
errorCallback.run(InviteErrorCode.FAIL.getCode(), "未找到可用的媒体节点", streamInfo);
|
errorCallback.run(new WVPResult<>(InviteErrorCode.FAIL.getCode(), "未找到可用的媒体节点", streamInfo));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -568,8 +567,8 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
log.info("[1078-对讲] 对讲成功, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
log.info("[1078-对讲] 对讲成功, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||||
StreamInfo info = onPublishHandler(mediaServer, hookData, phoneNumber, channelId);
|
StreamInfo info = onPublishHandler(mediaServer, hookData, phoneNumber, channelId);
|
||||||
|
|
||||||
for (GeneralCallback<StreamInfo> errorCallback : errorCallbacks) {
|
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||||
errorCallback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), info);
|
errorCallback.run(new WVPResult<>(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), info));
|
||||||
}
|
}
|
||||||
subscribe.removeSubscribe(hook);
|
subscribe.removeSubscribe(hook);
|
||||||
redisTemplate.opsForValue().set(playKey, info);
|
redisTemplate.opsForValue().set(playKey, info);
|
||||||
@ -584,9 +583,9 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
// 设置超时监听
|
// 设置超时监听
|
||||||
dynamicTask.startDelay(playKey, () -> {
|
dynamicTask.startDelay(playKey, () -> {
|
||||||
log.info("[1078-对讲] 超时, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
log.info("[1078-对讲] 超时, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||||
for (GeneralCallback<StreamInfo> errorCallback : errorCallbacks) {
|
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||||
errorCallback.run(InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getCode(),
|
errorCallback.run(new WVPResult<>(InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getCode(),
|
||||||
InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getMsg(), null);
|
InviteErrorCode.ERROR_FOR_SIGNALLING_TIMEOUT.getMsg(), null));
|
||||||
}
|
}
|
||||||
|
|
||||||
}, userSetting.getPlayTimeout());
|
}, userSetting.getPlayTimeout());
|
||||||
@ -604,8 +603,8 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
jt1078Template.startLive(phoneNumber, j9101, 6);
|
jt1078Template.startLive(phoneNumber, j9101, 6);
|
||||||
if (onlySend != null && onlySend) {
|
if (onlySend != null && onlySend) {
|
||||||
log.info("[1078-对讲] 对讲成功, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
log.info("[1078-对讲] 对讲成功, phoneNumber: {}, channelId: {}", phoneNumber, channelId);
|
||||||
for (GeneralCallback<StreamInfo> errorCallback : errorCallbacks) {
|
for (CommonCallback<WVPResult<StreamInfo>> errorCallback : errorCallbacks) {
|
||||||
errorCallback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), null);
|
errorCallback.run(new WVPResult<>(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), null));
|
||||||
}
|
}
|
||||||
// 存储发流信息
|
// 存储发流信息
|
||||||
sendRtpServerService.update(sendRtpInfo);
|
sendRtpServerService.update(sendRtpInfo);
|
||||||
@ -632,10 +631,10 @@ public class jt1078PlayServiceImpl implements Ijt1078PlayService {
|
|||||||
mediaServerService.closeRTPServer(streamInfo.getMediaServer(), streamInfo.getStream());
|
mediaServerService.closeRTPServer(streamInfo.getMediaServer(), streamInfo.getStream());
|
||||||
}
|
}
|
||||||
// 清理回调
|
// 清理回调
|
||||||
List<GeneralCallback<StreamInfo>> generalCallbacks = inviteErrorCallbackMap.get(playKey);
|
List<CommonCallback<WVPResult<StreamInfo>>> generalCallbacks = inviteErrorCallbackMap.get(playKey);
|
||||||
if (generalCallbacks != null && !generalCallbacks.isEmpty()) {
|
if (generalCallbacks != null && !generalCallbacks.isEmpty()) {
|
||||||
for (GeneralCallback<StreamInfo> callback : generalCallbacks) {
|
for (CommonCallback<WVPResult<StreamInfo>> callback : generalCallbacks) {
|
||||||
callback.run(InviteErrorCode.ERROR_FOR_FINISH.getCode(), InviteErrorCode.ERROR_FOR_FINISH.getMsg(), null);
|
callback.run(new WVPResult<>(InviteErrorCode.ERROR_FOR_FINISH.getCode(), InviteErrorCode.ERROR_FOR_FINISH.getMsg(), null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package com.genersoft.iot.vmp.jt1078.service.impl;
|
package com.genersoft.iot.vmp.jt1078.service.impl;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.common.GeneralCallback;
|
import com.genersoft.iot.vmp.common.CommonCallback;
|
||||||
import com.genersoft.iot.vmp.common.StreamInfo;
|
import com.genersoft.iot.vmp.common.StreamInfo;
|
||||||
import com.genersoft.iot.vmp.common.VideoManagerConstants;
|
import com.genersoft.iot.vmp.common.VideoManagerConstants;
|
||||||
import com.genersoft.iot.vmp.conf.DynamicTask;
|
import com.genersoft.iot.vmp.conf.DynamicTask;
|
||||||
@ -18,19 +18,13 @@ import com.genersoft.iot.vmp.jt1078.proc.response.*;
|
|||||||
import com.genersoft.iot.vmp.jt1078.service.Ijt1078Service;
|
import com.genersoft.iot.vmp.jt1078.service.Ijt1078Service;
|
||||||
import com.genersoft.iot.vmp.media.event.media.MediaArrivalEvent;
|
import com.genersoft.iot.vmp.media.event.media.MediaArrivalEvent;
|
||||||
import com.genersoft.iot.vmp.media.event.media.MediaDepartureEvent;
|
import com.genersoft.iot.vmp.media.event.media.MediaDepartureEvent;
|
||||||
import com.genersoft.iot.vmp.media.event.media.MediaNotFoundEvent;
|
|
||||||
import com.genersoft.iot.vmp.media.service.IMediaServerService;
|
|
||||||
import com.genersoft.iot.vmp.service.ISendRtpServerService;
|
|
||||||
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
|
||||||
import com.genersoft.iot.vmp.utils.DateUtil;
|
import com.genersoft.iot.vmp.utils.DateUtil;
|
||||||
import com.genersoft.iot.vmp.utils.MediaServerUtils;
|
|
||||||
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
||||||
|
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.event.EventListener;
|
import org.springframework.context.event.EventListener;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
@ -154,7 +148,7 @@ public class jt1078ServiceImpl implements Ijt1078Service {
|
|||||||
jtDeviceMapper.updateDeviceStatus(connected, phoneNumber);
|
jtDeviceMapper.updateDeviceStatus(connected, phoneNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, GeneralCallback<String>> fileUploadMap = new ConcurrentHashMap<>();
|
private Map<String, CommonCallback<WVPResult<String>>> fileUploadMap = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
@EventListener
|
@EventListener
|
||||||
public void onApplicationEvent(FtpUploadEvent event) {
|
public void onApplicationEvent(FtpUploadEvent event) {
|
||||||
@ -165,16 +159,16 @@ public class jt1078ServiceImpl implements Ijt1078Service {
|
|||||||
if (!event.getFileName().contains(key)) {
|
if (!event.getFileName().contains(key)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
GeneralCallback<String> callback = fileUploadMap.get(key);
|
CommonCallback<WVPResult<String>> callback = fileUploadMap.get(key);
|
||||||
if (callback != null) {
|
if (callback != null) {
|
||||||
callback.run(ErrorCode.SUCCESS.getCode(), ErrorCode.SUCCESS.getMsg(), event.getFileName());
|
callback.run(new WVPResult<>(ErrorCode.SUCCESS.getCode(), ErrorCode.SUCCESS.getMsg(), event.getFileName()));
|
||||||
fileUploadMap.remove(key);
|
fileUploadMap.remove(key);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void recordDownload(String phoneNumber, Integer channelId, String startTime, String endTime, Integer alarmSign, Integer mediaType, Integer streamType, Integer storageType, GeneralCallback<String> fileCallback) {
|
public void recordDownload(String phoneNumber, Integer channelId, String startTime, String endTime, Integer alarmSign, Integer mediaType, Integer streamType, Integer storageType, CommonCallback<WVPResult<String>> fileCallback) {
|
||||||
String filePath = UUID.randomUUID().toString();
|
String filePath = UUID.randomUUID().toString();
|
||||||
fileUploadMap.put(filePath, fileCallback);
|
fileUploadMap.put(filePath, fileCallback);
|
||||||
dynamicTask.startDelay(filePath, ()->{
|
dynamicTask.startDelay(filePath, ()->{
|
||||||
@ -307,7 +301,7 @@ public class jt1078ServiceImpl implements Ijt1078Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JTDeviceConfig queryConfig(String phoneNumber, String[] params, GeneralCallback<StreamInfo> callback) {
|
public JTDeviceConfig queryConfig(String phoneNumber, String[] params, CommonCallback<WVPResult<StreamInfo>> callback) {
|
||||||
if (phoneNumber == null) {
|
if (phoneNumber == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -80,6 +80,7 @@ Vue.prototype.$channelTypeList = {
|
|||||||
1: {id: 1, name: "国标设备", style: {color: "#409eff", borderColor: "#b3d8ff"}},
|
1: {id: 1, name: "国标设备", style: {color: "#409eff", borderColor: "#b3d8ff"}},
|
||||||
2: {id: 2, name: "推流设备", style: {color: "#67c23a", borderColor: "#c2e7b0"}},
|
2: {id: 2, name: "推流设备", style: {color: "#67c23a", borderColor: "#c2e7b0"}},
|
||||||
3: {id: 3, name: "拉流代理", style: {color: "#e6a23c", borderColor: "#f5dab1"}},
|
3: {id: 3, name: "拉流代理", style: {color: "#e6a23c", borderColor: "#f5dab1"}},
|
||||||
|
200: {id: 200, name: "部标设备", style: {color: "#179fa5", borderColor: "#a2dfe0"}},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -462,36 +462,3 @@ create table IF NOT EXISTS wvp_record_plan_item
|
|||||||
update_time character varying(50)
|
update_time character varying(50)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_jt_terminal (
|
|
||||||
id serial primary key,
|
|
||||||
phone_number character varying(50),
|
|
||||||
terminal_id character varying(50),
|
|
||||||
province_id character varying(50),
|
|
||||||
province_text character varying(100),
|
|
||||||
city_id character varying(50),
|
|
||||||
city_text character varying(100),
|
|
||||||
maker_id character varying(50),
|
|
||||||
model character varying(50),
|
|
||||||
plate_color character varying(50),
|
|
||||||
plate_no character varying(50),
|
|
||||||
authentication_code character varying(255),
|
|
||||||
longitude double precision,
|
|
||||||
latitude double precision,
|
|
||||||
status bool default false,
|
|
||||||
register_time character varying(50) default null,
|
|
||||||
update_time character varying(50) not null,
|
|
||||||
create_time character varying(50) not null,
|
|
||||||
constraint uk_jt_device_id_device_id unique (id, phone_number)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_jt_channel (
|
|
||||||
id serial primary key,
|
|
||||||
terminal_db_id integer,
|
|
||||||
channel_id integer,
|
|
||||||
has_audio bool default false,
|
|
||||||
name character varying(255),
|
|
||||||
update_time character varying(50) not null,
|
|
||||||
create_time character varying(50) not null,
|
|
||||||
constraint uk_jt_device_id_device_id unique (terminal_db_id, channel_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|||||||
@ -462,36 +462,3 @@ create table IF NOT EXISTS wvp_record_plan_item
|
|||||||
update_time character varying(50)
|
update_time character varying(50)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wvp_jt_terminal (
|
|
||||||
id serial primary key,
|
|
||||||
phone_number character varying(50),
|
|
||||||
terminal_id character varying(50),
|
|
||||||
province_id character varying(50),
|
|
||||||
province_text character varying(100),
|
|
||||||
city_id character varying(50),
|
|
||||||
city_text character varying(100),
|
|
||||||
maker_id character varying(50),
|
|
||||||
model character varying(50),
|
|
||||||
plate_color character varying(50),
|
|
||||||
plate_no character varying(50),
|
|
||||||
authentication_code character varying(255),
|
|
||||||
longitude double precision,
|
|
||||||
latitude double precision,
|
|
||||||
status bool default false,
|
|
||||||
register_time character varying(50) default null,
|
|
||||||
update_time character varying(50) not null,
|
|
||||||
create_time character varying(50) not null,
|
|
||||||
constraint uk_jt_device_id_device_id unique (id, phone_number)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_jt_channel (
|
|
||||||
id serial primary key,
|
|
||||||
terminal_db_id integer,
|
|
||||||
channel_id integer,
|
|
||||||
has_audio bool default false,
|
|
||||||
name character varying(255),
|
|
||||||
update_time character varying(50) not null,
|
|
||||||
create_time character varying(50) not null,
|
|
||||||
constraint uk_jt_device_id_device_id unique (terminal_db_id, channel_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|||||||
@ -1,342 +0,0 @@
|
|||||||
/*建表*/
|
|
||||||
create table wvp_device (
|
|
||||||
id serial primary key ,
|
|
||||||
device_id character varying(50) not null ,
|
|
||||||
name character varying(255),
|
|
||||||
manufacturer character varying(255),
|
|
||||||
model character varying(255),
|
|
||||||
firmware character varying(255),
|
|
||||||
transport character varying(50),
|
|
||||||
stream_mode character varying(50),
|
|
||||||
on_line bool default false,
|
|
||||||
register_time character varying(50),
|
|
||||||
keepalive_time character varying(50),
|
|
||||||
ip character varying(50),
|
|
||||||
create_time character varying(50),
|
|
||||||
update_time character varying(50),
|
|
||||||
port integer,
|
|
||||||
expires integer,
|
|
||||||
subscribe_cycle_for_catalog integer DEFAULT 0,
|
|
||||||
subscribe_cycle_for_mobile_position integer DEFAULT 0,
|
|
||||||
mobile_position_submission_interval integer DEFAULT 5,
|
|
||||||
subscribe_cycle_for_alarm integer DEFAULT 0,
|
|
||||||
host_address character varying(50),
|
|
||||||
charset character varying(50),
|
|
||||||
ssrc_check bool default false,
|
|
||||||
geo_coord_sys character varying(50),
|
|
||||||
media_server_id character varying(50),
|
|
||||||
custom_name character varying(255),
|
|
||||||
sdp_ip character varying(50),
|
|
||||||
local_ip character varying(50),
|
|
||||||
password character varying(255),
|
|
||||||
as_message_channel bool default false,
|
|
||||||
keepalive_interval_time integer,
|
|
||||||
broadcast_push_after_ack bool default false,
|
|
||||||
constraint uk_device_device unique (device_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_device_alarm (
|
|
||||||
id serial primary key ,
|
|
||||||
device_id character varying(50) not null,
|
|
||||||
channel_id character varying(50) not null,
|
|
||||||
alarm_priority character varying(50),
|
|
||||||
alarm_method character varying(50),
|
|
||||||
alarm_time character varying(50),
|
|
||||||
alarm_description character varying(255),
|
|
||||||
longitude double precision,
|
|
||||||
latitude double precision,
|
|
||||||
alarm_type character varying(50),
|
|
||||||
create_time character varying(50) not null
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_device_channel (
|
|
||||||
id serial primary key ,
|
|
||||||
channel_id character varying(50) not null,
|
|
||||||
name character varying(255),
|
|
||||||
custom_name character varying(255),
|
|
||||||
manufacture character varying(50),
|
|
||||||
model character varying(50),
|
|
||||||
owner character varying(50),
|
|
||||||
civil_code character varying(50),
|
|
||||||
block character varying(50),
|
|
||||||
address character varying(50),
|
|
||||||
parent_id character varying(50),
|
|
||||||
safety_way integer,
|
|
||||||
register_way integer,
|
|
||||||
cert_num character varying(50),
|
|
||||||
certifiable integer,
|
|
||||||
err_code integer,
|
|
||||||
end_time character varying(50),
|
|
||||||
secrecy character varying(50),
|
|
||||||
ip_address character varying(50),
|
|
||||||
port integer,
|
|
||||||
password character varying(255),
|
|
||||||
ptz_type integer,
|
|
||||||
custom_ptz_type integer,
|
|
||||||
status bool default false,
|
|
||||||
longitude double precision,
|
|
||||||
custom_longitude double precision,
|
|
||||||
latitude double precision,
|
|
||||||
custom_latitude double precision,
|
|
||||||
stream_id character varying(255),
|
|
||||||
device_id character varying(50) not null,
|
|
||||||
parental character varying(50),
|
|
||||||
has_audio bool default false,
|
|
||||||
create_time character varying(50) not null,
|
|
||||||
update_time character varying(50) not null,
|
|
||||||
sub_count integer,
|
|
||||||
longitude_gcj02 double precision,
|
|
||||||
latitude_gcj02 double precision,
|
|
||||||
longitude_wgs84 double precision,
|
|
||||||
latitude_wgs84 double precision,
|
|
||||||
business_group_id character varying(50),
|
|
||||||
gps_time character varying(50),
|
|
||||||
stream_identification character varying(50),
|
|
||||||
constraint uk_wvp_device_channel_unique_device_channel unique (device_id, channel_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_device_mobile_position (
|
|
||||||
id serial primary key,
|
|
||||||
device_id character varying(50) not null,
|
|
||||||
channel_id character varying(50) not null,
|
|
||||||
device_name character varying(255),
|
|
||||||
time character varying(50),
|
|
||||||
longitude double precision,
|
|
||||||
latitude double precision,
|
|
||||||
altitude double precision,
|
|
||||||
speed double precision,
|
|
||||||
direction double precision,
|
|
||||||
report_source character varying(50),
|
|
||||||
longitude_gcj02 double precision,
|
|
||||||
latitude_gcj02 double precision,
|
|
||||||
longitude_wgs84 double precision,
|
|
||||||
latitude_wgs84 double precision,
|
|
||||||
create_time character varying(50)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_gb_stream (
|
|
||||||
gb_stream_id serial primary key,
|
|
||||||
app character varying(255) not null,
|
|
||||||
stream character varying(255) not null,
|
|
||||||
gb_id character varying(50) not null,
|
|
||||||
name character varying(255),
|
|
||||||
longitude double precision,
|
|
||||||
latitude double precision,
|
|
||||||
stream_type character varying(50),
|
|
||||||
media_server_id character varying(50),
|
|
||||||
create_time character varying(50),
|
|
||||||
constraint uk_gb_stream_unique_gb_id unique (gb_id),
|
|
||||||
constraint uk_gb_stream_unique_app_stream unique (app, stream)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_log (
|
|
||||||
id serial primary key ,
|
|
||||||
name character varying(50),
|
|
||||||
type character varying(50),
|
|
||||||
uri character varying(200),
|
|
||||||
address character varying(50),
|
|
||||||
result character varying(50),
|
|
||||||
timing bigint,
|
|
||||||
username character varying(50),
|
|
||||||
create_time character varying(50)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_media_server (
|
|
||||||
id character varying(255) primary key ,
|
|
||||||
ip character varying(50),
|
|
||||||
hook_ip character varying(50),
|
|
||||||
sdp_ip character varying(50),
|
|
||||||
stream_ip character varying(50),
|
|
||||||
http_port integer,
|
|
||||||
http_ssl_port integer,
|
|
||||||
rtmp_port integer,
|
|
||||||
rtmp_ssl_port integer,
|
|
||||||
rtp_proxy_port integer,
|
|
||||||
rtsp_port integer,
|
|
||||||
rtsp_ssl_port integer,
|
|
||||||
flv_port integer,
|
|
||||||
flv_ssl_port integer,
|
|
||||||
ws_flv_port integer,
|
|
||||||
ws_flv_ssl_port integer,
|
|
||||||
auto_config bool default false,
|
|
||||||
secret character varying(50),
|
|
||||||
type character varying(50) default 'zlm',
|
|
||||||
rtp_enable bool default false,
|
|
||||||
rtp_port_range character varying(50),
|
|
||||||
send_rtp_port_range character varying(50),
|
|
||||||
record_assist_port integer,
|
|
||||||
default_server bool default false,
|
|
||||||
create_time character varying(50),
|
|
||||||
update_time character varying(50),
|
|
||||||
hook_alive_interval integer,
|
|
||||||
record_path character varying(255),
|
|
||||||
record_day integer default 7,
|
|
||||||
transcode_suffix character varying(255),
|
|
||||||
constraint uk_media_server_unique_ip_http_port unique (ip, http_port)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_platform (
|
|
||||||
id serial primary key ,
|
|
||||||
enable bool default false,
|
|
||||||
name character varying(255),
|
|
||||||
server_gb_id character varying(50),
|
|
||||||
server_gb_domain character varying(50),
|
|
||||||
server_ip character varying(50),
|
|
||||||
server_port integer,
|
|
||||||
device_gb_id character varying(50),
|
|
||||||
device_ip character varying(50),
|
|
||||||
device_port character varying(50),
|
|
||||||
username character varying(255),
|
|
||||||
password character varying(50),
|
|
||||||
expires character varying(50),
|
|
||||||
keep_timeout character varying(50),
|
|
||||||
transport character varying(50),
|
|
||||||
character_set character varying(50),
|
|
||||||
catalog_id character varying(50),
|
|
||||||
ptz bool default false,
|
|
||||||
rtcp bool default false,
|
|
||||||
status bool default false,
|
|
||||||
start_offline_push bool default false,
|
|
||||||
administrative_division character varying(50),
|
|
||||||
catalog_group integer,
|
|
||||||
create_time character varying(50),
|
|
||||||
update_time character varying(50),
|
|
||||||
as_message_channel bool default false,
|
|
||||||
auto_push_channel bool default false,
|
|
||||||
send_stream_ip character varying(50),
|
|
||||||
constraint uk_platform_unique_server_gb_id unique (server_gb_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_platform_catalog (
|
|
||||||
id character varying(50),
|
|
||||||
platform_id character varying(50),
|
|
||||||
name character varying(255),
|
|
||||||
parent_id character varying(50),
|
|
||||||
civil_code character varying(50),
|
|
||||||
business_group_id character varying(50),
|
|
||||||
constraint uk_platform_catalog_id_platform_id unique (id, platform_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_platform_gb_channel (
|
|
||||||
id serial primary key ,
|
|
||||||
platform_id character varying(50),
|
|
||||||
catalog_id character varying(50),
|
|
||||||
device_channel_id integer,
|
|
||||||
constraint uk_platform_gb_channel_platform_id_catalog_id_device_channel_id unique (platform_id, catalog_id, device_channel_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_platform_gb_stream (
|
|
||||||
id serial primary key,
|
|
||||||
platform_id character varying(50),
|
|
||||||
catalog_id character varying(50),
|
|
||||||
gb_stream_id integer,
|
|
||||||
constraint uk_platform_gb_stream_platform_id_catalog_id_gb_stream_id unique (platform_id, catalog_id, gb_stream_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_stream_proxy (
|
|
||||||
id serial primary key,
|
|
||||||
type character varying(50),
|
|
||||||
app character varying(255),
|
|
||||||
stream character varying(255),
|
|
||||||
url character varying(255),
|
|
||||||
src_url character varying(255),
|
|
||||||
dst_url character varying(255),
|
|
||||||
timeout_ms integer,
|
|
||||||
ffmpeg_cmd_key character varying(255),
|
|
||||||
rtp_type character varying(50),
|
|
||||||
media_server_id character varying(50),
|
|
||||||
enable_audio bool default false,
|
|
||||||
enable_mp4 bool default false,
|
|
||||||
enable bool default false,
|
|
||||||
status boolean,
|
|
||||||
enable_remove_none_reader bool default false,
|
|
||||||
create_time character varying(50),
|
|
||||||
name character varying(255),
|
|
||||||
update_time character varying(50),
|
|
||||||
stream_key character varying(255),
|
|
||||||
enable_disable_none_reader bool default false,
|
|
||||||
constraint uk_stream_proxy_app_stream unique (app, stream)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_stream_push (
|
|
||||||
id serial primary key,
|
|
||||||
app character varying(255),
|
|
||||||
stream character varying(255),
|
|
||||||
total_reader_count character varying(50),
|
|
||||||
origin_type integer,
|
|
||||||
origin_type_str character varying(50),
|
|
||||||
create_time character varying(50),
|
|
||||||
alive_second integer,
|
|
||||||
media_server_id character varying(50),
|
|
||||||
server_id character varying(50),
|
|
||||||
push_time character varying(50),
|
|
||||||
status bool default false,
|
|
||||||
update_time character varying(50),
|
|
||||||
push_ing bool default false,
|
|
||||||
self bool default false,
|
|
||||||
constraint uk_stream_push_app_stream unique (app, stream)
|
|
||||||
);
|
|
||||||
create table wvp_cloud_record (
|
|
||||||
id serial primary key,
|
|
||||||
app character varying(255),
|
|
||||||
stream character varying(255),
|
|
||||||
call_id character varying(255),
|
|
||||||
start_time bigint,
|
|
||||||
end_time bigint,
|
|
||||||
media_server_id character varying(50),
|
|
||||||
file_name character varying(255),
|
|
||||||
folder character varying(255),
|
|
||||||
file_path character varying(255),
|
|
||||||
collect bool default false,
|
|
||||||
file_size bigint,
|
|
||||||
time_len bigint,
|
|
||||||
constraint uk_stream_push_app_stream_path unique (app, stream, file_path)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_user (
|
|
||||||
id serial primary key,
|
|
||||||
username character varying(255),
|
|
||||||
password character varying(255),
|
|
||||||
role_id integer,
|
|
||||||
create_time character varying(50),
|
|
||||||
update_time character varying(50),
|
|
||||||
push_key character varying(50),
|
|
||||||
constraint uk_user_username unique (username)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_user_role (
|
|
||||||
id serial primary key,
|
|
||||||
name character varying(50),
|
|
||||||
authority character varying(50),
|
|
||||||
create_time character varying(50),
|
|
||||||
update_time character varying(50)
|
|
||||||
);
|
|
||||||
create table wvp_resources_tree (
|
|
||||||
id serial primary key ,
|
|
||||||
is_catalog bool default true,
|
|
||||||
device_channel_id integer ,
|
|
||||||
gb_stream_id integer,
|
|
||||||
name character varying(255),
|
|
||||||
parentId integer,
|
|
||||||
path character varying(255)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_user_api_key (
|
|
||||||
id serial primary key ,
|
|
||||||
user_id bigint,
|
|
||||||
app character varying(255) ,
|
|
||||||
api_key text,
|
|
||||||
expired_at bigint,
|
|
||||||
remark character varying(255),
|
|
||||||
enable bool default true,
|
|
||||||
create_time character varying(50),
|
|
||||||
update_time character varying(50)
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
/*初始数据*/
|
|
||||||
INSERT INTO wvp_user VALUES (1, 'admin','21232f297a57a5a743894a0e4a801fc3',1,'2021-04-13 14:14:57','2021-04-13 14:14:57','3e80d1762a324d5b0ff636e0bd16f1e3');
|
|
||||||
INSERT INTO wvp_user_role VALUES (1, 'admin','0','2021-04-13 14:14:57','2021-04-13 14:14:57');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1,373 +0,0 @@
|
|||||||
/*建表*/
|
|
||||||
create table wvp_device (
|
|
||||||
id serial primary key ,
|
|
||||||
device_id character varying(50) not null ,
|
|
||||||
name character varying(255),
|
|
||||||
manufacturer character varying(255),
|
|
||||||
model character varying(255),
|
|
||||||
firmware character varying(255),
|
|
||||||
transport character varying(50),
|
|
||||||
stream_mode character varying(50),
|
|
||||||
on_line bool default false,
|
|
||||||
register_time character varying(50),
|
|
||||||
keepalive_time character varying(50),
|
|
||||||
ip character varying(50),
|
|
||||||
create_time character varying(50),
|
|
||||||
update_time character varying(50),
|
|
||||||
port integer,
|
|
||||||
expires integer,
|
|
||||||
subscribe_cycle_for_catalog integer DEFAULT 0,
|
|
||||||
subscribe_cycle_for_mobile_position integer DEFAULT 0,
|
|
||||||
mobile_position_submission_interval integer DEFAULT 5,
|
|
||||||
subscribe_cycle_for_alarm integer DEFAULT 0,
|
|
||||||
host_address character varying(50),
|
|
||||||
charset character varying(50),
|
|
||||||
ssrc_check bool default false,
|
|
||||||
geo_coord_sys character varying(50),
|
|
||||||
media_server_id character varying(50),
|
|
||||||
custom_name character varying(255),
|
|
||||||
sdp_ip character varying(50),
|
|
||||||
local_ip character varying(50),
|
|
||||||
password character varying(255),
|
|
||||||
as_message_channel bool default false,
|
|
||||||
keepalive_interval_time integer,
|
|
||||||
broadcast_push_after_ack bool default false,
|
|
||||||
constraint uk_device_device unique (device_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_device_alarm (
|
|
||||||
id serial primary key ,
|
|
||||||
device_id character varying(50) not null,
|
|
||||||
channel_id character varying(50) not null,
|
|
||||||
alarm_priority character varying(50),
|
|
||||||
alarm_method character varying(50),
|
|
||||||
alarm_time character varying(50),
|
|
||||||
alarm_description character varying(255),
|
|
||||||
longitude double precision,
|
|
||||||
latitude double precision,
|
|
||||||
alarm_type character varying(50),
|
|
||||||
create_time character varying(50) not null
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_device_channel (
|
|
||||||
id serial primary key ,
|
|
||||||
channel_id character varying(50) not null,
|
|
||||||
name character varying(255),
|
|
||||||
custom_name character varying(255),
|
|
||||||
manufacture character varying(50),
|
|
||||||
model character varying(50),
|
|
||||||
owner character varying(50),
|
|
||||||
civil_code character varying(50),
|
|
||||||
block character varying(50),
|
|
||||||
address character varying(50),
|
|
||||||
parent_id character varying(50),
|
|
||||||
safety_way integer,
|
|
||||||
register_way integer,
|
|
||||||
cert_num character varying(50),
|
|
||||||
certifiable integer,
|
|
||||||
err_code integer,
|
|
||||||
end_time character varying(50),
|
|
||||||
secrecy character varying(50),
|
|
||||||
ip_address character varying(50),
|
|
||||||
port integer,
|
|
||||||
password character varying(255),
|
|
||||||
ptz_type integer,
|
|
||||||
custom_ptz_type integer,
|
|
||||||
status bool default false,
|
|
||||||
longitude double precision,
|
|
||||||
custom_longitude double precision,
|
|
||||||
latitude double precision,
|
|
||||||
custom_latitude double precision,
|
|
||||||
stream_id character varying(255),
|
|
||||||
device_id character varying(50) not null,
|
|
||||||
parental character varying(50),
|
|
||||||
has_audio bool default false,
|
|
||||||
create_time character varying(50) not null,
|
|
||||||
update_time character varying(50) not null,
|
|
||||||
sub_count integer,
|
|
||||||
longitude_gcj02 double precision,
|
|
||||||
latitude_gcj02 double precision,
|
|
||||||
longitude_wgs84 double precision,
|
|
||||||
latitude_wgs84 double precision,
|
|
||||||
business_group_id character varying(50),
|
|
||||||
gps_time character varying(50),
|
|
||||||
stream_identification character varying(50),
|
|
||||||
constraint uk_wvp_device_channel_unique_device_channel unique (device_id, channel_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_device_mobile_position (
|
|
||||||
id serial primary key,
|
|
||||||
device_id character varying(50) not null,
|
|
||||||
channel_id character varying(50) not null,
|
|
||||||
device_name character varying(255),
|
|
||||||
time character varying(50),
|
|
||||||
longitude double precision,
|
|
||||||
latitude double precision,
|
|
||||||
altitude double precision,
|
|
||||||
speed double precision,
|
|
||||||
direction double precision,
|
|
||||||
report_source character varying(50),
|
|
||||||
longitude_gcj02 double precision,
|
|
||||||
latitude_gcj02 double precision,
|
|
||||||
longitude_wgs84 double precision,
|
|
||||||
latitude_wgs84 double precision,
|
|
||||||
create_time character varying(50)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_gb_stream (
|
|
||||||
gb_stream_id serial primary key,
|
|
||||||
app character varying(255) not null,
|
|
||||||
stream character varying(255) not null,
|
|
||||||
gb_id character varying(50) not null,
|
|
||||||
name character varying(255),
|
|
||||||
longitude double precision,
|
|
||||||
latitude double precision,
|
|
||||||
stream_type character varying(50),
|
|
||||||
media_server_id character varying(50),
|
|
||||||
create_time character varying(50),
|
|
||||||
constraint uk_gb_stream_unique_gb_id unique (gb_id),
|
|
||||||
constraint uk_gb_stream_unique_app_stream unique (app, stream)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_log (
|
|
||||||
id serial primary key ,
|
|
||||||
name character varying(50),
|
|
||||||
type character varying(50),
|
|
||||||
uri character varying(200),
|
|
||||||
address character varying(50),
|
|
||||||
result character varying(50),
|
|
||||||
timing bigint,
|
|
||||||
username character varying(50),
|
|
||||||
create_time character varying(50)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_media_server (
|
|
||||||
id character varying(255) primary key ,
|
|
||||||
ip character varying(50),
|
|
||||||
hook_ip character varying(50),
|
|
||||||
sdp_ip character varying(50),
|
|
||||||
stream_ip character varying(50),
|
|
||||||
http_port integer,
|
|
||||||
http_ssl_port integer,
|
|
||||||
rtmp_port integer,
|
|
||||||
rtmp_ssl_port integer,
|
|
||||||
rtp_proxy_port integer,
|
|
||||||
rtsp_port integer,
|
|
||||||
rtsp_ssl_port integer,
|
|
||||||
flv_port integer,
|
|
||||||
flv_ssl_port integer,
|
|
||||||
ws_flv_port integer,
|
|
||||||
ws_flv_ssl_port integer,
|
|
||||||
auto_config bool default false,
|
|
||||||
secret character varying(50),
|
|
||||||
type character varying(50) default 'zlm',
|
|
||||||
rtp_enable bool default false,
|
|
||||||
rtp_port_range character varying(50),
|
|
||||||
send_rtp_port_range character varying(50),
|
|
||||||
record_assist_port integer,
|
|
||||||
default_server bool default false,
|
|
||||||
create_time character varying(50),
|
|
||||||
update_time character varying(50),
|
|
||||||
hook_alive_interval integer,
|
|
||||||
record_path character varying(255),
|
|
||||||
record_day integer default 7,
|
|
||||||
transcode_suffix character varying(255),
|
|
||||||
constraint uk_media_server_unique_ip_http_port unique (ip, http_port)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_platform (
|
|
||||||
id serial primary key ,
|
|
||||||
enable bool default false,
|
|
||||||
name character varying(255),
|
|
||||||
server_gb_id character varying(50),
|
|
||||||
server_gb_domain character varying(50),
|
|
||||||
server_ip character varying(50),
|
|
||||||
server_port integer,
|
|
||||||
device_gb_id character varying(50),
|
|
||||||
device_ip character varying(50),
|
|
||||||
device_port character varying(50),
|
|
||||||
username character varying(255),
|
|
||||||
password character varying(50),
|
|
||||||
expires character varying(50),
|
|
||||||
keep_timeout character varying(50),
|
|
||||||
transport character varying(50),
|
|
||||||
character_set character varying(50),
|
|
||||||
catalog_id character varying(50),
|
|
||||||
ptz bool default false,
|
|
||||||
rtcp bool default false,
|
|
||||||
status bool default false,
|
|
||||||
start_offline_push bool default false,
|
|
||||||
administrative_division character varying(50),
|
|
||||||
catalog_group integer,
|
|
||||||
create_time character varying(50),
|
|
||||||
update_time character varying(50),
|
|
||||||
as_message_channel bool default false,
|
|
||||||
auto_push_channel bool default false,
|
|
||||||
send_stream_ip character varying(50),
|
|
||||||
constraint uk_platform_unique_server_gb_id unique (server_gb_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_platform_catalog (
|
|
||||||
id character varying(50),
|
|
||||||
platform_id character varying(50),
|
|
||||||
name character varying(255),
|
|
||||||
parent_id character varying(50),
|
|
||||||
civil_code character varying(50),
|
|
||||||
business_group_id character varying(50),
|
|
||||||
constraint uk_platform_catalog_id_platform_id unique (id, platform_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_platform_gb_channel (
|
|
||||||
id serial primary key ,
|
|
||||||
platform_id character varying(50),
|
|
||||||
catalog_id character varying(50),
|
|
||||||
device_channel_id integer,
|
|
||||||
constraint uk_platform_gb_channel_platform_id_catalog_id_device_channel_id unique (platform_id, catalog_id, device_channel_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_platform_gb_stream (
|
|
||||||
id serial primary key,
|
|
||||||
platform_id character varying(50),
|
|
||||||
catalog_id character varying(50),
|
|
||||||
gb_stream_id integer,
|
|
||||||
constraint uk_platform_gb_stream_platform_id_catalog_id_gb_stream_id unique (platform_id, catalog_id, gb_stream_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_stream_proxy (
|
|
||||||
id serial primary key,
|
|
||||||
type character varying(50),
|
|
||||||
app character varying(255),
|
|
||||||
stream character varying(255),
|
|
||||||
url character varying(255),
|
|
||||||
src_url character varying(255),
|
|
||||||
dst_url character varying(255),
|
|
||||||
timeout_ms integer,
|
|
||||||
ffmpeg_cmd_key character varying(255),
|
|
||||||
rtp_type character varying(50),
|
|
||||||
media_server_id character varying(50),
|
|
||||||
enable_audio bool default false,
|
|
||||||
enable_mp4 bool default false,
|
|
||||||
enable bool default false,
|
|
||||||
status boolean,
|
|
||||||
enable_remove_none_reader bool default false,
|
|
||||||
create_time character varying(50),
|
|
||||||
name character varying(255),
|
|
||||||
update_time character varying(50),
|
|
||||||
stream_key character varying(255),
|
|
||||||
enable_disable_none_reader bool default false,
|
|
||||||
constraint uk_stream_proxy_app_stream unique (app, stream)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_stream_push (
|
|
||||||
id serial primary key,
|
|
||||||
app character varying(255),
|
|
||||||
stream character varying(255),
|
|
||||||
total_reader_count character varying(50),
|
|
||||||
origin_type integer,
|
|
||||||
origin_type_str character varying(50),
|
|
||||||
create_time character varying(50),
|
|
||||||
alive_second integer,
|
|
||||||
media_server_id character varying(50),
|
|
||||||
server_id character varying(50),
|
|
||||||
push_time character varying(50),
|
|
||||||
status bool default false,
|
|
||||||
update_time character varying(50),
|
|
||||||
push_ing bool default false,
|
|
||||||
self bool default false,
|
|
||||||
constraint uk_stream_push_app_stream unique (app, stream)
|
|
||||||
);
|
|
||||||
create table wvp_cloud_record (
|
|
||||||
id serial primary key,
|
|
||||||
app character varying(255),
|
|
||||||
stream character varying(255),
|
|
||||||
call_id character varying(255),
|
|
||||||
start_time int8,
|
|
||||||
end_time int8,
|
|
||||||
media_server_id character varying(50),
|
|
||||||
file_name character varying(255),
|
|
||||||
folder character varying(255),
|
|
||||||
file_path character varying(255),
|
|
||||||
collect bool default false,
|
|
||||||
file_size int8,
|
|
||||||
time_len int8,
|
|
||||||
constraint uk_stream_push_app_stream_path unique (app, stream, file_path)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_user (
|
|
||||||
id serial primary key,
|
|
||||||
username character varying(255),
|
|
||||||
password character varying(255),
|
|
||||||
role_id integer,
|
|
||||||
create_time character varying(50),
|
|
||||||
update_time character varying(50),
|
|
||||||
push_key character varying(50),
|
|
||||||
constraint uk_user_username unique (username)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_user_role (
|
|
||||||
id serial primary key,
|
|
||||||
name character varying(50),
|
|
||||||
authority character varying(50),
|
|
||||||
create_time character varying(50),
|
|
||||||
update_time character varying(50)
|
|
||||||
);
|
|
||||||
create table wvp_resources_tree (
|
|
||||||
id serial primary key ,
|
|
||||||
is_catalog bool default true,
|
|
||||||
device_channel_id integer ,
|
|
||||||
gb_stream_id integer,
|
|
||||||
name character varying(255),
|
|
||||||
parentId integer,
|
|
||||||
path character varying(255)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_user_api_key (
|
|
||||||
id serial primary key ,
|
|
||||||
user_id bigint,
|
|
||||||
app character varying(255) ,
|
|
||||||
api_key text,
|
|
||||||
expired_at bigint,
|
|
||||||
remark character varying(255),
|
|
||||||
enable bool default true,
|
|
||||||
create_time character varying(50),
|
|
||||||
update_time character varying(50)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_jt_terminal (
|
|
||||||
id serial primary key,
|
|
||||||
phone_number character varying(50),
|
|
||||||
terminal_id character varying(50),
|
|
||||||
province_id character varying(50),
|
|
||||||
province_text character varying(100),
|
|
||||||
city_id character varying(50),
|
|
||||||
city_text character varying(100),
|
|
||||||
maker_id character varying(50),
|
|
||||||
model character varying(50),
|
|
||||||
plate_color character varying(50),
|
|
||||||
plate_no character varying(50),
|
|
||||||
authentication_code character varying(255),
|
|
||||||
longitude double precision,
|
|
||||||
latitude double precision,
|
|
||||||
status bool default false,
|
|
||||||
register_time character varying(50) default null,
|
|
||||||
update_time character varying(50) not null,
|
|
||||||
create_time character varying(50) not null,
|
|
||||||
constraint uk_jt_device_id_device_id unique (id, phone_number)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wvp_jt_channel (
|
|
||||||
id serial primary key,
|
|
||||||
terminal_db_id integer,
|
|
||||||
channel_id integer,
|
|
||||||
has_audio bool default false,
|
|
||||||
name character varying(255),
|
|
||||||
update_time character varying(50) not null,
|
|
||||||
create_time character varying(50) not null,
|
|
||||||
constraint uk_jt_device_id_device_id unique (terminal_db_id, channel_id)
|
|
||||||
);
|
|
||||||
/*初始数据*/
|
|
||||||
INSERT INTO wvp_user VALUES (1, 'admin','21232f297a57a5a743894a0e4a801fc3',1,'2021-04-13 14:14:57','2021-04-13 14:14:57','3e80d1762a324d5b0ff636e0bd16f1e3');
|
|
||||||
INSERT INTO wvp_user_role VALUES (1, 'admin','0','2021-04-13 14:14:57','2021-04-13 14:14:57');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
81
数据库/JT1078-2.7.3/更新-mysql-2.7.3.sql
Normal file
81
数据库/JT1078-2.7.3/更新-mysql-2.7.3.sql
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
drop table IF EXISTS wvp_jt_terminal;
|
||||||
|
create table IF NOT EXISTS wvp_jt_terminal (
|
||||||
|
id serial primary key,
|
||||||
|
phone_number character varying(50),
|
||||||
|
terminal_id character varying(50),
|
||||||
|
province_id character varying(50),
|
||||||
|
province_text character varying(100),
|
||||||
|
city_id character varying(50),
|
||||||
|
city_text character varying(100),
|
||||||
|
maker_id character varying(50),
|
||||||
|
model character varying(50),
|
||||||
|
plate_color character varying(50),
|
||||||
|
plate_no character varying(50),
|
||||||
|
authentication_code character varying(255),
|
||||||
|
longitude double precision,
|
||||||
|
latitude double precision,
|
||||||
|
status bool default false,
|
||||||
|
register_time character varying(50) default null,
|
||||||
|
update_time character varying(50) not null,
|
||||||
|
create_time character varying(50) not null,
|
||||||
|
constraint uk_jt_device_id_device_id unique (id, phone_number)
|
||||||
|
);
|
||||||
|
|
||||||
|
drop table IF EXISTS wvp_jt_channel;
|
||||||
|
create table IF NOT EXISTS wvp_jt_channel (
|
||||||
|
id serial primary key,
|
||||||
|
terminal_db_id integer,
|
||||||
|
channel_id integer,
|
||||||
|
has_audio bool default false,
|
||||||
|
name character varying(255),
|
||||||
|
update_time character varying(50) not null,
|
||||||
|
create_time character varying(50) not null,
|
||||||
|
gb_device_id character varying(255),
|
||||||
|
gb_name character varying(255),
|
||||||
|
gb_manufacturer character varying(255),
|
||||||
|
gb_model character varying(255),
|
||||||
|
gb_civil_code character varying(8),
|
||||||
|
gb_block character varying(255),
|
||||||
|
gb_address character varying(255),
|
||||||
|
gb_parental bool default false,
|
||||||
|
gb_parent_id character varying(255),
|
||||||
|
gb_register_way integer default 1,
|
||||||
|
gb_security_level_code character varying(255),
|
||||||
|
gb_secrecy integer default 0,
|
||||||
|
gb_ip_address character varying(255),
|
||||||
|
gb_port integer,
|
||||||
|
gb_password character varying(255),
|
||||||
|
gb_status bool default false,
|
||||||
|
gb_longitude double precision,
|
||||||
|
gb_latitude double precision,
|
||||||
|
gb_business_group_id character varying(255),
|
||||||
|
gb_ptz_type integer,
|
||||||
|
gb_photoelectric_imaging_type integer,
|
||||||
|
gb_capture_position_type integer,
|
||||||
|
gb_room_type integer,
|
||||||
|
gb_supply_light_type integer default 1,
|
||||||
|
gb_direction_type integer,
|
||||||
|
gb_resolution character varying(255),
|
||||||
|
gb_stream_number_list character varying(255),
|
||||||
|
gb_download_speed character varying(255),
|
||||||
|
gb_svc_space_support_mode integer,
|
||||||
|
gb_svc_time_support_mode integer,
|
||||||
|
gb_ssvc_ratio_support_list character varying(255),
|
||||||
|
gb_mobile_device_type integer,
|
||||||
|
gb_horizontal_field_angle double precision,
|
||||||
|
gb_vertical_field_angle double precision,
|
||||||
|
gb_max_view_distance double precision,
|
||||||
|
gb_grassroots_code character varying(255),
|
||||||
|
gb_point_type integer,
|
||||||
|
gb_point_common_name character varying(255),
|
||||||
|
gb_mac character varying(255),
|
||||||
|
gb_function_type character varying(255),
|
||||||
|
gb_encode_type character varying(255),
|
||||||
|
gb_install_time character varying(255),
|
||||||
|
gb_management_unit character varying(255),
|
||||||
|
gb_contact_info character varying(255),
|
||||||
|
gb_record_save_days character varying(255),
|
||||||
|
gb_industrial_classification character varying(255),
|
||||||
|
constraint uk_jt_device_id_device_id unique (terminal_db_id, channel_id)
|
||||||
|
);
|
||||||
|
|
||||||
33
数据库/JT1078-2.7.3/更新-postgresql-kingbase-2.7.3.sql
Normal file
33
数据库/JT1078-2.7.3/更新-postgresql-kingbase-2.7.3.sql
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
drop table IF EXISTS wvp_jt_terminal;
|
||||||
|
create table IF NOT EXISTS wvp_jt_terminal (
|
||||||
|
id serial primary key,
|
||||||
|
phone_number character varying(50),
|
||||||
|
terminal_id character varying(50),
|
||||||
|
province_id character varying(50),
|
||||||
|
province_text character varying(100),
|
||||||
|
city_id character varying(50),
|
||||||
|
city_text character varying(100),
|
||||||
|
maker_id character varying(50),
|
||||||
|
model character varying(50),
|
||||||
|
plate_color character varying(50),
|
||||||
|
plate_no character varying(50),
|
||||||
|
authentication_code character varying(255),
|
||||||
|
longitude double precision,
|
||||||
|
latitude double precision,
|
||||||
|
status bool default false,
|
||||||
|
register_time character varying(50) default null,
|
||||||
|
update_time character varying(50) not null,
|
||||||
|
create_time character varying(50) not null,
|
||||||
|
constraint uk_jt_device_id_device_id unique (id, phone_number)
|
||||||
|
);
|
||||||
|
drop table IF EXISTS wvp_jt_channel;
|
||||||
|
create table IF NOT EXISTS wvp_jt_channel (
|
||||||
|
id serial primary key,
|
||||||
|
terminal_db_id integer,
|
||||||
|
channel_id integer,
|
||||||
|
has_audio bool default false,
|
||||||
|
name character varying(255),
|
||||||
|
update_time character varying(50) not null,
|
||||||
|
create_time character varying(50) not null,
|
||||||
|
constraint uk_jt_device_id_device_id unique (terminal_db_id, channel_id)
|
||||||
|
);
|
||||||
Loading…
Reference in New Issue
Block a user