diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/PlatformChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/PlatformChannelMapper.java index c437eee0f..8d44f8df3 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/PlatformChannelMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/PlatformChannelMapper.java @@ -147,8 +147,8 @@ public interface PlatformChannelMapper { " " + " AND (coalesce(wdc.gb_device_id, wdc.device_id) LIKE concat('%',#{query},'%') OR wpgc.custom_device_id LIKE concat('%',#{query},'%') " + " OR coalesce(wdc.gb_name, wdc.name) LIKE concat('%',#{query},'%') OR wpgc.custom_name LIKE concat('%',#{query},'%')) " + - " AND coalesce(wpgc.status, wdc.gb_status, wdc.status) = 'ON' " + - " AND coalesce(wpgc.status, wdc.gb_status, wdc.status) = 'OFF' " + + " AND coalesce(wpgc.custom_status, wdc.gb_status, wdc.status) = 'ON' " + + " AND coalesce(wpgc.custom_status, wdc.gb_status, wdc.status) = 'OFF' " + " AND wpgc.platform_id = #{platformId} " + " AND wpgc.platform_id is null " + " AND wdc.data_type = #{dataType} " + diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/SendRtpServerServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/SendRtpServerServiceImpl.java index 88f1df2e1..053ff9e69 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/SendRtpServerServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/SendRtpServerServiceImpl.java @@ -28,7 +28,7 @@ public class SendRtpServerServiceImpl implements ISendRtpServerService { @Autowired private RedisTemplate redisTemplate; - + @Override public SendRtpInfo createSendRtpInfo(MediaServer mediaServer, String ip, Integer port, String ssrc, String requesterId, @@ -230,31 +230,27 @@ public class SendRtpServerServiceImpl implements ISendRtpServerService { log.warn("{}获取redis连接信息失败", mediaServer.getId()); return -1; } - return getSendPort(startPort, endPort, sendIndexKey, sendRtpSet); - } - - private synchronized int getSendPort(int startPort, int endPort, String sendIndexKey, Set sendRtpPortSet){ - // TODO 这里改为只取偶数端口 RedisAtomicInteger redisAtomicInteger = new RedisAtomicInteger(sendIndexKey , redisTemplate.getConnectionFactory()); if (redisAtomicInteger.get() < startPort) { redisAtomicInteger.set(startPort); return startPort; }else { - int port = redisAtomicInteger.getAndIncrement(); - if (port > endPort) { - redisAtomicInteger.set(startPort); - if (sendRtpPortSet.contains(startPort)) { - return getSendPort(startPort, endPort, sendIndexKey, sendRtpPortSet); - }else { - return startPort; + for (int i = 0; i < endPort - startPort; i++) { + int port = redisAtomicInteger.getAndIncrement(); + if (port > endPort) { + redisAtomicInteger.set(startPort); + if (sendRtpSet.contains(startPort)) { + continue; + }else { + return startPort; + } + } + if (!sendRtpSet.contains(port)) { + return port; } } - if (sendRtpPortSet.contains(port)) { - return getSendPort(startPort, endPort, sendIndexKey, sendRtpPortSet); - }else { - return port; - } } + log.warn("{}获取发送端口失败, 无可用端口", mediaServer.getId()); + return -1; } - }