From 46cf650a863f9181f78c09f9b1146972844449bc Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: Fri, 21 Jan 2022 18:00:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=80=9A=E9=81=93=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E6=98=AF=E9=80=9A=E9=81=93=E7=9A=84=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/StreamProxyServiceImpl.java | 25 +++--- .../vmp/storager/dao/DeviceChannelMapper.java | 2 +- .../gb28181/platform/PlatformController.java | 77 +++++++++++++++++-- .../src/components/dialog/platformEdit.vue | 14 +++- 4 files changed, 96 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java index 1c8f191f..13277c21 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java @@ -146,20 +146,23 @@ public class StreamProxyServiceImpl implements IStreamProxyService { result.append(", 关联国标平台[ " + param.getPlatformGbId() + " ]失败"); } } - // 查找开启了全部直播流共享的上级平台 - List parentPlatforms = parentPlatformMapper.selectAllAhareAllLiveStream(); - if (parentPlatforms.size() > 0) { - for (ParentPlatform parentPlatform : parentPlatforms) { - param.setPlatformId(parentPlatform.getServerGBId()); - param.setCatalogId(parentPlatform.getCatalogId()); - String stream = param.getStream(); - StreamProxyItem streamProxyItems = platformGbStreamMapper.selectOne(param.getApp(), stream, parentPlatform.getServerGBId()); - if (streamProxyItems == null) { - platformGbStreamMapper.add(param); - eventPublisher.catalogEventPublishForStream(parentPlatform.getServerGBId(), param, CatalogEvent.ADD); + if (!StringUtils.isEmpty(param.getGbId())) { + // 查找开启了全部直播流共享的上级平台 + List parentPlatforms = parentPlatformMapper.selectAllAhareAllLiveStream(); + if (parentPlatforms.size() > 0) { + for (ParentPlatform parentPlatform : parentPlatforms) { + param.setPlatformId(parentPlatform.getServerGBId()); + param.setCatalogId(parentPlatform.getCatalogId()); + String stream = param.getStream(); + StreamProxyItem streamProxyItems = platformGbStreamMapper.selectOne(param.getApp(), stream, parentPlatform.getServerGBId()); + if (streamProxyItems == null) { + platformGbStreamMapper.add(param); + eventPublisher.catalogEventPublishForStream(parentPlatform.getServerGBId(), param, CatalogEvent.ADD); + } } } } + wvpResult.setMsg(result.toString()); return wvpResult; } diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java index 4a12ce4b..ea5e2e48 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java @@ -96,7 +96,7 @@ public interface DeviceChannelMapper { "SELECT * FROM ( "+ " SELECT dc.channelId, dc.deviceId, dc.name, de.manufacturer, de.hostAddress, " + "(SELECT count(0) FROM device_channel WHERE parentId=dc.channelId) as subCount, " + - "(SELECT pc.platformId FROM platform_gb_channel pc WHERE pc.deviceId=dc.deviceId AND pc.channelId = dc.channelId ) as platformId, " + + "(SELECT pc.platformId FROM platform_gb_channel pc WHERE pc.deviceId=dc.deviceId AND pc.channelId = dc.channelId AND pc.platformId = #{platformId}) as platformId, " + "(SELECT pc.catalogId FROM platform_gb_channel pc WHERE pc.deviceId=dc.deviceId AND pc.channelId = dc.channelId ) as catalogId " + "FROM device_channel dc " + "LEFT JOIN device de ON dc.deviceId = de.deviceId " + 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 c486b42e..1111ff7d 100644 --- 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 @@ -86,6 +86,65 @@ public class PlatformController { return storager.queryParentPlatformList(page, count); } + /** + * 添加上级平台信息 + * @param parentPlatform + * @return + */ + @ApiOperation("添加上级平台信息") + @ApiImplicitParams({ + @ApiImplicitParam(name = "parentPlatform", value = "上级平台信息", dataTypeClass = ParentPlatform.class), + }) + @PostMapping("/add") + @ResponseBody + public ResponseEntity> addPlatform(@RequestBody ParentPlatform parentPlatform){ + + if (logger.isDebugEnabled()) { + logger.debug("保存上级平台信息API调用"); + } + WVPResult wvpResult = new WVPResult<>(); + if (StringUtils.isEmpty(parentPlatform.getName()) + ||StringUtils.isEmpty(parentPlatform.getServerGBId()) + ||StringUtils.isEmpty(parentPlatform.getServerGBDomain()) + ||StringUtils.isEmpty(parentPlatform.getServerIP()) + ||StringUtils.isEmpty(parentPlatform.getServerPort()) + ||StringUtils.isEmpty(parentPlatform.getDeviceGBId()) + ||StringUtils.isEmpty(parentPlatform.getExpires()) + ||StringUtils.isEmpty(parentPlatform.getKeepTimeout()) + ||StringUtils.isEmpty(parentPlatform.getTransport()) + ||StringUtils.isEmpty(parentPlatform.getCharacterSet()) + ){ + wvpResult.setCode(-1); + wvpResult.setMsg("missing parameters"); + return new ResponseEntity<>(wvpResult, HttpStatus.BAD_REQUEST); + } + + ParentPlatform parentPlatformOld = storager.queryParentPlatByServerGBId(parentPlatform.getServerGBId()); + if (parentPlatformOld != null) { + wvpResult.setCode(-1); + wvpResult.setMsg("平台 "+parentPlatform.getServerGBId()+" 已存在"); + return new ResponseEntity<>(wvpResult, HttpStatus.OK); + } + boolean updateResult = storager.updateParentPlatform(parentPlatform); + + if (updateResult) { + // 保存时启用就发送注册 + if (parentPlatform.isEnable()) { + // 只要保存就发送注册 + commanderForPlatform.register(parentPlatform, null, null); + } else if (parentPlatformOld != null && parentPlatformOld.isEnable() && !parentPlatform.isEnable()){ // 关闭启用时注销 + commanderForPlatform.unregister(parentPlatform, null, null); + } + wvpResult.setCode(0); + wvpResult.setMsg("success"); + return new ResponseEntity<>(wvpResult, HttpStatus.OK); + } else { + wvpResult.setCode(-1); + wvpResult.setMsg("写入数据库失败"); + return new ResponseEntity<>(wvpResult, HttpStatus.OK); + } + } + /** * 保存上级平台信息 * @param parentPlatform @@ -97,11 +156,12 @@ public class PlatformController { }) @PostMapping("/save") @ResponseBody - public ResponseEntity savePlatform(@RequestBody ParentPlatform parentPlatform){ + public ResponseEntity> savePlatform(@RequestBody ParentPlatform parentPlatform){ if (logger.isDebugEnabled()) { logger.debug("保存上级平台信息API调用"); } + WVPResult wvpResult = new WVPResult<>(); if (StringUtils.isEmpty(parentPlatform.getName()) ||StringUtils.isEmpty(parentPlatform.getServerGBId()) ||StringUtils.isEmpty(parentPlatform.getServerGBDomain()) @@ -113,11 +173,10 @@ public class PlatformController { ||StringUtils.isEmpty(parentPlatform.getTransport()) ||StringUtils.isEmpty(parentPlatform.getCharacterSet()) ){ - return new ResponseEntity<>("missing parameters", HttpStatus.BAD_REQUEST); + wvpResult.setCode(-1); + wvpResult.setMsg("missing parameters"); + return new ResponseEntity<>(wvpResult, HttpStatus.BAD_REQUEST); } - // TODO 检查是否已经存在,且注册成功, 如果注册成功,需要先注销之前再,修改并注册 - - // ParentPlatform parentPlatformOld = storager.queryParentPlatById(parentPlatform.getDeviceGBId()); ParentPlatform parentPlatformOld = storager.queryParentPlatByServerGBId(parentPlatform.getServerGBId()); boolean updateResult = storager.updateParentPlatform(parentPlatform); @@ -130,9 +189,13 @@ public class PlatformController { } else if (parentPlatformOld != null && parentPlatformOld.isEnable() && !parentPlatform.isEnable()){ // 关闭启用时注销 commanderForPlatform.unregister(parentPlatform, null, null); } - return new ResponseEntity<>("success", HttpStatus.OK); + wvpResult.setCode(0); + wvpResult.setMsg("success"); + return new ResponseEntity<>(wvpResult, HttpStatus.OK); } else { - return new ResponseEntity<>("fail", HttpStatus.OK); + wvpResult.setCode(0); + wvpResult.setMsg("写入数据库失败"); + return new ResponseEntity<>(wvpResult, HttpStatus.OK); } } diff --git a/web_src/src/components/dialog/platformEdit.vue b/web_src/src/components/dialog/platformEdit.vue index 62a6957f..38a2aef7 100644 --- a/web_src/src/components/dialog/platformEdit.vue +++ b/web_src/src/components/dialog/platformEdit.vue @@ -116,6 +116,7 @@ export default { showDialog: false, isLoging: false, onSubmit_text: "立即创建", + saveUrl: "/api/platform/save", platform: { id: null, @@ -163,6 +164,7 @@ export default { var that = this; if (platform == null) { this.onSubmit_text = "立即创建"; + this.saveUrl = "/api/platform/add"; this.$axios({ method: 'get', url:`/api/platform/server_config` @@ -198,6 +200,7 @@ export default { this.platform.shareAllLiveStream = platform.shareAllLiveStream; this.platform.catalogId = platform.catalogId; this.onSubmit_text = "保存"; + this.saveUrl = "/api/platform/save"; } this.showDialog = true; this.listChangeCallback = callback; @@ -212,14 +215,13 @@ export default { this.platform.username = this.platform.deviceGBId ; }, onSubmit: function () { - console.log("onSubmit"); var that = this; that.$axios({ method: 'post', - url:`/api/platform/save`, + url: this.saveUrl, data: that.platform }).then(function (res) { - if (res.data == "success") { + if (res.data.code === 0) { that.$message({ showClose: true, message: "保存成功", @@ -229,6 +231,12 @@ export default { if (that.listChangeCallback != null) { that.listChangeCallback(); } + }else { + that.$message({ + showClose: true, + message: res.data.msg, + type: "error", + }); } }).catch(function (error) { console.log(error);