From 407828e880c8d454c8ac9a9559e3d366503e441c Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Tue, 23 Jan 2024 16:20:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=9B=BD=E6=A0=87=E7=BA=A7?= =?UTF-8?q?=E8=81=94=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/genersoft/iot/vmp/conf/SipConfig.java | 101 ++++++++++++++++++ .../iot/vmp/gb28181/bean/ParentPlatform.java | 31 +----- .../cmd/impl/SIPCommanderFroPlatform.java | 78 +++++++------- .../query/cmd/CatalogQueryMessageHandler.java | 1 - .../iot/vmp/service/IPlatformService.java | 2 +- .../vmp/service/impl/PlatformServiceImpl.java | 15 +-- .../storager/dao/ParentPlatformMapper.java | 17 +-- .../gb28181/platform/PlatformController.java | 7 +- 数据库/结构优化/common.sql | 6 ++ 数据库/结构优化/初始化-mysql.sql | 37 ------- .../结构优化/初始化-postgresql-kingbase.sql | 9 -- 11 files changed, 167 insertions(+), 137 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java index 6a6c54f9..4be2911d 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java @@ -28,6 +28,43 @@ public class SipConfig { private boolean alarm; + private String name = "WVP视频平台"; + + /** + * 平台厂商 + */ + private String manufacturer = "WVP视频平台"; + + /** + * 平台型号 + */ + private String model; + + /** + * 平台归属 + */ + private String owner; + + /** + * 平台行政区划 + */ + private String civilCode; + + /** + * 平台安装地址 + */ + private String address; + + /** + * 注册方式 + */ + private int registerWay = 1; + + /** + * 是否保密 + */ + private int secrecy = 0; + public void setIp(String ip) { this.ip = ip; } @@ -107,4 +144,68 @@ public class SipConfig { public void setShowIp(String showIp) { this.showIp = showIp; } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model; + } + + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + public String getCivilCode() { + return civilCode; + } + + public void setCivilCode(String civilCode) { + this.civilCode = civilCode; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public int getRegisterWay() { + return registerWay; + } + + public void setRegisterWay(int registerWay) { + this.registerWay = registerWay; + } + + public int getSecrecy() { + return secrecy; + } + + public void setSecrecy(int secrecy) { + this.secrecy = secrecy; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java index c2adb0b4..e04fdb37 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/ParentPlatform.java @@ -129,12 +129,6 @@ public class ParentPlatform { @Schema(description = "共享的通道数量") private int channelCount; - /** - * 默认目录Id,自动添加的通道多放在这个目录下 - */ - @Schema(description = "默认目录Id,自动添加的通道多放在这个目录下") - private String catalogId; - /** * 已被订阅目录信息 */ @@ -165,12 +159,6 @@ public class ParentPlatform { @Schema(description = "目录分组-每次向上级发送通道信息时单个包携带的通道数量,取值1,2,4,8") private int catalogGroup; - /** - * 行政区划 - */ - @Schema(description = "行政区划") - private String administrativeDivision; - /** * 更新时间 */ @@ -198,6 +186,9 @@ public class ParentPlatform { @Schema(description = "是否共享区域") private boolean shareRegion; + @Schema(description = "推送系统目录") + private boolean systemCatalog; + public Integer getId() { return id; } @@ -358,14 +349,6 @@ public class ParentPlatform { this.channelCount = channelCount; } - public String getCatalogId() { - return catalogId; - } - - public void setCatalogId(String catalogId) { - this.catalogId = catalogId; - } - public boolean isCatalogSubscribe() { return catalogSubscribe; } @@ -406,14 +389,6 @@ public class ParentPlatform { this.catalogGroup = catalogGroup; } - public String getAdministrativeDivision() { - return administrativeDivision; - } - - public void setAdministrativeDivision(String administrativeDivision) { - this.administrativeDivision = administrativeDivision; - } - public String getUpdateTime() { return updateTime; } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java index be79b0a6..a6b8dbbc 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java @@ -90,48 +90,48 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @Override public void register(ParentPlatform parentPlatform, @Nullable SipTransactionInfo sipTransactionInfo, @Nullable WWWAuthenticateHeader www, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean isRegister) throws SipException, InvalidArgumentException, ParseException { - Request request; + Request request; - CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport()); - String fromTag = SipUtils.getNewFromTag(); - String toTag = null; - if (sipTransactionInfo != null ) { - if (sipTransactionInfo.getCallId() != null) { - callIdHeader.setCallId(sipTransactionInfo.getCallId()); - } - if (sipTransactionInfo.getFromTag() != null) { - fromTag = sipTransactionInfo.getFromTag(); - } - if (sipTransactionInfo.getToTag() != null) { - toTag = sipTransactionInfo.getToTag(); - } + CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport()); + String fromTag = SipUtils.getNewFromTag(); + String toTag = null; + if (sipTransactionInfo != null ) { + if (sipTransactionInfo.getCallId() != null) { + callIdHeader.setCallId(sipTransactionInfo.getCallId()); } - - if (www == null ) { - request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, - redisCatchStorage.getCSEQ(), fromTag, - toTag, callIdHeader, isRegister? parentPlatform.getExpires() : 0); - // 将 callid 写入缓存, 等注册成功可以更新状态 - String callIdFromHeader = callIdHeader.getCallId(); - redisCatchStorage.updatePlatformRegisterInfo(callIdFromHeader, PlatformRegisterInfo.getInstance(parentPlatform.getServerGBId(), isRegister)); - - sipSubscribe.addErrorSubscribe(callIdHeader.getCallId(), (event)->{ - if (event != null) { - logger.info("向上级平台 [ {} ] 注册发生错误: {} ", - parentPlatform.getServerGBId(), - event.msg); - } - redisCatchStorage.delPlatformRegisterInfo(callIdFromHeader); - if (errorEvent != null ) { - errorEvent.response(event); - } - }); - - }else { - request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, fromTag, toTag, www, callIdHeader, isRegister? parentPlatform.getExpires() : 0); + if (sipTransactionInfo.getFromTag() != null) { + fromTag = sipTransactionInfo.getFromTag(); } + if (sipTransactionInfo.getToTag() != null) { + toTag = sipTransactionInfo.getToTag(); + } + } - sipSender.transmitRequest(parentPlatform.getDeviceIp(), request, null, okEvent); + if (www == null ) { + request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, + redisCatchStorage.getCSEQ(), fromTag, + toTag, callIdHeader, isRegister? parentPlatform.getExpires() : 0); + // 将 callid 写入缓存, 等注册成功可以更新状态 + String callIdFromHeader = callIdHeader.getCallId(); + redisCatchStorage.updatePlatformRegisterInfo(callIdFromHeader, PlatformRegisterInfo.getInstance(parentPlatform.getServerGBId(), isRegister)); + + sipSubscribe.addErrorSubscribe(callIdHeader.getCallId(), (event)->{ + if (event != null) { + logger.info("向上级平台 [ {} ] 注册发生错误: {} ", + parentPlatform.getServerGBId(), + event.msg); + } + redisCatchStorage.delPlatformRegisterInfo(callIdFromHeader); + if (errorEvent != null ) { + errorEvent.response(event); + } + }); + + }else { + request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, fromTag, toTag, www, callIdHeader, isRegister? parentPlatform.getExpires() : 0); + } + + sipSender.transmitRequest(parentPlatform.getDeviceIp(), request, null, okEvent); } @Override @@ -677,7 +677,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { SubscribeInfo subscribeInfo, Integer index) throws InvalidArgumentException, ParseException, NoSuchFieldException, SipException, IllegalAccessException { if (parentPlatform == null || channelList == null - || channelList.size() == 0 + || channelList.isEmpty() || subscribeInfo == null) { logger.warn("[缺少必要参数]"); return; diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java index d8987a5c..44d53b64 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/CatalogQueryMessageHandler.java @@ -101,7 +101,6 @@ public class CatalogQueryMessageHandler extends SIPRequestProcessorParent implem deviceChannel.setName(platform.getName()); deviceChannel.setManufacture("wvp-pro"); deviceChannel.setOwner("wvp-pro"); - deviceChannel.setCivilCode(platform.getAdministrativeDivision()); deviceChannel.setAddress("wvp-pro"); deviceChannel.setRegisterWay(0); deviceChannel.setSecrecy("0"); diff --git a/src/main/java/com/genersoft/iot/vmp/service/IPlatformService.java b/src/main/java/com/genersoft/iot/vmp/service/IPlatformService.java index 52c76c2f..f509f6d7 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/IPlatformService.java +++ b/src/main/java/com/genersoft/iot/vmp/service/IPlatformService.java @@ -21,7 +21,7 @@ public interface IPlatformService { * @param count * @return */ - PageInfo queryParentPlatformList(int page, int count, String query, Boolean online); + PageInfo queryParentPlatformList(int page, int count, String query, Boolean online, Boolean enable); /** * 添加级联平台 diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java index 2ec1128d..c32775d9 100755 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java @@ -95,9 +95,9 @@ public class PlatformServiceImpl implements IPlatformService { } @Override - public PageInfo queryParentPlatformList(int page, int count, String query, Boolean online) { + public PageInfo queryParentPlatformList(int page, int count, String query, Boolean online, Boolean enable) { PageHelper.startPage(page, count); - List all = platformMapper.getParentPlatformList(query, online); + List all = platformMapper.getParentPlatformList(query, online, enable); PageInfo platformPageInfo = new PageInfo<>(all); int allCount = commonChannelMapper.getAllCount(); platformPageInfo.getList().stream().forEach(parentPlatform -> { @@ -115,11 +115,6 @@ public class PlatformServiceImpl implements IPlatformService { // 每次发送目录的数量默认为1 parentPlatform.setCatalogGroup(1); } - if (parentPlatform.getAdministrativeDivision() == null) { - // 行政区划默认去编号的前6位 - parentPlatform.setAdministrativeDivision(parentPlatform.getServerGBId().substring(0,6)); - } - parentPlatform.setCatalogId(parentPlatform.getDeviceGBId()); int result = platformMapper.addParentPlatform(parentPlatform); // 添加缓存 ParentPlatformCatch parentPlatformCatch = new ParentPlatformCatch(); @@ -171,10 +166,6 @@ public class PlatformServiceImpl implements IPlatformService { if (parentPlatform.getCatalogGroup() == 0) { parentPlatform.setCatalogGroup(1); } - if (parentPlatform.getAdministrativeDivision() == null) { - parentPlatform.setAdministrativeDivision(parentPlatform.getAdministrativeDivision()); - } - platformMapper.updateParentPlatform(parentPlatform); // 更新redis redisCatchStorage.delPlatformCatchInfo(parentPlatformOld.getServerGBId()); @@ -478,7 +469,7 @@ public class PlatformServiceImpl implements IPlatformService { redisCatchStorage.delPlatformRegister(parentPlatform.getServerGBId()); } } - return true; + return platformMapper.delParentPlatform(parentPlatform) > 0; } @Override diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java index 993f3539..94fe9db8 100755 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/ParentPlatformMapper.java @@ -19,11 +19,11 @@ public interface ParentPlatformMapper { @Insert("INSERT INTO wvp_platform (enable, name, server_gb_id, server_gb_domain, server_ip, server_port,device_gb_id,device_ip,"+ "device_port,username,password,expires,keep_timeout,transport,character_set,ptz,rtcp,as_message_channel,auto_push_channel," + "share_all_channel,share_group,share_region,"+ - "status,start_offline_push,catalog_id,administrative_division,catalog_group,create_time,update_time) " + + "status,start_offline_push,catalog_group,create_time,update_time) " + " VALUES (#{enable}, #{name}, #{serverGBId}, #{serverGBDomain}, #{serverIP}, #{serverPort}, #{deviceGBId}, #{deviceIp}, " + " #{devicePort}, #{username}, #{password}, #{expires}, #{keepTimeout}, #{transport}, #{characterSet}, #{ptz}, " + " #{rtcp}, #{asMessageChannel}, #{autoPushChannel}, #{shareAllChannel}, #{shareGroup}, #{shareRegion}, " + - " #{status}, #{startOfflinePush}, #{catalogId}, #{administrativeDivision}, #{catalogGroup}, #{createTime}, #{updateTime})") + " #{status}, #{startOfflinePush}, #{catalogGroup}, #{createTime}, #{updateTime})") int addParentPlatform(ParentPlatform parentPlatform); @Update("UPDATE wvp_platform " + @@ -52,10 +52,8 @@ public interface ParentPlatformMapper { "status=#{status}, " + "start_offline_push=#{startOfflinePush}, " + "catalog_group=#{catalogGroup}, " + - "administrative_division=#{administrativeDivision}, " + "create_time=#{createTime}, " + - "update_time=#{updateTime}, " + - "catalog_id=#{catalogId} " + + "update_time=#{updateTime} " + "WHERE id=#{id}") int updateParentPlatform(ParentPlatform parentPlatform); @@ -67,13 +65,18 @@ public interface ParentPlatformMapper { "(SELECT count(0) as channel_count FROM wvp_common_channel_platform wccp WHERE wccp.platform_id = pp.id) " + "FROM wvp_platform pp where 1=1 " + " " + - "and (pp.name LIKE '%${query}%' OR de.server_gb_id LIKE '%${query}%' OR de.device_gb_id LIKE '%${query}%')" + + "and (pp.name LIKE '%${query}%' OR pp.server_gb_id LIKE '%${query}%' OR pp.device_gb_id LIKE '%${query}%')" + "" + " " + "and status = #{online}" + "" + + " " + + "and enable = #{enable}" + + "" + "") - List getParentPlatformList(@Param("query") String query, @Param("online") Boolean online); + List getParentPlatformList(@Param("query") String query, + @Param("online") Boolean online, + @Param("enable") Boolean enable); @Select("SELECT * FROM wvp_platform WHERE enable=#{enable} ") List getEnableParentPlatformList(boolean enable); diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java index 136f1e68..7af84e6c 100755 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java @@ -84,18 +84,19 @@ public class PlatformController { * @param count 每页条数 * @return */ - @GetMapping("/list/{count}/{page}") + @GetMapping("/list") @Operation(summary = "分页查询级联平台", security = @SecurityRequirement(name = JwtUtils.HEADER)) @Parameter(name = "page", description = "当前页", required = true) @Parameter(name = "count", description = "每页条数", required = true) public PageInfo platforms(int page, int count, @RequestParam(required = false)String query, - @RequestParam(required = false)Boolean online) { + @RequestParam(required = false)Boolean online, + @RequestParam(required = false)Boolean enable) { if (ObjectUtils.isEmpty(query)) { query = null; } - PageInfo parentPlatformPageInfo = platformService.queryParentPlatformList(page, count, query, online); + PageInfo parentPlatformPageInfo = platformService.queryParentPlatformList(page, count, query, online, enable); if (!parentPlatformPageInfo.getList().isEmpty()) { for (ParentPlatform platform : parentPlatformPageInfo.getList()) { platform.setMobilePositionSubscribe(subscribeHolder.getMobilePositionSubscribe(platform.getId()) != null); diff --git a/数据库/结构优化/common.sql b/数据库/结构优化/common.sql index f0eb670c..41afe0fb 100644 --- a/数据库/结构优化/common.sql +++ b/数据库/结构优化/common.sql @@ -164,6 +164,12 @@ alter table wvp_stream_push alter table wvp_stream_proxy drop column src_url; +alter table wvp_platform + drop column administrative_division; + +alter table wvp_platform + drop column catalog_id; + diff --git a/数据库/结构优化/初始化-mysql.sql b/数据库/结构优化/初始化-mysql.sql index ea75addb..30924906 100644 --- a/数据库/结构优化/初始化-mysql.sql +++ b/数据库/结构优化/初始化-mysql.sql @@ -186,12 +186,10 @@ create table wvp_platform ( 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), @@ -200,32 +198,6 @@ create table wvp_platform ( 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), @@ -303,15 +275,6 @@ create table wvp_user_role ( 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) -); /*初始数据*/ diff --git a/数据库/结构优化/初始化-postgresql-kingbase.sql b/数据库/结构优化/初始化-postgresql-kingbase.sql index c590349c..80e2df89 100644 --- a/数据库/结构优化/初始化-postgresql-kingbase.sql +++ b/数据库/结构优化/初始化-postgresql-kingbase.sql @@ -177,7 +177,6 @@ create table wvp_platform ( 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), @@ -186,14 +185,6 @@ create table wvp_platform ( constraint uk_platform_unique_server_gb_id unique (server_gb_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_stream_proxy ( id serial primary key, type character varying(50),