同步设备期望音量并补发音量指令
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user