/**
* 存储心跳
* ( 需要考虑到多台设备,一个设备不同用户)
*/
@PostMapping(value = "/getHeartbeatInfo")
public AjaxResult getHeartbeatInfo(@RequestBody HashMap<String, String> map) {
//查询心跳数据 有的情况下持续发送只是更新时间,否则进行添加
Heartbeat heartbeat = heartbeatService.selectHeartbeatByOpenId(map.get("openId"), "已授权");
if (heartbeat == null) {
heartbeatService.insertHeartbeat(map);
} else {
//更新发送时间,根据openId和授权登录状态
heartbeatService.updateHeartbeat(map);
}
return AjaxResult.success(heartbeat);
}
@Scheduled(cron = "*/1 * * * * ?") //每个1秒进行查询
public void selectHeartbeatByOpenId() {
//获取所有已授权状态下的数据
List<Heartbeat> heartbeatList = heartbeatService.selectHeartbeatListAll();
for (Heartbeat heartbeat : heartbeatList) {
if (heartbeat.getLoginStatus().equals("已授权")) {
Date lastTime = heartbeat.getLastTime();
Date nowTime = new Date();
long diffTime = nowTime.getTime() - lastTime.getTime(); //获得是毫秒间隔
if (diffTime / 1000 > 20) { //前后间隔时间超过20秒默认断开,更改状态
userService.updateLoginStatusByOpenId(heartbeat.getOpenId(), "未授权");
qrcodeService.updateQrcodeLoginStatusByOpenId(heartbeat.getOpenId(), "未授权");
heartbeatService.updateLoginStatusByOpenId(heartbeat.getOpenId(), "未授权");
}
}
}
}
心跳检测代码片段
最新推荐文章于 2023-02-11 14:53:51 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)