feat: 后端优化部分表的相互交互逻辑,自动移除失效的表单

This commit is contained in:
DLmaster361
2025-09-16 15:44:17 +08:00
parent 2a493bd62a
commit 62877257e4
2 changed files with 29 additions and 3 deletions

View File

@@ -1026,6 +1026,12 @@ class AppConfig(GlobalConfig):
if uid in self.task_dict:
raise RuntimeError(f"脚本 {script_id} 正在运行, 无法删除")
for queue in self.QueueConfig.values():
if isinstance(queue, QueueConfig):
for key, value in queue.QueueItem.items():
if value.get("Info", "ScriptId") == str(uid):
await queue.QueueItem.remove(key)
await self.ScriptConfig.remove(uid)
async def reorder_script(self, index_list: list[str]) -> None:
@@ -1288,7 +1294,7 @@ class AppConfig(GlobalConfig):
/ f"data/{script_id}/{user_id}/Infrastructure/infrastructure.json",
)
if isinstance(script_config, (MaaConfig)):
if isinstance(script_config, MaaConfig):
await script_config.UserData[uid].set("Info", "InfrastPath", str(json_path))
async def add_plan(
@@ -1333,7 +1339,24 @@ class AppConfig(GlobalConfig):
logger.info(f"删除计划表配置: {plan_id}")
await self.PlanConfig.remove(uuid.UUID(plan_id))
uid = uuid.UUID(plan_id)
user_list = []
for script in self.ScriptConfig.values():
if isinstance(script, MaaConfig):
for user in script.UserData.values():
if user.get("Info", "StageMode") == str(uid):
if user.is_locked:
raise RuntimeError(
f"用户 {user.get('Info','Name')} 正在使用此计划表且被锁定, 无法完成删除"
)
user_list.append(user)
for user in user_list:
await user.set("Info", "StageMode", "Fixed")
await self.PlanConfig.remove(uid)
async def reorder_plan(self, index_list: list[str]) -> None:
"""重新排序计划表"""

View File

@@ -369,7 +369,7 @@ class ConfigBase:
def __init__(self, if_save_multi_config: bool = True):
self.file: None | Path = None
self.file: Optional[Path] = None
self.if_save_multi_config = if_save_multi_config
self.is_locked = False
@@ -493,6 +493,9 @@ class ConfigBase:
if not hasattr(self, f"{group}_{name}"):
raise AttributeError(f"配置项 '{group}.{name}' 不存在")
if self.is_locked:
raise ValueError("配置已锁定, 无法修改")
configItem = getattr(self, f"{group}_{name}")
if isinstance(configItem, ConfigItem):
configItem.setValue(value)