Commit eefe6f4c8db294e1374e9c2e257dd736dc320343
Committed by
GitHub
Merge pull request #549 from TristingChen/fix-channel_status
优化----设备下线,通道状态也切换至离线状态
Showing
3 changed files
with
21 additions
and
4 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
| ... | ... | @@ -143,6 +143,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen |
| 143 | 143 | device.setGeoCoordSys("WGS84"); |
| 144 | 144 | device.setTreeType("CivilCode"); |
| 145 | 145 | device.setDeviceId(deviceId); |
| 146 | + device.setOnline(0); | |
| 146 | 147 | } |
| 147 | 148 | device.setIp(received); |
| 148 | 149 | device.setPort(rPort); | ... | ... |
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
| ... | ... | @@ -86,10 +86,10 @@ public class DeviceServiceImpl implements IDeviceService { |
| 86 | 86 | redisCatchStorage.clearCatchByDeviceId(device.getDeviceId()); |
| 87 | 87 | } |
| 88 | 88 | device.setUpdateTime(now); |
| 89 | - device.setOnline(1); | |
| 90 | 89 | |
| 91 | - // 第一次上线 | |
| 90 | + // 第一次上线 或则设备之前是离线状态--进行通道同步和设备信息查询 | |
| 92 | 91 | if (device.getCreateTime() == null) { |
| 92 | + device.setOnline(1); | |
| 93 | 93 | device.setCreateTime(now); |
| 94 | 94 | logger.info("[设备上线,首次注册]: {},查询设备信息以及通道信息", device.getDeviceId()); |
| 95 | 95 | deviceMapper.add(device); |
| ... | ... | @@ -97,8 +97,19 @@ public class DeviceServiceImpl implements IDeviceService { |
| 97 | 97 | commander.deviceInfoQuery(device); |
| 98 | 98 | sync(device); |
| 99 | 99 | }else { |
| 100 | - deviceMapper.update(device); | |
| 101 | - redisCatchStorage.updateDevice(device); | |
| 100 | + if(device.getOnline() == 0){ | |
| 101 | + device.setOnline(1); | |
| 102 | + device.setCreateTime(now); | |
| 103 | + logger.info("[设备上线,离线状态下重新注册]: {},查询设备信息以及通道信息", device.getDeviceId()); | |
| 104 | + deviceMapper.update(device); | |
| 105 | + redisCatchStorage.updateDevice(device); | |
| 106 | + commander.deviceInfoQuery(device); | |
| 107 | + sync(device); | |
| 108 | + }else { | |
| 109 | + deviceMapper.update(device); | |
| 110 | + redisCatchStorage.updateDevice(device); | |
| 111 | + } | |
| 112 | + | |
| 102 | 113 | } |
| 103 | 114 | |
| 104 | 115 | // 上线添加订阅 |
| ... | ... | @@ -125,6 +136,8 @@ public class DeviceServiceImpl implements IDeviceService { |
| 125 | 136 | device.setOnline(0); |
| 126 | 137 | redisCatchStorage.updateDevice(device); |
| 127 | 138 | deviceMapper.update(device); |
| 139 | + //进行通道离线 | |
| 140 | + deviceChannelMapper.offlineByDeviceId(deviceId); | |
| 128 | 141 | // 离线释放所有ssrc |
| 129 | 142 | List<SsrcTransaction> ssrcTransactions = streamSession.getSsrcTransactionForAll(deviceId, null, null, null); |
| 130 | 143 | if (ssrcTransactions != null && ssrcTransactions.size() > 0) { | ... | ... |
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java
| ... | ... | @@ -140,6 +140,9 @@ public interface DeviceChannelMapper { |
| 140 | 140 | @Update(value = {"UPDATE device_channel SET status=0 WHERE deviceId=#{deviceId} AND channelId=#{channelId}"}) |
| 141 | 141 | void offline(String deviceId, String channelId); |
| 142 | 142 | |
| 143 | + @Update(value = {"UPDATE device_channel SET status=0 WHERE deviceId=#{deviceId}"}) | |
| 144 | + void offlineByDeviceId(String deviceId); | |
| 145 | + | |
| 143 | 146 | @Update(value = {"UPDATE device_channel SET status=1 WHERE deviceId=#{deviceId} AND channelId=#{channelId}"}) |
| 144 | 147 | void online(String deviceId, String channelId); |
| 145 | 148 | ... | ... |