StreamPushServiceImpl.java 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package com.genersoft.iot.vmp.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.alibaba.fastjson.TypeReference;
  5. import com.genersoft.iot.vmp.gb28181.bean.GbStream;
  6. import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
  7. import com.genersoft.iot.vmp.media.zlm.dto.MediaItem;
  8. import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
  9. import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
  10. import com.genersoft.iot.vmp.service.IStreamPushService;
  11. import com.genersoft.iot.vmp.storager.dao.GbStreamMapper;
  12. import com.genersoft.iot.vmp.storager.dao.StreamPushMapper;
  13. import com.github.pagehelper.PageHelper;
  14. import com.github.pagehelper.PageInfo;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Service;
  17. import java.util.ArrayList;
  18. import java.util.HashMap;
  19. import java.util.List;
  20. import java.util.Map;
  21. @Service
  22. public class StreamPushServiceImpl implements IStreamPushService {
  23. @Autowired
  24. private GbStreamMapper gbStreamMapper;
  25. @Autowired
  26. private StreamPushMapper streamPushMapper;
  27. @Autowired
  28. private ZLMRESTfulUtils zlmresTfulUtils;
  29. @Override
  30. public List<StreamPushItem> handleJSON(String jsonData) {
  31. if (jsonData == null) return null;
  32. Map<String, StreamPushItem> result = new HashMap<>();
  33. List<MediaItem> mediaItems = JSON.parseObject(jsonData, new TypeReference<List<MediaItem>>() {});
  34. for (MediaItem item : mediaItems) {
  35. // 不保存国标推理以及拉流代理的流
  36. if (item.getOriginType() == 3 || item.getOriginType() == 4 || item.getOriginType() == 5) {
  37. continue;
  38. }
  39. String key = item.getApp() + "_" + item.getStream();
  40. StreamPushItem streamPushItem = result.get(key);
  41. if (streamPushItem == null) {
  42. streamPushItem = new StreamPushItem();
  43. streamPushItem.setApp(item.getApp());
  44. streamPushItem.setStream(item.getStream());
  45. streamPushItem.setAliveSecond(item.getAliveSecond());
  46. streamPushItem.setCreateStamp(item.getCreateStamp());
  47. streamPushItem.setOriginSock(item.getOriginSock());
  48. streamPushItem.setTotalReaderCount(item.getTotalReaderCount());
  49. streamPushItem.setOriginType(item.getOriginType());
  50. streamPushItem.setOriginTypeStr(item.getOriginTypeStr());
  51. streamPushItem.setOriginUrl(item.getOriginUrl());
  52. streamPushItem.setCreateStamp(item.getCreateStamp());
  53. streamPushItem.setAliveSecond(item.getAliveSecond());
  54. streamPushItem.setStatus(true);
  55. streamPushItem.setVhost(item.getVhost());
  56. result.put(key, streamPushItem);
  57. }
  58. }
  59. return new ArrayList<>(result.values());
  60. }
  61. @Override
  62. public PageInfo<StreamPushItem> getPushList(Integer page, Integer count) {
  63. PageHelper.startPage(page, count);
  64. List<StreamPushItem> all = streamPushMapper.selectAll();
  65. return new PageInfo<>(all);
  66. }
  67. @Override
  68. public boolean saveToGB(GbStream stream) {
  69. stream.setStreamType("push");
  70. stream.setStatus(true);
  71. int add = gbStreamMapper.add(stream);
  72. return add > 0;
  73. }
  74. @Override
  75. public boolean removeFromGB(GbStream stream) {
  76. int del = gbStreamMapper.del(stream.getApp(), stream.getStream());
  77. JSONObject mediaList = zlmresTfulUtils.getMediaList(stream.getApp(), stream.getStream());
  78. if (mediaList == null) {
  79. streamPushMapper.del(stream.getApp(), stream.getStream());
  80. }
  81. return del > 0;
  82. }
  83. }