From c7284d2c8e0bdaa68ae54cd9e78ffbd12ed47af1 Mon Sep 17 00:00:00 2001 From: wangsiyuan <2392948297@qq.com> Date: Thu, 14 Dec 2023 11:35:01 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=88=9B=E5=BB=BA=20DatabaseQueryException?= =?UTF-8?q?.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wepush/exceptions/DatabaseQueryException.java | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/main/java/com/kimgo/wepush/exceptions/DatabaseQueryException.java diff --git a/src/main/java/com/kimgo/wepush/exceptions/DatabaseQueryException.java b/src/main/java/com/kimgo/wepush/exceptions/DatabaseQueryException.java new file mode 100644 index 0000000..afdbfd8 --- /dev/null +++ b/src/main/java/com/kimgo/wepush/exceptions/DatabaseQueryException.java @@ -0,0 +1,11 @@ +package com.kimgo.wepush.exceptions; + +public class DatabaseQueryException extends Exception { + public DatabaseQueryException(String message) { + super(message); + } + + public DatabaseQueryException(String message, Throwable cause) { + super(message, cause); + } +} From fbaf0b58884881d08000d46e3b9157e60e27cc3e Mon Sep 17 00:00:00 2001 From: wangsiyuan <2392948297@qq.com> Date: Thu, 14 Dec 2023 11:35:03 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20HeartBeatService.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wepush/service/HeartBeatService.java | 57 ++++++++++++------- 1 file changed, 36 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/kimgo/wepush/service/HeartBeatService.java b/src/main/java/com/kimgo/wepush/service/HeartBeatService.java index 13b2e6b..cad33dd 100644 --- a/src/main/java/com/kimgo/wepush/service/HeartBeatService.java +++ b/src/main/java/com/kimgo/wepush/service/HeartBeatService.java @@ -2,40 +2,53 @@ package com.kimgo.wepush.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.kimgo.wepush.exceptions.DatabaseQueryException; import com.kimgo.wepush.mapper.DeviceInfoDAOMapper; import com.kimgo.wepush.model.DeviceInfo; import com.kimgo.wepush.model.DeviceInfoDAO; import com.kimgo.wepush.response.ServerResponseEntity; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class HeartBeatService { private final Logger logger = LoggerFactory.getLogger(HeartBeatService.class); private final long TIME_OUT_PERIOD = 600; - @Autowired - TokenService tokenService; - @Autowired - private DeviceInfoDAOMapper deviceInfoDAOMapper; - public ServerResponseEntity handleHeartbeatSignal(String accessToken,DeviceInfo deviceInfo) { + private final TokenService tokenService; + private final DeviceInfoDAOMapper deviceInfoDAOMapper; + + public HeartBeatService(TokenService tokenService, DeviceInfoDAOMapper deviceInfoDAOMapper) { + this.tokenService = tokenService; + this.deviceInfoDAOMapper = deviceInfoDAOMapper; + } + + public ServerResponseEntity handleHeartbeatSignal(String accessToken, DeviceInfo deviceInfo) { String correctAccessToken = tokenService.getApiAccessToken(); - logger.info("accessToken: {} correctAccessToken: {}",accessToken,correctAccessToken); - if (!correctAccessToken.equals(accessToken)){ + logger.info("accessToken: {} correctAccessToken: {}", accessToken, correctAccessToken); + if (!correctAccessToken.equals(accessToken)) { return ServerResponseEntity.fail("Invalid accessToken"); } - DeviceInfoDAO deviceInfoDAO = getDeviceInfoBySN(deviceInfo.getSN()); - logger.info("deviceInfoDAO: {}",deviceInfoDAO); - if (deviceInfoDAO == null) { - // 设备信息不存在,可能是无效的设备 - logger.info("device not find,start add device to mysql."); - boolean isSuccess = addDeviceInfo(deviceInfo); - if (isSuccess){ - return ServerResponseEntity.success(); - } else { - logger.info("add to mysql error"); + try { + DeviceInfoDAO deviceInfoDAO = getDeviceInfoBySN(deviceInfo.getSN()); + if (deviceInfoDAO == null) { + // 设备信息不存在,可能是无效的设备 + logger.info("device not find,start add device to mysql."); + boolean isSuccess = addDeviceInfo(deviceInfo); + if (isSuccess) { + return ServerResponseEntity.success(); + } else { + logger.info("add to mysql error"); + return ServerResponseEntity.fail("server error,please check log."); + } } + } catch (DatabaseQueryException e) { + // 处理查询失败的情况 + logger.error("Database query failed.", e); + return ServerResponseEntity.fail("Database query failed"); + } catch (Exception e) { + logger.error("update client status error."); + return ServerResponseEntity.fail("Error updating client status"); } try { updateClientStatus(deviceInfo); @@ -65,10 +78,11 @@ public class HeartBeatService { } public boolean addDeviceInfo(DeviceInfo deviceInfo) { + logger.info("start add device. device info: {}", deviceInfo); try { DeviceInfoDAO deviceInfoDAO = convertToDeviceInfoDAO(deviceInfo); int result = deviceInfoDAOMapper.insert(deviceInfoDAO); - logger.info("result: {}",result); + logger.info("result: {}", result); return result > 0; } catch (Exception e) { logger.error("Error adding device info", e); @@ -82,7 +96,7 @@ public class HeartBeatService { * @param SN 要查询的 SN。 * @return 与 androidId 对应的 DeviceInfoDAO 对象,如果没有找到,则返回 null。 */ - public DeviceInfoDAO getDeviceInfoBySN(String SN) { + public DeviceInfoDAO getDeviceInfoBySN(String SN) throws DatabaseQueryException { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("sn", SN); try { @@ -91,10 +105,11 @@ public class HeartBeatService { logger.info("Data is queried in the database based on the SN"); return deviceInfoDAO; } + return null; // 数据不存在 } catch (Exception e) { logger.error("Error querying device info by SN", e); + throw new DatabaseQueryException("Error querying device info by SN", e); } - return null; } From f540a68ae966f09315d1a56093f7a49b915a062a Mon Sep 17 00:00:00 2001 From: wangsiyuan <2392948297@qq.com> Date: Thu, 14 Dec 2023 11:35:10 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20HeartBeatServiceTest.j?= =?UTF-8?q?ava?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/kimgo/wepush/service/HeartBeatServiceTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/java/com/kimgo/wepush/service/HeartBeatServiceTest.java b/src/test/java/com/kimgo/wepush/service/HeartBeatServiceTest.java index 02250be..d3455f2 100644 --- a/src/test/java/com/kimgo/wepush/service/HeartBeatServiceTest.java +++ b/src/test/java/com/kimgo/wepush/service/HeartBeatServiceTest.java @@ -14,10 +14,12 @@ class HeartBeatServiceTest { @Test void updateClientStatus() { DeviceInfo deviceInfo = new DeviceInfo(); + System.out.printf(deviceInfo.toString()); } @Test void addDeviceInfo() { DeviceInfo deviceInfo = new DeviceInfo(); + System.out.printf(deviceInfo.toString()); } } \ No newline at end of file