|  |  | 
 |  |  | import com.genersoft.iot.vmp.conf.UserSetup; | 
 |  |  | import com.genersoft.iot.vmp.gb28181.bean.*; | 
 |  |  | import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; | 
 |  |  | import com.genersoft.iot.vmp.service.bean.ThirdPartyGB; | 
 |  |  | import com.genersoft.iot.vmp.storager.IRedisCatchStorage; | 
 |  |  | import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper; | 
 |  |  | import com.genersoft.iot.vmp.utils.redis.RedisUtil; | 
 |  |  | 
 |  |  | import org.slf4j.LoggerFactory; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.stereotype.Component; | 
 |  |  | import org.springframework.util.StringUtils; | 
 |  |  |  | 
 |  |  | import java.text.SimpleDateFormat; | 
 |  |  | import java.util.*; | 
 |  |  | 
 |  |  |     private UserSetup userSetup; | 
 |  |  |  | 
 |  |  |     private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public Long getCSEQ(String method) { | 
 |  |  |         String key = VideoManagerConstants.SIP_CSEQ_PREFIX  + userSetup.getServerId() + "_" +  method; | 
 |  |  |  | 
 |  |  |         long result =  redis.incr(key, 1L); | 
 |  |  |         if (result > Integer.MAX_VALUE) { | 
 |  |  |             redis.set(key, 1); | 
 |  |  |             result = 1; | 
 |  |  |         } | 
 |  |  |         return result; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void resetAllCSEQ() { | 
 |  |  |         String scanKey = VideoManagerConstants.SIP_CSEQ_PREFIX  + userSetup.getServerId() + "_*"; | 
 |  |  |         List<Object> keys = redis.scan(scanKey); | 
 |  |  |         for (int i = 0; i < keys.size(); i++) { | 
 |  |  |             String key = (String) keys.get(i); | 
 |  |  |             redis.set(key, 1); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 开始播放时将流存入redis | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void sendStreamChangeMsg(String type, JSONObject jsonObject) { | 
 |  |  |         String key = VideoManagerConstants.WVP_MSG_STREAM_CHANGE__PREFIX + type; | 
 |  |  |         String key = VideoManagerConstants.WVP_MSG_STREAM_CHANGE_PREFIX + type; | 
 |  |  |         logger.debug("[redis 流变化事件] {}: {}", key, jsonObject.toString()); | 
 |  |  |         redis.convertAndSend(key, jsonObject); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void addStream(MediaServerItem mediaServerItem, String type, String app, String streamId, StreamInfo streamInfo) { | 
 |  |  |         String key = VideoManagerConstants.WVP_SERVER_STREAM_PUSH_PREFIX  + userSetup.getServerId() + "_" + type + "_" + app + "_" + streamId + "_" + mediaServerItem.getId(); | 
 |  |  |         String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX  + userSetup.getServerId() + "_" + type + "_" + app + "_" + streamId + "_" + mediaServerItem.getId(); | 
 |  |  |         redis.set(key, streamInfo); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void removeStream(MediaServerItem mediaServerItem, String type, String app, String streamId) { | 
 |  |  |         String key = VideoManagerConstants.WVP_SERVER_STREAM_PUSH_PREFIX + userSetup.getServerId() + "_*_"  + app + "_" + streamId + "_" + mediaServerItem.getId(); | 
 |  |  |         List<Object> streams = redis.scan(key); | 
 |  |  |         for (Object stream : streams) { | 
 |  |  |             redis.del((String) stream); | 
 |  |  |         } | 
 |  |  |     public void removeStream(String mediaServerId, String type, String app, String streamId) { | 
 |  |  |         String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetup.getServerId() + "_" + type + "_"  + app + "_" + streamId + "_" + mediaServerId; | 
 |  |  |         redis.del(key); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  | 
 |  |  |         if (playLeys == null || playLeys.size() == 0) return null; | 
 |  |  |         return (StreamInfo)redis.get(playLeys.get(0).toString()); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public ThirdPartyGB queryMemberNoGBId(String queryKey) { | 
 |  |  |         String key = VideoManagerConstants.WVP_STREAM_GB_ID_PREFIX + queryKey; | 
 |  |  |         JSONObject jsonObject = (JSONObject)redis.get(key); | 
 |  |  |         return  JSONObject.toJavaObject(jsonObject, ThirdPartyGB.class); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void removeStream(String mediaServerId, String type) { | 
 |  |  |         String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetup.getServerId() + "_" + type + "_*_*_" + mediaServerId; | 
 |  |  |         List<Object> streams = redis.scan(key); | 
 |  |  |         for (Object stream : streams) { | 
 |  |  |             redis.del((String) stream); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public List<StreamInfo> getStreams(String mediaServerId, String type) { | 
 |  |  |         List<StreamInfo> result = new ArrayList<>(); | 
 |  |  |         String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetup.getServerId() + "_" + type + "_*_*_" + mediaServerId; | 
 |  |  |         List<Object> streams = redis.scan(key); | 
 |  |  |         for (Object stream : streams) { | 
 |  |  |             StreamInfo streamInfo = (StreamInfo)redis.get((String) stream); | 
 |  |  |             result.add(streamInfo); | 
 |  |  |         } | 
 |  |  |         return result; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void updateDevice(Device device) { | 
 |  |  |         String key = VideoManagerConstants.DEVICE_PREFIX + userSetup.getServerId() + "_" + device.getDeviceId(); | 
 |  |  |         redis.set(key, device); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public Device getDevice(String deviceId) { | 
 |  |  |         String key = VideoManagerConstants.DEVICE_PREFIX + userSetup.getServerId() + "_" + deviceId; | 
 |  |  |         return (Device)redis.get(key); | 
 |  |  |     } | 
 |  |  | } |