Merge branch 'dev'
commit
790404cf5e
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,31 +2,35 @@ package com.kimgo.wepush.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
|
import com.kimgo.wepush.exceptions.DatabaseQueryException;
|
||||||
import com.kimgo.wepush.mapper.DeviceInfoDAOMapper;
|
import com.kimgo.wepush.mapper.DeviceInfoDAOMapper;
|
||||||
import com.kimgo.wepush.model.DeviceInfo;
|
import com.kimgo.wepush.model.DeviceInfo;
|
||||||
import com.kimgo.wepush.model.DeviceInfoDAO;
|
import com.kimgo.wepush.model.DeviceInfoDAO;
|
||||||
import com.kimgo.wepush.response.ServerResponseEntity;
|
import com.kimgo.wepush.response.ServerResponseEntity;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class HeartBeatService {
|
public class HeartBeatService {
|
||||||
private final Logger logger = LoggerFactory.getLogger(HeartBeatService.class);
|
private final Logger logger = LoggerFactory.getLogger(HeartBeatService.class);
|
||||||
private final long TIME_OUT_PERIOD = 600;
|
private final long TIME_OUT_PERIOD = 600;
|
||||||
@Autowired
|
private final TokenService tokenService;
|
||||||
TokenService tokenService;
|
private final DeviceInfoDAOMapper deviceInfoDAOMapper;
|
||||||
@Autowired
|
|
||||||
private DeviceInfoDAOMapper deviceInfoDAOMapper;
|
public HeartBeatService(TokenService tokenService, DeviceInfoDAOMapper deviceInfoDAOMapper) {
|
||||||
|
this.tokenService = tokenService;
|
||||||
|
this.deviceInfoDAOMapper = deviceInfoDAOMapper;
|
||||||
|
}
|
||||||
|
|
||||||
public ServerResponseEntity handleHeartbeatSignal(String accessToken, DeviceInfo deviceInfo) {
|
public ServerResponseEntity handleHeartbeatSignal(String accessToken, DeviceInfo deviceInfo) {
|
||||||
String correctAccessToken = tokenService.getApiAccessToken();
|
String correctAccessToken = tokenService.getApiAccessToken();
|
||||||
logger.info("accessToken: {} correctAccessToken: {}", accessToken, correctAccessToken);
|
logger.info("accessToken: {} correctAccessToken: {}", accessToken, correctAccessToken);
|
||||||
if (!correctAccessToken.equals(accessToken)) {
|
if (!correctAccessToken.equals(accessToken)) {
|
||||||
return ServerResponseEntity.fail("Invalid accessToken");
|
return ServerResponseEntity.fail("Invalid accessToken");
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
DeviceInfoDAO deviceInfoDAO = getDeviceInfoBySN(deviceInfo.getSN());
|
DeviceInfoDAO deviceInfoDAO = getDeviceInfoBySN(deviceInfo.getSN());
|
||||||
logger.info("deviceInfoDAO: {}",deviceInfoDAO);
|
|
||||||
if (deviceInfoDAO == null) {
|
if (deviceInfoDAO == null) {
|
||||||
// 设备信息不存在,可能是无效的设备
|
// 设备信息不存在,可能是无效的设备
|
||||||
logger.info("device not find,start add device to mysql.");
|
logger.info("device not find,start add device to mysql.");
|
||||||
|
|
@ -35,8 +39,17 @@ public class HeartBeatService {
|
||||||
return ServerResponseEntity.success();
|
return ServerResponseEntity.success();
|
||||||
} else {
|
} else {
|
||||||
logger.info("add to mysql error");
|
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 {
|
try {
|
||||||
updateClientStatus(deviceInfo);
|
updateClientStatus(deviceInfo);
|
||||||
return ServerResponseEntity.success();
|
return ServerResponseEntity.success();
|
||||||
|
|
@ -65,6 +78,7 @@ public class HeartBeatService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean addDeviceInfo(DeviceInfo deviceInfo) {
|
public boolean addDeviceInfo(DeviceInfo deviceInfo) {
|
||||||
|
logger.info("start add device. device info: {}", deviceInfo);
|
||||||
try {
|
try {
|
||||||
DeviceInfoDAO deviceInfoDAO = convertToDeviceInfoDAO(deviceInfo);
|
DeviceInfoDAO deviceInfoDAO = convertToDeviceInfoDAO(deviceInfo);
|
||||||
int result = deviceInfoDAOMapper.insert(deviceInfoDAO);
|
int result = deviceInfoDAOMapper.insert(deviceInfoDAO);
|
||||||
|
|
@ -82,7 +96,7 @@ public class HeartBeatService {
|
||||||
* @param SN 要查询的 SN。
|
* @param SN 要查询的 SN。
|
||||||
* @return 与 androidId 对应的 DeviceInfoDAO 对象,如果没有找到,则返回 null。
|
* @return 与 androidId 对应的 DeviceInfoDAO 对象,如果没有找到,则返回 null。
|
||||||
*/
|
*/
|
||||||
public DeviceInfoDAO getDeviceInfoBySN(String SN) {
|
public DeviceInfoDAO getDeviceInfoBySN(String SN) throws DatabaseQueryException {
|
||||||
QueryWrapper<DeviceInfoDAO> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<DeviceInfoDAO> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.eq("sn", SN);
|
queryWrapper.eq("sn", SN);
|
||||||
try {
|
try {
|
||||||
|
|
@ -91,10 +105,11 @@ public class HeartBeatService {
|
||||||
logger.info("Data is queried in the database based on the SN");
|
logger.info("Data is queried in the database based on the SN");
|
||||||
return deviceInfoDAO;
|
return deviceInfoDAO;
|
||||||
}
|
}
|
||||||
|
return null; // 数据不存在
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error querying device info by SN", e);
|
logger.error("Error querying device info by SN", e);
|
||||||
|
throw new DatabaseQueryException("Error querying device info by SN", e);
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,10 +14,12 @@ class HeartBeatServiceTest {
|
||||||
@Test
|
@Test
|
||||||
void updateClientStatus() {
|
void updateClientStatus() {
|
||||||
DeviceInfo deviceInfo = new DeviceInfo();
|
DeviceInfo deviceInfo = new DeviceInfo();
|
||||||
|
System.out.printf(deviceInfo.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void addDeviceInfo() {
|
void addDeviceInfo() {
|
||||||
DeviceInfo deviceInfo = new DeviceInfo();
|
DeviceInfo deviceInfo = new DeviceInfo();
|
||||||
|
System.out.printf(deviceInfo.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue