diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java index d15b0ae0..09e3d7b8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java @@ -46,7 +46,23 @@ public class SysUserOnlineController extends BaseController List userOnlineList = new ArrayList(); for (String key : keys) { - LoginUser user = redisService.getCacheObject(key); + // 获取登录用户缓存对象 + Object object = redisService.getCacheObject(key); + // 登录用户对象 + LoginUser user; + // 判断object类型,如果是JSONObject需要单独处理,解决小概率类型转换异常问题 + if (object instanceof JSONObject) + { + user = JSONObject.parseObject(JSONObject.toJSONString(object, JSONWriter.Feature.WriteNulls), LoginUser.class); + } + else if (object instanceof LoginUser) + { + user = (LoginUser) object; + } + else + { + throw new ServiceException("用户缓存对象类型异常"); + } if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) { userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user));