"""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.response import success_response, error_response from app.core.menu_guard import require_admin_or_super_admin 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=["分类参数关联管理"]) @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_or_super_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, request: dict, db: Session = Depends(get_db), current_user: dict = Depends(require_admin_or_super_admin) ): """更新分类关联的参数""" from app.api.admin import _resolve_admin_payload_with_crypto_fallback payload, req_err = _resolve_admin_payload_with_crypto_fallback(request, current_user) if req_err is not None: return req_err try: update_data = CategoryParameterBatchUpdate.model_validate(payload) except Exception as exc: return error_response(400, f"参数错误: {exc}") 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) })