"""API - 分类参数关联管理""" from typing import List from fastapi import APIRouter, Depends, HTTPException, Query from sqlalchemy.orm import Session from app.core.database import get_db from app.core.auth import get_current_user from app.core.response import success_response, error_response from app.crud.category_parameter import category_parameter from app.schemas.category_parameter import ( CategoryParameterBase, CategoryParameterBatchUpdate, CategoryParameterWithDetailResponse, CategoryParameterListResponse ) router = APIRouter(prefix="/web/admin/categories", tags=["分类参数关联管理"]) def require_admin(current_user: dict = Depends(get_current_user)): """验证运营人员权限""" if current_user.get("role") != "admin": raise HTTPException(status_code=403, detail="需要运营人员权限") return current_user @router.get("/{category_id}/parameters", response_model=dict) def get_category_parameters( category_id: str, db: Session = Depends(get_db), current_user: dict = Depends(require_admin) ): """获取分类关联的参数列表""" params = category_parameter.get_by_category_with_detail(db, category_id) return success_response({ "list": params, "total": len(params) }) @router.put("/{category_id}/parameters", response_model=dict) def update_category_parameters( category_id: str, update_data: CategoryParameterBatchUpdate, db: Session = Depends(get_db), current_user: dict = Depends(require_admin) ): """更新分类关联的参数""" creator = {"user_id": current_user.get("user_id"), "real_name": current_user.get("real_name")} items_data = [item.model_dump() for item in update_data.items] category_parameter.batch_save(db, category_id, items_data, creator) # 重新获取更新后的列表 params = category_parameter.get_by_category_with_detail(db, category_id) return success_response({ "list": params, "total": len(params) })