更新 MonitorService.java

pull/1/head
wangsiyuan 2023-12-09 11:24:18 +08:00
parent ff590d8c05
commit 31f4d13a7a
1 changed files with 17 additions and 7 deletions

View File

@ -33,8 +33,16 @@ public class MonitorService {
@Scheduled(fixedDelay = 480000)
public void monitorOnlineDevices() {
List<DeviceInfoDAO> devices = getAllDevices();
if (devices.isEmpty()) {
// 没有找到数据的处理逻辑
logger.info("no data was queried.");
}
for (DeviceInfoDAO device : devices) {
try {
if (device.getIsMonitored() != 1){
logger.info("device is not monitored ,device SN: {}",device.getSN());
continue;
}
long currentTimeMillis = System.currentTimeMillis();
if (currentTimeMillis - device.getLastOnlineTime() > device.getTimeOutPeriod()) {
updateStatus(device, 0); // 设备离线
@ -43,7 +51,7 @@ public class MonitorService {
updateStatus(device, 1); // 设备在线
}
} catch (Exception e) {
logger.error("Error processing device with ID " + device.getAndroidId(), e);
logger.error("Error processing device with SN " + device.getSN(), e);
}
}
}
@ -90,9 +98,11 @@ public class MonitorService {
textCard.setTitle("设备掉线通知");
String formattedCurrentTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
textCard.setDescription("<div class='gray'>设备信息</div>" +
"<div class='highlight'>设备id: " + deviceInfoDAO.getAndroidId() + "</div>" +
"<div class='highlight'>品牌: " + deviceInfoDAO.getDeviceBrand() + "</div>" +
"<div class='highlight'>设备型号: " + deviceInfoDAO.getDeviceModel() + "</div>" +
"<div class='highlight'>检测到掉线时间: " + formattedCurrentTime + "</div>"+
"<div class='highlight'>安卓版本: " + deviceInfoDAO.getAndroidVersion() + "</div>" +
"<div class='highlight'>SN: " + deviceInfoDAO.getSN() + "</div>" +
"<div class='highlight'>监测到掉线时间: " + formattedCurrentTime + "</div>" +
"检测到设备已掉线,请及时查看设备状态.");
textCard.setUrl("https://kimgo.cn");
// 将TextCard对象设置到TextCardMessage中
@ -105,17 +115,17 @@ public class MonitorService {
private void updateStatus(DeviceInfoDAO device, int status) {
try {
UpdateWrapper<DeviceInfoDAO> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("android_id", device.getAndroidId());
updateWrapper.eq("SN", device.getSN());
updateWrapper.set("status", status);
int result = deviceInfoDAOMapper.update(null, updateWrapper);
if (result > 0) {
logger.debug("Update successful for device ID: " + device.getAndroidId());
logger.debug("Update successful for SN: " + device.getSN());
} else {
logger.warn("Update failed: No rows affected for device ID: " + device.getAndroidId());
logger.warn("Update failed: No rows affected for SN: " + device.getSN());
}
} catch (Exception e) {
logger.error("Error updating status for device ID: " + device.getAndroidId(), e);
logger.error("Error updating status for SN: " + device.getSN(), e);
}
}
}