Merge remote-tracking branch 'origin/wvp-28181-2.0' into wvp-28181-2.0
This commit is contained in:
@@ -233,4 +233,9 @@ public interface IRedisCatchStorage {
|
||||
* @return
|
||||
*/
|
||||
StreamAuthorityInfo getStreamAuthorityInfo(String app, String stream);
|
||||
|
||||
/**
|
||||
* 发送redis消息 查询所有推流设备的状态
|
||||
*/
|
||||
void sendStreamPushRequestedMsgForStatus();
|
||||
}
|
||||
|
||||
@@ -26,22 +26,6 @@ public interface IVideoManagerStorage {
|
||||
*/
|
||||
public boolean exists(String deviceId);
|
||||
|
||||
/**
|
||||
* 添加设备通道
|
||||
*
|
||||
* @param deviceId 设备id
|
||||
* @param channel 通道
|
||||
*/
|
||||
public void updateChannel(String deviceId, DeviceChannel channel);
|
||||
|
||||
/**
|
||||
* 批量添加设备通道
|
||||
*
|
||||
* @param deviceId 设备id
|
||||
* @param channels 多个通道
|
||||
*/
|
||||
public int updateChannels(String deviceId, List<DeviceChannel> channels);
|
||||
|
||||
/**
|
||||
* 开始播放
|
||||
* @param deviceId 设备id
|
||||
@@ -224,13 +208,6 @@ public interface IVideoManagerStorage {
|
||||
List<DeviceChannelInPlatform> queryChannelListInParentPlatform(String platformId);
|
||||
|
||||
|
||||
/**
|
||||
* 更新上级平台的通道信息
|
||||
* @param platformId
|
||||
* @param channelReduces
|
||||
* @return
|
||||
*/
|
||||
int updateChannelForGB(String platformId, List<ChannelReduce> channelReduces, String catalogId);
|
||||
|
||||
/**
|
||||
* 移除上级平台的通道信息
|
||||
@@ -276,20 +253,6 @@ public interface IVideoManagerStorage {
|
||||
*/
|
||||
public int clearMobilePositionsByDeviceId(String deviceId);
|
||||
|
||||
/**
|
||||
* 新增代理流
|
||||
* @param streamProxyDto
|
||||
* @return
|
||||
*/
|
||||
public boolean addStreamProxy(StreamProxyItem streamProxyDto);
|
||||
|
||||
/**
|
||||
* 更新代理流
|
||||
* @param streamProxyDto
|
||||
* @return
|
||||
*/
|
||||
public boolean updateStreamProxy(StreamProxyItem streamProxyDto);
|
||||
|
||||
/**
|
||||
* 移除代理流
|
||||
* @param app
|
||||
@@ -334,7 +297,7 @@ public interface IVideoManagerStorage {
|
||||
* @param platformId
|
||||
* @return
|
||||
*/
|
||||
List<GbStream> queryGbStreamListInPlatform(String platformId);
|
||||
List<DeviceChannel> queryGbStreamListInPlatform(String platformId);
|
||||
|
||||
/**
|
||||
* 批量更新推流列表
|
||||
@@ -445,7 +408,7 @@ public interface IVideoManagerStorage {
|
||||
|
||||
int setDefaultCatalog(String platformId, String catalogId);
|
||||
|
||||
List<PlatformCatalog> queryCatalogInPlatform(String serverGBId);
|
||||
List<DeviceChannel> queryCatalogInPlatform(String serverGBId);
|
||||
|
||||
int delRelation(PlatformCatalog platformCatalog);
|
||||
|
||||
@@ -466,4 +429,8 @@ public interface IVideoManagerStorage {
|
||||
List<ChannelSourceInfo> getChannelSource(String platformId, String gbId);
|
||||
|
||||
void updateChannelPosition(DeviceChannel deviceChannel);
|
||||
|
||||
void cleanContentForPlatform(String serverGBId);
|
||||
|
||||
List<DeviceChannel> queryChannelWithCatalog(String serverGBId);
|
||||
}
|
||||
|
||||
@@ -329,5 +329,13 @@ public interface DeviceChannelMapper {
|
||||
@Select("select * from device_channel where deviceId=#{deviceId} and SUBSTRING(channelId, 11, 3)=#{typeCode}")
|
||||
List<DeviceChannel> getBusinessGroups(String deviceId, String typeCode);
|
||||
|
||||
|
||||
@Select("select dc.id, dc.channelId, dc.deviceId, dc.name, dc.manufacture,dc.model,dc.owner, pc.civilCode,dc.block, " +
|
||||
" dc.address, '0' as parental,'0' as channelType, pc.id as parentId, dc.safetyWay, dc.registerWay,dc.certNum, dc.certifiable, " +
|
||||
" dc.errCode,dc.endTime, dc.secrecy, dc.ipAddress, dc.port, dc.PTZType, dc.password, dc.status, " +
|
||||
" dc.longitudeWgs84 as longitude, dc.latitudeWgs84 as latitude, pc.businessGroupId " +
|
||||
" from device_channel dc" +
|
||||
" left join platform_gb_channel pgc on dc.id = pgc.deviceChannelId" +
|
||||
" left join platform_catalog pc on pgc.catalogId = pc.id and pgc.platformId = pc.platformId" +
|
||||
" where pgc.platformId=#{serverGBId}")
|
||||
List<DeviceChannel> queryChannelWithCatalog(String serverGBId);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.genersoft.iot.vmp.storager.dao;
|
||||
|
||||
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
|
||||
@@ -15,10 +16,10 @@ import java.util.List;
|
||||
public interface GbStreamMapper {
|
||||
|
||||
@Insert("REPLACE INTO gb_stream (app, stream, gbId, name, " +
|
||||
"longitude, latitude, streamType, mediaServerId, status, createTime) VALUES" +
|
||||
"longitude, latitude, streamType, mediaServerId, createTime) VALUES" +
|
||||
"('${app}', '${stream}', '${gbId}', '${name}', " +
|
||||
"'${longitude}', '${latitude}', '${streamType}', " +
|
||||
"'${mediaServerId}', ${status}, '${createTime}')")
|
||||
"'${mediaServerId}', '${createTime}')")
|
||||
@Options(useGeneratedKeys = true, keyProperty = "gbStreamId", keyColumn = "gbStreamId")
|
||||
int add(GbStream gbStream);
|
||||
|
||||
@@ -30,8 +31,7 @@ public interface GbStreamMapper {
|
||||
"streamType=#{streamType}," +
|
||||
"longitude=#{longitude}, " +
|
||||
"latitude=#{latitude}," +
|
||||
"mediaServerId=#{mediaServerId}," +
|
||||
"status=${status} " +
|
||||
"mediaServerId=#{mediaServerId}" +
|
||||
"WHERE app=#{app} AND stream=#{stream}")
|
||||
int updateByAppAndStream(GbStream gbStream);
|
||||
|
||||
@@ -43,8 +43,7 @@ public interface GbStreamMapper {
|
||||
"streamType=#{streamType}," +
|
||||
"longitude=#{longitude}, " +
|
||||
"latitude=#{latitude}," +
|
||||
"mediaServerId=#{mediaServerId}," +
|
||||
"status=${status} " +
|
||||
"mediaServerId=#{mediaServerId}" +
|
||||
"WHERE gbStreamId=#{gbStreamId}")
|
||||
int update(GbStream gbStream);
|
||||
|
||||
@@ -60,12 +59,10 @@ public interface GbStreamMapper {
|
||||
" <if test='catalogId == null'> AND gs.gbStreamId not in" +
|
||||
"(select pgs.gbStreamId from platform_gb_stream pgs where pgs.platformId = #{platformId}) </if> " +
|
||||
" <if test='query != null'> AND (gs.app LIKE '%${query}%' OR gs.stream LIKE '%${query}%' OR gs.gbId LIKE '%${query}%' OR gs.name LIKE '%${query}%')</if> " +
|
||||
" <if test='pushing == true' > AND gs.status=1</if>" +
|
||||
" <if test='pushing == false' > AND gs.status=0</if>" +
|
||||
" <if test='mediaServerId != null' > AND gs.mediaServerId=#{mediaServerId} </if>" +
|
||||
" order by gs.gbStreamId asc " +
|
||||
"</script>")
|
||||
List<GbStream> selectAll(String platformId, String catalogId, String query, Boolean pushing, String mediaServerId);
|
||||
List<GbStream> selectAll(String platformId, String catalogId, String query, String mediaServerId);
|
||||
|
||||
@Select("SELECT * FROM gb_stream WHERE app=#{app} AND stream=#{stream}")
|
||||
GbStream selectOne(String app, String stream);
|
||||
@@ -78,10 +75,18 @@ public interface GbStreamMapper {
|
||||
"WHERE gs.gbId = '${gbId}' AND pgs.platformId = '${platformId}'")
|
||||
GbStream queryStreamInPlatform(String platformId, String gbId);
|
||||
|
||||
@Select("SELECT gs.*, pgs.platformId as platformId, pgs.catalogId as catalogId FROM gb_stream gs " +
|
||||
"LEFT JOIN platform_gb_stream pgs ON gs.gbStreamId = pgs.gbStreamId " +
|
||||
"WHERE pgs.platformId = #{platformId}")
|
||||
List<GbStream> queryGbStreamListInPlatform(String platformId);
|
||||
@Select("select gt.gbId as channelId, gt.name, 'wvp-pro' as manufacture, st.status, gt.longitude, gt.latitude, pc.id as parentId," +
|
||||
" '1' as registerWay, pc.civilCode, 'live' as model, 'wvp-pro' as owner, '0' as parental,'0' as secrecy" +
|
||||
" from gb_stream gt " +
|
||||
" left join (" +
|
||||
" select sp.status, sp.app, sp.stream from stream_push sp" +
|
||||
" union all" +
|
||||
" select spxy.status, spxy.app, spxy.stream from stream_proxy spxy" +
|
||||
" ) st on st.app = gt.app and st.stream = gt.stream" +
|
||||
" left join platform_gb_stream pgs on gt.gbStreamId = pgs.gbStreamId" +
|
||||
" left join platform_catalog pc on pgs.catalogId = pc.id and pgs.platformId = pc.platformId" +
|
||||
" where pgs.platformId=#{platformId}")
|
||||
List<DeviceChannel> queryGbStreamListInPlatform(String platformId);
|
||||
|
||||
|
||||
@Select("SELECT gs.* FROM gb_stream gs LEFT JOIN platform_gb_stream pgs " +
|
||||
@@ -110,12 +115,12 @@ public interface GbStreamMapper {
|
||||
@Insert("<script> " +
|
||||
"INSERT IGNORE into gb_stream " +
|
||||
"(app, stream, gbId, name, " +
|
||||
"longitude, latitude, streamType, mediaServerId, status, createTime)" +
|
||||
"longitude, latitude, streamType, mediaServerId, createTime)" +
|
||||
"values " +
|
||||
"<foreach collection='subList' index='index' item='item' separator=','> " +
|
||||
"('${item.app}', '${item.stream}', '${item.gbId}', '${item.name}', " +
|
||||
"'${item.longitude}', '${item.latitude}', '${item.streamType}', " +
|
||||
"'${item.mediaServerId}', ${item.status}, '${item.createTime}') "+
|
||||
"'${item.mediaServerId}', '${item.createTime}') "+
|
||||
"</foreach> " +
|
||||
"</script>")
|
||||
@Options(useGeneratedKeys = true, keyProperty = "gbStreamId", keyColumn = "gbStreamId")
|
||||
|
||||
@@ -16,10 +16,10 @@ public interface ParentPlatformMapper {
|
||||
|
||||
@Insert("INSERT INTO parent_platform (enable, name, serverGBId, serverGBDomain, serverIP, serverPort, deviceGBId, deviceIp, " +
|
||||
" devicePort, username, password, expires, keepTimeout, transport, characterSet, ptz, rtcp, " +
|
||||
" status, shareAllLiveStream, startOfflinePush, catalogId, administrativeDivision, catalogGroup, createTime, updateTime) " +
|
||||
" status, shareAllLiveStream, startOfflinePush, catalogId, administrativeDivision, catalogGroup, createTime, updateTime, treeType) " +
|
||||
" VALUES (${enable}, '${name}', '${serverGBId}', '${serverGBDomain}', '${serverIP}', ${serverPort}, '${deviceGBId}', '${deviceIp}', " +
|
||||
" '${devicePort}', '${username}', '${password}', '${expires}', '${keepTimeout}', '${transport}', '${characterSet}', ${ptz}, ${rtcp}, " +
|
||||
" ${status}, ${shareAllLiveStream}, ${startOfflinePush}, #{catalogId}, #{administrativeDivision}, #{catalogGroup}, #{createTime}, #{updateTime})")
|
||||
" ${status}, ${shareAllLiveStream}, ${startOfflinePush}, #{catalogId}, #{administrativeDivision}, #{catalogGroup}, #{createTime}, #{updateTime}, #{treeType})")
|
||||
int addParentPlatform(ParentPlatform parentPlatform);
|
||||
|
||||
@Update("UPDATE parent_platform " +
|
||||
@@ -47,6 +47,7 @@ public interface ParentPlatformMapper {
|
||||
"administrativeDivision=#{administrativeDivision}, " +
|
||||
"createTime=#{createTime}, " +
|
||||
"updateTime=#{updateTime}, " +
|
||||
"treeType=#{treeType}, " +
|
||||
"catalogId=#{catalogId} " +
|
||||
"WHERE id=#{id}")
|
||||
int updateParentPlatform(ParentPlatform parentPlatform);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.genersoft.iot.vmp.storager.dao;
|
||||
|
||||
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.PlatformCatalog;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.PlatformGbStream;
|
||||
@@ -14,8 +15,8 @@ import java.util.List;
|
||||
@Repository
|
||||
public interface PlatformCatalogMapper {
|
||||
|
||||
@Insert("INSERT INTO platform_catalog (id, name, platformId, parentId) VALUES" +
|
||||
"(#{id}, #{name}, #{platformId}, #{parentId})")
|
||||
@Insert("INSERT INTO platform_catalog (id, name, platformId, parentId, civilCode, businessGroupId) VALUES" +
|
||||
"(#{id}, #{name}, #{platformId}, #{parentId}, #{civilCode}, #{businessGroupId})")
|
||||
int add(PlatformCatalog platformCatalog);
|
||||
|
||||
@Delete("DELETE FROM platform_catalog WHERE id=#{id}")
|
||||
@@ -44,4 +45,12 @@ public interface PlatformCatalogMapper {
|
||||
|
||||
@Select("SELECT pc.* FROM platform_catalog pc WHERE pc.id = (SELECT pp.catalogId from parent_platform pp WHERE pp.serverGBId=#{platformId})")
|
||||
PlatformCatalog selectDefaultByPlatFormId(String platformId);
|
||||
|
||||
|
||||
@Select("SELECT pc.* FROM platform_catalog pc WHERE pc.id = #{id}")
|
||||
PlatformCatalog selectParentCatalog(String id);
|
||||
|
||||
@Select("SELECT pc.id as channelId, pc.name, pc.civilCode, pc.businessGroupId,'0' as parental, pc.parentId " +
|
||||
" FROM platform_catalog pc WHERE pc.platformId=#{platformId}")
|
||||
List<DeviceChannel> queryCatalogInPlatform(String platformId);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.genersoft.iot.vmp.storager.dao;
|
||||
|
||||
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
|
||||
import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
|
||||
import com.genersoft.iot.vmp.service.bean.StreamPushItemFromRedis;
|
||||
import org.apache.ibatis.annotations.*;
|
||||
// import org.omg.PortableInterceptor.INACTIVE;
|
||||
import org.springframework.stereotype.Repository;
|
||||
@@ -87,10 +88,10 @@ public interface StreamPushMapper {
|
||||
|
||||
@Insert("<script>" +
|
||||
"Insert IGNORE INTO stream_push (app, stream, totalReaderCount, originType, originTypeStr, " +
|
||||
"createTime, aliveSecond, mediaServerId) " +
|
||||
"createTime, aliveSecond, mediaServerId, status) " +
|
||||
"VALUES <foreach collection='streamPushItems' item='item' index='index' separator=','>" +
|
||||
"( '${item.app}', '${item.stream}', '${item.totalReaderCount}', #{item.originType}, " +
|
||||
"'${item.originTypeStr}',#{item.createTime}, #{item.aliveSecond}, '${item.mediaServerId}' )" +
|
||||
"'${item.originTypeStr}',#{item.createTime}, #{item.aliveSecond}, '${item.mediaServerId}', ${item.status} )" +
|
||||
" </foreach>" +
|
||||
"</script>")
|
||||
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
|
||||
@@ -117,4 +118,45 @@ public interface StreamPushMapper {
|
||||
"SET status=#{status} " +
|
||||
"WHERE mediaServerId=#{mediaServerId}")
|
||||
void updateStatusByMediaServerId(String mediaServerId, boolean status);
|
||||
|
||||
|
||||
@Select("<script> "+
|
||||
"SELECT gs.* FROM stream_push sp left join gb_stream gs on sp.app = gs.app AND sp.stream = gs.stream " +
|
||||
"where sp.status = 1 and (gs.app, gs.stream) in (" +
|
||||
"<foreach collection='offlineStreams' item='item' separator=','>" +
|
||||
"(#{item.app}, #{item.stream}) " +
|
||||
")</foreach>" +
|
||||
"</script>")
|
||||
List<GbStream> getOnlinePusherForGbInList(List<StreamPushItemFromRedis> offlineStreams);
|
||||
|
||||
@Update("<script> "+
|
||||
"UPDATE stream_push SET status=0 where (app, stream) in (" +
|
||||
"<foreach collection='offlineStreams' item='item' separator=','>" +
|
||||
"(#{item.app}, #{item.stream}) " +
|
||||
")</foreach>" +
|
||||
"</script>")
|
||||
void offline(List<StreamPushItemFromRedis> offlineStreams);
|
||||
|
||||
@Select("<script> "+
|
||||
"SELECT * FROM stream_push sp left join gb_stream gs on sp.app = gs.app AND sp.stream = gs.stream " +
|
||||
"where sp.status = 0 and (gs.app, gs.stream) in (" +
|
||||
"<foreach collection='onlineStreams' item='item' separator=','>" +
|
||||
"(#{item.app}, #{item.stream}) " +
|
||||
"</foreach>" +
|
||||
") </script>")
|
||||
List<GbStream> getOfflinePusherForGbInList(List<StreamPushItemFromRedis> onlineStreams);
|
||||
|
||||
@Update("<script> "+
|
||||
"UPDATE stream_push SET status=1 where (app, stream) in (" +
|
||||
"<foreach collection='onlineStreams' item='item' separator=','>" +
|
||||
"(#{item.app}, #{item.stream}) " +
|
||||
")</foreach>" +
|
||||
"</script>")
|
||||
void online(List<StreamPushItemFromRedis> onlineStreams);
|
||||
|
||||
@Select("SELECT gs.* FROM stream_push sp left join gb_stream gs on sp.app = gs.app AND sp.stream = gs.stream where sp.status = 1")
|
||||
List<GbStream> getOnlinePusherForGb();
|
||||
|
||||
@Update("UPDATE stream_push SET status=0")
|
||||
void setAllStreamOffline();
|
||||
}
|
||||
|
||||
@@ -707,4 +707,12 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void sendStreamPushRequestedMsgForStatus() {
|
||||
String key = VideoManagerConstants.VM_MSG_GET_ALL_ONLINE_REQUESTED;
|
||||
logger.info("[redis 通知]获取所有推流设备的状态");
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put(key, key);
|
||||
redis.convertAndSend(key, jsonObject);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,12 +48,13 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
||||
@Autowired
|
||||
SipConfig sipConfig;
|
||||
|
||||
@Autowired
|
||||
DataSourceTransactionManager dataSourceTransactionManager;
|
||||
|
||||
@Autowired
|
||||
TransactionDefinition transactionDefinition;
|
||||
|
||||
@Autowired
|
||||
DataSourceTransactionManager dataSourceTransactionManager;
|
||||
|
||||
@Autowired
|
||||
private DeviceMapper deviceMapper;
|
||||
|
||||
@@ -104,96 +105,6 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
||||
return deviceMapper.getDeviceByDeviceId(deviceId) != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void updateChannel(String deviceId, DeviceChannel channel) {
|
||||
String channelId = channel.getChannelId();
|
||||
channel.setDeviceId(deviceId);
|
||||
StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(deviceId, channelId);
|
||||
if (streamInfo != null) {
|
||||
channel.setStreamId(streamInfo.getStream());
|
||||
}
|
||||
String now = DateUtil.getNow();
|
||||
channel.setUpdateTime(now);
|
||||
DeviceChannel deviceChannel = deviceChannelMapper.queryChannel(deviceId, channelId);
|
||||
if (deviceChannel == null) {
|
||||
channel.setCreateTime(now);
|
||||
deviceChannelMapper.add(channel);
|
||||
}else {
|
||||
deviceChannelMapper.update(channel);
|
||||
}
|
||||
deviceChannelMapper.updateChannelSubCount(deviceId,channel.getParentId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateChannels(String deviceId, List<DeviceChannel> channels) {
|
||||
List<DeviceChannel> addChannels = new ArrayList<>();
|
||||
List<DeviceChannel> updateChannels = new ArrayList<>();
|
||||
HashMap<String, DeviceChannel> channelsInStore = new HashMap<>();
|
||||
if (channels != null && channels.size() > 0) {
|
||||
List<DeviceChannel> channelList = deviceChannelMapper.queryChannels(deviceId, null, null, null, null);
|
||||
if (channelList.size() == 0) {
|
||||
for (DeviceChannel channel : channels) {
|
||||
channel.setDeviceId(deviceId);
|
||||
StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(deviceId, channel.getChannelId());
|
||||
if (streamInfo != null) {
|
||||
channel.setStreamId(streamInfo.getStream());
|
||||
}
|
||||
String now = DateUtil.getNow();
|
||||
channel.setUpdateTime(now);
|
||||
channel.setCreateTime(now);
|
||||
addChannels.add(channel);
|
||||
}
|
||||
}else {
|
||||
for (DeviceChannel deviceChannel : channelList) {
|
||||
channelsInStore.put(deviceChannel.getChannelId(), deviceChannel);
|
||||
}
|
||||
for (DeviceChannel channel : channels) {
|
||||
channel.setDeviceId(deviceId);
|
||||
StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(deviceId, channel.getChannelId());
|
||||
if (streamInfo != null) {
|
||||
channel.setStreamId(streamInfo.getStream());
|
||||
}
|
||||
String now = DateUtil.getNow();
|
||||
channel.setUpdateTime(now);
|
||||
if (channelsInStore.get(channel.getChannelId()) != null) {
|
||||
updateChannels.add(channel);
|
||||
}else {
|
||||
addChannels.add(channel);
|
||||
channel.setCreateTime(now);
|
||||
}
|
||||
}
|
||||
}
|
||||
int limitCount = 300;
|
||||
if (addChannels.size() > 0) {
|
||||
if (addChannels.size() > limitCount) {
|
||||
for (int i = 0; i < addChannels.size(); i += limitCount) {
|
||||
int toIndex = i + limitCount;
|
||||
if (i + limitCount > addChannels.size()) {
|
||||
toIndex = addChannels.size();
|
||||
}
|
||||
deviceChannelMapper.batchAdd(addChannels.subList(i, toIndex));
|
||||
}
|
||||
}else {
|
||||
deviceChannelMapper.batchAdd(addChannels);
|
||||
}
|
||||
}
|
||||
if (updateChannels.size() > 0) {
|
||||
if (updateChannels.size() > limitCount) {
|
||||
for (int i = 0; i < updateChannels.size(); i += limitCount) {
|
||||
int toIndex = i + limitCount;
|
||||
if (i + limitCount > updateChannels.size()) {
|
||||
toIndex = updateChannels.size();
|
||||
}
|
||||
deviceChannelMapper.batchUpdate(updateChannels.subList(i, toIndex));
|
||||
}
|
||||
}else {
|
||||
deviceChannelMapper.batchUpdate(updateChannels);
|
||||
}
|
||||
}
|
||||
}
|
||||
return addChannels.size() + updateChannels.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean resetChannels(String deviceId, List<DeviceChannel> deviceChannelList) {
|
||||
if (CollectionUtils.isEmpty(deviceChannelList)) {
|
||||
@@ -596,36 +507,6 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
||||
return deviceChannelMapper.queryChannelByPlatformId(platformId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateChannelForGB(String platformId, List<ChannelReduce> channelReduces, String catalogId) {
|
||||
|
||||
Map<Integer, ChannelReduce> deviceAndChannels = new HashMap<>();
|
||||
for (ChannelReduce channelReduce : channelReduces) {
|
||||
channelReduce.setCatalogId(catalogId);
|
||||
deviceAndChannels.put(channelReduce.getId(), channelReduce);
|
||||
}
|
||||
List<Integer> deviceAndChannelList = new ArrayList<>(deviceAndChannels.keySet());
|
||||
// 查询当前已经存在的
|
||||
List<Integer> channelIds = platformChannelMapper.findChannelRelatedPlatform(platformId, channelReduces);
|
||||
if (deviceAndChannelList != null) {
|
||||
deviceAndChannelList.removeAll(channelIds);
|
||||
}
|
||||
for (Integer channelId : channelIds) {
|
||||
deviceAndChannels.remove(channelId);
|
||||
}
|
||||
List<ChannelReduce> channelReducesToAdd = new ArrayList<>(deviceAndChannels.values());
|
||||
// 对剩下的数据进行存储
|
||||
int result = 0;
|
||||
if (channelReducesToAdd.size() > 0) {
|
||||
result = platformChannelMapper.addChannels(platformId, channelReducesToAdd);
|
||||
// TODO 后续给平台增加控制开关以控制是否响应目录订阅
|
||||
List<DeviceChannel> deviceChannelList = getDeviceChannelListByChannelReduceList(channelReducesToAdd, catalogId);
|
||||
eventPublisher.catalogEventPublish(platformId, deviceChannelList, CatalogEvent.ADD);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int delChannelForGB(String platformId, List<ChannelReduce> channelReduces) {
|
||||
@@ -701,77 +582,6 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
||||
return deviceMobilePositionMapper.clearMobilePositionsByDeviceId(deviceId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增代理流
|
||||
* @param streamProxyItem
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean addStreamProxy(StreamProxyItem streamProxyItem) {
|
||||
TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
|
||||
boolean result = false;
|
||||
streamProxyItem.setStreamType("proxy");
|
||||
streamProxyItem.setStatus(true);
|
||||
String now = DateUtil.getNow();
|
||||
streamProxyItem.setCreateTime(now);
|
||||
try {
|
||||
if (streamProxyMapper.add(streamProxyItem) > 0) {
|
||||
if (!StringUtils.isEmpty(streamProxyItem.getGbId())) {
|
||||
if (gbStreamMapper.add(streamProxyItem) < 0) {
|
||||
//事务回滚
|
||||
dataSourceTransactionManager.rollback(transactionStatus);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}else {
|
||||
//事务回滚
|
||||
dataSourceTransactionManager.rollback(transactionStatus);
|
||||
return false;
|
||||
}
|
||||
result = true;
|
||||
dataSourceTransactionManager.commit(transactionStatus); //手动提交
|
||||
}catch (Exception e) {
|
||||
logger.error("向数据库添加流代理失败:", e);
|
||||
dataSourceTransactionManager.rollback(transactionStatus);
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新代理流
|
||||
* @param streamProxyItem
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean updateStreamProxy(StreamProxyItem streamProxyItem) {
|
||||
TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
|
||||
boolean result = false;
|
||||
streamProxyItem.setStreamType("proxy");
|
||||
try {
|
||||
if (streamProxyMapper.update(streamProxyItem) > 0) {
|
||||
if (!StringUtils.isEmpty(streamProxyItem.getGbId())) {
|
||||
if (gbStreamMapper.updateByAppAndStream(streamProxyItem) == 0) {
|
||||
//事务回滚
|
||||
dataSourceTransactionManager.rollback(transactionStatus);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//事务回滚
|
||||
dataSourceTransactionManager.rollback(transactionStatus);
|
||||
return false;
|
||||
}
|
||||
|
||||
dataSourceTransactionManager.commit(transactionStatus); //手动提交
|
||||
result = true;
|
||||
}catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
dataSourceTransactionManager.rollback(transactionStatus);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 移除代理流
|
||||
@@ -824,7 +634,7 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<GbStream> queryGbStreamListInPlatform(String platformId) {
|
||||
public List<DeviceChannel> queryGbStreamListInPlatform(String platformId) {
|
||||
return gbStreamMapper.queryGbStreamListInPlatform(platformId);
|
||||
}
|
||||
|
||||
@@ -910,6 +720,7 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int mediaOnline(String app, String stream) {
|
||||
GbStream gbStream = gbStreamMapper.selectOne(app, stream);
|
||||
int result;
|
||||
@@ -954,6 +765,24 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
||||
|
||||
@Override
|
||||
public int addCatalog(PlatformCatalog platformCatalog) {
|
||||
ParentPlatform platform = platformMapper.getParentPlatByServerGBId(platformCatalog.getPlatformId());
|
||||
if (platform == null) {
|
||||
return 0;
|
||||
}
|
||||
if (platform.getTreeType().equals(TreeType.BUSINESS_GROUP)) {
|
||||
if (platformCatalog.getPlatformId().equals(platformCatalog.getParentId())) {
|
||||
// 第一层节点
|
||||
platformCatalog.setBusinessGroupId(platformCatalog.getId());
|
||||
}else {
|
||||
// 获取顶层的
|
||||
PlatformCatalog topCatalog = getTopCatalog(platformCatalog.getParentId(), platformCatalog.getPlatformId());
|
||||
platformCatalog.setBusinessGroupId(topCatalog.getId());
|
||||
}
|
||||
}
|
||||
if (platform.getTreeType().equals(TreeType.CIVIL_CODE)) {
|
||||
platformCatalog.setCivilCode(platformCatalog.getId());
|
||||
}
|
||||
|
||||
int result = catalogMapper.add(platformCatalog);
|
||||
if (result > 0) {
|
||||
DeviceChannel deviceChannel = getDeviceChannelByCatalog(platformCatalog);
|
||||
@@ -962,6 +791,15 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
||||
return result;
|
||||
}
|
||||
|
||||
private PlatformCatalog getTopCatalog(String id, String platformId) {
|
||||
PlatformCatalog catalog = catalogMapper.selectParentCatalog(id);
|
||||
if (catalog.getParentId().equals(platformId)) {
|
||||
return catalog;
|
||||
}else {
|
||||
return getTopCatalog(catalog.getParentId(), platformId);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlatformCatalog getCatalog(String id) {
|
||||
return catalogMapper.select(id);
|
||||
@@ -1032,8 +870,8 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PlatformCatalog> queryCatalogInPlatform(String platformId) {
|
||||
return catalogMapper.selectByPlatForm(platformId);
|
||||
public List<DeviceChannel> queryCatalogInPlatform(String platformId) {
|
||||
return catalogMapper.queryCatalogInPlatform(platformId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1076,20 +914,24 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
||||
}
|
||||
|
||||
private DeviceChannel getDeviceChannelByCatalog(PlatformCatalog catalog) {
|
||||
ParentPlatform parentPlatByServerGBId = platformMapper.getParentPlatByServerGBId(catalog.getPlatformId());
|
||||
ParentPlatform platform = platformMapper.getParentPlatByServerGBId(catalog.getPlatformId());
|
||||
DeviceChannel deviceChannel = new DeviceChannel();
|
||||
deviceChannel.setChannelId(catalog.getId());
|
||||
deviceChannel.setName(catalog.getName());
|
||||
deviceChannel.setLongitude(0.0);
|
||||
deviceChannel.setLatitude(0.0);
|
||||
deviceChannel.setDeviceId(parentPlatByServerGBId.getDeviceGBId());
|
||||
deviceChannel.setDeviceId(platform.getDeviceGBId());
|
||||
deviceChannel.setManufacture("wvp-pro");
|
||||
deviceChannel.setStatus(1);
|
||||
deviceChannel.setParental(1);
|
||||
deviceChannel.setParentId(catalog.getParentId());
|
||||
|
||||
deviceChannel.setRegisterWay(1);
|
||||
// 行政区划应该是Domain的前八位
|
||||
deviceChannel.setCivilCode(parentPlatByServerGBId.getAdministrativeDivision());
|
||||
if (platform.getTreeType().equals(TreeType.BUSINESS_GROUP)) {
|
||||
deviceChannel.setParentId(catalog.getParentId());
|
||||
deviceChannel.setBusinessGroupId(catalog.getBusinessGroupId());
|
||||
}
|
||||
|
||||
deviceChannel.setModel("live");
|
||||
deviceChannel.setOwner("wvp-pro");
|
||||
deviceChannel.setSecrecy("0");
|
||||
@@ -1151,4 +993,27 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
||||
|
||||
deviceChannelMapper.updatePosition(deviceChannel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cleanContentForPlatform(String serverGBId) {
|
||||
// List<PlatformCatalog> catalogList = catalogMapper.selectByPlatForm(serverGBId);
|
||||
// if (catalogList.size() > 0) {
|
||||
// int result = catalogMapper.delByPlatformId(serverGBId);
|
||||
// if (result > 0) {
|
||||
// List<DeviceChannel> deviceChannels = new ArrayList<>();
|
||||
// for (PlatformCatalog catalog : catalogList) {
|
||||
// deviceChannels.add(getDeviceChannelByCatalog(catalog));
|
||||
// }
|
||||
// eventPublisher.catalogEventPublish(serverGBId, deviceChannels, CatalogEvent.DEL);
|
||||
// }
|
||||
// }
|
||||
catalogMapper.delByPlatformId(serverGBId);
|
||||
platformChannelMapper.delByPlatformId(serverGBId);
|
||||
platformGbStreamMapper.delByPlatformId(serverGBId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceChannel> queryChannelWithCatalog(String serverGBId) {
|
||||
return deviceChannelMapper.queryChannelWithCatalog(serverGBId);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user