v2.9update

This commit is contained in:
2026-06-08 10:40:59 +08:00
parent 8d497d73d2
commit 70e7ad8e5e
20 changed files with 162 additions and 74 deletions

View File

@@ -245,10 +245,30 @@ class AdminService:
role_type: str,
operator_id: int
) -> Dict[str, Any]:
"""添加管理员"""
existing = await UserModel.get_by_username(username)
"""添加管理员(支持重新激活已删除的管理员)"""
# 检查用户名是否存在(含已禁用用户,因 username 有 UNIQUE 约束)
existing = await UserModel.get_by_username_any(username)
if existing:
return {"success": False, "message": "用户名已存在"}
if existing.get('status') == 1:
return {"success": False, "message": "用户名已存在"}
# 用户已被软删除status=0重新激活
await UserModel.update_status(existing['user_id'], 1)
await UserModel.update_real_name(existing['user_id'], real_name)
user_id = existing['user_id']
# 检查是否已有管理员角色
existing_role = await AdminRoleModel.get_by_user_id(user_id)
if existing_role:
await AdminRoleModel.update_role(user_id, role_type)
else:
await AdminRoleModel.create(user_id=user_id, role_type=role_type, subject_id=None)
logger.info(f"用户[{operator_id}] 重新激活管理员: {username} ({role_type})")
return {
"success": True,
"user_id": user_id,
"username": username,
"password": None, # 重新激活不返回密码
"role_type": role_type
}
if not password:
password = security.generate_random_password()
@@ -274,7 +294,6 @@ class AdminService:
"password": password,
"role_type": role_type
}
@staticmethod
async def get_admins() -> Dict[str, Any]:
"""获取管理员列表"""