Files
H3ConuMS-v2/backend/app/api/v1/provision.py
T
v6ole f1f8518985 ```
feat(auth): 添加用户权限获取接口并完善JWT令牌角色信息

- 在JWT令牌中添加用户角色信息
- 新增get_my_permissions接口用于获取当前用户权限码列表
- 重构认证回调逻辑,增加错误日志记录
- 更新用户信息获取接口使用Authorization头验证
```
2026-04-06 00:40:08 +08:00

63 lines
1.9 KiB
Python

"""业务下发 API"""
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from pydantic import BaseModel
from typing import List, Optional
from app.core.database import get_db
from app.middleware.permission_middleware import require_permission
from app.services.provision_service import ProvisionService
router = APIRouter(prefix="/api/provision", tags=["业务下发"])
class ProvisionRequest(BaseModel):
device_id: int
class BatchProvisionRequest(BaseModel):
device_ids: List[int]
class ProvisionResponse(BaseModel):
success: bool
message: str
device_id: Optional[int] = None
mac_address: Optional[str] = None
olt_ip: Optional[str] = None
port: Optional[str] = None
@router.post("/service", response_model=ProvisionResponse)
def provision_single_device(
request: ProvisionRequest,
db: Session = Depends(get_db),
_: dict = Depends(require_permission('device.edit')),
):
"""下发业务到单个设备"""
service = ProvisionService(db)
result = service.provision_device(request.device_id)
if result.get("success"):
return ProvisionResponse(
success=True,
message=f"业务下发成功,MAC: {result['mac_address']}, 端口: {result['port']}",
device_id=result["device_id"],
mac_address=result["mac_address"],
olt_ip=result.get("olt_ip"),
port=result.get("port")
)
else:
raise HTTPException(status_code=400, detail=result.get("error", "业务下发失败"))
@router.post("/batch", response_model=dict)
def provision_batch_devices(
request: BatchProvisionRequest,
db: Session = Depends(get_db),
_: dict = Depends(require_permission('device.edit')),
):
"""批量下发业务"""
service = ProvisionService(db)
result = service.batch_provision(request.device_ids)
return result