| | |
| | | ArdDroneInfo local = localMap.get(boxSn); |
| | | boolean dbOnline = local != null && local.getOnLine() == 1; |
| | | boolean needUpdate = (dbOnline != currentOnline); |
| | | |
| | | // 只要远端设备在线,就刷新Redis缓存(无论状态是否变化),保证缓存一定存在 |
| | | if (currentOnline) { |
| | | redisCache.setCacheObject(redisKey, remote); |
| | | } else { |
| | | // 远端离线,删除Redis缓存 |
| | | redisCache.deleteObject(redisKey); |
| | | } |
| | | // 如果状态变化才更新 |
| | | if (needUpdate){ |
| | | // 更新 Redis |
| | | if (currentOnline) { |
| | | redisCache.setCacheObject(redisKey, remote); |
| | | } else { |
| | | redisCache.deleteObject(redisKey); |
| | | } |
| | | // 发布事件 |
| | | eventPublisher.publishEvent(new DeviceStatusEvent(boxSn, currentOnline)); |
| | | // 更新数据库 |