Commit 66ab09396cecb4caf3f1b6803fb97792132fffc6

Authored by 648540858
2 parents b4048fbe f89ef3ab

Merge branch 'wvp-28181-2.0' into main-dev

# Conflicts:
#	src/main/java/com/genersoft/iot/vmp/conf/redis/RedisConfig.java
#	src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java
#	src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
Showing 21 changed files with 1278 additions and 1189 deletions
src/main/java/com/genersoft/iot/vmp/conf/redis/RedisConfig.java
@@ -6,53 +6,32 @@ import com.genersoft.iot.vmp.service.redisMsg.*; @@ -6,53 +6,32 @@ import com.genersoft.iot.vmp.service.redisMsg.*;
6 import com.genersoft.iot.vmp.utils.redis.FastJsonRedisSerializer; 6 import com.genersoft.iot.vmp.utils.redis.FastJsonRedisSerializer;
7 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.cache.annotation.CachingConfigurerSupport; 8 import org.springframework.cache.annotation.CachingConfigurerSupport;
  9 +import com.alibaba.fastjson2.support.spring.data.redis.GenericFastJsonRedisSerializer;
9 import org.springframework.context.annotation.Bean; 10 import org.springframework.context.annotation.Bean;
10 import org.springframework.context.annotation.Configuration; 11 import org.springframework.context.annotation.Configuration;
11 import org.springframework.core.annotation.Order; 12 import org.springframework.core.annotation.Order;
12 import org.springframework.data.redis.connection.RedisConnectionFactory; 13 import org.springframework.data.redis.connection.RedisConnectionFactory;
13 import org.springframework.data.redis.core.RedisTemplate; 14 import org.springframework.data.redis.core.RedisTemplate;
14 -import org.springframework.data.redis.listener.PatternTopic;  
15 -import org.springframework.data.redis.listener.RedisMessageListenerContainer;  
16 import org.springframework.data.redis.serializer.StringRedisSerializer; 15 import org.springframework.data.redis.serializer.StringRedisSerializer;
17 16
18 17
19 /** 18 /**
20 - * @description:Redis中间件配置类,使用spring-data-redis集成,自动从application.yml中加载redis配置  
21 - * @author: swwheihei  
22 - * @date: 2019年5月30日 上午10:58:25 19 + * Redis中间件配置类,使用spring-data-redis集成,自动从application.yml中加载redis配置
  20 + * swwheihei
  21 + * 2019年5月30日 上午10:58:25
23 * 22 *
24 */ 23 */
25 @Configuration 24 @Configuration
26 @Order(value=1) 25 @Order(value=1)
27 -public class RedisConfig extends CachingConfigurerSupport { 26 +public class RedisConfig {
28 27
29 - @Autowired  
30 - private RedisGpsMsgListener redisGPSMsgListener;  
31 -  
32 - @Autowired  
33 - private RedisAlarmMsgListener redisAlarmMsgListener;  
34 -  
35 - @Autowired  
36 - private RedisStreamMsgListener redisStreamMsgListener;  
37 -  
38 - @Autowired  
39 - private RedisGbPlayMsgListener redisGbPlayMsgListener;  
40 -  
41 - @Autowired  
42 - private RedisPushStreamStatusMsgListener redisPushStreamStatusMsgListener;  
43 -  
44 - @Autowired  
45 - private RedisPushStreamStatusListMsgListener redisPushStreamListMsgListener;  
46 -  
47 - @Autowired  
48 - private RedisPushStreamResponseListener redisPushStreamResponseListener;  
49 28
50 @Bean 29 @Bean
51 public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { 30 public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
52 31
53 RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>(); 32 RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
54 // 使用fastJson序列化 33 // 使用fastJson序列化
55 - FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object.class); 34 + GenericFastJsonRedisSerializer fastJsonRedisSerializer = new GenericFastJsonRedisSerializer();
56 // value值的序列化采用fastJsonRedisSerializer 35 // value值的序列化采用fastJsonRedisSerializer
57 redisTemplate.setValueSerializer(fastJsonRedisSerializer); 36 redisTemplate.setValueSerializer(fastJsonRedisSerializer);
58 redisTemplate.setHashValueSerializer(fastJsonRedisSerializer); 37 redisTemplate.setHashValueSerializer(fastJsonRedisSerializer);
@@ -63,27 +42,4 @@ public class RedisConfig extends CachingConfigurerSupport { @@ -63,27 +42,4 @@ public class RedisConfig extends CachingConfigurerSupport {
63 redisTemplate.setConnectionFactory(redisConnectionFactory); 42 redisTemplate.setConnectionFactory(redisConnectionFactory);
64 return redisTemplate; 43 return redisTemplate;
65 } 44 }
66 -  
67 -  
68 - /**  
69 - * redis消息监听器容器 可以添加多个监听不同话题的redis监听器,只需要把消息监听器和相应的消息订阅处理器绑定,该消息监听器  
70 - * 通过反射技术调用消息订阅处理器的相关方法进行一些业务处理  
71 - *  
72 - * @param connectionFactory  
73 - * @return  
74 - */  
75 - @Bean  
76 - RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {  
77 -  
78 - RedisMessageListenerContainer container = new RedisMessageListenerContainer();  
79 - container.setConnectionFactory(connectionFactory);  
80 - container.addMessageListener(redisGPSMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_GPS));  
81 - container.addMessageListener(redisAlarmMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_SUBSCRIBE_ALARM_RECEIVE));  
82 - container.addMessageListener(redisStreamMsgListener, new PatternTopic(VideoManagerConstants.WVP_MSG_STREAM_CHANGE_PREFIX + "PUSH"));  
83 - container.addMessageListener(redisGbPlayMsgListener, new PatternTopic(RedisGbPlayMsgListener.WVP_PUSH_STREAM_KEY));  
84 - container.addMessageListener(redisPushStreamStatusMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_PUSH_STREAM_STATUS_CHANGE));  
85 - container.addMessageListener(redisPushStreamListMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_PUSH_STREAM_LIST_CHANGE));  
86 - container.addMessageListener(redisPushStreamResponseListener, new PatternTopic(VideoManagerConstants.VM_MSG_STREAM_PUSH_RESPONSE));  
87 - return container;  
88 - }  
89 } 45 }
src/main/java/com/genersoft/iot/vmp/conf/redis/RedisMsgListenConfig.java 0 → 100644
  1 +package com.genersoft.iot.vmp.conf.redis;
  2 +
  3 +
  4 +import com.genersoft.iot.vmp.common.VideoManagerConstants;
  5 +import com.genersoft.iot.vmp.service.redisMsg.*;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.context.annotation.Bean;
  8 +import org.springframework.context.annotation.Configuration;
  9 +import org.springframework.core.annotation.Order;
  10 +import org.springframework.data.redis.connection.RedisConnectionFactory;
  11 +import org.springframework.data.redis.listener.PatternTopic;
  12 +import org.springframework.data.redis.listener.RedisMessageListenerContainer;
  13 +
  14 +
  15 +/**
  16 + * @description:Redis中间件配置类,使用spring-data-redis集成,自动从application.yml中加载redis配置
  17 + * @author: swwheihei
  18 + * @date: 2019年5月30日 上午10:58:25
  19 + *
  20 + */
  21 +@Configuration
  22 +@Order(value=1)
  23 +public class RedisMsgListenConfig {
  24 +
  25 + @Autowired
  26 + private RedisGpsMsgListener redisGPSMsgListener;
  27 +
  28 + @Autowired
  29 + private RedisAlarmMsgListener redisAlarmMsgListener;
  30 +
  31 + @Autowired
  32 + private RedisStreamMsgListener redisStreamMsgListener;
  33 +
  34 + @Autowired
  35 + private RedisGbPlayMsgListener redisGbPlayMsgListener;
  36 +
  37 + @Autowired
  38 + private RedisPushStreamStatusMsgListener redisPushStreamStatusMsgListener;
  39 +
  40 + @Autowired
  41 + private RedisPushStreamStatusListMsgListener redisPushStreamListMsgListener;
  42 +
  43 + @Autowired
  44 + private RedisPushStreamResponseListener redisPushStreamResponseListener;
  45 +
  46 +
  47 + /**
  48 + * redis消息监听器容器 可以添加多个监听不同话题的redis监听器,只需要把消息监听器和相应的消息订阅处理器绑定,该消息监听器
  49 + * 通过反射技术调用消息订阅处理器的相关方法进行一些业务处理
  50 + *
  51 + * @param connectionFactory
  52 + * @return
  53 + */
  54 + @Bean
  55 + RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
  56 +
  57 + RedisMessageListenerContainer container = new RedisMessageListenerContainer();
  58 + container.setConnectionFactory(connectionFactory);
  59 + container.addMessageListener(redisGPSMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_GPS));
  60 + container.addMessageListener(redisAlarmMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_SUBSCRIBE_ALARM_RECEIVE));
  61 + container.addMessageListener(redisStreamMsgListener, new PatternTopic(VideoManagerConstants.WVP_MSG_STREAM_CHANGE_PREFIX + "PUSH"));
  62 + container.addMessageListener(redisGbPlayMsgListener, new PatternTopic(RedisGbPlayMsgListener.WVP_PUSH_STREAM_KEY));
  63 + container.addMessageListener(redisPushStreamStatusMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_PUSH_STREAM_STATUS_CHANGE));
  64 + container.addMessageListener(redisPushStreamListMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_PUSH_STREAM_LIST_CHANGE));
  65 + container.addMessageListener(redisPushStreamResponseListener, new PatternTopic(VideoManagerConstants.VM_MSG_STREAM_PUSH_RESPONSE));
  66 + return container;
  67 + }
  68 +}
src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java
@@ -72,22 +72,23 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @@ -72,22 +72,23 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
72 **/ 72 **/
73 @Override 73 @Override
74 public void configure(WebSecurity web) { 74 public void configure(WebSecurity web) {
75 -  
76 - ArrayList<String> matchers = new ArrayList<>();  
77 - matchers.add("/");  
78 - matchers.add("/#/**");  
79 - matchers.add("/static/**");  
80 - matchers.add("/index.html");  
81 - matchers.add("/doc.html");  
82 - matchers.add("/webjars/**");  
83 - matchers.add("/swagger-resources/**");  
84 - matchers.add("/v3/api-docs/**");  
85 - matchers.add("/js/**");  
86 - matchers.add("/api/device/query/snap/**");  
87 - matchers.add("/record_proxy/*/**");  
88 - matchers.addAll(userSetting.getInterfaceAuthenticationExcludes());  
89 - // 可以直接访问的静态数据  
90 - web.ignoring().antMatchers(matchers.toArray(new String[0])); 75 + if (userSetting.isInterfaceAuthentication()) {
  76 + ArrayList<String> matchers = new ArrayList<>();
  77 + matchers.add("/");
  78 + matchers.add("/#/**");
  79 + matchers.add("/static/**");
  80 + matchers.add("/index.html");
  81 + matchers.add("/doc.html");
  82 + matchers.add("/webjars/**");
  83 + matchers.add("/swagger-resources/**");
  84 + matchers.add("/v3/api-docs/**");
  85 + matchers.add("/js/**");
  86 + matchers.add("/api/device/query/snap/**");
  87 + matchers.add("/record_proxy/*/**");
  88 + matchers.addAll(userSetting.getInterfaceAuthenticationExcludes());
  89 + // 可以直接访问的静态数据
  90 + web.ignoring().antMatchers(matchers.toArray(new String[0]));
  91 + }
91 } 92 }
92 93
93 /** 94 /**
src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java
@@ -8,6 +8,7 @@ import com.genersoft.iot.vmp.utils.JsonUtil; @@ -8,6 +8,7 @@ import com.genersoft.iot.vmp.utils.JsonUtil;
8 import com.genersoft.iot.vmp.utils.redis.RedisUtil; 8 import com.genersoft.iot.vmp.utils.redis.RedisUtil;
9 import gov.nist.javax.sip.message.SIPResponse; 9 import gov.nist.javax.sip.message.SIPResponse;
10 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.data.redis.core.RedisTemplate;
11 import org.springframework.stereotype.Component; 12 import org.springframework.stereotype.Component;
12 import org.springframework.util.ObjectUtils; 13 import org.springframework.util.ObjectUtils;
13 14
@@ -15,9 +16,7 @@ import java.util.ArrayList; @@ -15,9 +16,7 @@ import java.util.ArrayList;
15 import java.util.List; 16 import java.util.List;
16 17
17 /** 18 /**
18 - * @description:视频流session管理器,管理视频预览、预览回放的通信句柄  
19 - * @author: swwheihei  
20 - * @date: 2020年5月13日 下午4:03:02 19 + * 视频流session管理器,管理视频预览、预览回放的通信句柄
21 */ 20 */
22 @Component 21 @Component
23 public class VideoStreamSessionManager { 22 public class VideoStreamSessionManager {
@@ -25,6 +24,9 @@ public class VideoStreamSessionManager { @@ -25,6 +24,9 @@ public class VideoStreamSessionManager {
25 @Autowired 24 @Autowired
26 private UserSetting userSetting; 25 private UserSetting userSetting;
27 26
  27 + @Autowired
  28 + private RedisTemplate<Object, Object> redisTemplate;
  29 +
28 public enum SessionType { 30 public enum SessionType {
29 play, 31 play,
30 playback, 32 playback,
@@ -54,7 +56,7 @@ public class VideoStreamSessionManager { @@ -54,7 +56,7 @@ public class VideoStreamSessionManager {
54 ssrcTransaction.setMediaServerId(mediaServerId); 56 ssrcTransaction.setMediaServerId(mediaServerId);
55 ssrcTransaction.setType(type); 57 ssrcTransaction.setType(type);
56 58
57 - RedisUtil.set(VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() 59 + redisTemplate.opsForValue().set(VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId()
58 + "_" + deviceId + "_" + channelId + "_" + callId + "_" + stream, ssrcTransaction); 60 + "_" + deviceId + "_" + channelId + "_" + callId + "_" + stream, ssrcTransaction);
59 } 61 }
60 62
@@ -73,11 +75,11 @@ public class VideoStreamSessionManager { @@ -73,11 +75,11 @@ public class VideoStreamSessionManager {
73 stream ="*"; 75 stream ="*";
74 } 76 }
75 String key = VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() + "_" + deviceId + "_" + channelId + "_" + callId+ "_" + stream; 77 String key = VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() + "_" + deviceId + "_" + channelId + "_" + callId+ "_" + stream;
76 - List<Object> scanResult = RedisUtil.scan(key); 78 + List<Object> scanResult = RedisUtil.scan(redisTemplate, key);
77 if (scanResult.size() == 0) { 79 if (scanResult.size() == 0) {
78 return null; 80 return null;
79 } 81 }
80 - return (SsrcTransaction)RedisUtil.get((String) scanResult.get(0)); 82 + return (SsrcTransaction)redisTemplate.opsForValue().get(scanResult.get(0));
81 } 83 }
82 84
83 public List<SsrcTransaction> getSsrcTransactionForAll(String deviceId, String channelId, String callId, String stream){ 85 public List<SsrcTransaction> getSsrcTransactionForAll(String deviceId, String channelId, String callId, String stream){
@@ -94,13 +96,13 @@ public class VideoStreamSessionManager { @@ -94,13 +96,13 @@ public class VideoStreamSessionManager {
94 stream ="*"; 96 stream ="*";
95 } 97 }
96 String key = VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() + "_" + deviceId + "_" + channelId + "_" + callId+ "_" + stream; 98 String key = VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() + "_" + deviceId + "_" + channelId + "_" + callId+ "_" + stream;
97 - List<Object> scanResult = RedisUtil.scan(key); 99 + List<Object> scanResult = RedisUtil.scan(redisTemplate, key);
98 if (scanResult.size() == 0) { 100 if (scanResult.size() == 0) {
99 return null; 101 return null;
100 } 102 }
101 List<SsrcTransaction> result = new ArrayList<>(); 103 List<SsrcTransaction> result = new ArrayList<>();
102 for (Object keyObj : scanResult) { 104 for (Object keyObj : scanResult) {
103 - result.add((SsrcTransaction)RedisUtil.get((String) keyObj)); 105 + result.add((SsrcTransaction)redisTemplate.opsForValue().get(keyObj));
104 } 106 }
105 return result; 107 return result;
106 } 108 }
@@ -126,17 +128,17 @@ public class VideoStreamSessionManager { @@ -126,17 +128,17 @@ public class VideoStreamSessionManager {
126 if (ssrcTransaction == null) { 128 if (ssrcTransaction == null) {
127 return; 129 return;
128 } 130 }
129 - RedisUtil.del(VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() + "_" 131 + redisTemplate.delete(VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() + "_"
130 + deviceId + "_" + channelId + "_" + ssrcTransaction.getCallId() + "_" + ssrcTransaction.getStream()); 132 + deviceId + "_" + channelId + "_" + ssrcTransaction.getCallId() + "_" + ssrcTransaction.getStream());
131 } 133 }
132 134
133 135
134 public List<SsrcTransaction> getAllSsrc() { 136 public List<SsrcTransaction> getAllSsrc() {
135 - List<Object> ssrcTransactionKeys = RedisUtil.scan(String.format("%s_*_*_*_*", VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX+ userSetting.getServerId())); 137 + List<Object> ssrcTransactionKeys = RedisUtil.scan(redisTemplate, String.format("%s_*_*_*_*", VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX+ userSetting.getServerId()));
136 List<SsrcTransaction> result= new ArrayList<>(); 138 List<SsrcTransaction> result= new ArrayList<>();
137 - for (int i = 0; i < ssrcTransactionKeys.size(); i++) {  
138 - String key = (String)ssrcTransactionKeys.get(i);  
139 - SsrcTransaction ssrcTransaction = JsonUtil.redisJsonToObject(key, SsrcTransaction.class); 139 + for (Object ssrcTransactionKey : ssrcTransactionKeys) {
  140 + String key = (String) ssrcTransactionKey;
  141 + SsrcTransaction ssrcTransaction = JsonUtil.redisJsonToObject(redisTemplate, key, SsrcTransaction.class);
140 result.add(ssrcTransaction); 142 result.add(ssrcTransaction);
141 } 143 }
142 return result; 144 return result;
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommanderForPlatform.java
@@ -25,7 +25,7 @@ public interface ISIPCommanderForPlatform { @@ -25,7 +25,7 @@ public interface ISIPCommanderForPlatform {
25 void register(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException; 25 void register(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException;
26 26
27 void register(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException; 27 void register(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException;
28 - void register(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, WWWAuthenticateHeader www, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean registerAgain, boolean isRegister) throws SipException, InvalidArgumentException, ParseException; 28 + void register(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, WWWAuthenticateHeader www, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean isRegister) throws SipException, InvalidArgumentException, ParseException;
29 29
30 /** 30 /**
31 * 向上级平台注销 31 * 向上级平台注销
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java
@@ -46,7 +46,7 @@ public class SIPRequestHeaderPlarformProvider { @@ -46,7 +46,7 @@ public class SIPRequestHeaderPlarformProvider {
46 @Autowired 46 @Autowired
47 private IRedisCatchStorage redisCatchStorage; 47 private IRedisCatchStorage redisCatchStorage;
48 48
49 - public Request createRegisterRequest(@NotNull ParentPlatform parentPlatform, long CSeq, String fromTag, String toTag, CallIdHeader callIdHeader, boolean isRegister) throws ParseException, InvalidArgumentException, PeerUnavailableException { 49 + public Request createRegisterRequest(@NotNull ParentPlatform parentPlatform, long CSeq, String fromTag, String toTag, CallIdHeader callIdHeader, int expires) throws ParseException, InvalidArgumentException, PeerUnavailableException {
50 Request request = null; 50 Request request = null;
51 String sipAddress = parentPlatform.getDeviceIp() + ":" + parentPlatform.getDevicePort(); 51 String sipAddress = parentPlatform.getDeviceIp() + ":" + parentPlatform.getDevicePort();
52 //请求行 52 //请求行
@@ -79,8 +79,8 @@ public class SIPRequestHeaderPlarformProvider { @@ -79,8 +79,8 @@ public class SIPRequestHeaderPlarformProvider {
79 .createSipURI(parentPlatform.getDeviceGBId(), sipAddress)); 79 .createSipURI(parentPlatform.getDeviceGBId(), sipAddress));
80 request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress)); 80 request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
81 81
82 - ExpiresHeader expires = sipLayer.getSipFactory().createHeaderFactory().createExpiresHeader(isRegister ? parentPlatform.getExpires() : 0);  
83 - request.addHeader(expires); 82 + ExpiresHeader expiresHeader = sipLayer.getSipFactory().createHeaderFactory().createExpiresHeader(expires);
  83 + request.addHeader(expiresHeader);
84 84
85 request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil)); 85 request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
86 86
@@ -88,10 +88,10 @@ public class SIPRequestHeaderPlarformProvider { @@ -88,10 +88,10 @@ public class SIPRequestHeaderPlarformProvider {
88 } 88 }
89 89
90 public Request createRegisterRequest(@NotNull ParentPlatform parentPlatform, String fromTag, String toTag, 90 public Request createRegisterRequest(@NotNull ParentPlatform parentPlatform, String fromTag, String toTag,
91 - WWWAuthenticateHeader www , CallIdHeader callIdHeader, boolean isRegister) throws ParseException, PeerUnavailableException, InvalidArgumentException { 91 + WWWAuthenticateHeader www , CallIdHeader callIdHeader, int expires) throws ParseException, PeerUnavailableException, InvalidArgumentException {
92 92
93 93
94 - Request registerRequest = createRegisterRequest(parentPlatform, redisCatchStorage.getCSEQ(), fromTag, toTag, callIdHeader, isRegister); 94 + Request registerRequest = createRegisterRequest(parentPlatform, redisCatchStorage.getCSEQ(), fromTag, toTag, callIdHeader, expires);
95 SipURI requestURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP() + ":" + parentPlatform.getServerPort()); 95 SipURI requestURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP() + ":" + parentPlatform.getServerPort());
96 if (www == null) { 96 if (www == null) {
97 AuthorizationHeader authorizationHeader = sipLayer.getSipFactory().createHeaderFactory().createAuthorizationHeader("Digest"); 97 AuthorizationHeader authorizationHeader = sipLayer.getSipFactory().createHeaderFactory().createAuthorizationHeader("Digest");
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
@@ -91,23 +91,23 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -91,23 +91,23 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
91 91
92 @Override 92 @Override
93 public void register(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException { 93 public void register(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException {
94 - register(parentPlatform, null, null, errorEvent, okEvent, false, true); 94 + register(parentPlatform, null, null, errorEvent, okEvent, true);
95 } 95 }
96 96
97 @Override 97 @Override
98 public void register(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException { 98 public void register(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException {
99 99
100 - register(parentPlatform, sipTransactionInfo, null, errorEvent, okEvent, false, true); 100 + register(parentPlatform, sipTransactionInfo, null, errorEvent, okEvent, true);
101 } 101 }
102 102
103 @Override 103 @Override
104 public void unregister(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException { 104 public void unregister(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException {
105 - register(parentPlatform, sipTransactionInfo, null, errorEvent, okEvent, false, false); 105 + register(parentPlatform, sipTransactionInfo, null, errorEvent, okEvent, false);
106 } 106 }
107 107
108 @Override 108 @Override
109 public void register(ParentPlatform parentPlatform, @Nullable SipTransactionInfo sipTransactionInfo, @Nullable WWWAuthenticateHeader www, 109 public void register(ParentPlatform parentPlatform, @Nullable SipTransactionInfo sipTransactionInfo, @Nullable WWWAuthenticateHeader www,
110 - SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean registerAgain, boolean isRegister) throws SipException, InvalidArgumentException, ParseException { 110 + SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean isRegister) throws SipException, InvalidArgumentException, ParseException {
111 Request request; 111 Request request;
112 112
113 CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport()); 113 CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
@@ -125,10 +125,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -125,10 +125,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
125 } 125 }
126 } 126 }
127 127
128 - if (!registerAgain ) { 128 + if (www == null ) {
129 request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, 129 request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform,
130 redisCatchStorage.getCSEQ(), fromTag, 130 redisCatchStorage.getCSEQ(), fromTag,
131 - toTag, callIdHeader, isRegister); 131 + toTag, callIdHeader, isRegister? parentPlatform.getExpires() : 0);
132 // 将 callid 写入缓存, 等注册成功可以更新状态 132 // 将 callid 写入缓存, 等注册成功可以更新状态
133 String callIdFromHeader = callIdHeader.getCallId(); 133 String callIdFromHeader = callIdHeader.getCallId();
134 redisCatchStorage.updatePlatformRegisterInfo(callIdFromHeader, PlatformRegisterInfo.getInstance(parentPlatform.getServerGBId(), isRegister)); 134 redisCatchStorage.updatePlatformRegisterInfo(callIdFromHeader, PlatformRegisterInfo.getInstance(parentPlatform.getServerGBId(), isRegister));
@@ -146,7 +146,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -146,7 +146,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
146 }); 146 });
147 147
148 }else { 148 }else {
149 - request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, fromTag, toTag, www, callIdHeader, isRegister); 149 + request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, fromTag, toTag, www, callIdHeader, isRegister? parentPlatform.getExpires() : 0);
150 } 150 }
151 151
152 sipSender.transmitRequest(parentPlatform.getDeviceIp(), request, null, okEvent); 152 sipSender.transmitRequest(parentPlatform.getDeviceIp(), request, null, okEvent);
@@ -518,10 +518,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -518,10 +518,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
518 private void sendNotify(ParentPlatform parentPlatform, String catalogXmlContent, 518 private void sendNotify(ParentPlatform parentPlatform, String catalogXmlContent,
519 SubscribeInfo subscribeInfo, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent ) 519 SubscribeInfo subscribeInfo, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent )
520 throws SipException, ParseException, InvalidArgumentException { 520 throws SipException, ParseException, InvalidArgumentException {
521 - MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipLayer.getSipFactory().createMessageFactory(); 521 + MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipLayer.getSipFactory().createMessageFactory();
522 String characterSet = parentPlatform.getCharacterSet(); 522 String characterSet = parentPlatform.getCharacterSet();
523 - // 设置编码, 防止中文乱码  
524 - messageFactory.setDefaultContentEncodingCharset(characterSet); 523 + // 设置编码, 防止中文乱码
  524 + messageFactory.setDefaultContentEncodingCharset(characterSet);
525 525
526 SIPRequest notifyRequest = headerProviderPlatformProvider.createNotifyRequest(parentPlatform, catalogXmlContent, subscribeInfo); 526 SIPRequest notifyRequest = headerProviderPlatformProvider.createNotifyRequest(parentPlatform, catalogXmlContent, subscribeInfo);
527 527
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
@@ -152,26 +152,30 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements @@ -152,26 +152,30 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements
152 152
153 MobilePosition mobilePosition = new MobilePosition(); 153 MobilePosition mobilePosition = new MobilePosition();
154 mobilePosition.setCreateTime(DateUtil.getNow()); 154 mobilePosition.setCreateTime(DateUtil.getNow());
  155 +
155 Element deviceIdElement = rootElement.element("DeviceID"); 156 Element deviceIdElement = rootElement.element("DeviceID");
156 String channelId = deviceIdElement.getTextTrim().toString(); 157 String channelId = deviceIdElement.getTextTrim().toString();
157 Device device = redisCatchStorage.getDevice(deviceId); 158 Device device = redisCatchStorage.getDevice(deviceId);
158 159
159 if (device == null) { 160 if (device == null) {
160 - // 根据通道id查询设备Id  
161 - List<Device> deviceList = deviceChannelService.getDeviceByChannelId(channelId);  
162 - if (deviceList.size() > 0) {  
163 - device = deviceList.get(0);  
164 - }else {  
165 - logger.warn("[mobilePosition移动位置Notify] 未找到通道{}所属的设备", channelId);  
166 - return; 161 + device = redisCatchStorage.getDevice(channelId);
  162 + if (device == null) {
  163 + // 根据通道id查询设备Id
  164 + List<Device> deviceList = deviceChannelService.getDeviceByChannelId(channelId);
  165 + if (deviceList.size() > 0) {
  166 + device = deviceList.get(0);
  167 + }
167 } 168 }
168 } 169 }
169 - if (device != null) {  
170 - if (!ObjectUtils.isEmpty(device.getName())) {  
171 - mobilePosition.setDeviceName(device.getName());  
172 - } 170 + if (device == null) {
  171 + logger.warn("[mobilePosition移动位置Notify] 未找到通道{}所属的设备", channelId);
  172 + return;
  173 + }
  174 + if (!ObjectUtils.isEmpty(device.getName())) {
  175 + mobilePosition.setDeviceName(device.getName());
173 } 176 }
174 - mobilePosition.setDeviceId(XmlUtil.getText(rootElement, "DeviceID")); 177 +
  178 + mobilePosition.setDeviceId(device.getDeviceId());
175 mobilePosition.setChannelId(channelId); 179 mobilePosition.setChannelId(channelId);
176 String time = XmlUtil.getText(rootElement, "Time"); 180 String time = XmlUtil.getText(rootElement, "Time");
177 mobilePosition.setTime(time); 181 mobilePosition.setTime(time);
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
@@ -84,7 +84,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen @@ -84,7 +84,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
84 try { 84 try {
85 RequestEventExt evtExt = (RequestEventExt) evt; 85 RequestEventExt evtExt = (RequestEventExt) evt;
86 String requestAddress = evtExt.getRemoteIpAddress() + ":" + evtExt.getRemotePort(); 86 String requestAddress = evtExt.getRemoteIpAddress() + ":" + evtExt.getRemotePort();
87 - logger.info("[注册请求] 开始处理: {}", requestAddress); 87 +
88 // MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer(); 88 // MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();
89 // QueryExp protocol = Query.match(Query.attr("protocol"), Query.value("HTTP/1.1")); 89 // QueryExp protocol = Query.match(Query.attr("protocol"), Query.value("HTTP/1.1"));
90 //// ObjectName name = new ObjectName("*:type=Connector,*"); 90 //// ObjectName name = new ObjectName("*:type=Connector,*");
@@ -107,6 +107,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen @@ -107,6 +107,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
107 AddressImpl address = (AddressImpl) fromHeader.getAddress(); 107 AddressImpl address = (AddressImpl) fromHeader.getAddress();
108 SipUri uri = (SipUri) address.getURI(); 108 SipUri uri = (SipUri) address.getURI();
109 String deviceId = uri.getUser(); 109 String deviceId = uri.getUser();
  110 + logger.info("[注册请求] 设备:{}, 开始处理: {}", deviceId, requestAddress);
110 Device device = deviceService.getDevice(deviceId); 111 Device device = deviceService.getDevice(deviceId);
111 112
112 RemoteAddressInfo remoteAddressInfo = SipUtils.getRemoteAddressFromRequest(request, 113 RemoteAddressInfo remoteAddressInfo = SipUtils.getRemoteAddressFromRequest(request,
@@ -115,7 +116,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen @@ -115,7 +116,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
115 if (device != null && 116 if (device != null &&
116 device.getSipTransactionInfo() != null && 117 device.getSipTransactionInfo() != null &&
117 request.getCallIdHeader().getCallId().equals(device.getSipTransactionInfo().getCallId())) { 118 request.getCallIdHeader().getCallId().equals(device.getSipTransactionInfo().getCallId())) {
118 - logger.info("[注册请求] 注册续订: {}", device.getDeviceId()); 119 + logger.info("[注册请求] 设备:{}, 注册续订: {}",device.getDeviceId(), device.getDeviceId());
119 device.setExpires(request.getExpires().getExpires()); 120 device.setExpires(request.getExpires().getExpires());
120 device.setIp(remoteAddressInfo.getIp()); 121 device.setIp(remoteAddressInfo.getIp());
121 device.setPort(remoteAddressInfo.getPort()); 122 device.setPort(remoteAddressInfo.getPort());
@@ -135,7 +136,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen @@ -135,7 +136,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
135 String password = (device != null && !ObjectUtils.isEmpty(device.getPassword()))? device.getPassword() : sipConfig.getPassword(); 136 String password = (device != null && !ObjectUtils.isEmpty(device.getPassword()))? device.getPassword() : sipConfig.getPassword();
136 AuthorizationHeader authHead = (AuthorizationHeader) request.getHeader(AuthorizationHeader.NAME); 137 AuthorizationHeader authHead = (AuthorizationHeader) request.getHeader(AuthorizationHeader.NAME);
137 if (authHead == null && !ObjectUtils.isEmpty(password)) { 138 if (authHead == null && !ObjectUtils.isEmpty(password)) {
138 - logger.info("[注册请求] 回复401: {}", requestAddress); 139 + logger.info("[注册请求] 设备:{}, 回复401: {}",deviceId, requestAddress);
139 response = getMessageFactory().createResponse(Response.UNAUTHORIZED, request); 140 response = getMessageFactory().createResponse(Response.UNAUTHORIZED, request);
140 new DigestServerAuthenticationHelper().generateChallenge(getHeaderFactory(), response, sipConfig.getDomain()); 141 new DigestServerAuthenticationHelper().generateChallenge(getHeaderFactory(), response, sipConfig.getDomain());
141 sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response); 142 sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response);
@@ -150,7 +151,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen @@ -150,7 +151,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
150 // 注册失败 151 // 注册失败
151 response = getMessageFactory().createResponse(Response.FORBIDDEN, request); 152 response = getMessageFactory().createResponse(Response.FORBIDDEN, request);
152 response.setReasonPhrase("wrong password"); 153 response.setReasonPhrase("wrong password");
153 - logger.info("[注册请求] 密码/SIP服务器ID错误, 回复403: {}", requestAddress); 154 + logger.info("[注册请求] 设备:{}, 密码/SIP服务器ID错误, 回复403: {}", deviceId, requestAddress);
154 sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response); 155 sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response);
155 return; 156 return;
156 } 157 }
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
@@ -10,7 +10,6 @@ import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessag @@ -10,7 +10,6 @@ import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessag
10 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler; 10 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler;
11 import com.genersoft.iot.vmp.utils.DateUtil; 11 import com.genersoft.iot.vmp.utils.DateUtil;
12 import com.genersoft.iot.vmp.utils.UJson; 12 import com.genersoft.iot.vmp.utils.UJson;
13 -import com.genersoft.iot.vmp.utils.redis.RedisUtil;  
14 import gov.nist.javax.sip.message.SIPRequest; 13 import gov.nist.javax.sip.message.SIPRequest;
15 import org.dom4j.Element; 14 import org.dom4j.Element;
16 import org.slf4j.Logger; 15 import org.slf4j.Logger;
@@ -18,6 +17,7 @@ import org.slf4j.LoggerFactory; @@ -18,6 +17,7 @@ import org.slf4j.LoggerFactory;
18 import org.springframework.beans.factory.InitializingBean; 17 import org.springframework.beans.factory.InitializingBean;
19 import org.springframework.beans.factory.annotation.Autowired; 18 import org.springframework.beans.factory.annotation.Autowired;
20 import org.springframework.beans.factory.annotation.Qualifier; 19 import org.springframework.beans.factory.annotation.Qualifier;
  20 +import org.springframework.data.redis.core.RedisTemplate;
21 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 21 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
22 import org.springframework.stereotype.Component; 22 import org.springframework.stereotype.Component;
23 import org.springframework.util.ObjectUtils; 23 import org.springframework.util.ObjectUtils;
@@ -29,6 +29,7 @@ import javax.sip.message.Response; @@ -29,6 +29,7 @@ import javax.sip.message.Response;
29 import java.text.ParseException; 29 import java.text.ParseException;
30 import java.util.*; 30 import java.util.*;
31 import java.util.concurrent.ConcurrentLinkedQueue; 31 import java.util.concurrent.ConcurrentLinkedQueue;
  32 +import java.util.concurrent.TimeUnit;
32 import java.util.stream.Collectors; 33 import java.util.stream.Collectors;
33 34
34 import static com.genersoft.iot.vmp.gb28181.utils.XmlUtil.getText; 35 import static com.genersoft.iot.vmp.gb28181.utils.XmlUtil.getText;
@@ -57,6 +58,9 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent @@ -57,6 +58,9 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent
57 @Autowired 58 @Autowired
58 private ThreadPoolTaskExecutor taskExecutor; 59 private ThreadPoolTaskExecutor taskExecutor;
59 60
  61 + @Autowired
  62 + private RedisTemplate<Object, Object> redisTemplate;
  63 +
60 private Long recordInfoTtl = 1800L; 64 private Long recordInfoTtl = 1800L;
61 65
62 @Override 66 @Override
@@ -130,10 +134,11 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent @@ -130,10 +134,11 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent
130 .collect(Collectors.toMap(record -> record.getStartTime()+ record.getEndTime(), UJson::writeJson)); 134 .collect(Collectors.toMap(record -> record.getStartTime()+ record.getEndTime(), UJson::writeJson));
131 // 获取任务结果数据 135 // 获取任务结果数据
132 String resKey = VideoManagerConstants.REDIS_RECORD_INFO_RES_PRE + channelId + sn; 136 String resKey = VideoManagerConstants.REDIS_RECORD_INFO_RES_PRE + channelId + sn;
133 - RedisUtil.hmset(resKey, map, recordInfoTtl); 137 + redisTemplate.opsForHash().putAll(resKey, map);
  138 + redisTemplate.expire(resKey, recordInfoTtl, TimeUnit.SECONDS);
134 String resCountKey = VideoManagerConstants.REDIS_RECORD_INFO_RES_COUNT_PRE + channelId + sn; 139 String resCountKey = VideoManagerConstants.REDIS_RECORD_INFO_RES_COUNT_PRE + channelId + sn;
135 - long incr = RedisUtil.incr(resCountKey, map.size());  
136 - RedisUtil.expire(resCountKey, recordInfoTtl); 140 + long incr = redisTemplate.opsForValue().increment(resCountKey, map.size());
  141 + redisTemplate.expire(resCountKey, recordInfoTtl, TimeUnit.SECONDS);
137 recordInfo.setRecordList(recordList); 142 recordInfo.setRecordList(recordList);
138 recordInfo.setCount(Math.toIntExact(incr)); 143 recordInfo.setCount(Math.toIntExact(incr));
139 eventPublisher.recordEndEventPush(recordInfo); 144 eventPublisher.recordEndEventPush(recordInfo);
@@ -141,7 +146,7 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent @@ -141,7 +146,7 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent
141 return; 146 return;
142 } 147 }
143 // 已接收完成 148 // 已接收完成
144 - List<RecordItem> resList = RedisUtil.hmget(resKey).values().stream().map(e -> UJson.readJson(e.toString(), RecordItem.class)).collect(Collectors.toList()); 149 + List<RecordItem> resList = redisTemplate.opsForHash().entries(resKey).values().stream().map(e -> UJson.readJson(e.toString(), RecordItem.class)).collect(Collectors.toList());
145 if (resList.size() < sumNum) { 150 if (resList.size() < sumNum) {
146 return; 151 return;
147 } 152 }
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/RegisterResponseProcessor.java
@@ -92,7 +92,7 @@ public class RegisterResponseProcessor extends SIPResponseProcessorAbstract { @@ -92,7 +92,7 @@ public class RegisterResponseProcessor extends SIPResponseProcessorAbstract {
92 WWWAuthenticateHeader www = (WWWAuthenticateHeader)response.getHeader(WWWAuthenticateHeader.NAME); 92 WWWAuthenticateHeader www = (WWWAuthenticateHeader)response.getHeader(WWWAuthenticateHeader.NAME);
93 SipTransactionInfo sipTransactionInfo = new SipTransactionInfo(response); 93 SipTransactionInfo sipTransactionInfo = new SipTransactionInfo(response);
94 try { 94 try {
95 - sipCommanderForPlatform.register(parentPlatform, sipTransactionInfo, www, null, null, true, platformRegisterInfo.isRegister()); 95 + sipCommanderForPlatform.register(parentPlatform, sipTransactionInfo, www, null, null, platformRegisterInfo.isRegister());
96 } catch (SipException | InvalidArgumentException | ParseException e) { 96 } catch (SipException | InvalidArgumentException | ParseException e) {
97 logger.error("[命令发送失败] 国标级联 再次注册: {}", e.getMessage()); 97 logger.error("[命令发送失败] 国标级联 再次注册: {}", e.getMessage());
98 } 98 }
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
@@ -10,7 +10,6 @@ import com.genersoft.iot.vmp.conf.UserSetting; @@ -10,7 +10,6 @@ import com.genersoft.iot.vmp.conf.UserSetting;
10 import com.genersoft.iot.vmp.conf.exception.ControllerException; 10 import com.genersoft.iot.vmp.conf.exception.ControllerException;
11 import com.genersoft.iot.vmp.gb28181.event.EventPublisher; 11 import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
12 import com.genersoft.iot.vmp.gb28181.session.SsrcConfig; 12 import com.genersoft.iot.vmp.gb28181.session.SsrcConfig;
13 -import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;  
14 import com.genersoft.iot.vmp.media.zlm.AssistRESTfulUtils; 13 import com.genersoft.iot.vmp.media.zlm.AssistRESTfulUtils;
15 import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils; 14 import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
16 import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory; 15 import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
@@ -33,6 +32,7 @@ import org.slf4j.Logger; @@ -33,6 +32,7 @@ import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory; 32 import org.slf4j.LoggerFactory;
34 import org.springframework.beans.factory.annotation.Autowired; 33 import org.springframework.beans.factory.annotation.Autowired;
35 import org.springframework.beans.factory.annotation.Value; 34 import org.springframework.beans.factory.annotation.Value;
  35 +import org.springframework.data.redis.core.RedisTemplate;
36 import org.springframework.jdbc.datasource.DataSourceTransactionManager; 36 import org.springframework.jdbc.datasource.DataSourceTransactionManager;
37 import org.springframework.stereotype.Service; 37 import org.springframework.stereotype.Service;
38 import org.springframework.transaction.TransactionDefinition; 38 import org.springframework.transaction.TransactionDefinition;
@@ -75,13 +75,11 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -75,13 +75,11 @@ public class MediaServerServiceImpl implements IMediaServerService {
75 private MediaServerMapper mediaServerMapper; 75 private MediaServerMapper mediaServerMapper;
76 76
77 @Autowired 77 @Autowired
78 - DataSourceTransactionManager dataSourceTransactionManager; 78 + private DataSourceTransactionManager dataSourceTransactionManager;
79 79
80 @Autowired 80 @Autowired
81 - TransactionDefinition transactionDefinition; 81 + private TransactionDefinition transactionDefinition;
82 82
83 - @Autowired  
84 - private VideoStreamSessionManager streamSession;  
85 83
86 @Autowired 84 @Autowired
87 private ZLMRTPServerFactory zlmrtpServerFactory; 85 private ZLMRTPServerFactory zlmrtpServerFactory;
@@ -95,6 +93,9 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -95,6 +93,9 @@ public class MediaServerServiceImpl implements IMediaServerService {
95 @Autowired 93 @Autowired
96 private IRedisCatchStorage redisCatchStorage; 94 private IRedisCatchStorage redisCatchStorage;
97 95
  96 + @Autowired
  97 + private RedisTemplate<Object, Object> redisTemplate;
  98 +
98 /** 99 /**
99 * 初始化 100 * 初始化
100 */ 101 */
@@ -109,12 +110,13 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -109,12 +110,13 @@ public class MediaServerServiceImpl implements IMediaServerService {
109 if (mediaServerItem.getSsrcConfig() == null) { 110 if (mediaServerItem.getSsrcConfig() == null) {
110 SsrcConfig ssrcConfig = new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getDomain()); 111 SsrcConfig ssrcConfig = new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getDomain());
111 mediaServerItem.setSsrcConfig(ssrcConfig); 112 mediaServerItem.setSsrcConfig(ssrcConfig);
112 - RedisUtil.set(VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId(), mediaServerItem); 113 + redisTemplate.opsForValue().set(VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId(), mediaServerItem);
113 } 114 }
114 // 查询redis是否存在此mediaServer 115 // 查询redis是否存在此mediaServer
115 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId(); 116 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId();
116 - if (!RedisUtil.hasKey(key)) {  
117 - RedisUtil.set(key, mediaServerItem); 117 + Boolean hasKey = redisTemplate.hasKey(key);
  118 + if (hasKey != null && ! hasKey) {
  119 + redisTemplate.opsForValue().set(key, mediaServerItem);
118 } 120 }
119 121
120 } 122 }
@@ -160,7 +162,7 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -160,7 +162,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
160 } else { 162 } else {
161 rtpServerPort = mediaServerItem.getRtpProxyPort(); 163 rtpServerPort = mediaServerItem.getRtpProxyPort();
162 } 164 }
163 - RedisUtil.set(key, mediaServerItem); 165 + redisTemplate.opsForValue().set(key, mediaServerItem);
164 return new SSRCInfo(rtpServerPort, ssrc, streamId); 166 return new SSRCInfo(rtpServerPort, ssrc, streamId);
165 } 167 }
166 } 168 }
@@ -194,7 +196,7 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -194,7 +196,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
194 ssrcConfig.releaseSsrc(ssrc); 196 ssrcConfig.releaseSsrc(ssrc);
195 mediaServerItem.setSsrcConfig(ssrcConfig); 197 mediaServerItem.setSsrcConfig(ssrcConfig);
196 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId(); 198 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId();
197 - RedisUtil.set(key, mediaServerItem); 199 + redisTemplate.opsForValue().set(key, mediaServerItem);
198 } 200 }
199 201
200 /** 202 /**
@@ -203,7 +205,7 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -203,7 +205,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
203 @Override 205 @Override
204 public void clearRTPServer(MediaServerItem mediaServerItem) { 206 public void clearRTPServer(MediaServerItem mediaServerItem) {
205 mediaServerItem.setSsrcConfig(new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getDomain())); 207 mediaServerItem.setSsrcConfig(new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getDomain()));
206 - RedisUtil.zAdd(VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(), mediaServerItem.getId(), 0); 208 + redisTemplate.opsForZSet().add(VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(), mediaServerItem.getId(), 0);
207 209
208 } 210 }
209 211
@@ -225,22 +227,22 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -225,22 +227,22 @@ public class MediaServerServiceImpl implements IMediaServerService {
225 ); 227 );
226 } 228 }
227 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItemInDataBase.getId(); 229 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItemInDataBase.getId();
228 - RedisUtil.set(key, mediaServerItemInDataBase); 230 + redisTemplate.opsForValue().set(key, mediaServerItemInDataBase);
229 } 231 }
230 232
231 @Override 233 @Override
232 public List<MediaServerItem> getAll() { 234 public List<MediaServerItem> getAll() {
233 List<MediaServerItem> result = new ArrayList<>(); 235 List<MediaServerItem> result = new ArrayList<>();
234 - List<Object> mediaServerKeys = RedisUtil.scan(String.format("%S*", VideoManagerConstants.MEDIA_SERVER_PREFIX+ userSetting.getServerId() + "_" )); 236 + List<Object> mediaServerKeys = RedisUtil.scan(redisTemplate, String.format("%S*", VideoManagerConstants.MEDIA_SERVER_PREFIX+ userSetting.getServerId() + "_" ));
235 String onlineKey = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(); 237 String onlineKey = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
236 for (Object mediaServerKey : mediaServerKeys) { 238 for (Object mediaServerKey : mediaServerKeys) {
237 String key = (String) mediaServerKey; 239 String key = (String) mediaServerKey;
238 - MediaServerItem mediaServerItem = JsonUtil.redisJsonToObject(key, MediaServerItem.class); 240 + MediaServerItem mediaServerItem = JsonUtil.redisJsonToObject(redisTemplate, key, MediaServerItem.class);
239 if (Objects.isNull(mediaServerItem)) { 241 if (Objects.isNull(mediaServerItem)) {
240 continue; 242 continue;
241 } 243 }
242 // 检查状态 244 // 检查状态
243 - Double aDouble = RedisUtil.zScore(onlineKey, mediaServerItem.getId()); 245 + Double aDouble = redisTemplate.opsForZSet().score(onlineKey, mediaServerItem.getId());
244 if (aDouble != null) { 246 if (aDouble != null) {
245 mediaServerItem.setStatus(true); 247 mediaServerItem.setStatus(true);
246 } 248 }
@@ -266,13 +268,14 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -266,13 +268,14 @@ public class MediaServerServiceImpl implements IMediaServerService {
266 @Override 268 @Override
267 public List<MediaServerItem> getAllOnline() { 269 public List<MediaServerItem> getAllOnline() {
268 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(); 270 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
269 - Set<String> mediaServerIdSet = RedisUtil.zRevRange(key, 0, -1); 271 + Set<Object> mediaServerIdSet = redisTemplate.opsForZSet().reverseRange(key, 0, -1);
270 272
271 List<MediaServerItem> result = new ArrayList<>(); 273 List<MediaServerItem> result = new ArrayList<>();
272 if (mediaServerIdSet != null && mediaServerIdSet.size() > 0) { 274 if (mediaServerIdSet != null && mediaServerIdSet.size() > 0) {
273 - for (String mediaServerId : mediaServerIdSet) {  
274 - String serverKey = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerId;  
275 - result.add((MediaServerItem) RedisUtil.get(serverKey)); 275 + for (Object mediaServerId : mediaServerIdSet) {
  276 + String mediaServerIdStr = (String) mediaServerId;
  277 + String serverKey = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerIdStr;
  278 + result.add((MediaServerItem) redisTemplate.opsForValue().get(serverKey));
276 } 279 }
277 } 280 }
278 Collections.reverse(result); 281 Collections.reverse(result);
@@ -290,7 +293,7 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -290,7 +293,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
290 return null; 293 return null;
291 } 294 }
292 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerId; 295 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerId;
293 - return JsonUtil.redisJsonToObject(key, MediaServerItem.class); 296 + return JsonUtil.redisJsonToObject(redisTemplate, key, MediaServerItem.class);
294 } 297 }
295 298
296 299
@@ -303,7 +306,7 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -303,7 +306,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
303 @Override 306 @Override
304 public void clearMediaServerForOnline() { 307 public void clearMediaServerForOnline() {
305 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(); 308 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
306 - RedisUtil.del(key); 309 + redisTemplate.delete(key);
307 } 310 }
308 311
309 @Override 312 @Override
@@ -403,16 +406,16 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -403,16 +406,16 @@ public class MediaServerServiceImpl implements IMediaServerService {
403 } 406 }
404 mediaServerMapper.update(serverItem); 407 mediaServerMapper.update(serverItem);
405 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + zlmServerConfig.getGeneralMediaServerId(); 408 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + zlmServerConfig.getGeneralMediaServerId();
406 - if (RedisUtil.get(key) == null) { 409 + if (redisTemplate.opsForValue().get(key) == null) {
407 SsrcConfig ssrcConfig = new SsrcConfig(zlmServerConfig.getGeneralMediaServerId(), null, sipConfig.getDomain()); 410 SsrcConfig ssrcConfig = new SsrcConfig(zlmServerConfig.getGeneralMediaServerId(), null, sipConfig.getDomain());
408 serverItem.setSsrcConfig(ssrcConfig); 411 serverItem.setSsrcConfig(ssrcConfig);
409 }else { 412 }else {
410 - MediaServerItem mediaServerItemInRedis = JsonUtil.redisJsonToObject(key, MediaServerItem.class); 413 + MediaServerItem mediaServerItemInRedis = JsonUtil.redisJsonToObject(redisTemplate, key, MediaServerItem.class);
411 if (Objects.nonNull(mediaServerItemInRedis)) { 414 if (Objects.nonNull(mediaServerItemInRedis)) {
412 serverItem.setSsrcConfig(mediaServerItemInRedis.getSsrcConfig()); 415 serverItem.setSsrcConfig(mediaServerItemInRedis.getSsrcConfig());
413 } 416 }
414 } 417 }
415 - RedisUtil.set(key, serverItem); 418 + redisTemplate.opsForValue().set(key, serverItem);
416 resetOnlineServerItem(serverItem); 419 resetOnlineServerItem(serverItem);
417 420
418 421
@@ -475,15 +478,15 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -475,15 +478,15 @@ public class MediaServerServiceImpl implements IMediaServerService {
475 // 更新缓存 478 // 更新缓存
476 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(); 479 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
477 // 使用zset的分数作为当前并发量, 默认值设置为0 480 // 使用zset的分数作为当前并发量, 默认值设置为0
478 - if (RedisUtil.zScore(key, serverItem.getId()) == null) { // 不存在则设置默认值 已存在则重置  
479 - RedisUtil.zAdd(key, serverItem.getId(), 0L); 481 + if (redisTemplate.opsForZSet().score(key, serverItem.getId()) == null) { // 不存在则设置默认值 已存在则重置
  482 + redisTemplate.opsForZSet().add(key, serverItem.getId(), 0L);
480 // 查询服务流数量 483 // 查询服务流数量
481 zlmresTfulUtils.getMediaList(serverItem, null, null, "rtsp",(mediaList ->{ 484 zlmresTfulUtils.getMediaList(serverItem, null, null, "rtsp",(mediaList ->{
482 Integer code = mediaList.getInteger("code"); 485 Integer code = mediaList.getInteger("code");
483 if (code == 0) { 486 if (code == 0) {
484 JSONArray data = mediaList.getJSONArray("data"); 487 JSONArray data = mediaList.getJSONArray("data");
485 if (data != null) { 488 if (data != null) {
486 - RedisUtil.zAdd(key, serverItem.getId(), data.size()); 489 + redisTemplate.opsForZSet().add(key, serverItem.getId(), data.size());
487 } 490 }
488 } 491 }
489 })); 492 }));
@@ -499,14 +502,14 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -499,14 +502,14 @@ public class MediaServerServiceImpl implements IMediaServerService {
499 return; 502 return;
500 } 503 }
501 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(); 504 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
502 - RedisUtil.zIncrScore(key, mediaServerId, 1); 505 + redisTemplate.opsForZSet().incrementScore(key, mediaServerId, 1);
503 506
504 } 507 }
505 508
506 @Override 509 @Override
507 public void removeCount(String mediaServerId) { 510 public void removeCount(String mediaServerId) {
508 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(); 511 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
509 - RedisUtil.zIncrScore(key, mediaServerId, - 1); 512 + redisTemplate.opsForZSet().incrementScore(key, mediaServerId, - 1);
510 } 513 }
511 514
512 /** 515 /**
@@ -516,16 +519,14 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -516,16 +519,14 @@ public class MediaServerServiceImpl implements IMediaServerService {
516 @Override 519 @Override
517 public MediaServerItem getMediaServerForMinimumLoad(Boolean hasAssist) { 520 public MediaServerItem getMediaServerForMinimumLoad(Boolean hasAssist) {
518 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(); 521 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
519 -  
520 - if (RedisUtil.zSize(key) == null || RedisUtil.zSize(key) == 0) {  
521 - if (RedisUtil.zSize(key) == null || RedisUtil.zSize(key) == 0) {  
522 - logger.info("获取负载最低的节点时无在线节点");  
523 - return null;  
524 - } 522 + Long size = redisTemplate.opsForZSet().zCard(key);
  523 + if (size == null || size == 0) {
  524 + logger.info("获取负载最低的节点时无在线节点");
  525 + return null;
525 } 526 }
526 527
527 // 获取分数最低的,及并发最低的 528 // 获取分数最低的,及并发最低的
528 - Set<Object> objects = RedisUtil.zRange(key, 0, -1); 529 + Set<Object> objects = redisTemplate.opsForZSet().range(key, 0, -1);
529 ArrayList<Object> mediaServerObjectS = new ArrayList<>(objects); 530 ArrayList<Object> mediaServerObjectS = new ArrayList<>(objects);
530 MediaServerItem mediaServerItem = null; 531 MediaServerItem mediaServerItem = null;
531 if (hasAssist == null) { 532 if (hasAssist == null) {
@@ -688,9 +689,9 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -688,9 +689,9 @@ public class MediaServerServiceImpl implements IMediaServerService {
688 689
689 @Override 690 @Override
690 public void delete(String id) { 691 public void delete(String id) {
691 - RedisUtil.zRemove(VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(), id); 692 + redisTemplate.opsForZSet().remove(VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(), id);
692 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + id; 693 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + id;
693 - RedisUtil.del(key); 694 + redisTemplate.delete(key);
694 } 695 }
695 @Override 696 @Override
696 public void deleteDb(String id){ 697 public void deleteDb(String id){
@@ -713,7 +714,7 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -713,7 +714,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
713 SsrcConfig ssrcConfig = new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getDomain()); 714 SsrcConfig ssrcConfig = new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getDomain());
714 mediaServerItem.setSsrcConfig(ssrcConfig); 715 mediaServerItem.setSsrcConfig(ssrcConfig);
715 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId(); 716 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId();
716 - RedisUtil.set(key, mediaServerItem); 717 + redisTemplate.opsForValue().set(key, mediaServerItem);
717 clearRTPServer(mediaServerItem); 718 clearRTPServer(mediaServerItem);
718 } 719 }
719 final String zlmKeepaliveKey = zlmKeepaliveKeyPrefix + mediaServerItem.getId(); 720 final String zlmKeepaliveKey = zlmKeepaliveKeyPrefix + mediaServerItem.getId();
src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java
@@ -168,7 +168,7 @@ public class PlatformServiceImpl implements IPlatformService { @@ -168,7 +168,7 @@ public class PlatformServiceImpl implements IPlatformService {
168 // 注销旧的 168 // 注销旧的
169 try { 169 try {
170 if (parentPlatformOld.isStatus()) { 170 if (parentPlatformOld.isStatus()) {
171 - logger.info("保存平台{}时发现救平台在线,发送注销命令", parentPlatform.getDeviceGBId()); 171 + logger.info("保存平台{}时发现救平台在线,发送注销命令", parentPlatformOld.getServerGBId());
172 commanderForPlatform.unregister(parentPlatformOld, parentPlatformCatchOld.getSipTransactionInfo(), null, eventResult -> { 172 commanderForPlatform.unregister(parentPlatformOld, parentPlatformCatchOld.getSipTransactionInfo(), null, eventResult -> {
173 logger.info("[国标级联] 注销成功, 平台:{}", parentPlatformOld.getServerGBId()); 173 logger.info("[国标级联] 注销成功, 平台:{}", parentPlatformOld.getServerGBId());
174 }); 174 });
@@ -275,7 +275,7 @@ public class PlatformServiceImpl implements IPlatformService { @@ -275,7 +275,7 @@ public class PlatformServiceImpl implements IPlatformService {
275 // 心跳成功 275 // 心跳成功
276 // 清空之前的心跳超时计数 276 // 清空之前的心跳超时计数
277 ParentPlatformCatch platformCatch = redisCatchStorage.queryPlatformCatchInfo(parentPlatform.getServerGBId()); 277 ParentPlatformCatch platformCatch = redisCatchStorage.queryPlatformCatchInfo(parentPlatform.getServerGBId());
278 - if (platformCatch.getKeepAliveReply() > 0) { 278 + if (platformCatch != null && platformCatch.getKeepAliveReply() > 0) {
279 platformCatch.setKeepAliveReply(0); 279 platformCatch.setKeepAliveReply(0);
280 redisCatchStorage.updatePlatformCatchInfo(platformCatch); 280 redisCatchStorage.updatePlatformCatchInfo(platformCatch);
281 } 281 }
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -48,6 +48,7 @@ import org.slf4j.LoggerFactory; @@ -48,6 +48,7 @@ import org.slf4j.LoggerFactory;
48 import org.springframework.beans.factory.annotation.Autowired; 48 import org.springframework.beans.factory.annotation.Autowired;
49 import org.springframework.beans.factory.annotation.Qualifier; 49 import org.springframework.beans.factory.annotation.Qualifier;
50 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 50 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
  51 +import org.springframework.data.redis.core.RedisTemplate;
51 import org.springframework.stereotype.Service; 52 import org.springframework.stereotype.Service;
52 import org.springframework.util.ObjectUtils; 53 import org.springframework.util.ObjectUtils;
53 54
@@ -131,6 +132,9 @@ public class PlayServiceImpl implements IPlayService { @@ -131,6 +132,9 @@ public class PlayServiceImpl implements IPlayService {
131 @Autowired 132 @Autowired
132 private ZlmHttpHookSubscribe hookSubscribe; 133 private ZlmHttpHookSubscribe hookSubscribe;
133 134
  135 + @Autowired
  136 + private RedisTemplate<Object, Object> redisTemplate;
  137 +
134 138
135 @Override 139 @Override
136 public void play(MediaServerItem mediaServerItem, String deviceId, String channelId, 140 public void play(MediaServerItem mediaServerItem, String deviceId, String channelId,
@@ -1193,7 +1197,7 @@ public class PlayServiceImpl implements IPlayService { @@ -1193,7 +1197,7 @@ public class PlayServiceImpl implements IPlayService {
1193 throw new ServiceException("streamId不存在"); 1197 throw new ServiceException("streamId不存在");
1194 } 1198 }
1195 streamInfo.setPause(true); 1199 streamInfo.setPause(true);
1196 - RedisUtil.set(key, streamInfo); 1200 + redisTemplate.opsForValue().set(key, streamInfo);
1197 MediaServerItem mediaServerItem = mediaServerService.getOne(streamInfo.getMediaServerId()); 1201 MediaServerItem mediaServerItem = mediaServerService.getOne(streamInfo.getMediaServerId());
1198 if (null == mediaServerItem) { 1202 if (null == mediaServerItem) {
1199 logger.warn("mediaServer 不存在!"); 1203 logger.warn("mediaServer 不存在!");
@@ -1217,7 +1221,7 @@ public class PlayServiceImpl implements IPlayService { @@ -1217,7 +1221,7 @@ public class PlayServiceImpl implements IPlayService {
1217 throw new ServiceException("streamId不存在"); 1221 throw new ServiceException("streamId不存在");
1218 } 1222 }
1219 streamInfo.setPause(false); 1223 streamInfo.setPause(false);
1220 - RedisUtil.set(key, streamInfo); 1224 + redisTemplate.opsForValue().set(key, streamInfo);
1221 MediaServerItem mediaServerItem = mediaServerService.getOne(streamInfo.getMediaServerId()); 1225 MediaServerItem mediaServerItem = mediaServerService.getOne(streamInfo.getMediaServerId());
1222 if (null == mediaServerItem) { 1226 if (null == mediaServerItem) {
1223 logger.warn("mediaServer 不存在!"); 1227 logger.warn("mediaServer 不存在!");
src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisGbPlayMsgListener.java
@@ -2,19 +2,17 @@ package com.genersoft.iot.vmp.service.redisMsg; @@ -2,19 +2,17 @@ package com.genersoft.iot.vmp.service.redisMsg;
2 2
3 import com.alibaba.fastjson2.JSON; 3 import com.alibaba.fastjson2.JSON;
4 import com.alibaba.fastjson2.JSONObject; 4 import com.alibaba.fastjson2.JSONObject;
  5 +import com.genersoft.iot.vmp.common.VideoManagerConstants;
5 import com.genersoft.iot.vmp.conf.DynamicTask; 6 import com.genersoft.iot.vmp.conf.DynamicTask;
6 import com.genersoft.iot.vmp.conf.UserSetting; 7 import com.genersoft.iot.vmp.conf.UserSetting;
7 import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem; 8 import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
8 -import com.genersoft.iot.vmp.media.zlm.ZlmHttpHookSubscribe;  
9 -import com.genersoft.iot.vmp.media.zlm.ZLMMediaListManager;  
10 import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory; 9 import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
  10 +import com.genersoft.iot.vmp.media.zlm.ZlmHttpHookSubscribe;
11 import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeFactory; 11 import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeFactory;
12 import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeForStreamChange; 12 import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeForStreamChange;
13 import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; 13 import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
14 import com.genersoft.iot.vmp.service.IMediaServerService; 14 import com.genersoft.iot.vmp.service.IMediaServerService;
15 import com.genersoft.iot.vmp.service.bean.*; 15 import com.genersoft.iot.vmp.service.bean.*;
16 -import com.genersoft.iot.vmp.storager.IRedisCatchStorage;  
17 -import com.genersoft.iot.vmp.utils.redis.RedisUtil;  
18 import com.genersoft.iot.vmp.vmanager.bean.WVPResult; 16 import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
19 import org.slf4j.Logger; 17 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory; 18 import org.slf4j.LoggerFactory;
@@ -22,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired; @@ -22,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
22 import org.springframework.beans.factory.annotation.Qualifier; 20 import org.springframework.beans.factory.annotation.Qualifier;
23 import org.springframework.data.redis.connection.Message; 21 import org.springframework.data.redis.connection.Message;
24 import org.springframework.data.redis.connection.MessageListener; 22 import org.springframework.data.redis.connection.MessageListener;
  23 +import org.springframework.data.redis.core.RedisTemplate;
25 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 24 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
26 import org.springframework.stereotype.Component; 25 import org.springframework.stereotype.Component;
27 26
@@ -68,7 +67,7 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -68,7 +67,7 @@ public class RedisGbPlayMsgListener implements MessageListener {
68 67
69 68
70 @Autowired 69 @Autowired
71 - private ZLMMediaListManager zlmMediaListManager; 70 + private RedisTemplate<Object, Object> redisTemplate;
72 71
73 @Autowired 72 @Autowired
74 private ZLMRTPServerFactory zlmrtpServerFactory; 73 private ZLMRTPServerFactory zlmrtpServerFactory;
@@ -76,14 +75,10 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -76,14 +75,10 @@ public class RedisGbPlayMsgListener implements MessageListener {
76 @Autowired 75 @Autowired
77 private IMediaServerService mediaServerService; 76 private IMediaServerService mediaServerService;
78 77
79 - @Autowired  
80 - private IRedisCatchStorage redisCatchStorage;  
81 78
82 @Autowired 79 @Autowired
83 private DynamicTask dynamicTask; 80 private DynamicTask dynamicTask;
84 81
85 - @Autowired  
86 - private ZLMMediaListManager mediaListManager;  
87 82
88 @Autowired 83 @Autowired
89 private ZlmHttpHookSubscribe subscribe; 84 private ZlmHttpHookSubscribe subscribe;
@@ -246,7 +241,7 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -246,7 +241,7 @@ public class RedisGbPlayMsgListener implements MessageListener {
246 WvpRedisMsg response = WvpRedisMsg.getResponseInstance(userSetting.getServerId(), toId, 241 WvpRedisMsg response = WvpRedisMsg.getResponseInstance(userSetting.getServerId(), toId,
247 WvpRedisMsgCmd.REQUEST_PUSH_STREAM, serial, result); 242 WvpRedisMsgCmd.REQUEST_PUSH_STREAM, serial, result);
248 JSONObject jsonObject = (JSONObject)JSON.toJSON(response); 243 JSONObject jsonObject = (JSONObject)JSON.toJSON(response);
249 - RedisUtil.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject); 244 + redisTemplate.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject);
250 } 245 }
251 246
252 /** 247 /**
@@ -265,7 +260,7 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -265,7 +260,7 @@ public class RedisGbPlayMsgListener implements MessageListener {
265 WvpRedisMsgCmd.GET_SEND_ITEM, serial, result); 260 WvpRedisMsgCmd.GET_SEND_ITEM, serial, result);
266 261
267 JSONObject jsonObject = (JSONObject)JSON.toJSON(response); 262 JSONObject jsonObject = (JSONObject)JSON.toJSON(response);
268 - RedisUtil.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject); 263 + redisTemplate.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject);
269 return; 264 return;
270 } 265 }
271 // 确定流是否在线 266 // 确定流是否在线
@@ -288,7 +283,7 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -288,7 +283,7 @@ public class RedisGbPlayMsgListener implements MessageListener {
288 userSetting.getServerId(), toId, WvpRedisMsgCmd.GET_SEND_ITEM, serial, result 283 userSetting.getServerId(), toId, WvpRedisMsgCmd.GET_SEND_ITEM, serial, result
289 ); 284 );
290 JSONObject jsonObject = (JSONObject)JSON.toJSON(response); 285 JSONObject jsonObject = (JSONObject)JSON.toJSON(response);
291 - RedisUtil.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject); 286 + redisTemplate.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject);
292 }, userSetting.getPlatformPlayTimeout()); 287 }, userSetting.getPlatformPlayTimeout());
293 288
294 // 添加订阅 289 // 添加订阅
@@ -302,7 +297,12 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -302,7 +297,12 @@ public class RedisGbPlayMsgListener implements MessageListener {
302 MessageForPushChannel messageForPushChannel = MessageForPushChannel.getInstance(1, content.getApp(), content.getStream(), 297 MessageForPushChannel messageForPushChannel = MessageForPushChannel.getInstance(1, content.getApp(), content.getStream(),
303 content.getChannelId(), content.getPlatformId(), content.getPlatformName(), content.getServerId(), 298 content.getChannelId(), content.getPlatformId(), content.getPlatformName(), content.getServerId(),
304 content.getMediaServerId()); 299 content.getMediaServerId());
305 - redisCatchStorage.sendStreamPushRequestedMsg(messageForPushChannel); 300 +
  301 + String key = VideoManagerConstants.VM_MSG_STREAM_PUSH_REQUESTED;
  302 + logger.info("[redis发送通知] 推流被请求 {}: {}/{}", key, messageForPushChannel.getApp(), messageForPushChannel.getStream());
  303 + redisTemplate.convertAndSend(key, JSON.toJSON(messageForPushChannel));
  304 +
  305 +// redisCatchStorage.sendStreamPushRequestedMsg(messageForPushChannel);
306 306
307 } 307 }
308 } 308 }
@@ -327,7 +327,7 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -327,7 +327,7 @@ public class RedisGbPlayMsgListener implements MessageListener {
327 userSetting.getServerId(), toId, WvpRedisMsgCmd.GET_SEND_ITEM, serial, result 327 userSetting.getServerId(), toId, WvpRedisMsgCmd.GET_SEND_ITEM, serial, result
328 ); 328 );
329 JSONObject jsonObject = (JSONObject)JSON.toJSON(response); 329 JSONObject jsonObject = (JSONObject)JSON.toJSON(response);
330 - RedisUtil.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject); 330 + redisTemplate.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject);
331 } 331 }
332 332
333 /** 333 /**
@@ -364,7 +364,7 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -364,7 +364,7 @@ public class RedisGbPlayMsgListener implements MessageListener {
364 wvpResult.setMsg("timeout"); 364 wvpResult.setMsg("timeout");
365 errorCallback.handler(wvpResult); 365 errorCallback.handler(wvpResult);
366 }, userSetting.getPlatformPlayTimeout()); 366 }, userSetting.getPlatformPlayTimeout());
367 - RedisUtil.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject); 367 + redisTemplate.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject);
368 } 368 }
369 369
370 /** 370 /**
@@ -389,6 +389,6 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -389,6 +389,6 @@ public class RedisGbPlayMsgListener implements MessageListener {
389 callbacksForStartSendRtpStream.remove(key); 389 callbacksForStartSendRtpStream.remove(key);
390 callbacksForError.remove(key); 390 callbacksForError.remove(key);
391 }); 391 });
392 - RedisUtil.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject); 392 + redisTemplate.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject);
393 } 393 }
394 } 394 }
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMobilePositionMapper.java
1 package com.genersoft.iot.vmp.storager.dao; 1 package com.genersoft.iot.vmp.storager.dao;
2 2
3 -import java.util.List;  
4 -  
5 import com.genersoft.iot.vmp.gb28181.bean.MobilePosition; 3 import com.genersoft.iot.vmp.gb28181.bean.MobilePosition;
6 -import org.apache.ibatis.annotations.*; 4 +import org.apache.ibatis.annotations.Delete;
  5 +import org.apache.ibatis.annotations.Insert;
  6 +import org.apache.ibatis.annotations.Mapper;
  7 +import org.apache.ibatis.annotations.Select;
  8 +
  9 +import java.util.List;
7 10
8 @Mapper 11 @Mapper
9 public interface DeviceMobilePositionMapper { 12 public interface DeviceMobilePositionMapper {
10 13
11 @Insert("INSERT INTO device_mobile_position (deviceId,channelId, deviceName, time, longitude, latitude, altitude, speed, direction, reportSource, longitudeGcj02, latitudeGcj02, longitudeWgs84, latitudeWgs84, createTime) " + 14 @Insert("INSERT INTO device_mobile_position (deviceId,channelId, deviceName, time, longitude, latitude, altitude, speed, direction, reportSource, longitudeGcj02, latitudeGcj02, longitudeWgs84, latitudeWgs84, createTime) " +
12 - "VALUES (#{deviceId},#{channelId}, #{deviceName}, #{time}, #{longitude}, #{latitude}, #{altitude}, #{speed}, #{direction}, #{reportSource}, #{longitudeGcj02}, #{latitudeGcj02}, #{longitudeWgs84}, #{latitudeWgs84}, #{createTime})") 15 + "VALUES (#{deviceId}, #{channelId}, #{deviceName}, #{time}, #{longitude}, #{latitude}, #{altitude}, #{speed}, #{direction}, #{reportSource}, #{longitudeGcj02}, #{latitudeGcj02}, #{longitudeWgs84}, #{latitudeWgs84}, #{createTime})")
13 int insertNewPosition(MobilePosition mobilePosition); 16 int insertNewPosition(MobilePosition mobilePosition);
14 17
15 @Select(value = {" <script>" + 18 @Select(value = {" <script>" +
src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
@@ -23,6 +23,7 @@ import com.genersoft.iot.vmp.utils.redis.RedisUtil; @@ -23,6 +23,7 @@ import com.genersoft.iot.vmp.utils.redis.RedisUtil;
23 import org.slf4j.Logger; 23 import org.slf4j.Logger;
24 import org.slf4j.LoggerFactory; 24 import org.slf4j.LoggerFactory;
25 import org.springframework.beans.factory.annotation.Autowired; 25 import org.springframework.beans.factory.annotation.Autowired;
  26 +import org.springframework.data.redis.core.RedisTemplate;
26 import org.springframework.stereotype.Component; 27 import org.springframework.stereotype.Component;
27 28
28 import java.util.*; 29 import java.util.*;
@@ -39,14 +40,17 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -39,14 +40,17 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
39 @Autowired 40 @Autowired
40 private UserSetting userSetting; 41 private UserSetting userSetting;
41 42
  43 + @Autowired
  44 + private RedisTemplate<Object, Object> redisTemplate;
  45 +
42 @Override 46 @Override
43 public Long getCSEQ() { 47 public Long getCSEQ() {
44 String key = VideoManagerConstants.SIP_CSEQ_PREFIX + userSetting.getServerId(); 48 String key = VideoManagerConstants.SIP_CSEQ_PREFIX + userSetting.getServerId();
45 49
46 - long result = RedisUtil.incr(key, 1L);  
47 - if (result > Integer.MAX_VALUE) {  
48 - RedisUtil.set(key, 1);  
49 - result = 1; 50 + Long result = redisTemplate.opsForValue().increment(key, 1L);
  51 + if (result != null && result > Integer.MAX_VALUE) {
  52 + redisTemplate.opsForValue().set(key, 1);
  53 + result = 1L;
50 } 54 }
51 return result; 55 return result;
52 } 56 }
@@ -55,10 +59,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -55,10 +59,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
55 public Long getSN(String method) { 59 public Long getSN(String method) {
56 String key = VideoManagerConstants.SIP_SN_PREFIX + userSetting.getServerId() + "_" + method; 60 String key = VideoManagerConstants.SIP_SN_PREFIX + userSetting.getServerId() + "_" + method;
57 61
58 - long result = RedisUtil.incr(key, 1L);  
59 - if (result > Integer.MAX_VALUE) {  
60 - RedisUtil.set(key, 1);  
61 - result = 1; 62 + Long result = redisTemplate.opsForValue().increment(key, 1L);
  63 + if (result != null && result > Integer.MAX_VALUE) {
  64 + redisTemplate.opsForValue().set(key, 1);
  65 + result = 1L;
62 } 66 }
63 return result; 67 return result;
64 } 68 }
@@ -66,61 +70,58 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -66,61 +70,58 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
66 @Override 70 @Override
67 public void resetAllCSEQ() { 71 public void resetAllCSEQ() {
68 String scanKey = VideoManagerConstants.SIP_CSEQ_PREFIX + userSetting.getServerId() + "_*"; 72 String scanKey = VideoManagerConstants.SIP_CSEQ_PREFIX + userSetting.getServerId() + "_*";
69 - List<Object> keys = RedisUtil.scan(scanKey); 73 + List<Object> keys = RedisUtil.scan(redisTemplate, scanKey);
70 for (Object o : keys) { 74 for (Object o : keys) {
71 String key = (String) o; 75 String key = (String) o;
72 - RedisUtil.set(key, 1); 76 + redisTemplate.opsForValue().set(key, 1);
73 } 77 }
74 } 78 }
75 79
76 @Override 80 @Override
77 public void resetAllSN() { 81 public void resetAllSN() {
78 String scanKey = VideoManagerConstants.SIP_SN_PREFIX + userSetting.getServerId() + "_*"; 82 String scanKey = VideoManagerConstants.SIP_SN_PREFIX + userSetting.getServerId() + "_*";
79 - List<Object> keys = RedisUtil.scan(scanKey); 83 + List<Object> keys = RedisUtil.scan(redisTemplate, scanKey);
80 for (Object o : keys) { 84 for (Object o : keys) {
81 String key = (String) o; 85 String key = (String) o;
82 - RedisUtil.set(key, 1); 86 + redisTemplate.opsForValue().set(key, 1);
83 } 87 }
84 } 88 }
85 89
86 /** 90 /**
87 * 开始播放时将流存入redis 91 * 开始播放时将流存入redis
88 - *  
89 - * @return  
90 */ 92 */
91 @Override 93 @Override
92 public boolean startPlay(StreamInfo stream) { 94 public boolean startPlay(StreamInfo stream) {
93 95
94 - return RedisUtil.set(String.format("%S_%s_%s_%s_%s_%s", VideoManagerConstants.PLAYER_PREFIX, userSetting.getServerId(), 96 + redisTemplate.opsForValue().set(String.format("%S_%s_%s_%s_%s_%s", VideoManagerConstants.PLAYER_PREFIX, userSetting.getServerId(),
95 stream.getMediaServerId(), stream.getStream(), stream.getDeviceID(), stream.getChannelId()), 97 stream.getMediaServerId(), stream.getStream(), stream.getDeviceID(), stream.getChannelId()),
96 stream); 98 stream);
  99 + return true;
97 } 100 }
98 101
99 /** 102 /**
100 * 停止播放时从redis删除 103 * 停止播放时从redis删除
101 - *  
102 - * @return  
103 */ 104 */
104 @Override 105 @Override
105 public boolean stopPlay(StreamInfo streamInfo) { 106 public boolean stopPlay(StreamInfo streamInfo) {
106 if (streamInfo == null) { 107 if (streamInfo == null) {
107 return false; 108 return false;
108 } 109 }
109 - return RedisUtil.del(String.format("%S_%s_%s_%s_%s_%s", VideoManagerConstants.PLAYER_PREFIX, 110 + Boolean result = redisTemplate.delete(String.format("%S_%s_%s_%s_%s_%s", VideoManagerConstants.PLAYER_PREFIX,
110 userSetting.getServerId(), 111 userSetting.getServerId(),
111 streamInfo.getMediaServerId(), 112 streamInfo.getMediaServerId(),
112 streamInfo.getStream(), 113 streamInfo.getStream(),
113 streamInfo.getDeviceID(), 114 streamInfo.getDeviceID(),
114 streamInfo.getChannelId())); 115 streamInfo.getChannelId()));
  116 + return result != null && result;
115 } 117 }
116 118
117 /** 119 /**
118 * 查询播放列表 120 * 查询播放列表
119 - * @return  
120 */ 121 */
121 @Override 122 @Override
122 public StreamInfo queryPlay(StreamInfo streamInfo) { 123 public StreamInfo queryPlay(StreamInfo streamInfo) {
123 - return (StreamInfo)RedisUtil.get(String.format("%S_%s_%s_%s_%s_%s", 124 + return (StreamInfo)redisTemplate.opsForValue().get(String.format("%S_%s_%s_%s_%s_%s",
124 VideoManagerConstants.PLAYER_PREFIX, 125 VideoManagerConstants.PLAYER_PREFIX,
125 userSetting.getServerId(), 126 userSetting.getServerId(),
126 streamInfo.getMediaServerId(), 127 streamInfo.getMediaServerId(),
@@ -130,35 +131,35 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -130,35 +131,35 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
130 } 131 }
131 @Override 132 @Override
132 public StreamInfo queryPlayByStreamId(String streamId) { 133 public StreamInfo queryPlayByStreamId(String streamId) {
133 - List<Object> playLeys = RedisUtil.scan(String.format("%S_%s_*_%s_*", VideoManagerConstants.PLAYER_PREFIX, userSetting.getServerId(), streamId));  
134 - if (playLeys == null || playLeys.size() == 0) { 134 + List<Object> playLeys = RedisUtil.scan(redisTemplate, String.format("%S_%s_*_%s_*", VideoManagerConstants.PLAYER_PREFIX, userSetting.getServerId(), streamId));
  135 + if (playLeys.size() == 0) {
135 return null; 136 return null;
136 } 137 }
137 - return (StreamInfo)RedisUtil.get(playLeys.get(0).toString()); 138 + return (StreamInfo)redisTemplate.opsForValue().get(playLeys.get(0).toString());
138 } 139 }
139 140
140 @Override 141 @Override
141 public StreamInfo queryPlayByDevice(String deviceId, String channelId) { 142 public StreamInfo queryPlayByDevice(String deviceId, String channelId) {
142 - List<Object> playLeys = RedisUtil.scan(String.format("%S_%s_*_*_%s_%s", VideoManagerConstants.PLAYER_PREFIX, 143 + List<Object> playLeys = RedisUtil.scan(redisTemplate, String.format("%S_%s_*_*_%s_%s", VideoManagerConstants.PLAYER_PREFIX,
143 userSetting.getServerId(), 144 userSetting.getServerId(),
144 deviceId, 145 deviceId,
145 channelId)); 146 channelId));
146 - if (playLeys == null || playLeys.size() == 0) { 147 + if (playLeys.size() == 0) {
147 return null; 148 return null;
148 } 149 }
149 - return (StreamInfo)RedisUtil.get(playLeys.get(0).toString()); 150 + return (StreamInfo)redisTemplate.opsForValue().get(playLeys.get(0).toString());
150 } 151 }
151 152
152 @Override 153 @Override
153 public Map<String, StreamInfo> queryPlayByDeviceId(String deviceId) { 154 public Map<String, StreamInfo> queryPlayByDeviceId(String deviceId) {
154 Map<String, StreamInfo> streamInfos = new HashMap<>(); 155 Map<String, StreamInfo> streamInfos = new HashMap<>();
155 - List<Object> players = RedisUtil.scan(String.format("%S_%s_*_*_%s_*", VideoManagerConstants.PLAYER_PREFIX, userSetting.getServerId(),deviceId)); 156 + List<Object> players = RedisUtil.scan(redisTemplate, String.format("%S_%s_*_*_%s_*", VideoManagerConstants.PLAYER_PREFIX, userSetting.getServerId(),deviceId));
156 if (players.size() == 0) { 157 if (players.size() == 0) {
157 return streamInfos; 158 return streamInfos;
158 } 159 }
159 for (Object player : players) { 160 for (Object player : players) {
160 String key = (String) player; 161 String key = (String) player;
161 - StreamInfo streamInfo = JsonUtil.redisJsonToObject(key, StreamInfo.class); 162 + StreamInfo streamInfo = JsonUtil.redisJsonToObject(redisTemplate, key, StreamInfo.class);
162 if (Objects.isNull(streamInfo)) { 163 if (Objects.isNull(streamInfo)) {
163 continue; 164 continue;
164 } 165 }
@@ -170,23 +171,23 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -170,23 +171,23 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
170 171
171 @Override 172 @Override
172 public boolean startPlayback(StreamInfo stream, String callId) { 173 public boolean startPlayback(StreamInfo stream, String callId) {
173 - return RedisUtil.set(String.format("%S_%s_%s_%s_%s_%s_%s", VideoManagerConstants.PLAY_BLACK_PREFIX, 174 + redisTemplate.opsForValue().set(String.format("%S_%s_%s_%s_%s_%s_%s", VideoManagerConstants.PLAY_BLACK_PREFIX,
174 userSetting.getServerId(), stream.getMediaServerId(), stream.getDeviceID(), stream.getChannelId(), stream.getStream(), callId), stream); 175 userSetting.getServerId(), stream.getMediaServerId(), stream.getDeviceID(), stream.getChannelId(), stream.getStream(), callId), stream);
  176 + return true;
175 } 177 }
176 178
177 @Override 179 @Override
178 public boolean startDownload(StreamInfo stream, String callId) { 180 public boolean startDownload(StreamInfo stream, String callId) {
179 - boolean result;  
180 String key=String.format("%S_%s_%s_%s_%s_%s_%s", VideoManagerConstants.DOWNLOAD_PREFIX, 181 String key=String.format("%S_%s_%s_%s_%s_%s_%s", VideoManagerConstants.DOWNLOAD_PREFIX,
181 userSetting.getServerId(), stream.getMediaServerId(), stream.getDeviceID(), stream.getChannelId(), stream.getStream(), callId); 182 userSetting.getServerId(), stream.getMediaServerId(), stream.getDeviceID(), stream.getChannelId(), stream.getStream(), callId);
182 if (stream.getProgress() == 1) { 183 if (stream.getProgress() == 1) {
183 logger.debug("添加下载缓存==已完成下载=》{}",key); 184 logger.debug("添加下载缓存==已完成下载=》{}",key);
184 - result = RedisUtil.set(key, stream); 185 + redisTemplate.opsForValue().set(key, stream);
185 }else { 186 }else {
186 logger.debug("添加下载缓存==未完成下载=》{}",key); 187 logger.debug("添加下载缓存==未完成下载=》{}",key);
187 - result = RedisUtil.set(key, stream, 60*60); 188 + redisTemplate.opsForValue().set(key, stream, 60*60);
188 } 189 }
189 - return result; 190 + return true;
190 } 191 }
191 @Override 192 @Override
192 public boolean stopDownload(String deviceId, String channelId, String stream, String callId) { 193 public boolean stopDownload(String deviceId, String channelId, String stream, String callId) {
@@ -215,10 +216,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -215,10 +216,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
215 stream, 216 stream,
216 callId 217 callId
217 ); 218 );
218 - List<Object> scan = RedisUtil.scan(key); 219 + List<Object> scan = RedisUtil.scan(redisTemplate, key);
219 if (scan.size() > 0) { 220 if (scan.size() > 0) {
220 for (Object keyObj : scan) { 221 for (Object keyObj : scan) {
221 - RedisUtil.del((String) keyObj); 222 + redisTemplate.delete(keyObj);
222 } 223 }
223 } 224 }
224 return true; 225 return true;
@@ -251,10 +252,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -251,10 +252,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
251 stream, 252 stream,
252 callId 253 callId
253 ); 254 );
254 - List<Object> scan = RedisUtil.scan(key); 255 + List<Object> scan = RedisUtil.scan(redisTemplate, key);
255 if (scan.size() > 0) { 256 if (scan.size() > 0) {
256 for (Object keyObj : scan) { 257 for (Object keyObj : scan) {
257 - RedisUtil.del((String) keyObj); 258 + redisTemplate.delete(keyObj);
258 } 259 }
259 } 260 }
260 return true; 261 return true;
@@ -284,9 +285,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -284,9 +285,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
284 stream, 285 stream,
285 callId 286 callId
286 ); 287 );
287 - List<Object> streamInfoScan = RedisUtil.scan(key); 288 + List<Object> streamInfoScan = RedisUtil.scan(redisTemplate, key);
288 if (streamInfoScan.size() > 0) { 289 if (streamInfoScan.size() > 0) {
289 - return (StreamInfo) RedisUtil.get((String) streamInfoScan.get(0)); 290 + return (StreamInfo) redisTemplate.opsForValue().get(streamInfoScan.get(0));
290 }else { 291 }else {
291 return null; 292 return null;
292 } 293 }
@@ -316,59 +317,59 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -316,59 +317,59 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
316 stream, 317 stream,
317 callId 318 callId
318 ); 319 );
319 - List<Object> streamInfoScan = RedisUtil.scan(key); 320 + List<Object> streamInfoScan = RedisUtil.scan(redisTemplate, key);
320 return (String) streamInfoScan.get(0); 321 return (String) streamInfoScan.get(0);
321 } 322 }
322 323
323 @Override 324 @Override
324 public void updatePlatformCatchInfo(ParentPlatformCatch parentPlatformCatch) { 325 public void updatePlatformCatchInfo(ParentPlatformCatch parentPlatformCatch) {
325 String key = VideoManagerConstants.PLATFORM_CATCH_PREFIX + userSetting.getServerId() + "_" + parentPlatformCatch.getId(); 326 String key = VideoManagerConstants.PLATFORM_CATCH_PREFIX + userSetting.getServerId() + "_" + parentPlatformCatch.getId();
326 - RedisUtil.set(key, parentPlatformCatch); 327 + redisTemplate.opsForValue().set(key, parentPlatformCatch);
327 } 328 }
328 329
329 @Override 330 @Override
330 public ParentPlatformCatch queryPlatformCatchInfo(String platformGbId) { 331 public ParentPlatformCatch queryPlatformCatchInfo(String platformGbId) {
331 - return (ParentPlatformCatch)RedisUtil.get(VideoManagerConstants.PLATFORM_CATCH_PREFIX + userSetting.getServerId() + "_" + platformGbId); 332 + return (ParentPlatformCatch)redisTemplate.opsForValue().get(VideoManagerConstants.PLATFORM_CATCH_PREFIX + userSetting.getServerId() + "_" + platformGbId);
332 } 333 }
333 334
334 @Override 335 @Override
335 public void delPlatformCatchInfo(String platformGbId) { 336 public void delPlatformCatchInfo(String platformGbId) {
336 - RedisUtil.del(VideoManagerConstants.PLATFORM_CATCH_PREFIX + userSetting.getServerId() + "_" + platformGbId); 337 + redisTemplate.delete(VideoManagerConstants.PLATFORM_CATCH_PREFIX + userSetting.getServerId() + "_" + platformGbId);
337 } 338 }
338 339
339 @Override 340 @Override
340 public void delPlatformKeepalive(String platformGbId) { 341 public void delPlatformKeepalive(String platformGbId) {
341 - RedisUtil.del(VideoManagerConstants.PLATFORM_KEEPALIVE_PREFIX + userSetting.getServerId() + "_" + platformGbId); 342 + redisTemplate.delete(VideoManagerConstants.PLATFORM_KEEPALIVE_PREFIX + userSetting.getServerId() + "_" + platformGbId);
342 } 343 }
343 344
344 @Override 345 @Override
345 public void delPlatformRegister(String platformGbId) { 346 public void delPlatformRegister(String platformGbId) {
346 - RedisUtil.del(VideoManagerConstants.PLATFORM_REGISTER_PREFIX + userSetting.getServerId() + "_" + platformGbId); 347 + redisTemplate.delete(VideoManagerConstants.PLATFORM_REGISTER_PREFIX + userSetting.getServerId() + "_" + platformGbId);
347 } 348 }
348 349
349 350
350 @Override 351 @Override
351 public void updatePlatformRegisterInfo(String callId, PlatformRegisterInfo platformRegisterInfo) { 352 public void updatePlatformRegisterInfo(String callId, PlatformRegisterInfo platformRegisterInfo) {
352 String key = VideoManagerConstants.PLATFORM_REGISTER_INFO_PREFIX + userSetting.getServerId() + "_" + callId; 353 String key = VideoManagerConstants.PLATFORM_REGISTER_INFO_PREFIX + userSetting.getServerId() + "_" + callId;
353 - RedisUtil.set(key, platformRegisterInfo, 30); 354 + redisTemplate.opsForValue().set(key, platformRegisterInfo, 30);
354 } 355 }
355 356
356 357
357 @Override 358 @Override
358 public PlatformRegisterInfo queryPlatformRegisterInfo(String callId) { 359 public PlatformRegisterInfo queryPlatformRegisterInfo(String callId) {
359 - return (PlatformRegisterInfo)RedisUtil.get(VideoManagerConstants.PLATFORM_REGISTER_INFO_PREFIX + userSetting.getServerId() + "_" + callId); 360 + return (PlatformRegisterInfo)redisTemplate.opsForValue().get(VideoManagerConstants.PLATFORM_REGISTER_INFO_PREFIX + userSetting.getServerId() + "_" + callId);
360 } 361 }
361 362
362 @Override 363 @Override
363 public void delPlatformRegisterInfo(String callId) { 364 public void delPlatformRegisterInfo(String callId) {
364 - RedisUtil.del(VideoManagerConstants.PLATFORM_REGISTER_INFO_PREFIX + userSetting.getServerId() + "_" + callId); 365 + redisTemplate.delete(VideoManagerConstants.PLATFORM_REGISTER_INFO_PREFIX + userSetting.getServerId() + "_" + callId);
365 } 366 }
366 367
367 @Override 368 @Override
368 public void cleanPlatformRegisterInfos() { 369 public void cleanPlatformRegisterInfos() {
369 - List regInfos = RedisUtil.scan(VideoManagerConstants.PLATFORM_REGISTER_INFO_PREFIX + userSetting.getServerId() + "_" + "*"); 370 + List regInfos = RedisUtil.scan(redisTemplate, VideoManagerConstants.PLATFORM_REGISTER_INFO_PREFIX + userSetting.getServerId() + "_" + "*");
370 for (Object key : regInfos) { 371 for (Object key : regInfos) {
371 - RedisUtil.del(key.toString()); 372 + redisTemplate.delete(key.toString());
372 } 373 }
373 } 374 }
374 375
@@ -382,7 +383,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -382,7 +383,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
382 + sendRtpItem.getChannelId() + "_" 383 + sendRtpItem.getChannelId() + "_"
383 + sendRtpItem.getStream() + "_" 384 + sendRtpItem.getStream() + "_"
384 + sendRtpItem.getCallId(); 385 + sendRtpItem.getCallId();
385 - RedisUtil.set(key, sendRtpItem); 386 + redisTemplate.opsForValue().set(key, sendRtpItem);
386 } 387 }
387 388
388 @Override 389 @Override
@@ -405,9 +406,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -405,9 +406,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
405 + channelId + "_" 406 + channelId + "_"
406 + streamId + "_" 407 + streamId + "_"
407 + callId; 408 + callId;
408 - List<Object> scan = RedisUtil.scan(key); 409 + List<Object> scan = RedisUtil.scan(redisTemplate, key);
409 if (scan.size() > 0) { 410 if (scan.size() > 0) {
410 - return (SendRtpItem)RedisUtil.get((String)scan.get(0)); 411 + return (SendRtpItem)redisTemplate.opsForValue().get(scan.get(0));
411 }else { 412 }else {
412 return null; 413 return null;
413 } 414 }
@@ -427,10 +428,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -427,10 +428,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
427 + channelId + "_" 428 + channelId + "_"
428 + streamId + "_" 429 + streamId + "_"
429 + callId; 430 + callId;
430 - List<Object> scan = RedisUtil.scan(key); 431 + List<Object> scan = RedisUtil.scan(redisTemplate, key);
431 List<SendRtpItem> result = new ArrayList<>(); 432 List<SendRtpItem> result = new ArrayList<>();
432 for (Object o : scan) { 433 for (Object o : scan) {
433 - result.add((SendRtpItem) RedisUtil.get((String) o)); 434 + result.add((SendRtpItem) redisTemplate.opsForValue().get(o));
434 } 435 }
435 return result; 436 return result;
436 } 437 }
@@ -449,10 +450,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -449,10 +450,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
449 + channelId + "_" 450 + channelId + "_"
450 + stream + "_" 451 + stream + "_"
451 + callId; 452 + callId;
452 - List<Object> scan = RedisUtil.scan(key); 453 + List<Object> scan = RedisUtil.scan(redisTemplate, key);
453 List<SendRtpItem> result = new ArrayList<>(); 454 List<SendRtpItem> result = new ArrayList<>();
454 for (Object o : scan) { 455 for (Object o : scan) {
455 - result.add((SendRtpItem) RedisUtil.get((String) o)); 456 + result.add((SendRtpItem) redisTemplate.opsForValue().get(o));
456 } 457 }
457 return result; 458 return result;
458 } 459 }
@@ -465,12 +466,12 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -465,12 +466,12 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
465 String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX 466 String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX
466 + userSetting.getServerId() + "_*_" 467 + userSetting.getServerId() + "_*_"
467 + platformGbId + "_*" + "_*" + "_*"; 468 + platformGbId + "_*" + "_*" + "_*";
468 - List<Object> queryResult = RedisUtil.scan(key); 469 + List<Object> queryResult = RedisUtil.scan(redisTemplate, key);
469 List<SendRtpItem> result= new ArrayList<>(); 470 List<SendRtpItem> result= new ArrayList<>();
470 471
471 for (Object o : queryResult) { 472 for (Object o : queryResult) {
472 String keyItem = (String) o; 473 String keyItem = (String) o;
473 - result.add((SendRtpItem) RedisUtil.get(keyItem)); 474 + result.add((SendRtpItem) redisTemplate.opsForValue().get(keyItem));
474 } 475 }
475 476
476 return result; 477 return result;
@@ -478,8 +479,6 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -478,8 +479,6 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
478 479
479 /** 480 /**
480 * 删除RTP推送信息缓存 481 * 删除RTP推送信息缓存
481 - * @param platformGbId  
482 - * @param channelId  
483 */ 482 */
484 @Override 483 @Override
485 public void deleteSendRTPServer(String platformGbId, String channelId, String callId, String streamId) { 484 public void deleteSendRTPServer(String platformGbId, String channelId, String callId, String streamId) {
@@ -495,10 +494,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -495,10 +494,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
495 + channelId + "_" 494 + channelId + "_"
496 + streamId + "_" 495 + streamId + "_"
497 + callId; 496 + callId;
498 - List<Object> scan = RedisUtil.scan(key); 497 + List<Object> scan = RedisUtil.scan(redisTemplate, key);
499 if (scan.size() > 0) { 498 if (scan.size() > 0) {
500 for (Object keyStr : scan) { 499 for (Object keyStr : scan) {
501 - RedisUtil.del((String)keyStr); 500 + redisTemplate.delete(keyStr);
502 } 501 }
503 } 502 }
504 } 503 }
@@ -507,12 +506,12 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -507,12 +506,12 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
507 public List<SendRtpItem> queryAllSendRTPServer() { 506 public List<SendRtpItem> queryAllSendRTPServer() {
508 String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX 507 String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX
509 + userSetting.getServerId() + "_*"; 508 + userSetting.getServerId() + "_*";
510 - List<Object> queryResult = RedisUtil.scan(key); 509 + List<Object> queryResult = RedisUtil.scan(redisTemplate, key);
511 List<SendRtpItem> result= new ArrayList<>(); 510 List<SendRtpItem> result= new ArrayList<>();
512 511
513 for (Object o : queryResult) { 512 for (Object o : queryResult) {
514 String keyItem = (String) o; 513 String keyItem = (String) o;
515 - result.add((SendRtpItem) RedisUtil.get(keyItem)); 514 + result.add((SendRtpItem) redisTemplate.opsForValue().get(keyItem));
516 } 515 }
517 516
518 return result; 517 return result;
@@ -520,47 +519,42 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -520,47 +519,42 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
520 519
521 /** 520 /**
522 * 查询某个通道是否存在上级点播(RTP推送) 521 * 查询某个通道是否存在上级点播(RTP推送)
523 - * @param channelId  
524 */ 522 */
525 @Override 523 @Override
526 public boolean isChannelSendingRTP(String channelId) { 524 public boolean isChannelSendingRTP(String channelId) {
527 String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX 525 String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX
528 + userSetting.getServerId() + "_*_*_" 526 + userSetting.getServerId() + "_*_*_"
529 + channelId + "*_" + "*_"; 527 + channelId + "*_" + "*_";
530 - List<Object> RtpStreams = RedisUtil.scan(key);  
531 - if (RtpStreams.size() > 0) {  
532 - return true;  
533 - } else {  
534 - return false;  
535 - } 528 + List<Object> RtpStreams = RedisUtil.scan(redisTemplate, key);
  529 + return RtpStreams.size() > 0;
536 } 530 }
537 531
538 @Override 532 @Override
539 public void clearCatchByDeviceId(String deviceId) { 533 public void clearCatchByDeviceId(String deviceId) {
540 - List<Object> playLeys = RedisUtil.scan(String.format("%S_%s_*_%s_*", VideoManagerConstants.PLAYER_PREFIX, 534 + List<Object> playLeys = RedisUtil.scan(redisTemplate, String.format("%S_%s_*_%s_*", VideoManagerConstants.PLAYER_PREFIX,
541 userSetting.getServerId(), 535 userSetting.getServerId(),
542 deviceId)); 536 deviceId));
543 if (playLeys.size() > 0) { 537 if (playLeys.size() > 0) {
544 for (Object key : playLeys) { 538 for (Object key : playLeys) {
545 - RedisUtil.del(key.toString()); 539 + redisTemplate.delete(key.toString());
546 } 540 }
547 } 541 }
548 542
549 - List<Object> playBackers = RedisUtil.scan(String.format("%S_%s_*_%s_*_*_*", VideoManagerConstants.PLAY_BLACK_PREFIX, 543 + List<Object> playBackers = RedisUtil.scan(redisTemplate, String.format("%S_%s_*_%s_*_*_*", VideoManagerConstants.PLAY_BLACK_PREFIX,
550 userSetting.getServerId(), 544 userSetting.getServerId(),
551 deviceId)); 545 deviceId));
552 if (playBackers.size() > 0) { 546 if (playBackers.size() > 0) {
553 for (Object key : playBackers) { 547 for (Object key : playBackers) {
554 - RedisUtil.del(key.toString()); 548 + redisTemplate.delete(key.toString());
555 } 549 }
556 } 550 }
557 551
558 - List<Object> deviceCache = RedisUtil.scan(String.format("%S%s_%s", VideoManagerConstants.DEVICE_PREFIX, 552 + List<Object> deviceCache = RedisUtil.scan(redisTemplate, String.format("%S%s_%s", VideoManagerConstants.DEVICE_PREFIX,
559 userSetting.getServerId(), 553 userSetting.getServerId(),
560 deviceId)); 554 deviceId));
561 if (deviceCache.size() > 0) { 555 if (deviceCache.size() > 0) {
562 for (Object key : deviceCache) { 556 for (Object key : deviceCache) {
563 - RedisUtil.del(key.toString()); 557 + redisTemplate.delete(key.toString());
564 } 558 }
565 } 559 }
566 } 560 }
@@ -568,14 +562,14 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -568,14 +562,14 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
568 @Override 562 @Override
569 public void updateWVPInfo(JSONObject jsonObject, int time) { 563 public void updateWVPInfo(JSONObject jsonObject, int time) {
570 String key = VideoManagerConstants.WVP_SERVER_PREFIX + userSetting.getServerId(); 564 String key = VideoManagerConstants.WVP_SERVER_PREFIX + userSetting.getServerId();
571 - RedisUtil.set(key, jsonObject, time); 565 + redisTemplate.opsForValue().set(key, jsonObject, time);
572 } 566 }
573 567
574 @Override 568 @Override
575 public void sendStreamChangeMsg(String type, JSONObject jsonObject) { 569 public void sendStreamChangeMsg(String type, JSONObject jsonObject) {
576 String key = VideoManagerConstants.WVP_MSG_STREAM_CHANGE_PREFIX + type; 570 String key = VideoManagerConstants.WVP_MSG_STREAM_CHANGE_PREFIX + type;
577 logger.info("[redis 流变化事件] {}: {}", key, jsonObject.toString()); 571 logger.info("[redis 流变化事件] {}: {}", key, jsonObject.toString());
578 - RedisUtil.convertAndSend(key, jsonObject); 572 + redisTemplate.convertAndSend(key, jsonObject);
579 } 573 }
580 574
581 @Override 575 @Override
@@ -586,13 +580,13 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -586,13 +580,13 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
586 if (streamAuthorityInfo != null) { 580 if (streamAuthorityInfo != null) {
587 onStreamChangedHookParam.setCallId(streamAuthorityInfo.getCallId()); 581 onStreamChangedHookParam.setCallId(streamAuthorityInfo.getCallId());
588 } 582 }
589 - RedisUtil.set(key, onStreamChangedHookParam); 583 + redisTemplate.opsForValue().set(key, onStreamChangedHookParam);
590 } 584 }
591 585
592 @Override 586 @Override
593 public void removeStream(String mediaServerId, String type, String app, String streamId) { 587 public void removeStream(String mediaServerId, String type, String app, String streamId) {
594 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_" + type + "_" + app + "_" + streamId + "_" + mediaServerId; 588 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_" + type + "_" + app + "_" + streamId + "_" + mediaServerId;
595 - RedisUtil.del(key); 589 + redisTemplate.delete(key);
596 } 590 }
597 591
598 @Override 592 @Override
@@ -619,9 +613,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -619,9 +613,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
619 stream, 613 stream,
620 callId 614 callId
621 ); 615 );
622 - List<Object> streamInfoScan = RedisUtil.scan2(key); 616 + List<Object> streamInfoScan = RedisUtil.scan(redisTemplate, key);
623 if (streamInfoScan.size() > 0) { 617 if (streamInfoScan.size() > 0) {
624 - return (StreamInfo) RedisUtil.get((String) streamInfoScan.get(0)); 618 + return (StreamInfo) redisTemplate.opsForValue().get(streamInfoScan.get(0));
625 }else { 619 }else {
626 return null; 620 return null;
627 } 621 }
@@ -630,15 +624,15 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -630,15 +624,15 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
630 @Override 624 @Override
631 public ThirdPartyGB queryMemberNoGBId(String queryKey) { 625 public ThirdPartyGB queryMemberNoGBId(String queryKey) {
632 String key = VideoManagerConstants.WVP_STREAM_GB_ID_PREFIX + queryKey; 626 String key = VideoManagerConstants.WVP_STREAM_GB_ID_PREFIX + queryKey;
633 - return JsonUtil.redisJsonToObject(key, ThirdPartyGB.class); 627 + return JsonUtil.redisJsonToObject(redisTemplate, key, ThirdPartyGB.class);
634 } 628 }
635 629
636 @Override 630 @Override
637 public void removeStream(String mediaServerId, String type) { 631 public void removeStream(String mediaServerId, String type) {
638 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_" + type + "_*_*_" + mediaServerId; 632 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_" + type + "_*_*_" + mediaServerId;
639 - List<Object> streams = RedisUtil.scan(key); 633 + List<Object> streams = RedisUtil.scan(redisTemplate, key);
640 for (Object stream : streams) { 634 for (Object stream : streams) {
641 - RedisUtil.del((String) stream); 635 + redisTemplate.delete(stream);
642 } 636 }
643 } 637 }
644 638
@@ -646,9 +640,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -646,9 +640,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
646 public List<OnStreamChangedHookParam> getStreams(String mediaServerId, String type) { 640 public List<OnStreamChangedHookParam> getStreams(String mediaServerId, String type) {
647 List<OnStreamChangedHookParam> result = new ArrayList<>(); 641 List<OnStreamChangedHookParam> result = new ArrayList<>();
648 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_" + type + "_*_*_" + mediaServerId; 642 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_" + type + "_*_*_" + mediaServerId;
649 - List<Object> streams = RedisUtil.scan(key); 643 + List<Object> streams = RedisUtil.scan(redisTemplate, key);
650 for (Object stream : streams) { 644 for (Object stream : streams) {
651 - OnStreamChangedHookParam onStreamChangedHookParam = (OnStreamChangedHookParam)RedisUtil.get((String) stream); 645 + OnStreamChangedHookParam onStreamChangedHookParam = (OnStreamChangedHookParam)redisTemplate.opsForValue().get(stream);
652 result.add(onStreamChangedHookParam); 646 result.add(onStreamChangedHookParam);
653 } 647 }
654 return result; 648 return result;
@@ -657,21 +651,21 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -657,21 +651,21 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
657 @Override 651 @Override
658 public void updateDevice(Device device) { 652 public void updateDevice(Device device) {
659 String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + device.getDeviceId(); 653 String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + device.getDeviceId();
660 - RedisUtil.set(key, device); 654 + redisTemplate.opsForValue().set(key, device);
661 } 655 }
662 656
663 @Override 657 @Override
664 public void removeDevice(String deviceId) { 658 public void removeDevice(String deviceId) {
665 String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + deviceId; 659 String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + deviceId;
666 - RedisUtil.del(key); 660 + redisTemplate.delete(key);
667 } 661 }
668 662
669 @Override 663 @Override
670 public void removeAllDevice() { 664 public void removeAllDevice() {
671 String scanKey = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_*"; 665 String scanKey = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_*";
672 - List<Object> keys = RedisUtil.scan(scanKey); 666 + List<Object> keys = RedisUtil.scan(redisTemplate, scanKey);
673 for (Object key : keys) { 667 for (Object key : keys) {
674 - RedisUtil.del((String) key); 668 + redisTemplate.delete(key);
675 } 669 }
676 } 670 }
677 671
@@ -679,12 +673,12 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -679,12 +673,12 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
679 public List<Device> getAllDevices() { 673 public List<Device> getAllDevices() {
680 String scanKey = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_*"; 674 String scanKey = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_*";
681 List<Device> result = new ArrayList<>(); 675 List<Device> result = new ArrayList<>();
682 - List<Object> keys = RedisUtil.scan(scanKey); 676 + List<Object> keys = RedisUtil.scan(redisTemplate, scanKey);
683 for (Object o : keys) { 677 for (Object o : keys) {
684 String key = (String) o; 678 String key = (String) o;
685 - Device device = JsonUtil.redisJsonToObject(key, Device.class); 679 + Device device = JsonUtil.redisJsonToObject(redisTemplate, key, Device.class);
686 if (Objects.nonNull(device)) { // 只取没有存过得 680 if (Objects.nonNull(device)) { // 只取没有存过得
687 - result.add(JsonUtil.redisJsonToObject(key, Device.class)); 681 + result.add(JsonUtil.redisJsonToObject(redisTemplate, key, Device.class));
688 } 682 }
689 } 683 }
690 684
@@ -694,31 +688,31 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -694,31 +688,31 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
694 @Override 688 @Override
695 public Device getDevice(String deviceId) { 689 public Device getDevice(String deviceId) {
696 String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + deviceId; 690 String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + deviceId;
697 - return JsonUtil.redisJsonToObject(key, Device.class); 691 + return JsonUtil.redisJsonToObject(redisTemplate, key, Device.class);
698 } 692 }
699 693
700 @Override 694 @Override
701 public void updateGpsMsgInfo(GPSMsgInfo gpsMsgInfo) { 695 public void updateGpsMsgInfo(GPSMsgInfo gpsMsgInfo) {
702 String key = VideoManagerConstants.WVP_STREAM_GPS_MSG_PREFIX + userSetting.getServerId() + "_" + gpsMsgInfo.getId(); 696 String key = VideoManagerConstants.WVP_STREAM_GPS_MSG_PREFIX + userSetting.getServerId() + "_" + gpsMsgInfo.getId();
703 - RedisUtil.set(key, gpsMsgInfo, 60); // 默认GPS消息保存1分钟 697 + redisTemplate.opsForValue().set(key, gpsMsgInfo, 60); // 默认GPS消息保存1分钟
704 } 698 }
705 699
706 @Override 700 @Override
707 public GPSMsgInfo getGpsMsgInfo(String gbId) { 701 public GPSMsgInfo getGpsMsgInfo(String gbId) {
708 String key = VideoManagerConstants.WVP_STREAM_GPS_MSG_PREFIX + userSetting.getServerId() + "_" + gbId; 702 String key = VideoManagerConstants.WVP_STREAM_GPS_MSG_PREFIX + userSetting.getServerId() + "_" + gbId;
709 - return JsonUtil.redisJsonToObject(key, GPSMsgInfo.class); 703 + return JsonUtil.redisJsonToObject(redisTemplate, key, GPSMsgInfo.class);
710 } 704 }
711 705
712 @Override 706 @Override
713 public List<GPSMsgInfo> getAllGpsMsgInfo() { 707 public List<GPSMsgInfo> getAllGpsMsgInfo() {
714 String scanKey = VideoManagerConstants.WVP_STREAM_GPS_MSG_PREFIX + userSetting.getServerId() + "_*"; 708 String scanKey = VideoManagerConstants.WVP_STREAM_GPS_MSG_PREFIX + userSetting.getServerId() + "_*";
715 List<GPSMsgInfo> result = new ArrayList<>(); 709 List<GPSMsgInfo> result = new ArrayList<>();
716 - List<Object> keys = RedisUtil.scan(scanKey); 710 + List<Object> keys = RedisUtil.scan(redisTemplate, scanKey);
717 for (Object o : keys) { 711 for (Object o : keys) {
718 String key = (String) o; 712 String key = (String) o;
719 - GPSMsgInfo gpsMsgInfo = JsonUtil.redisJsonToObject(key, GPSMsgInfo.class); 713 + GPSMsgInfo gpsMsgInfo = JsonUtil.redisJsonToObject(redisTemplate, key, GPSMsgInfo.class);
720 if (Objects.nonNull(gpsMsgInfo) && !gpsMsgInfo.isStored()) { // 只取没有存过得 714 if (Objects.nonNull(gpsMsgInfo) && !gpsMsgInfo.isStored()) { // 只取没有存过得
721 - result.add(JsonUtil.redisJsonToObject(key, GPSMsgInfo.class)); 715 + result.add(JsonUtil.redisJsonToObject(redisTemplate, key, GPSMsgInfo.class));
722 } 716 }
723 } 717 }
724 718
@@ -728,19 +722,19 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -728,19 +722,19 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
728 @Override 722 @Override
729 public void updateStreamAuthorityInfo(String app, String stream, StreamAuthorityInfo streamAuthorityInfo) { 723 public void updateStreamAuthorityInfo(String app, String stream, StreamAuthorityInfo streamAuthorityInfo) {
730 String key = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_" + app+ "_" + stream; 724 String key = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_" + app+ "_" + stream;
731 - RedisUtil.set(key, streamAuthorityInfo); 725 + redisTemplate.opsForValue().set(key, streamAuthorityInfo);
732 } 726 }
733 727
734 @Override 728 @Override
735 public void removeStreamAuthorityInfo(String app, String stream) { 729 public void removeStreamAuthorityInfo(String app, String stream) {
736 String key = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_" + app+ "_" + stream ; 730 String key = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_" + app+ "_" + stream ;
737 - RedisUtil.del(key); 731 + redisTemplate.delete(key);
738 } 732 }
739 733
740 @Override 734 @Override
741 public StreamAuthorityInfo getStreamAuthorityInfo(String app, String stream) { 735 public StreamAuthorityInfo getStreamAuthorityInfo(String app, String stream) {
742 String key = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_" + app+ "_" + stream ; 736 String key = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_" + app+ "_" + stream ;
743 - return JsonUtil.redisJsonToObject(key, StreamAuthorityInfo.class); 737 + return JsonUtil.redisJsonToObject(redisTemplate, key, StreamAuthorityInfo.class);
744 738
745 } 739 }
746 740
@@ -748,10 +742,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -748,10 +742,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
748 public List<StreamAuthorityInfo> getAllStreamAuthorityInfo() { 742 public List<StreamAuthorityInfo> getAllStreamAuthorityInfo() {
749 String scanKey = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_*_*" ; 743 String scanKey = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_*_*" ;
750 List<StreamAuthorityInfo> result = new ArrayList<>(); 744 List<StreamAuthorityInfo> result = new ArrayList<>();
751 - List<Object> keys = RedisUtil.scan(scanKey); 745 + List<Object> keys = RedisUtil.scan(redisTemplate, scanKey);
752 for (Object o : keys) { 746 for (Object o : keys) {
753 String key = (String) o; 747 String key = (String) o;
754 - result.add(JsonUtil.redisJsonToObject(key, StreamAuthorityInfo.class)); 748 + result.add(JsonUtil.redisJsonToObject(redisTemplate, key, StreamAuthorityInfo.class));
755 } 749 }
756 return result; 750 return result;
757 } 751 }
@@ -762,10 +756,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -762,10 +756,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
762 String scanKey = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_*_" + app + "_" + streamId + "_" + mediaServerId; 756 String scanKey = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_*_" + app + "_" + streamId + "_" + mediaServerId;
763 757
764 OnStreamChangedHookParam result = null; 758 OnStreamChangedHookParam result = null;
765 - List<Object> keys = RedisUtil.scan(scanKey); 759 + List<Object> keys = RedisUtil.scan(redisTemplate, scanKey);
766 if (keys.size() > 0) { 760 if (keys.size() > 0) {
767 String key = (String) keys.get(0); 761 String key = (String) keys.get(0);
768 - result = JsonUtil.redisJsonToObject(key, OnStreamChangedHookParam.class); 762 + result = JsonUtil.redisJsonToObject(redisTemplate, key, OnStreamChangedHookParam.class);
769 } 763 }
770 764
771 return result; 765 return result;
@@ -776,12 +770,13 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -776,12 +770,13 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
776 String key = VideoManagerConstants.SYSTEM_INFO_CPU_PREFIX + userSetting.getServerId(); 770 String key = VideoManagerConstants.SYSTEM_INFO_CPU_PREFIX + userSetting.getServerId();
777 Map<String, String> infoMap = new HashMap<>(); 771 Map<String, String> infoMap = new HashMap<>();
778 infoMap.put("time", DateUtil.getNow()); 772 infoMap.put("time", DateUtil.getNow());
779 - infoMap.put("data", cpuInfo + "");  
780 - RedisUtil.lSet(key, infoMap); 773 + infoMap.put("data", String.valueOf(cpuInfo));
  774 + redisTemplate.opsForList().rightPush(key, infoMap);
781 // 每秒一个,最多只存30个 775 // 每秒一个,最多只存30个
782 - if (RedisUtil.lGetListSize(key) >= 30) {  
783 - for (int i = 0; i < RedisUtil.lGetListSize(key) - 30; i++) {  
784 - RedisUtil.lLeftPop(key); 776 + Long size = redisTemplate.opsForList().size(key);
  777 + if (size != null && size >= 30) {
  778 + for (int i = 0; i < size - 30; i++) {
  779 + redisTemplate.opsForList().leftPop(key);
785 } 780 }
786 } 781 }
787 } 782 }
@@ -791,12 +786,13 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -791,12 +786,13 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
791 String key = VideoManagerConstants.SYSTEM_INFO_MEM_PREFIX + userSetting.getServerId(); 786 String key = VideoManagerConstants.SYSTEM_INFO_MEM_PREFIX + userSetting.getServerId();
792 Map<String, String> infoMap = new HashMap<>(); 787 Map<String, String> infoMap = new HashMap<>();
793 infoMap.put("time", DateUtil.getNow()); 788 infoMap.put("time", DateUtil.getNow());
794 - infoMap.put("data", memInfo + "");  
795 - RedisUtil.lSet(key, infoMap); 789 + infoMap.put("data", String.valueOf(memInfo));
  790 + redisTemplate.opsForList().rightPush(key, infoMap);
796 // 每秒一个,最多只存30个 791 // 每秒一个,最多只存30个
797 - if (RedisUtil.lGetListSize(key) >= 30) {  
798 - for (int i = 0; i < RedisUtil.lGetListSize(key) - 30; i++) {  
799 - RedisUtil.lLeftPop(key); 792 + Long size = redisTemplate.opsForList().size(key);
  793 + if (size != null && size >= 30) {
  794 + for (int i = 0; i < size - 30; i++) {
  795 + redisTemplate.opsForList().leftPop(key);
800 } 796 }
801 } 797 }
802 } 798 }
@@ -809,11 +805,12 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -809,11 +805,12 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
809 for (String netKey : networkInterfaces.keySet()) { 805 for (String netKey : networkInterfaces.keySet()) {
810 infoMap.put(netKey, networkInterfaces.get(netKey)); 806 infoMap.put(netKey, networkInterfaces.get(netKey));
811 } 807 }
812 - RedisUtil.lSet(key, infoMap); 808 + redisTemplate.opsForList().rightPush(key, infoMap);
813 // 每秒一个,最多只存30个 809 // 每秒一个,最多只存30个
814 - if (RedisUtil.lGetListSize(key) >= 30) {  
815 - for (int i = 0; i < RedisUtil.lGetListSize(key) - 30; i++) {  
816 - RedisUtil.lLeftPop(key); 810 + Long size = redisTemplate.opsForList().size(key);
  811 + if (size != null && size >= 30) {
  812 + for (int i = 0; i < size - 30; i++) {
  813 + redisTemplate.opsForList().leftPop(key);
817 } 814 }
818 } 815 }
819 } 816 }
@@ -822,7 +819,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -822,7 +819,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
822 public void addDiskInfo(List<Map<String, Object>> diskInfo) { 819 public void addDiskInfo(List<Map<String, Object>> diskInfo) {
823 820
824 String key = VideoManagerConstants.SYSTEM_INFO_DISK_PREFIX + userSetting.getServerId(); 821 String key = VideoManagerConstants.SYSTEM_INFO_DISK_PREFIX + userSetting.getServerId();
825 - RedisUtil.set(key, diskInfo); 822 + redisTemplate.opsForValue().set(key, diskInfo);
826 } 823 }
827 824
828 @Override 825 @Override
@@ -832,11 +829,11 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -832,11 +829,11 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
832 String netKey = VideoManagerConstants.SYSTEM_INFO_NET_PREFIX + userSetting.getServerId(); 829 String netKey = VideoManagerConstants.SYSTEM_INFO_NET_PREFIX + userSetting.getServerId();
833 String diskKey = VideoManagerConstants.SYSTEM_INFO_DISK_PREFIX + userSetting.getServerId(); 830 String diskKey = VideoManagerConstants.SYSTEM_INFO_DISK_PREFIX + userSetting.getServerId();
834 SystemAllInfo systemAllInfo = new SystemAllInfo(); 831 SystemAllInfo systemAllInfo = new SystemAllInfo();
835 - systemAllInfo.setCpu(RedisUtil.lGet(cpuKey, 0, -1));  
836 - systemAllInfo.setMem(RedisUtil.lGet(memKey, 0, -1));  
837 - systemAllInfo.setNet(RedisUtil.lGet(netKey, 0, -1)); 832 + systemAllInfo.setCpu(redisTemplate.opsForList().range(cpuKey, 0, -1));
  833 + systemAllInfo.setMem(redisTemplate.opsForList().range(memKey, 0, -1));
  834 + systemAllInfo.setNet(redisTemplate.opsForList().range(netKey, 0, -1));
838 835
839 - systemAllInfo.setDisk(RedisUtil.get(diskKey)); 836 + systemAllInfo.setDisk(redisTemplate.opsForValue().get(diskKey));
840 systemAllInfo.setNetTotal(SystemInfoUtils.getNetworkTotal()); 837 systemAllInfo.setNetTotal(SystemInfoUtils.getNetworkTotal());
841 return systemAllInfo; 838 return systemAllInfo;
842 } 839 }
@@ -845,14 +842,14 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -845,14 +842,14 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
845 public void sendMobilePositionMsg(JSONObject jsonObject) { 842 public void sendMobilePositionMsg(JSONObject jsonObject) {
846 String key = VideoManagerConstants.VM_MSG_SUBSCRIBE_MOBILE_POSITION; 843 String key = VideoManagerConstants.VM_MSG_SUBSCRIBE_MOBILE_POSITION;
847 logger.info("[redis发送通知] 移动位置 {}: {}", key, jsonObject.toString()); 844 logger.info("[redis发送通知] 移动位置 {}: {}", key, jsonObject.toString());
848 - RedisUtil.convertAndSend(key, jsonObject); 845 + redisTemplate.convertAndSend(key, jsonObject);
849 } 846 }
850 847
851 @Override 848 @Override
852 public void sendStreamPushRequestedMsg(MessageForPushChannel msg) { 849 public void sendStreamPushRequestedMsg(MessageForPushChannel msg) {
853 String key = VideoManagerConstants.VM_MSG_STREAM_PUSH_REQUESTED; 850 String key = VideoManagerConstants.VM_MSG_STREAM_PUSH_REQUESTED;
854 logger.info("[redis发送通知] 推流被请求 {}: {}/{}", key, msg.getApp(), msg.getStream()); 851 logger.info("[redis发送通知] 推流被请求 {}: {}/{}", key, msg.getApp(), msg.getStream());
855 - RedisUtil.convertAndSend(key, (JSONObject)JSON.toJSON(msg)); 852 + redisTemplate.convertAndSend(key, JSON.toJSON(msg));
856 } 853 }
857 854
858 @Override 855 @Override
@@ -860,7 +857,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -860,7 +857,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
860 // 此消息用于对接第三方服务下级来的消息内容 857 // 此消息用于对接第三方服务下级来的消息内容
861 String key = VideoManagerConstants.VM_MSG_SUBSCRIBE_ALARM; 858 String key = VideoManagerConstants.VM_MSG_SUBSCRIBE_ALARM;
862 logger.info("[redis发送通知] 报警{}: {}", key, JSON.toJSON(msg)); 859 logger.info("[redis发送通知] 报警{}: {}", key, JSON.toJSON(msg));
863 - RedisUtil.convertAndSend(key, (JSONObject)JSON.toJSON(msg)); 860 + redisTemplate.convertAndSend(key, JSON.toJSON(msg));
864 } 861 }
865 862
866 @Override 863 @Override
@@ -875,19 +872,19 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -875,19 +872,19 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
875 logger.info("[redis通知]获取所有推流设备的状态"); 872 logger.info("[redis通知]获取所有推流设备的状态");
876 JSONObject jsonObject = new JSONObject(); 873 JSONObject jsonObject = new JSONObject();
877 jsonObject.put(key, key); 874 jsonObject.put(key, key);
878 - RedisUtil.convertAndSend(key, jsonObject); 875 + redisTemplate.convertAndSend(key, jsonObject);
879 } 876 }
880 877
881 @Override 878 @Override
882 public int getPushStreamCount(String id) { 879 public int getPushStreamCount(String id) {
883 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_PUSH_*_*_" + id; 880 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_PUSH_*_*_" + id;
884 - return RedisUtil.scan(key).size(); 881 + return RedisUtil.scan(redisTemplate, key).size();
885 } 882 }
886 883
887 @Override 884 @Override
888 public int getProxyStreamCount(String id) { 885 public int getProxyStreamCount(String id) {
889 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_PULL_*_*_" + id; 886 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_PULL_*_*_" + id;
890 - return RedisUtil.scan(key).size(); 887 + return RedisUtil.scan(redisTemplate, key).size();
891 } 888 }
892 889
893 @Override 890 @Override
@@ -896,13 +893,13 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -896,13 +893,13 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
896 String playBackKey = VideoManagerConstants.PLAY_BLACK_PREFIX + "_" + userSetting.getServerId() + "_" + id + "_*"; 893 String playBackKey = VideoManagerConstants.PLAY_BLACK_PREFIX + "_" + userSetting.getServerId() + "_" + id + "_*";
897 String downloadKey = VideoManagerConstants.DOWNLOAD_PREFIX + "_" + userSetting.getServerId() + "_" + id + "_*"; 894 String downloadKey = VideoManagerConstants.DOWNLOAD_PREFIX + "_" + userSetting.getServerId() + "_" + id + "_*";
898 895
899 - return RedisUtil.scan(playKey).size() + RedisUtil.scan(playBackKey).size() + RedisUtil.scan(downloadKey).size(); 896 + return RedisUtil.scan(redisTemplate, playKey).size() + RedisUtil.scan(redisTemplate, playBackKey).size() + RedisUtil.scan(redisTemplate, downloadKey).size();
900 } 897 }
901 898
902 @Override 899 @Override
903 public int getGbSendCount(String id) { 900 public int getGbSendCount(String id) {
904 String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX 901 String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX
905 + userSetting.getServerId() + "_*_" + id + "_*"; 902 + userSetting.getServerId() + "_*_" + id + "_*";
906 - return RedisUtil.scan(key).size(); 903 + return RedisUtil.scan(redisTemplate, key).size();
907 } 904 }
908 } 905 }
src/main/java/com/genersoft/iot/vmp/utils/JsonUtil.java
1 package com.genersoft.iot.vmp.utils; 1 package com.genersoft.iot.vmp.utils;
2 2
3 -import com.alibaba.fastjson2.JSON;  
4 -import com.alibaba.fastjson2.JSONObject;  
5 -import com.genersoft.iot.vmp.utils.redis.RedisUtil; 3 +import org.springframework.data.redis.core.RedisTemplate;
6 4
7 import java.util.Objects; 5 import java.util.Objects;
8 6
@@ -26,8 +24,8 @@ public final class JsonUtil { @@ -26,8 +24,8 @@ public final class JsonUtil {
26 * @param <T> 24 * @param <T>
27 * @return result type 25 * @return result type
28 */ 26 */
29 - public static <T> T redisJsonToObject(String key, Class<T> clazz) {  
30 - Object jsonObject = RedisUtil.get(key); 27 + public static <T> T redisJsonToObject(RedisTemplate<Object, Object> redisTemplate, String key, Class<T> clazz) {
  28 + Object jsonObject = redisTemplate.opsForValue().get(key);
31 if (Objects.isNull(jsonObject)) { 29 if (Objects.isNull(jsonObject)) {
32 return null; 30 return null;
33 } 31 }
src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java
1 package com.genersoft.iot.vmp.utils.redis; 1 package com.genersoft.iot.vmp.utils.redis;
2 2
3 -import com.alibaba.fastjson2.JSONObject;  
4 -import com.genersoft.iot.vmp.utils.SpringBeanFactory;  
5 -import org.springframework.data.redis.core.*;  
6 -import org.springframework.util.CollectionUtils; 3 +import org.springframework.data.redis.core.Cursor;
  4 +import org.springframework.data.redis.core.RedisCallback;
  5 +import org.springframework.data.redis.core.RedisTemplate;
  6 +import org.springframework.data.redis.core.ScanOptions;
7 7
8 -import java.util.*;  
9 -import java.util.concurrent.TimeUnit; 8 +import java.util.ArrayList;
  9 +import java.util.HashSet;
  10 +import java.util.List;
  11 +import java.util.Set;
10 12
11 -/** 13 +/**
12 * Redis工具类 14 * Redis工具类
  15 + *
13 * @author swwheihei 16 * @author swwheihei
14 * @date 2020年5月6日 下午8:27:29 17 * @date 2020年5月6日 下午8:27:29
15 */ 18 */
16 @SuppressWarnings(value = {"rawtypes", "unchecked"}) 19 @SuppressWarnings(value = {"rawtypes", "unchecked"})
17 public class RedisUtil { 20 public class RedisUtil {
18 21
19 - private static RedisTemplate redisTemplate;  
20 -  
21 - static {  
22 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
23 - }  
24 -  
25 - /**  
26 - * 指定缓存失效时间  
27 - * @param key 键  
28 - * @param time 时间(秒)  
29 - * @return true / false  
30 - */  
31 - public static boolean expire(String key, long time) {  
32 - if (redisTemplate == null) {  
33 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
34 - }  
35 - try {  
36 - if (time > 0) {  
37 - redisTemplate.expire(key, time, TimeUnit.SECONDS);  
38 - }  
39 - return true;  
40 - } catch (Exception e) {  
41 - e.printStackTrace();  
42 - return false;  
43 - }  
44 - }  
45 -  
46 - /**  
47 - * 根据 key 获取过期时间  
48 - * @param key 键  
49 - */  
50 - public static long getExpire(String key) {  
51 - if (redisTemplate == null) {  
52 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
53 - }  
54 - return redisTemplate.getExpire(key, TimeUnit.SECONDS);  
55 - }  
56 -  
57 - /**  
58 - * 判断 key 是否存在  
59 - * @param key 键  
60 - * @return true / false  
61 - */  
62 - public static boolean hasKey(String key) {  
63 - if (redisTemplate == null) {  
64 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
65 - }  
66 - try {  
67 - return redisTemplate.hasKey(key);  
68 - } catch (Exception e) {  
69 - e.printStackTrace();  
70 - return false;  
71 - }  
72 - }  
73 -  
74 - /**  
75 - * 删除缓存  
76 - * @SuppressWarnings("unchecked") 忽略类型转换警告  
77 - * @param key 键(一个或者多个)  
78 - */  
79 - public static boolean del(String... key) {  
80 - if (redisTemplate == null) {  
81 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
82 - }  
83 - try {  
84 - if (key != null && key.length > 0) {  
85 - if (key.length == 1) {  
86 - redisTemplate.delete(key[0]);  
87 - } else {  
88 -// 传入一个 Collection<String> 集合  
89 - redisTemplate.delete(CollectionUtils.arrayToList(key));  
90 - }  
91 - }  
92 - return true;  
93 - } catch (Exception e) {  
94 - e.printStackTrace();  
95 - return false;  
96 - }  
97 - }  
98 -  
99 -// ============================== String ==============================  
100 -  
101 - /**  
102 - * 普通缓存获取  
103 - * @param key 键  
104 - * @return 值  
105 - */  
106 - public static Object get(String key) {  
107 - if (redisTemplate == null) {  
108 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
109 - }  
110 - return key == null ? null : redisTemplate.opsForValue().get(key);  
111 - }  
112 -  
113 - /**  
114 - * 普通缓存放入  
115 - * @param key 键  
116 - * @param value 值  
117 - * @return true / false  
118 - */  
119 - public static boolean set(String key, Object value) {  
120 - if (redisTemplate == null) {  
121 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
122 - }  
123 - try {  
124 - redisTemplate.opsForValue().set(key, value);  
125 - return true;  
126 - } catch (Exception e) {  
127 - e.printStackTrace();  
128 - return false;  
129 - }  
130 - }  
131 -  
132 - /**  
133 - * 普通缓存放入并设置时间  
134 - * @param key 键  
135 - * @param value 值  
136 - * @param time 时间(秒),如果 time < 0 则设置无限时间  
137 - * @return true / false  
138 - */  
139 - public static boolean set(String key, Object value, long time) {  
140 - if (redisTemplate == null) {  
141 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
142 - }  
143 - try {  
144 - if (time > 0) {  
145 - redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);  
146 - } else {  
147 - set(key, value);  
148 - }  
149 - return true;  
150 - } catch (Exception e) {  
151 - e.printStackTrace();  
152 - return false;  
153 - }  
154 - }  
155 -  
156 - /**  
157 - * 递增  
158 - * @param key 键  
159 - * @param delta 递增大小  
160 - * @return  
161 - */  
162 - public static long incr(String key, long delta) {  
163 - if (redisTemplate == null) {  
164 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
165 - }  
166 - if (delta < 0) {  
167 - throw new RuntimeException("递增因子必须大于 0");  
168 - }  
169 - return redisTemplate.opsForValue().increment(key, delta);  
170 - }  
171 -  
172 - /**  
173 - * 递减  
174 - * @param key 键  
175 - * @param delta 递减大小  
176 - * @return  
177 - */  
178 - public static long decr(String key, long delta) {  
179 - if (redisTemplate == null) {  
180 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
181 - }  
182 - if (delta < 0) {  
183 - throw new RuntimeException("递减因子必须大于 0");  
184 - }  
185 - return redisTemplate.opsForValue().increment(key, delta);  
186 - }  
187 -  
188 -// ============================== Map ==============================  
189 -  
190 - /**  
191 - * HashGet  
192 - * @param key 键(no null)  
193 - * @param item 项(no null)  
194 - * @return 值  
195 - */  
196 - public static Object hget(String key, String item) {  
197 - if (redisTemplate == null) {  
198 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
199 - }  
200 - return redisTemplate.opsForHash().get(key, item);  
201 - }  
202 -  
203 - /**  
204 - * 获取 key 对应的 map  
205 - * @param key 键(no null)  
206 - * @return 对应的多个键值  
207 - */  
208 - public static Map<Object, Object> hmget(String key) {  
209 - if (redisTemplate == null) {  
210 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
211 - }  
212 - return redisTemplate.opsForHash().entries(key);  
213 - }  
214 -  
215 - /**  
216 - * HashSet  
217 - * @param key 键  
218 - * @param map 值  
219 - * @return true / false  
220 - */  
221 - public static boolean hmset(String key, Map<Object, Object> map) {  
222 - if (redisTemplate == null) {  
223 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
224 - }  
225 - try {  
226 - redisTemplate.opsForHash().putAll(key, map);  
227 - return true;  
228 - } catch (Exception e) {  
229 - e.printStackTrace();  
230 - return false;  
231 - }  
232 - }  
233 -  
234 - /**  
235 - * HashSet 并设置时间  
236 - * @param key 键  
237 - * @param map 值  
238 - * @param time 时间  
239 - * @return true / false  
240 - */  
241 - public static boolean hmset(String key, Map<?, ?> map, long time) {  
242 - if (redisTemplate == null) {  
243 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
244 - }  
245 - try {  
246 - redisTemplate.opsForHash().putAll(key, map);  
247 - if (time > 0) {  
248 - expire(key, time);  
249 - }  
250 - return true;  
251 - } catch (Exception e) {  
252 - e.printStackTrace();  
253 - return false;  
254 - }  
255 - }  
256 -  
257 - /**  
258 - * 向一张 Hash表 中放入数据,如不存在则创建  
259 - * @param key 键  
260 - * @param item 项  
261 - * @param value 值  
262 - * @return true / false  
263 - */  
264 - public static boolean hset(String key, String item, Object value) {  
265 - if (redisTemplate == null) {  
266 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
267 - }  
268 - try {  
269 - redisTemplate.opsForHash().put(key, item, value);  
270 - return true;  
271 - } catch (Exception e) {  
272 - e.printStackTrace();  
273 - return false;  
274 - }  
275 - }  
276 -  
277 - /**  
278 - * 向一张 Hash表 中放入数据,并设置时间,如不存在则创建  
279 - * @param key 键  
280 - * @param item 项  
281 - * @param value 值  
282 - * @param time 时间(如果原来的 Hash表 设置了时间,这里会覆盖)  
283 - * @return true / false  
284 - */  
285 - public static boolean hset(String key, String item, Object value, long time) {  
286 - if (redisTemplate == null) {  
287 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
288 - }  
289 - try {  
290 - redisTemplate.opsForHash().put(key, item, value);  
291 - if (time > 0) {  
292 - expire(key, time);  
293 - }  
294 - return true;  
295 - } catch (Exception e) {  
296 - e.printStackTrace();  
297 - return false;  
298 - }  
299 - }  
300 -  
301 - /**  
302 - * 删除 Hash表 中的值  
303 - * @param key 键  
304 - * @param item 项(可以多个,no null)  
305 - */  
306 - public static void hdel(String key, Object... item) {  
307 - if (redisTemplate == null) {  
308 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
309 - }  
310 - redisTemplate.opsForHash().delete(key, item);  
311 - }  
312 -  
313 - /**  
314 - * 判断 Hash表 中是否有该键的值  
315 - * @param key 键(no null)  
316 - * @param item 值(no null)  
317 - * @return true / false  
318 - */  
319 - public static boolean hHasKey(String key, String item) {  
320 - if (redisTemplate == null) {  
321 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
322 - }  
323 - return redisTemplate.opsForHash().hasKey(key, item);  
324 - }  
325 -  
326 - /**  
327 - * Hash递增,如果不存在则创建一个,并把新增的值返回  
328 - * @param key 键  
329 - * @param item 项  
330 - * @param by 递增大小 > 0  
331 - * @return  
332 - */  
333 - public static Double hincr(String key, String item, Double by) {  
334 - if (redisTemplate == null) {  
335 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
336 - }  
337 - return redisTemplate.opsForHash().increment(key, item, by);  
338 - }  
339 -  
340 - /**  
341 - * Hash递减  
342 - * @param key 键  
343 - * @param item 项  
344 - * @param by 递减大小  
345 - * @return  
346 - */  
347 - public static Double hdecr(String key, String item, Double by) {  
348 - if (redisTemplate == null) {  
349 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
350 - }  
351 - return redisTemplate.opsForHash().increment(key, item, -by);  
352 - }  
353 -  
354 -// ============================== Set ==============================  
355 -  
356 - /**  
357 - * 根据 key 获取 set 中的所有值  
358 - * @param key 键  
359 - * @return 值  
360 - */  
361 - public static Set<Object> sGet(String key) {  
362 - if (redisTemplate == null) {  
363 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
364 - }  
365 - try {  
366 - return redisTemplate.opsForSet().members(key);  
367 - } catch (Exception e) {  
368 - e.printStackTrace();  
369 - return null;  
370 - }  
371 - }  
372 -  
373 - /**  
374 - * 从键为 key 的 set 中,根据 value 查询是否存在  
375 - * @param key 键  
376 - * @param value 值  
377 - * @return true / false  
378 - */  
379 - public static boolean sHasKey(String key, Object value) {  
380 - if (redisTemplate == null) {  
381 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
382 - }  
383 - try {  
384 - return redisTemplate.opsForSet().isMember(key, value);  
385 - } catch (Exception e) {  
386 - e.printStackTrace();  
387 - return false;  
388 - }  
389 - }  
390 -  
391 - /**  
392 - * 将数据放入 set缓存  
393 - * @param key 键值  
394 - * @param values 值(可以多个)  
395 - * @return 成功个数  
396 - */  
397 - public static long sSet(String key, Object... values) {  
398 - if (redisTemplate == null) {  
399 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
400 - }  
401 - try {  
402 - return redisTemplate.opsForSet().add(key, values);  
403 - } catch (Exception e) {  
404 - e.printStackTrace();  
405 - return 0;  
406 - }  
407 - }  
408 -  
409 - /**  
410 - * 将数据放入 set缓存,并设置时间  
411 - * @param key 键  
412 - * @param time 时间  
413 - * @param values 值(可以多个)  
414 - * @return 成功放入个数  
415 - */  
416 - public static long sSet(String key, long time, Object... values) {  
417 - if (redisTemplate == null) {  
418 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
419 - }  
420 - try {  
421 - long count = redisTemplate.opsForSet().add(key, values);  
422 - if (time > 0) {  
423 - expire(key, time);  
424 - }  
425 - return count;  
426 - } catch (Exception e) {  
427 - e.printStackTrace();  
428 - return 0;  
429 - }  
430 - }  
431 -  
432 - /**  
433 - * 获取 set缓存的长度  
434 - * @param key 键  
435 - * @return 长度  
436 - */  
437 - public static long sGetSetSize(String key) {  
438 - if (redisTemplate == null) {  
439 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
440 - }  
441 - try {  
442 - return redisTemplate.opsForSet().size(key);  
443 - } catch (Exception e) {  
444 - e.printStackTrace();  
445 - return 0;  
446 - }  
447 - }  
448 -  
449 - /**  
450 - * 移除 set缓存中,值为 value 的  
451 - * @param key 键  
452 - * @param values 值  
453 - * @return 成功移除个数  
454 - */  
455 - public static long setRemove(String key, Object... values) {  
456 - if (redisTemplate == null) {  
457 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
458 - }  
459 - try {  
460 - return redisTemplate.opsForSet().remove(key, values);  
461 - } catch (Exception e) {  
462 - e.printStackTrace();  
463 - return 0;  
464 - }  
465 - }  
466 -// ============================== ZSet ==============================  
467 -  
468 - /**  
469 - * 添加一个元素, zset与set最大的区别就是每个元素都有一个score,因此有个排序的辅助功能; zadd  
470 - *  
471 - * @param key  
472 - * @param value  
473 - * @param score  
474 - */  
475 - public static void zAdd(Object key, Object value, double score) {  
476 - if (redisTemplate == null) {  
477 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
478 - }  
479 - redisTemplate.opsForZSet().add(key, value, score);  
480 - }  
481 -  
482 - /**  
483 - * 删除元素 zrem  
484 - *  
485 - * @param key  
486 - * @param value  
487 - */  
488 - public static void zRemove(Object key, Object value) {  
489 - if (redisTemplate == null) {  
490 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
491 - }  
492 - redisTemplate.opsForZSet().remove(key, value);  
493 - }  
494 -  
495 - /**  
496 - * score的增加or减少 zincrby  
497 - *  
498 - * @param key  
499 - * @param value  
500 - * @param delta -1 表示减 1 表示加1  
501 - */  
502 - public static Double zIncrScore(Object key, Object value, double delta) {  
503 - if (redisTemplate == null) {  
504 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
505 - }  
506 - return redisTemplate.opsForZSet().incrementScore(key, value, delta);  
507 - }  
508 -  
509 - /**  
510 - * 查询value对应的score zscore  
511 - *  
512 - * @param key  
513 - * @param value  
514 - * @return  
515 - */  
516 - public static Double zScore(Object key, Object value) {  
517 - if (redisTemplate == null) {  
518 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
519 - }  
520 - return redisTemplate.opsForZSet().score(key, value);  
521 - }  
522 -  
523 - /**  
524 - * 判断value在zset中的排名 zrank  
525 - *  
526 - * @param key  
527 - * @param value  
528 - * @return  
529 - */  
530 - public static Long zRank(Object key, Object value) {  
531 - if (redisTemplate == null) {  
532 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
533 - }  
534 - return redisTemplate.opsForZSet().rank(key, value);  
535 - }  
536 -  
537 - /**  
538 - * 返回集合的长度  
539 - *  
540 - * @param key  
541 - * @return  
542 - */  
543 - public static Long zSize(Object key) {  
544 - if (redisTemplate == null) {  
545 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
546 - }  
547 - return redisTemplate.opsForZSet().zCard(key);  
548 - }  
549 -  
550 - /**  
551 - * 查询集合中指定顺序的值, 0 -1 表示获取全部的集合内容 zrange  
552 - *  
553 - * 返回有序的集合,score小的在前面  
554 - *  
555 - * @param key  
556 - * @param start  
557 - * @param end  
558 - * @return  
559 - */  
560 - public static Set<Object> zRange(Object key, int start, int end) {  
561 - if (redisTemplate == null) {  
562 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
563 - }  
564 - return redisTemplate.opsForZSet().range(key, start, end);  
565 - }  
566 - /**  
567 - * 查询集合中指定顺序的值和score,0, -1 表示获取全部的集合内容  
568 - *  
569 - * @param key  
570 - * @param start  
571 - * @param end  
572 - * @return  
573 - */  
574 - public static Set<ZSetOperations.TypedTuple<String>> zRangeWithScore(Object key, int start, int end) {  
575 - if (redisTemplate == null) {  
576 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
577 - }  
578 - return redisTemplate.opsForZSet().rangeWithScores(key, start, end);  
579 - }  
580 - /**  
581 - * 查询集合中指定顺序的值 zrevrange  
582 - *  
583 - * 返回有序的集合中,score大的在前面  
584 - *  
585 - * @param key  
586 - * @param start  
587 - * @param end  
588 - * @return  
589 - */  
590 - public static Set<String> zRevRange(Object key, int start, int end) {  
591 - if (redisTemplate == null) {  
592 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
593 - }  
594 - return redisTemplate.opsForZSet().reverseRange(key, start, end);  
595 - }  
596 - /**  
597 - * 根据score的值,来获取满足条件的集合 zrangebyscore  
598 - *  
599 - * @param key  
600 - * @param min  
601 - * @param max  
602 - * @return  
603 - */  
604 - public static Set<String> zSortRange(Object key, int min, int max) {  
605 - if (redisTemplate == null) {  
606 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
607 - }  
608 - return redisTemplate.opsForZSet().rangeByScore(key, min, max);  
609 - }  
610 -  
611 -  
612 -// ============================== List ==============================  
613 -  
614 - /**  
615 - * 获取 list缓存的内容  
616 - * @param key 键  
617 - * @param start 开始  
618 - * @param end 结束(0 到 -1 代表所有值)  
619 - * @return  
620 - */  
621 - public static List<Object> lGet(String key, long start, long end) {  
622 - if (redisTemplate == null) {  
623 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
624 - }  
625 - try {  
626 - return redisTemplate.opsForList().range(key, start, end);  
627 - } catch (Exception e) {  
628 - e.printStackTrace();  
629 - return null;  
630 - }  
631 - }  
632 -  
633 - /**  
634 - * 获取 list缓存的长度  
635 - * @param key 键  
636 - * @return 长度  
637 - */  
638 - public static long lGetListSize(String key) {  
639 - if (redisTemplate == null) {  
640 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
641 - }  
642 - try {  
643 - return redisTemplate.opsForList().size(key);  
644 - } catch (Exception e) {  
645 - e.printStackTrace();  
646 - return 0;  
647 - }  
648 - }  
649 -  
650 - /**  
651 - * 根据索引 index 获取键为 key 的 list 中的元素  
652 - * @param key 键  
653 - * @param index 索引  
654 - * 当 index >= 0 时 {0:表头, 1:第二个元素}  
655 - * 当 index < 0 时 {-1:表尾, -2:倒数第二个元素}  
656 - * @return 值  
657 - */  
658 - public static Object lGetIndex(String key, long index) {  
659 - if (redisTemplate == null) {  
660 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
661 - }  
662 - try {  
663 - return redisTemplate.opsForList().index(key, index);  
664 - } catch (Exception e) {  
665 - e.printStackTrace();  
666 - return null;  
667 - }  
668 - }  
669 -  
670 - /**  
671 - * 将值 value 插入键为 key 的 list 中,如果 list 不存在则创建空 list  
672 - * @param key 键  
673 - * @param value 值  
674 - * @return true / false  
675 - */  
676 - public static boolean lSet(String key, Object value) {  
677 - if (redisTemplate == null) {  
678 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
679 - }  
680 - try {  
681 - redisTemplate.opsForList().rightPush(key, value);  
682 - return true;  
683 - } catch (Exception e) {  
684 - e.printStackTrace();  
685 - return false;  
686 - }  
687 - }  
688 -  
689 - /**  
690 - * 将值 value 插入键为 key 的 list 中,并设置时间  
691 - * @param key 键  
692 - * @param value 值  
693 - * @param time 时间  
694 - * @return true / false  
695 - */  
696 - public static boolean lSet(String key, Object value, long time) {  
697 - if (redisTemplate == null) {  
698 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
699 - }  
700 - try {  
701 - redisTemplate.opsForList().rightPush(key, value);  
702 - if (time > 0) {  
703 - expire(key, time);  
704 - }  
705 - return true;  
706 - } catch (Exception e) {  
707 - e.printStackTrace();  
708 - return false;  
709 - }  
710 - }  
711 -  
712 - /**  
713 - * 将 values 插入键为 key 的 list 中  
714 - * @param key 键  
715 - * @param values 值  
716 - * @return true / false  
717 - */  
718 - public static boolean lSetList(String key, List<Object> values) {  
719 - if (redisTemplate == null) {  
720 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
721 - }  
722 - try {  
723 - redisTemplate.opsForList().rightPushAll(key, values);  
724 - return true;  
725 - } catch (Exception e) {  
726 - e.printStackTrace();  
727 - return false;  
728 - }  
729 - }  
730 -  
731 - /**  
732 - * 将 values 插入键为 key 的 list 中,并设置时间  
733 - * @param key 键  
734 - * @param values 值  
735 - * @param time 时间  
736 - * @return true / false  
737 - */  
738 - public static boolean lSetList(String key, List<Object> values, long time) {  
739 - if (redisTemplate == null) {  
740 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
741 - }  
742 - try {  
743 - redisTemplate.opsForList().rightPushAll(key, values);  
744 - if (time > 0) {  
745 - expire(key, time);  
746 - }  
747 - return true;  
748 - } catch (Exception e) {  
749 - e.printStackTrace();  
750 - return false;  
751 - }  
752 - }  
753 -  
754 - /**  
755 - * 根据索引 index 修改键为 key 的值  
756 - * @param key 键  
757 - * @param index 索引  
758 - * @param value 值  
759 - * @return true / false  
760 - */  
761 - public static boolean lUpdateIndex(String key, long index, Object value) {  
762 - if (redisTemplate == null) {  
763 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
764 - }  
765 - try {  
766 - redisTemplate.opsForList().set(key, index, value);  
767 - return true;  
768 - } catch (Exception e) {  
769 - e.printStackTrace();  
770 - return false;  
771 - }  
772 - }  
773 -  
774 - /**  
775 - * 在键为 key 的 list 中删除值为 value 的元素  
776 - * @param key 键  
777 - * @param count 如果 count == 0 则删除 list 中所有值为 value 的元素  
778 - * 如果 count > 0 则删除 list 中最左边那个值为 value 的元素  
779 - * 如果 count < 0 则删除 list 中最右边那个值为 value 的元素  
780 - * @param value  
781 - * @return  
782 - */  
783 - public static long lRemove(String key, long count, Object value) {  
784 - if (redisTemplate == null) {  
785 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
786 - }  
787 - try {  
788 - return redisTemplate.opsForList().remove(key, count, value);  
789 - } catch (Exception e) {  
790 - e.printStackTrace();  
791 - return 0;  
792 - }  
793 - }  
794 -  
795 - /**  
796 - * 在键为 key 的 list中移除第一个元素  
797 - * @param key 键  
798 - * @return  
799 - */  
800 - public static Object lLeftPop(String key) {  
801 - if (redisTemplate == null) {  
802 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
803 - }  
804 - return redisTemplate.opsForList().leftPop(key);  
805 - }  
806 -  
807 - /**  
808 - * 在键为 key 的 list中移除、最后一个元素  
809 - * @param key 键  
810 - * @return  
811 - */  
812 - public static Object lrightPop(String key) {  
813 - if (redisTemplate == null) {  
814 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
815 - }  
816 - return redisTemplate.opsForList().rightPop(key);  
817 - }  
818 -  
819 - /**  
820 - * 模糊查询  
821 - * @param key 键  
822 - * @return true / false  
823 - */  
824 - public static List<Object> keys(String key) {  
825 - if (redisTemplate == null) {  
826 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
827 - }  
828 - try {  
829 - Set<String> set = redisTemplate.keys(key);  
830 - return new ArrayList<>(set);  
831 - } catch (Exception e) {  
832 - e.printStackTrace();  
833 - return null;  
834 - }  
835 - }  
836 -  
837 -  
838 /** 22 /**
839 * 模糊查询 23 * 模糊查询
  24 + *
840 * @param query 查询参数 25 * @param query 查询参数
841 * @return 26 * @return
842 */ 27 */
843 -// public static List<Object> scan(String query) {  
844 -// List<Object> result = new ArrayList<>();  
845 -// try {  
846 -// Cursor<Map.Entry<Object,Object>> cursor = redisTemplate.opsForHash().scan("field",  
847 -// ScanOptions.scanOptions().match(query).count(1000).build());  
848 -// while (cursor.hasNext()) {  
849 -// Map.Entry<Object,Object> entry = cursor.next();  
850 -// result.add(entry.getKey());  
851 -// Object key = entry.getKey();  
852 -// Object valueSet = entry.getValue();  
853 -// }  
854 -// //关闭cursor  
855 -// cursor.close();  
856 -// } catch (Exception e) {  
857 -// e.printStackTrace();  
858 -// }  
859 -// return result;  
860 -// } 28 + public static List<Object> scan(RedisTemplate redisTemplate, String query) {
861 29
862 - /**  
863 - * 模糊查询  
864 - * @param query 查询参数  
865 - * @return  
866 - */  
867 - public static List<Object> scan(String query) {  
868 - if (redisTemplate == null) {  
869 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
870 - }  
871 Set<String> resultKeys = (Set<String>) redisTemplate.execute((RedisCallback<Set<String>>) connection -> { 30 Set<String> resultKeys = (Set<String>) redisTemplate.execute((RedisCallback<Set<String>>) connection -> {
872 ScanOptions scanOptions = ScanOptions.scanOptions().match("*" + query + "*").count(1000).build(); 31 ScanOptions scanOptions = ScanOptions.scanOptions().match("*" + query + "*").count(1000).build();
873 Cursor<byte[]> scan = connection.scan(scanOptions); 32 Cursor<byte[]> scan = connection.scan(scanOptions);
@@ -881,19 +40,7 @@ public class RedisUtil { @@ -881,19 +40,7 @@ public class RedisUtil {
881 40
882 return new ArrayList<>(resultKeys); 41 return new ArrayList<>(resultKeys);
883 } 42 }
884 - public static List<Object> scan2(String query) {  
885 - if (redisTemplate == null) {  
886 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
887 - }  
888 - Set<String> keys = redisTemplate.keys(query);  
889 - return new ArrayList<>(keys);  
890 - }  
891 - // ============================== 消息发送与订阅 ==============================  
892 - public static void convertAndSend(String channel, JSONObject msg) {  
893 - if (redisTemplate == null) {  
894 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
895 - }  
896 - redisTemplate.convertAndSend(channel, msg);  
897 - }  
898 -  
899 } 43 }
  44 +
  45 +
  46 +
src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil2.java 0 → 100644
  1 +//package com.genersoft.iot.vmp.utils.redis;
  2 +//
  3 +//import com.alibaba.fastjson2.JSONObject;
  4 +//import com.genersoft.iot.vmp.utils.SpringBeanFactory;
  5 +//import org.springframework.data.redis.core.*;
  6 +//import org.springframework.util.CollectionUtils;
  7 +//
  8 +//import java.util.*;
  9 +//import java.util.concurrent.TimeUnit;
  10 +//
  11 +///**
  12 +// * Redis工具类
  13 +// * @author swwheihei
  14 +// * @date 2020年5月6日 下午8:27:29
  15 +// */
  16 +//@SuppressWarnings(value = {"rawtypes", "unchecked"})
  17 +//public class RedisUtil2 {
  18 +//
  19 +// private static RedisTemplate redisTemplate;
  20 +//
  21 +// static {
  22 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  23 +// }
  24 +//
  25 +// /**
  26 +// * 指定缓存失效时间
  27 +// * @param key 键
  28 +// * @param time 时间(秒)
  29 +// * @return true / false
  30 +// */
  31 +// public static boolean expire(String key, long time) {
  32 +// if (redisTemplate == null) {
  33 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  34 +// }
  35 +// try {
  36 +// if (time > 0) {
  37 +// redisTemplate.expire(key, time, TimeUnit.SECONDS);
  38 +// }
  39 +// return true;
  40 +// } catch (Exception e) {
  41 +// e.printStackTrace();
  42 +// return false;
  43 +// }
  44 +// }
  45 +//
  46 +// /**
  47 +// * 根据 key 获取过期时间
  48 +// * @param key 键
  49 +// */
  50 +// public static long getExpire(String key) {
  51 +// if (redisTemplate == null) {
  52 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  53 +// }
  54 +// return redisTemplate.getExpire(key, TimeUnit.SECONDS);
  55 +// }
  56 +//
  57 +// /**
  58 +// * 判断 key 是否存在
  59 +// * @param key 键
  60 +// * @return true / false
  61 +// */
  62 +// public static boolean hasKey(String key) {
  63 +// if (redisTemplate == null) {
  64 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  65 +// }
  66 +// try {
  67 +// return redisTemplate.hasKey(key);
  68 +// } catch (Exception e) {
  69 +// e.printStackTrace();
  70 +// return false;
  71 +// }
  72 +// }
  73 +//
  74 +// /**
  75 +// * 删除缓存
  76 +// * @SuppressWarnings("unchecked") 忽略类型转换警告
  77 +// * @param key 键(一个或者多个)
  78 +// */
  79 +// public static boolean del(String... key) {
  80 +// if (redisTemplate == null) {
  81 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  82 +// }
  83 +// try {
  84 +// if (key != null && key.length > 0) {
  85 +// if (key.length == 1) {
  86 +// redisTemplate.delete(key[0]);
  87 +// } else {
  88 +//// 传入一个 Collection<String> 集合
  89 +// redisTemplate.delete(CollectionUtils.arrayToList(key));
  90 +// }
  91 +// }
  92 +// return true;
  93 +// } catch (Exception e) {
  94 +// e.printStackTrace();
  95 +// return false;
  96 +// }
  97 +// }
  98 +//
  99 +//// ============================== String ==============================
  100 +//
  101 +// /**
  102 +// * 普通缓存获取
  103 +// * @param key 键
  104 +// * @return 值
  105 +// */
  106 +// public static Object get(String key) {
  107 +// if (redisTemplate == null) {
  108 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  109 +// }
  110 +// return key == null ? null : redisTemplate.opsForValue().get(key);
  111 +// }
  112 +//
  113 +// /**
  114 +// * 普通缓存放入
  115 +// * @param key 键
  116 +// * @param value 值
  117 +// * @return true / false
  118 +// */
  119 +// public static boolean set(String key, Object value) {
  120 +// if (redisTemplate == null) {
  121 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  122 +// }
  123 +// try {
  124 +// redisTemplate.opsForValue().set(key, value);
  125 +// return true;
  126 +// } catch (Exception e) {
  127 +// e.printStackTrace();
  128 +// return false;
  129 +// }
  130 +// }
  131 +//
  132 +// /**
  133 +// * 普通缓存放入并设置时间
  134 +// * @param key 键
  135 +// * @param value 值
  136 +// * @param time 时间(秒),如果 time < 0 则设置无限时间
  137 +// * @return true / false
  138 +// */
  139 +// public static boolean set(String key, Object value, long time) {
  140 +// if (redisTemplate == null) {
  141 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  142 +// }
  143 +// try {
  144 +// if (time > 0) {
  145 +// redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
  146 +// } else {
  147 +// set(key, value);
  148 +// }
  149 +// return true;
  150 +// } catch (Exception e) {
  151 +// e.printStackTrace();
  152 +// return false;
  153 +// }
  154 +// }
  155 +//
  156 +// /**
  157 +// * 递增
  158 +// * @param key 键
  159 +// * @param delta 递增大小
  160 +// * @return
  161 +// */
  162 +// public static long incr(String key, long delta) {
  163 +// if (redisTemplate == null) {
  164 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  165 +// }
  166 +// if (delta < 0) {
  167 +// throw new RuntimeException("递增因子必须大于 0");
  168 +// }
  169 +// return redisTemplate.opsForValue().increment(key, delta);
  170 +// }
  171 +//
  172 +// /**
  173 +// * 递减
  174 +// * @param key 键
  175 +// * @param delta 递减大小
  176 +// * @return
  177 +// */
  178 +// public static long decr(String key, long delta) {
  179 +// if (redisTemplate == null) {
  180 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  181 +// }
  182 +// if (delta < 0) {
  183 +// throw new RuntimeException("递减因子必须大于 0");
  184 +// }
  185 +// return redisTemplate.opsForValue().increment(key, delta);
  186 +// }
  187 +//
  188 +//// ============================== Map ==============================
  189 +//
  190 +// /**
  191 +// * HashGet
  192 +// * @param key 键(no null)
  193 +// * @param item 项(no null)
  194 +// * @return 值
  195 +// */
  196 +// public static Object hget(String key, String item) {
  197 +// if (redisTemplate == null) {
  198 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  199 +// }
  200 +// return redisTemplate.opsForHash().get(key, item);
  201 +// }
  202 +//
  203 +// /**
  204 +// * 获取 key 对应的 map
  205 +// * @param key 键(no null)
  206 +// * @return 对应的多个键值
  207 +// */
  208 +// public static Map<Object, Object> hmget(String key) {
  209 +// if (redisTemplate == null) {
  210 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  211 +// }
  212 +// return redisTemplate.opsForHash().entries(key);
  213 +// }
  214 +//
  215 +// /**
  216 +// * HashSet
  217 +// * @param key 键
  218 +// * @param map 值
  219 +// * @return true / false
  220 +// */
  221 +// public static boolean hmset(String key, Map<Object, Object> map) {
  222 +// if (redisTemplate == null) {
  223 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  224 +// }
  225 +// try {
  226 +// redisTemplate.opsForHash().putAll(key, map);
  227 +// return true;
  228 +// } catch (Exception e) {
  229 +// e.printStackTrace();
  230 +// return false;
  231 +// }
  232 +// }
  233 +//
  234 +// /**
  235 +// * HashSet 并设置时间
  236 +// * @param key 键
  237 +// * @param map 值
  238 +// * @param time 时间
  239 +// * @return true / false
  240 +// */
  241 +// public static boolean hmset(String key, Map<?, ?> map, long time) {
  242 +// if (redisTemplate == null) {
  243 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  244 +// }
  245 +// try {
  246 +// redisTemplate.opsForHash().putAll(key, map);
  247 +// if (time > 0) {
  248 +// expire(key, time);
  249 +// }
  250 +// return true;
  251 +// } catch (Exception e) {
  252 +// e.printStackTrace();
  253 +// return false;
  254 +// }
  255 +// }
  256 +//
  257 +// /**
  258 +// * 向一张 Hash表 中放入数据,如不存在则创建
  259 +// * @param key 键
  260 +// * @param item 项
  261 +// * @param value 值
  262 +// * @return true / false
  263 +// */
  264 +// public static boolean hset(String key, String item, Object value) {
  265 +// if (redisTemplate == null) {
  266 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  267 +// }
  268 +// try {
  269 +// redisTemplate.opsForHash().put(key, item, value);
  270 +// return true;
  271 +// } catch (Exception e) {
  272 +// e.printStackTrace();
  273 +// return false;
  274 +// }
  275 +// }
  276 +//
  277 +// /**
  278 +// * 向一张 Hash表 中放入数据,并设置时间,如不存在则创建
  279 +// * @param key 键
  280 +// * @param item 项
  281 +// * @param value 值
  282 +// * @param time 时间(如果原来的 Hash表 设置了时间,这里会覆盖)
  283 +// * @return true / false
  284 +// */
  285 +// public static boolean hset(String key, String item, Object value, long time) {
  286 +// if (redisTemplate == null) {
  287 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  288 +// }
  289 +// try {
  290 +// redisTemplate.opsForHash().put(key, item, value);
  291 +// if (time > 0) {
  292 +// expire(key, time);
  293 +// }
  294 +// return true;
  295 +// } catch (Exception e) {
  296 +// e.printStackTrace();
  297 +// return false;
  298 +// }
  299 +// }
  300 +//
  301 +// /**
  302 +// * 删除 Hash表 中的值
  303 +// * @param key 键
  304 +// * @param item 项(可以多个,no null)
  305 +// */
  306 +// public static void hdel(String key, Object... item) {
  307 +// if (redisTemplate == null) {
  308 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  309 +// }
  310 +// redisTemplate.opsForHash().delete(key, item);
  311 +// }
  312 +//
  313 +// /**
  314 +// * 判断 Hash表 中是否有该键的值
  315 +// * @param key 键(no null)
  316 +// * @param item 值(no null)
  317 +// * @return true / false
  318 +// */
  319 +// public static boolean hHasKey(String key, String item) {
  320 +// if (redisTemplate == null) {
  321 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  322 +// }
  323 +// return redisTemplate.opsForHash().hasKey(key, item);
  324 +// }
  325 +//
  326 +// /**
  327 +// * Hash递增,如果不存在则创建一个,并把新增的值返回
  328 +// * @param key 键
  329 +// * @param item 项
  330 +// * @param by 递增大小 > 0
  331 +// * @return
  332 +// */
  333 +// public static Double hincr(String key, String item, Double by) {
  334 +// if (redisTemplate == null) {
  335 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  336 +// }
  337 +// return redisTemplate.opsForHash().increment(key, item, by);
  338 +// }
  339 +//
  340 +// /**
  341 +// * Hash递减
  342 +// * @param key 键
  343 +// * @param item 项
  344 +// * @param by 递减大小
  345 +// * @return
  346 +// */
  347 +// public static Double hdecr(String key, String item, Double by) {
  348 +// if (redisTemplate == null) {
  349 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  350 +// }
  351 +// return redisTemplate.opsForHash().increment(key, item, -by);
  352 +// }
  353 +//
  354 +//// ============================== Set ==============================
  355 +//
  356 +// /**
  357 +// * 根据 key 获取 set 中的所有值
  358 +// * @param key 键
  359 +// * @return 值
  360 +// */
  361 +// public static Set<Object> sGet(String key) {
  362 +// if (redisTemplate == null) {
  363 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  364 +// }
  365 +// try {
  366 +// return redisTemplate.opsForSet().members(key);
  367 +// } catch (Exception e) {
  368 +// e.printStackTrace();
  369 +// return null;
  370 +// }
  371 +// }
  372 +//
  373 +// /**
  374 +// * 从键为 key 的 set 中,根据 value 查询是否存在
  375 +// * @param key 键
  376 +// * @param value 值
  377 +// * @return true / false
  378 +// */
  379 +// public static boolean sHasKey(String key, Object value) {
  380 +// if (redisTemplate == null) {
  381 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  382 +// }
  383 +// try {
  384 +// return redisTemplate.opsForSet().isMember(key, value);
  385 +// } catch (Exception e) {
  386 +// e.printStackTrace();
  387 +// return false;
  388 +// }
  389 +// }
  390 +//
  391 +// /**
  392 +// * 将数据放入 set缓存
  393 +// * @param key 键值
  394 +// * @param values 值(可以多个)
  395 +// * @return 成功个数
  396 +// */
  397 +// public static long sSet(String key, Object... values) {
  398 +// if (redisTemplate == null) {
  399 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  400 +// }
  401 +// try {
  402 +// return redisTemplate.opsForSet().add(key, values);
  403 +// } catch (Exception e) {
  404 +// e.printStackTrace();
  405 +// return 0;
  406 +// }
  407 +// }
  408 +//
  409 +// /**
  410 +// * 将数据放入 set缓存,并设置时间
  411 +// * @param key 键
  412 +// * @param time 时间
  413 +// * @param values 值(可以多个)
  414 +// * @return 成功放入个数
  415 +// */
  416 +// public static long sSet(String key, long time, Object... values) {
  417 +// if (redisTemplate == null) {
  418 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  419 +// }
  420 +// try {
  421 +// long count = redisTemplate.opsForSet().add(key, values);
  422 +// if (time > 0) {
  423 +// expire(key, time);
  424 +// }
  425 +// return count;
  426 +// } catch (Exception e) {
  427 +// e.printStackTrace();
  428 +// return 0;
  429 +// }
  430 +// }
  431 +//
  432 +// /**
  433 +// * 获取 set缓存的长度
  434 +// * @param key 键
  435 +// * @return 长度
  436 +// */
  437 +// public static long sGetSetSize(String key) {
  438 +// if (redisTemplate == null) {
  439 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  440 +// }
  441 +// try {
  442 +// return redisTemplate.opsForSet().size(key);
  443 +// } catch (Exception e) {
  444 +// e.printStackTrace();
  445 +// return 0;
  446 +// }
  447 +// }
  448 +//
  449 +// /**
  450 +// * 移除 set缓存中,值为 value 的
  451 +// * @param key 键
  452 +// * @param values 值
  453 +// * @return 成功移除个数
  454 +// */
  455 +// public static long setRemove(String key, Object... values) {
  456 +// if (redisTemplate == null) {
  457 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  458 +// }
  459 +// try {
  460 +// return redisTemplate.opsForSet().remove(key, values);
  461 +// } catch (Exception e) {
  462 +// e.printStackTrace();
  463 +// return 0;
  464 +// }
  465 +// }
  466 +//// ============================== ZSet ==============================
  467 +//
  468 +// /**
  469 +// * 添加一个元素, zset与set最大的区别就是每个元素都有一个score,因此有个排序的辅助功能; zadd
  470 +// *
  471 +// * @param key
  472 +// * @param value
  473 +// * @param score
  474 +// */
  475 +// public static void zAdd(Object key, Object value, double score) {
  476 +// if (redisTemplate == null) {
  477 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  478 +// }
  479 +// redisTemplate.opsForZSet().add(key, value, score);
  480 +// }
  481 +//
  482 +// /**
  483 +// * 删除元素 zrem
  484 +// *
  485 +// * @param key
  486 +// * @param value
  487 +// */
  488 +// public static void zRemove(Object key, Object value) {
  489 +// if (redisTemplate == null) {
  490 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  491 +// }
  492 +// redisTemplate.opsForZSet().remove(key, value);
  493 +// }
  494 +//
  495 +// /**
  496 +// * score的增加or减少 zincrby
  497 +// *
  498 +// * @param key
  499 +// * @param value
  500 +// * @param delta -1 表示减 1 表示加1
  501 +// */
  502 +// public static Double zIncrScore(Object key, Object value, double delta) {
  503 +// if (redisTemplate == null) {
  504 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  505 +// }
  506 +// return redisTemplate.opsForZSet().incrementScore(key, value, delta);
  507 +// }
  508 +//
  509 +// /**
  510 +// * 查询value对应的score zscore
  511 +// *
  512 +// * @param key
  513 +// * @param value
  514 +// * @return
  515 +// */
  516 +// public static Double zScore(Object key, Object value) {
  517 +// if (redisTemplate == null) {
  518 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  519 +// }
  520 +// return redisTemplate.opsForZSet().score(key, value);
  521 +// }
  522 +//
  523 +// /**
  524 +// * 判断value在zset中的排名 zrank
  525 +// *
  526 +// * @param key
  527 +// * @param value
  528 +// * @return
  529 +// */
  530 +// public static Long zRank(Object key, Object value) {
  531 +// if (redisTemplate == null) {
  532 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  533 +// }
  534 +// return redisTemplate.opsForZSet().rank(key, value);
  535 +// }
  536 +//
  537 +// /**
  538 +// * 返回集合的长度
  539 +// *
  540 +// * @param key
  541 +// * @return
  542 +// */
  543 +// public static Long zSize(Object key) {
  544 +// if (redisTemplate == null) {
  545 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  546 +// }
  547 +// return redisTemplate.opsForZSet().zCard(key);
  548 +// }
  549 +//
  550 +// /**
  551 +// * 查询集合中指定顺序的值, 0 -1 表示获取全部的集合内容 zrange
  552 +// *
  553 +// * 返回有序的集合,score小的在前面
  554 +// *
  555 +// * @param key
  556 +// * @param start
  557 +// * @param end
  558 +// * @return
  559 +// */
  560 +// public static Set<Object> zRange(Object key, int start, int end) {
  561 +// if (redisTemplate == null) {
  562 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  563 +// }
  564 +// return redisTemplate.opsForZSet().range(key, start, end);
  565 +// }
  566 +// /**
  567 +// * 查询集合中指定顺序的值和score,0, -1 表示获取全部的集合内容
  568 +// *
  569 +// * @param key
  570 +// * @param start
  571 +// * @param end
  572 +// * @return
  573 +// */
  574 +// public static Set<ZSetOperations.TypedTuple<String>> zRangeWithScore(Object key, int start, int end) {
  575 +// if (redisTemplate == null) {
  576 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  577 +// }
  578 +// return redisTemplate.opsForZSet().rangeWithScores(key, start, end);
  579 +// }
  580 +// /**
  581 +// * 查询集合中指定顺序的值 zrevrange
  582 +// *
  583 +// * 返回有序的集合中,score大的在前面
  584 +// *
  585 +// * @param key
  586 +// * @param start
  587 +// * @param end
  588 +// * @return
  589 +// */
  590 +// public static Set<String> zRevRange(Object key, int start, int end) {
  591 +// if (redisTemplate == null) {
  592 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  593 +// }
  594 +// return redisTemplate.opsForZSet().reverseRange(key, start, end);
  595 +// }
  596 +// /**
  597 +// * 根据score的值,来获取满足条件的集合 zrangebyscore
  598 +// *
  599 +// * @param key
  600 +// * @param min
  601 +// * @param max
  602 +// * @return
  603 +// */
  604 +// public static Set<String> zSortRange(Object key, int min, int max) {
  605 +// if (redisTemplate == null) {
  606 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  607 +// }
  608 +// return redisTemplate.opsForZSet().rangeByScore(key, min, max);
  609 +// }
  610 +//
  611 +//
  612 +//// ============================== List ==============================
  613 +//
  614 +// /**
  615 +// * 获取 list缓存的内容
  616 +// * @param key 键
  617 +// * @param start 开始
  618 +// * @param end 结束(0 到 -1 代表所有值)
  619 +// * @return
  620 +// */
  621 +// public static List<Object> lGet(String key, long start, long end) {
  622 +// if (redisTemplate == null) {
  623 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  624 +// }
  625 +// try {
  626 +// return redisTemplate.opsForList().range(key, start, end);
  627 +// } catch (Exception e) {
  628 +// e.printStackTrace();
  629 +// return null;
  630 +// }
  631 +// }
  632 +//
  633 +// /**
  634 +// * 获取 list缓存的长度
  635 +// * @param key 键
  636 +// * @return 长度
  637 +// */
  638 +// public static long lGetListSize(String key) {
  639 +// if (redisTemplate == null) {
  640 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  641 +// }
  642 +// try {
  643 +// return redisTemplate.opsForList().size(key);
  644 +// } catch (Exception e) {
  645 +// e.printStackTrace();
  646 +// return 0;
  647 +// }
  648 +// }
  649 +//
  650 +// /**
  651 +// * 根据索引 index 获取键为 key 的 list 中的元素
  652 +// * @param key 键
  653 +// * @param index 索引
  654 +// * 当 index >= 0 时 {0:表头, 1:第二个元素}
  655 +// * 当 index < 0 时 {-1:表尾, -2:倒数第二个元素}
  656 +// * @return 值
  657 +// */
  658 +// public static Object lGetIndex(String key, long index) {
  659 +// if (redisTemplate == null) {
  660 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  661 +// }
  662 +// try {
  663 +// return redisTemplate.opsForList().index(key, index);
  664 +// } catch (Exception e) {
  665 +// e.printStackTrace();
  666 +// return null;
  667 +// }
  668 +// }
  669 +//
  670 +// /**
  671 +// * 将值 value 插入键为 key 的 list 中,如果 list 不存在则创建空 list
  672 +// * @param key 键
  673 +// * @param value 值
  674 +// * @return true / false
  675 +// */
  676 +// public static boolean lSet(String key, Object value) {
  677 +// if (redisTemplate == null) {
  678 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  679 +// }
  680 +// try {
  681 +// redisTemplate.opsForList().rightPush(key, value);
  682 +// return true;
  683 +// } catch (Exception e) {
  684 +// e.printStackTrace();
  685 +// return false;
  686 +// }
  687 +// }
  688 +//
  689 +// /**
  690 +// * 将值 value 插入键为 key 的 list 中,并设置时间
  691 +// * @param key 键
  692 +// * @param value 值
  693 +// * @param time 时间
  694 +// * @return true / false
  695 +// */
  696 +// public static boolean lSet(String key, Object value, long time) {
  697 +// if (redisTemplate == null) {
  698 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  699 +// }
  700 +// try {
  701 +// redisTemplate.opsForList().rightPush(key, value);
  702 +// if (time > 0) {
  703 +// expire(key, time);
  704 +// }
  705 +// return true;
  706 +// } catch (Exception e) {
  707 +// e.printStackTrace();
  708 +// return false;
  709 +// }
  710 +// }
  711 +//
  712 +// /**
  713 +// * 将 values 插入键为 key 的 list 中
  714 +// * @param key 键
  715 +// * @param values 值
  716 +// * @return true / false
  717 +// */
  718 +// public static boolean lSetList(String key, List<Object> values) {
  719 +// if (redisTemplate == null) {
  720 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  721 +// }
  722 +// try {
  723 +// redisTemplate.opsForList().rightPushAll(key, values);
  724 +// return true;
  725 +// } catch (Exception e) {
  726 +// e.printStackTrace();
  727 +// return false;
  728 +// }
  729 +// }
  730 +//
  731 +// /**
  732 +// * 将 values 插入键为 key 的 list 中,并设置时间
  733 +// * @param key 键
  734 +// * @param values 值
  735 +// * @param time 时间
  736 +// * @return true / false
  737 +// */
  738 +// public static boolean lSetList(String key, List<Object> values, long time) {
  739 +// if (redisTemplate == null) {
  740 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  741 +// }
  742 +// try {
  743 +// redisTemplate.opsForList().rightPushAll(key, values);
  744 +// if (time > 0) {
  745 +// expire(key, time);
  746 +// }
  747 +// return true;
  748 +// } catch (Exception e) {
  749 +// e.printStackTrace();
  750 +// return false;
  751 +// }
  752 +// }
  753 +//
  754 +// /**
  755 +// * 根据索引 index 修改键为 key 的值
  756 +// * @param key 键
  757 +// * @param index 索引
  758 +// * @param value 值
  759 +// * @return true / false
  760 +// */
  761 +// public static boolean lUpdateIndex(String key, long index, Object value) {
  762 +// if (redisTemplate == null) {
  763 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  764 +// }
  765 +// try {
  766 +// redisTemplate.opsForList().set(key, index, value);
  767 +// return true;
  768 +// } catch (Exception e) {
  769 +// e.printStackTrace();
  770 +// return false;
  771 +// }
  772 +// }
  773 +//
  774 +// /**
  775 +// * 在键为 key 的 list 中删除值为 value 的元素
  776 +// * @param key 键
  777 +// * @param count 如果 count == 0 则删除 list 中所有值为 value 的元素
  778 +// * 如果 count > 0 则删除 list 中最左边那个值为 value 的元素
  779 +// * 如果 count < 0 则删除 list 中最右边那个值为 value 的元素
  780 +// * @param value
  781 +// * @return
  782 +// */
  783 +// public static long lRemove(String key, long count, Object value) {
  784 +// if (redisTemplate == null) {
  785 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  786 +// }
  787 +// try {
  788 +// return redisTemplate.opsForList().remove(key, count, value);
  789 +// } catch (Exception e) {
  790 +// e.printStackTrace();
  791 +// return 0;
  792 +// }
  793 +// }
  794 +//
  795 +// /**
  796 +// * 在键为 key 的 list中移除第一个元素
  797 +// * @param key 键
  798 +// * @return
  799 +// */
  800 +// public static Object lLeftPop(String key) {
  801 +// if (redisTemplate == null) {
  802 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  803 +// }
  804 +// return redisTemplate.opsForList().leftPop(key);
  805 +// }
  806 +//
  807 +// /**
  808 +// * 在键为 key 的 list中移除、最后一个元素
  809 +// * @param key 键
  810 +// * @return
  811 +// */
  812 +// public static Object lrightPop(String key) {
  813 +// if (redisTemplate == null) {
  814 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  815 +// }
  816 +// return redisTemplate.opsForList().rightPop(key);
  817 +// }
  818 +//
  819 +// /**
  820 +// * 模糊查询
  821 +// * @param key 键
  822 +// * @return true / false
  823 +// */
  824 +// public static List<Object> keys(String key) {
  825 +// if (redisTemplate == null) {
  826 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  827 +// }
  828 +// try {
  829 +// Set<String> set = redisTemplate.keys(key);
  830 +// return new ArrayList<>(set);
  831 +// } catch (Exception e) {
  832 +// e.printStackTrace();
  833 +// return null;
  834 +// }
  835 +// }
  836 +//
  837 +//
  838 +// /**
  839 +// * 模糊查询
  840 +// * @param query 查询参数
  841 +// * @return
  842 +// */
  843 +//// public static List<Object> scan(String query) {
  844 +//// List<Object> result = new ArrayList<>();
  845 +//// try {
  846 +//// Cursor<Map.Entry<Object,Object>> cursor = redisTemplate.opsForHash().scan("field",
  847 +//// ScanOptions.scanOptions().match(query).count(1000).build());
  848 +//// while (cursor.hasNext()) {
  849 +//// Map.Entry<Object,Object> entry = cursor.next();
  850 +//// result.add(entry.getKey());
  851 +//// Object key = entry.getKey();
  852 +//// Object valueSet = entry.getValue();
  853 +//// }
  854 +//// //关闭cursor
  855 +//// cursor.close();
  856 +//// } catch (Exception e) {
  857 +//// e.printStackTrace();
  858 +//// }
  859 +//// return result;
  860 +//// }
  861 +//
  862 +// /**
  863 +// * 模糊查询
  864 +// * @param query 查询参数
  865 +// * @return
  866 +// */
  867 +// public static List<Object> scan(String query) {
  868 +// if (redisTemplate == null) {
  869 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  870 +// }
  871 +// Set<String> resultKeys = (Set<String>) redisTemplate.execute((RedisCallback<Set<String>>) connection -> {
  872 +// ScanOptions scanOptions = ScanOptions.scanOptions().match("*" + query + "*").count(1000).build();
  873 +// Cursor<byte[]> scan = connection.scan(scanOptions);
  874 +// Set<String> keys = new HashSet<>();
  875 +// while (scan.hasNext()) {
  876 +// byte[] next = scan.next();
  877 +// keys.add(new String(next));
  878 +// }
  879 +// return keys;
  880 +// });
  881 +//
  882 +// return new ArrayList<>(resultKeys);
  883 +// }
  884 +// public static List<Object> scan2(String query) {
  885 +// if (redisTemplate == null) {
  886 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  887 +// }
  888 +// Set<String> keys = redisTemplate.keys(query);
  889 +// return new ArrayList<>(keys);
  890 +// }
  891 +// // ============================== 消息发送与订阅 ==============================
  892 +// public static void convertAndSend(String channel, JSONObject msg) {
  893 +// if (redisTemplate == null) {
  894 +// redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  895 +// }
  896 +// redisTemplate.convertAndSend(channel, msg);
  897 +// }
  898 +//
  899 +//}
src/main/java/com/genersoft/iot/vmp/vmanager/bean/StreamContent.java
@@ -116,6 +116,9 @@ public class StreamContent { @@ -116,6 +116,9 @@ public class StreamContent {
116 if (streamInfo.getFmp4() != null) { 116 if (streamInfo.getFmp4() != null) {
117 this.fmp4 = streamInfo.getFmp4().getUrl(); 117 this.fmp4 = streamInfo.getFmp4().getUrl();
118 } 118 }
  119 + if (streamInfo.getHttps_fmp4() != null) {
  120 + this.https_fmp4 = streamInfo.getHttps_fmp4().getUrl();
  121 + }
119 if (streamInfo.getWs_fmp4() != null) { 122 if (streamInfo.getWs_fmp4() != null) {
120 this.ws_fmp4 = streamInfo.getWs_fmp4().getUrl(); 123 this.ws_fmp4 = streamInfo.getWs_fmp4().getUrl();
121 } 124 }