合入持久化刷卡语音消息的代码,暂未测试

This commit is contained in:
HycJack
2026-05-26 02:47:59 +08:00
parent e3059304b4
commit 1ffad03801
14 changed files with 1065 additions and 68 deletions

View File

@@ -3,6 +3,8 @@ from utils.logger import session_logger
from database.connection import get_db_manager
class DatabaseServiceBase:
_logged_initialized_services = set()
"""
数据库服务基类,提供通用的数据库初始化和会话管理功能
所有需要访问数据库的服务类都应该继承此基类
@@ -19,7 +21,9 @@ class DatabaseServiceBase:
try:
self.db_manager = await get_db_manager()
self._db_initialized = True
session_logger.info("system", self.service_name, f"{self.service_name}数据库连接初始化成功")
if self.service_name not in self._logged_initialized_services:
self._logged_initialized_services.add(self.service_name)
session_logger.info("system", self.service_name, f"{self.service_name}数据库连接初始化成功")
except Exception as e:
session_logger.error("system", self.service_name, f"{self.service_name}数据库连接初始化失败: {str(e)}")
raise

View File

@@ -3,6 +3,7 @@ from typing import Optional, Dict
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.triggers.interval import IntervalTrigger
from banban.service.pending_voice_message import pending_voice_message_service
from services.connection_manager import connection_manager
from handlers.mqtt_handler import TalkingQMQTTService
from services.offline_audio_cache import offline_audio_cache
@@ -40,11 +41,14 @@ class TaskScheduler:
async def _execute_task(self):
try:
service = await TalkingQMQTTService.get_instance()
pending_devices = await pending_voice_message_service.list_devices_with_pending()
audio_cache = await offline_audio_cache.get_all_audio_cache()
if not audio_cache:
fallback_devices = list(audio_cache.keys()) if audio_cache else []
device_ids = list(dict.fromkeys([*pending_devices, *fallback_devices]))
if not device_ids:
logger.warning("", "", "无离线音频缓存,跳过本次执行")
return
for device_id, audio_urls in audio_cache.items():
for device_id in device_ids:
websocket = await connection_manager.get_connection(device_id)
if websocket is not None:
audio_url = f"http://{settings.server_host}:{settings.server_port}/assets/audio/new_message.mp3"