获取设备最大的最近连接时间。改为在数据库里排序好后返回给系统,缓存时间修改为2分钟

--DeviceDao.java 修改方法返回值
--DeviceDao.xml 修改sql,在数据库里排序返回
--DeviceServiceImpl.java 修改缓存时间为2分钟
This commit is contained in:
剑雨
2025-05-07 11:04:14 +08:00
parent b4944f23ef
commit 770a198772
3 changed files with 8 additions and 7 deletions
@@ -16,6 +16,6 @@ public interface DeviceDao extends BaseMapper<DeviceEntity> {
* @param agentId 智能体id
* @return
*/
List<Date> getAllLastConnectedAtByAgentId(String agentId);
Date getAllLastConnectedAtByAgentId(String agentId);
}
@@ -260,12 +260,9 @@ public class DeviceServiceImpl extends BaseServiceImpl<DeviceDao, DeviceEntity>
if (cachedDate != null) {
return cachedDate;
}
List<Date> list = deviceDao.getAllLastConnectedAtByAgentId(agentId);
Date maxDate = Collections.max(list, Comparator.comparing(Date::getTime));
// 将结果存入Redis, 存储设备最近最后连接时间,和设备数量
redisUtils.set(RedisKeys.getAgentDeviceCountById(agentId), list.size(), 60);
Date maxDate = deviceDao.getAllLastConnectedAtByAgentId(agentId);
if (maxDate != null) {
redisUtils.set(RedisKeys.getAgentDeviceLastConnectedAtById(agentId), maxDate, 60);
redisUtils.set(RedisKeys.getAgentDeviceLastConnectedAtById(agentId), maxDate, 60 * 2);
}
return maxDate;
}
@@ -3,6 +3,10 @@
<mapper namespace="xiaozhi.modules.device.dao.DeviceDao">
<!-- 获取此智能体全部设备的最后连接时间 -->
<select id="getAllLastConnectedAtByAgentId" resultType="java.util.Date">
SELECT last_connected_at FROM ai_device WHERE agent_id = #{agentId}
SELECT last_connected_at FROM ai_device
WHERE
agent_id = #{agentId}
order by
last_connected_at desc limit 0,1
</select>
</mapper>