同步设备期望音量并补发音量指令

This commit is contained in:
stu2not
2026-05-25 08:39:41 +08:00
parent 6e104201fb
commit a6882e8371
5 changed files with 140 additions and 2 deletions

View File

@@ -39,6 +39,27 @@ class DeviceVolumeManager(DatabaseServiceBase):
return self.default_volume # 出错时返回默认值
finally:
await db_session.close()
async def get_configured_volume(self, device_id: str) -> Optional[int]:
"""获取已持久化的期望音量;未配置时返回 None。"""
await self._init_database()
db_session = await self.get_session()
try:
query = select(DeviceConfig.volume).where(DeviceConfig.device_id == device_id)
result = await db_session.execute(query)
volume = result.scalar_one_or_none()
if volume is None:
return None
normalized_volume = int(volume)
self.device_volumes[device_id] = normalized_volume
return normalized_volume
except Exception as e:
session_logger.error(device_id, "volume", f"获取期望音量失败: {str(e)}")
raise
finally:
await db_session.close()
async def set_volume(self, device_id: str, volume: int) -> bool:
"""设置设备音量并保存到数据库"""
@@ -59,7 +80,7 @@ class DeviceVolumeManager(DatabaseServiceBase):
update_stmt = (
update(DeviceConfig)
.where(DeviceConfig.device_id == device_id)
.values(volume=volume)
.values(volume=volume, last_update_time=time.time())
)
await db_session.execute(update_stmt)
else: