From a5ed284658d70875e74c4c8ca2924de933e7d9af Mon Sep 17 00:00:00 2001 From: xiaoQQya <xiaoQQya@126.com> Date: 星期六, 04 二月 2023 18:13:47 +0800 Subject: [PATCH] fix(JsonUtil): 修复 Redis 中 Object 序列化与反序列化不一致导致报错的问题 --- src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java | 43 +++++++++++++++++++++++-------------------- 1 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java index 393fbf1..55ebf7a 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java @@ -17,6 +17,7 @@ import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper; import com.genersoft.iot.vmp.storager.dao.dto.PlatformRegisterInfo; import com.genersoft.iot.vmp.utils.DateUtil; +import com.genersoft.iot.vmp.utils.JsonUtil; import com.genersoft.iot.vmp.utils.SystemInfoUtils; import com.genersoft.iot.vmp.utils.redis.RedisUtil; import org.slf4j.Logger; @@ -75,7 +76,7 @@ @Override public void resetAllSN() { String scanKey = VideoManagerConstants.SIP_SN_PREFIX + userSetting.getServerId() + "_*"; - List<Object> keys = RedisUtil.scan(scanKey, null); + List<Object> keys = RedisUtil.scan(scanKey); for (Object o : keys) { String key = (String) o; RedisUtil.set(key, 1); @@ -129,7 +130,7 @@ } @Override public StreamInfo queryPlayByStreamId(String streamId) { - List<Object> playLeys = RedisUtil.scan(String.format("%S_%s_*_%s_*", VideoManagerConstants.PLAYER_PREFIX, userSetting.getServerId(), streamId), 1); + List<Object> playLeys = RedisUtil.scan(String.format("%S_%s_*_%s_*", VideoManagerConstants.PLAYER_PREFIX, userSetting.getServerId(), streamId)); if (playLeys == null || playLeys.size() == 0) { return null; } @@ -141,7 +142,7 @@ List<Object> playLeys = RedisUtil.scan(String.format("%S_%s_*_*_%s_%s", VideoManagerConstants.PLAYER_PREFIX, userSetting.getServerId(), deviceId, - channelId), 1); + channelId)); if (playLeys == null || playLeys.size() == 0) { return null; } @@ -157,7 +158,10 @@ } for (Object player : players) { String key = (String) player; - StreamInfo streamInfo = (StreamInfo) RedisUtil.get(key); + StreamInfo streamInfo = JsonUtil.redisJsonToObject(key, StreamInfo.class); + if (Objects.isNull(streamInfo)) { + continue; + } streamInfos.put(streamInfo.getDeviceID() + "_" + streamInfo.getChannelId(), streamInfo); } return streamInfos; @@ -278,7 +282,7 @@ stream, callId ); - List<Object> streamInfoScan = RedisUtil.scan(key, 1); + List<Object> streamInfoScan = RedisUtil.scan(key); if (streamInfoScan.size() > 0) { return (StreamInfo) RedisUtil.get((String) streamInfoScan.get(0)); }else { @@ -310,7 +314,7 @@ stream, callId ); - List<Object> streamInfoScan = RedisUtil.scan(key, 1); + List<Object> streamInfoScan = RedisUtil.scan(key); return (String) streamInfoScan.get(0); } @@ -399,7 +403,7 @@ + channelId + "_" + streamId + "_" + callId; - List<Object> scan = RedisUtil.scan(key, 1); + List<Object> scan = RedisUtil.scan(key); if (scan.size() > 0) { return (SendRtpItem)RedisUtil.get((String)scan.get(0)); }else { @@ -521,7 +525,7 @@ String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX + userSetting.getServerId() + "_*_*_" + channelId + "*_" + "*_"; - List<Object> RtpStreams = RedisUtil.scan(key, 1); + List<Object> RtpStreams = RedisUtil.scan(key); if (RtpStreams.size() > 0) { return true; } else { @@ -613,7 +617,7 @@ stream, callId ); - List<Object> streamInfoScan = RedisUtil.scan(key, 1); + List<Object> streamInfoScan = RedisUtil.scan(key); if (streamInfoScan.size() > 0) { return (StreamInfo) RedisUtil.get((String) streamInfoScan.get(0)); }else { @@ -624,8 +628,7 @@ @Override public ThirdPartyGB queryMemberNoGBId(String queryKey) { String key = VideoManagerConstants.WVP_STREAM_GB_ID_PREFIX + queryKey; - JSONObject jsonObject = (JSONObject)RedisUtil.get(key); - return jsonObject.to(ThirdPartyGB.class); + return JsonUtil.redisJsonToObject(key, ThirdPartyGB.class); } @Override @@ -664,7 +667,7 @@ @Override public Device getDevice(String deviceId) { String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + deviceId; - return (Device)RedisUtil.get(key); + return JsonUtil.redisJsonToObject(key, Device.class); } @Override @@ -676,7 +679,7 @@ @Override public GPSMsgInfo getGpsMsgInfo(String gbId) { String key = VideoManagerConstants.WVP_STREAM_GPS_MSG_PREFIX + userSetting.getServerId() + "_" + gbId; - return (GPSMsgInfo)RedisUtil.get(key); + return JsonUtil.redisJsonToObject(key, GPSMsgInfo.class); } @Override @@ -686,9 +689,9 @@ List<Object> keys = RedisUtil.scan(scanKey); for (Object o : keys) { String key = (String) o; - GPSMsgInfo gpsMsgInfo = (GPSMsgInfo) RedisUtil.get(key); - if (!gpsMsgInfo.isStored()) { // 鍙彇娌℃湁瀛樿繃寰� - result.add((GPSMsgInfo) RedisUtil.get(key)); + GPSMsgInfo gpsMsgInfo = JsonUtil.redisJsonToObject(key, GPSMsgInfo.class); + if (Objects.nonNull(gpsMsgInfo) && !gpsMsgInfo.isStored()) { // 鍙彇娌℃湁瀛樿繃寰� + result.add(JsonUtil.redisJsonToObject(key, GPSMsgInfo.class)); } } @@ -710,7 +713,7 @@ @Override public StreamAuthorityInfo getStreamAuthorityInfo(String app, String stream) { String key = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_" + app+ "_" + stream ; - return (StreamAuthorityInfo) RedisUtil.get(key); + return JsonUtil.redisJsonToObject(key, StreamAuthorityInfo.class); } @@ -721,7 +724,7 @@ List<Object> keys = RedisUtil.scan(scanKey); for (Object o : keys) { String key = (String) o; - result.add((StreamAuthorityInfo) RedisUtil.get(key)); + result.add(JsonUtil.redisJsonToObject(key, StreamAuthorityInfo.class)); } return result; } @@ -732,10 +735,10 @@ String scanKey = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_*_" + app + "_" + streamId + "_" + mediaServerId; OnStreamChangedHookParam result = null; - List<Object> keys = RedisUtil.scan(scanKey, 1); + List<Object> keys = RedisUtil.scan(scanKey); if (keys.size() > 0) { String key = (String) keys.get(0); - result = (OnStreamChangedHookParam)RedisUtil.get(key); + result = JsonUtil.redisJsonToObject(key, OnStreamChangedHookParam.class); } return result; -- Gitblit v1.8.0