""" 用户本地模型权限路由 处理用户对本地模型的权限管理接口 """ from typing import List, Dict from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from app.database import get_db from app.services.user_local_model_permission_service import UserLocalModelPermissionService from app.dependencies.admin_auth import get_current_admin from app.schemas.user_local_model_permission import ( UserLocalModelPermissionResponse, UpdateUserLocalModelPermissionRequest, UpdateUserAllLocalModelPermissionsRequest ) router = APIRouter(prefix="/api/admin/users", tags=["用户本地模型权限"]) @router.get("/{user_id}/local-model-permissions", response_model=List[UserLocalModelPermissionResponse]) async def get_user_local_model_permissions( user_id: str, db: Session = Depends(get_db), current_admin = Depends(get_current_admin) ): """ 获取用户的本地模型权限列表 """ service = UserLocalModelPermissionService(db) permissions = service.get_user_model_permissions(user_id) return permissions @router.put("/{user_id}/local-model-permissions/{model_id}") async def update_user_local_model_permission( user_id: str, model_id: int, request: UpdateUserLocalModelPermissionRequest, db: Session = Depends(get_db), current_admin = Depends(get_current_admin) ): """ 更新用户对特定本地模型的权限 """ service = UserLocalModelPermissionService(db) success = await service.update_user_model_permission( user_id=user_id, model_id=model_id, has_access=request.has_access ) if not success: raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail="更新权限失败" ) return {"message": "权限更新成功"} @router.put("/{user_id}/local-model-permissions") async def update_user_all_local_model_permissions( user_id: str, request: UpdateUserAllLocalModelPermissionsRequest, db: Session = Depends(get_db), current_admin = Depends(get_current_admin) ): """ 更新用户对所有本地模型的权限 """ service = UserLocalModelPermissionService(db) success = await service.update_user_all_model_permissions( user_id=user_id, has_access=request.has_access ) if not success: raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail="更新权限失败" ) return {"message": "权限更新成功"}