From 4a057738605b559a4e37b56c5e4b77e2e73bed35 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 25 Sep 2025 15:52:16 +0800 Subject: [PATCH] =?UTF-8?q?fix(device):=20=E6=B7=BB=E5=8A=A0=E7=A9=BA?= =?UTF-8?q?=E5=80=BC=E6=A3=80=E6=9F=A5=E9=81=BF=E5=85=8D=E7=A9=BA=E6=8C=87?= =?UTF-8?q?=E9=92=88=E5=BC=82=E5=B8=B8-=20=E5=9C=A8=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=9C=A8=E7=BA=BF=E7=8A=B6=E6=80=81=E6=97=B6?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AF=B9=20lastActiveTime=20=E5=92=8C=20clie?= =?UTF-8?q?ntIP=20=E7=9A=84=E7=A9=BA=E5=80=BC=E6=A3=80=E6=9F=A5=20-=20?= =?UTF-8?q?=E5=9C=A8=E5=88=A4=E6=96=AD=E8=AE=BE=E5=A4=87=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E6=97=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=AF=B9?= =?UTF-8?q?=20keepaliveAt=20=E6=97=B6=E9=97=B4=E7=9A=84=E7=A9=BA=E5=80=BC?= =?UTF-8?q?=E5=88=A4=E6=96=AD=20-=20=E9=98=B2=E6=AD=A2=E5=9B=A0=E7=A9=BA?= =?UTF-8?q?=E5=80=BC=E5=AF=BC=E8=87=B4=E7=9A=84=20NullPointerException=20?= =?UTF-8?q?=E5=BC=82=E5=B8=B8-=20=E6=8F=90=E9=AB=98=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=81=A5=E5=A3=AE=E6=80=A7=E5=92=8C=E7=A8=B3=E5=AE=9A=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ycwl/basic/repository/DeviceRepository.java | 9 +++++++-- .../basic/service/mobile/impl/AppScenicServiceImpl.java | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/ycwl/basic/repository/DeviceRepository.java b/src/main/java/com/ycwl/basic/repository/DeviceRepository.java index e18890bd..6a3bdbaf 100644 --- a/src/main/java/com/ycwl/basic/repository/DeviceRepository.java +++ b/src/main/java/com/ycwl/basic/repository/DeviceRepository.java @@ -75,8 +75,13 @@ public class DeviceRepository { if (statusDto != null) { // Boolean转Integer: true→1, false→0 entity.setOnline(statusDto.getIsOnline() != null && statusDto.getIsOnline() ? 1 : 0); - entity.setKeepaliveAt(statusDto.getLastActiveTime()); - entity.setIpAddr(statusDto.getClientIP()); + // 添加空值检查,避免NullPointerException + if (statusDto.getLastActiveTime() != null) { + entity.setKeepaliveAt(statusDto.getLastActiveTime()); + } + if (statusDto.getClientIP() != null) { + entity.setIpAddr(statusDto.getClientIP()); + } } else { // 默认离线状态 entity.setOnline(0); diff --git a/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java b/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java index ef8b4906..05b1cee2 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java @@ -294,7 +294,9 @@ public class AppScenicServiceImpl implements AppScenicService { if (onlineStatus != null) { deviceRespVO.setUpdateAt(onlineStatus.getKeepaliveAt()); deviceRespVO.setKeepaliveAt(onlineStatus.getKeepaliveAt()); - if (new Date().getTime() - onlineStatus.getKeepaliveAt().getTime() > 300000) { + if (onlineStatus.getKeepaliveAt() == null) { + deviceRespVO.setOnline(0); + } else if (new Date().getTime() - onlineStatus.getKeepaliveAt().getTime() > 300000) { deviceRespVO.setOnline(0); } else { deviceRespVO.setOnline(onlineStatus.getOnline());