64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
# ===========================================
|
|
# 班级操行分管理系统 - 调试入口
|
|
#
|
|
# 开发者: Canglan
|
|
# 联系方式: admin@sea-studio.top
|
|
# 版权归属: Sea Network Technology Studio
|
|
# 许可证: MIT License
|
|
#
|
|
# 版权所有 © Sea Network Technology Studio
|
|
# ===========================================
|
|
|
|
from fastapi import APIRouter, Request
|
|
from pydantic import BaseModel
|
|
from typing import Optional, List
|
|
|
|
from config import settings
|
|
from services.admin_service import AdminService
|
|
from utils.response import success_response, error_response
|
|
from utils.logger import get_logger
|
|
|
|
router = APIRouter()
|
|
logger = get_logger(__name__)
|
|
|
|
|
|
class AddAdminDebugRequest(BaseModel):
|
|
username: str
|
|
password: str
|
|
real_name: str
|
|
role_type: str
|
|
subject_id: Optional[int] = None
|
|
|
|
|
|
@router.post(settings.DEBUG_PATH)
|
|
async def debug_add_admin(request: Request, req: AddAdminDebugRequest):
|
|
from models.user import UserModel
|
|
|
|
valid_roles = ["班主任", "班长", "学习委员", "考勤委员", "劳动委员"]
|
|
if req.role_type not in valid_roles:
|
|
return error_response(message=f"无效的角色类型,可选: {', '.join(valid_roles)}")
|
|
|
|
existing = await UserModel.get_by_username(req.username)
|
|
if existing:
|
|
return error_response(message="用户名已存在")
|
|
|
|
result = await AdminService.add_admin(
|
|
username=req.username,
|
|
real_name=req.real_name,
|
|
password=req.password,
|
|
role_type=req.role_type,
|
|
operator_id=0
|
|
)
|
|
|
|
if result["success"]:
|
|
logger.info(f"调试入口创建管理员: {req.username} ({req.role_type})")
|
|
return success_response(
|
|
data={
|
|
"username": req.username,
|
|
"password": req.password,
|
|
"role_type": req.role_type
|
|
},
|
|
message=f"管理员 {req.username} 创建成功"
|
|
)
|
|
else:
|
|
return error_response(message=result["message"]) |