diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/PlayController.java b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/PlayController.java index e5087cbaa..b99a00bf6 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/PlayController.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/PlayController.java @@ -21,7 +21,6 @@ import com.genersoft.iot.vmp.media.bean.MediaServer; import com.genersoft.iot.vmp.media.service.IMediaServerService; import com.genersoft.iot.vmp.service.bean.ErrorCallback; import com.genersoft.iot.vmp.service.bean.InviteErrorCode; -import com.genersoft.iot.vmp.service.redisMsg.IRedisRpcPlayService; import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.vmanager.bean.AudioBroadcastResult; import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; @@ -66,9 +65,6 @@ public class PlayController { @Autowired private IPlayService playService; - @Autowired - private IRedisRpcPlayService redisRpcPlayService; - @Autowired private IMediaServerService mediaServerService; @@ -153,12 +149,7 @@ public class PlayController { // 此处必须释放所有请求 resultHolder.invokeAllResult(requestMessage); }; - // 判断设备是否属于当前平台, 如果不属于则发起自动调用 - if (userSetting.getServerId().equals(device.getServerId())) { - redisRpcPlayService.play(device.getServerId(), channel.getId(), callback); - }else { - playService.play(device, channel, callback); - } + playService.play(device, channel, callback); return result; } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceMapper.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceMapper.java index 07b186763..b33f906b5 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceMapper.java @@ -365,6 +365,7 @@ public interface DeviceMapper { "geo_coord_sys,"+ "on_line,"+ "media_server_id,"+ + "server_id,"+ "(SELECT count(0) FROM wvp_device_channel dc WHERE dc.device_db_id= de.id) as channel_count " + " FROM wvp_device de" + " where 1 = 1 "+ diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlayServiceImpl.java index 8b3d9f067..e631a6cdc 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlayServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/PlayServiceImpl.java @@ -31,6 +31,7 @@ import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo; import com.genersoft.iot.vmp.service.IReceiveRtpServerService; import com.genersoft.iot.vmp.service.ISendRtpServerService; import com.genersoft.iot.vmp.service.bean.*; +import com.genersoft.iot.vmp.service.redisMsg.IRedisRpcPlayService; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; import com.genersoft.iot.vmp.utils.CloudRecordUtils; import com.genersoft.iot.vmp.utils.DateUtil; @@ -123,6 +124,9 @@ public class PlayServiceImpl implements IPlayService { @Autowired private ICloudRecordService cloudRecordService; + @Autowired + private IRedisRpcPlayService redisRpcPlayService; + /** * 流到来的处理 */ @@ -287,12 +291,18 @@ public class PlayServiceImpl implements IPlayService { @Override public void play(Device device, DeviceChannel channel, ErrorCallback<StreamInfo> callback) { - MediaServer mediaServerItem = getNewMediaServerItem(device); - if (mediaServerItem == null) { - log.warn("[点播] 未找到可用的zlm deviceId: {},channelId:{}", device.getDeviceId(), channel.getDeviceId()); - throw new ControllerException(ErrorCode.ERROR100.getCode(), "未找到可用的zlm"); + + // 判断设备是否属于当前平台, 如果不属于则发起自动调用 + if (userSetting.getServerId().equals(device.getServerId())) { + redisRpcPlayService.play(device.getServerId(), channel.getId(), callback); + }else { + MediaServer mediaServerItem = getNewMediaServerItem(device); + if (mediaServerItem == null) { + log.warn("[点播] 未找到可用的zlm deviceId: {},channelId:{}", device.getDeviceId(), channel.getDeviceId()); + throw new ControllerException(ErrorCode.ERROR100.getCode(), "未找到可用的zlm"); + } + play(mediaServerItem, device, channel, null, callback); } - play(mediaServerItem, device, channel, null, callback); } @Override @@ -1660,13 +1670,8 @@ public class PlayServiceImpl implements IPlayService { log.warn("[点播] 未找到通道{}的设备信息", channel); throw new PlayException(Response.SERVER_INTERNAL_ERROR, "server internal error"); } - MediaServer mediaServer = getNewMediaServerItem(device); - if (mediaServer == null) { - log.warn("[点播] 未找到可用媒体节点"); - throw new PlayException(Response.SERVER_INTERNAL_ERROR, "server internal error"); - } DeviceChannel deviceChannel = deviceChannelService.getOneForSourceById(channel.getGbId()); - play(mediaServer, device, deviceChannel, null, callback); + play(device, deviceChannel, callback); } @Override diff --git a/web_src/src/components/DeviceList.vue b/web_src/src/components/DeviceList.vue index 7525def58..f9240f64d 100755 --- a/web_src/src/components/DeviceList.vue +++ b/web_src/src/components/DeviceList.vue @@ -15,7 +15,7 @@ </el-select> <el-button icon="el-icon-plus" size="mini" style="margin-right: 1rem;" type="primary" @click="add">添加设备 </el-button> - <el-button icon="el-icon-info" size="mini" style="margin-right: 1rem;" type="primary" @click="showInfo">平台信息 + <el-button icon="el-icon-info" size="mini" style="margin-right: 1rem;" type="primary" @click="showInfo(true)">平台信息 </el-button> <el-button icon="el-icon-refresh-right" circle size="mini" :loading="getDeviceListLoading" @click="getDeviceList()"></el-button> @@ -53,7 +53,8 @@ <el-table-column label="状态" min-width="120"> <template v-slot:default="scope"> <div slot="reference" class="name-wrapper"> - <el-tag size="medium" v-if="scope.row.onLine">在线</el-tag> + <el-tag size="medium" v-if="scope.row.onLine && serverId !== scope.row.serverId" style="border-color: #ecf1af">在线</el-tag> + <el-tag size="medium" v-if="scope.row.onLine && serverId === scope.row.serverId">在线</el-tag> <el-tag size="medium" type="info" v-if="!scope.row.onLine">离线</el-tag> </div> </template> @@ -62,11 +63,6 @@ </el-table-column> <el-table-column prop="registerTime" label="最近注册" min-width="160"> </el-table-column> -<!-- <el-table-column prop="updateTime" label="更新时间" width="140">--> -<!-- </el-table-column>--> -<!-- <el-table-column prop="createTime" label="创建时间" width="140">--> -<!-- </el-table-column>--> - <el-table-column label="操作" min-width="380" fixed="right"> <template v-slot:default="scope"> <el-button type="text" size="medium" v-bind:disabled="scope.row.online==0" icon="el-icon-refresh" @click="refDevice(scope.row)" @@ -133,11 +129,12 @@ export default { online: null, videoComponentList: [], updateLooper: 0, //数据刷新轮训标志 - currentDeviceChannelsLenth: 0, + currentDeviceChannelsLength: 0, winHeight: window.innerHeight - 200, currentPage: 1, count: 15, total: 0, + serverId: null, getDeviceListLoading: false, }; }, @@ -149,7 +146,7 @@ export default { channels = Object.keys(data).map(key => { return data[key]; }); - this.currentDeviceChannelsLenth = channels.length; + this.currentDeviceChannelsLength = channels.length; } return channels; } @@ -164,6 +161,8 @@ export default { }, methods: { initData: function () { + // 获取平台信息 + this.showInfo(false) this.getDeviceList(); }, currentChange: function (val) { @@ -326,17 +325,18 @@ export default { }) }, - showInfo: function (){ + showInfo: function (showConfigInfo){ this.$axios({ method: 'get', url: `/api/server/system/configInfo`, }).then( (res)=> { - console.log(res) if (res.data.code === 0) { - console.log(2222) - console.log(this.$refs.configInfo) - this.$refs.configInfo.openDialog(res.data.data) + this.serverId = res.data.data.addOn.serverId; + console.log(this.serverId); + if(showConfigInfo) { + this.$refs.configInfo.openDialog(res.data.data) + } } }).catch( (error)=> { });