"""API - 商品参数值管理""" from typing import List from fastapi import APIRouter, Depends, HTTPException 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.product_parameter_value import product_parameter_value from app.schemas.product_parameter_value import ( ProductParameterValueBatchSave, ProductParameterValueResponse, ProductParameterValueListResponse ) router = APIRouter(prefix="/web/admin/product-parameter-values", tags=["商品参数值管理"]) def require_admin(current_user: dict = Depends(get_current_user)): """验证运营人员权限""" if current_user.get("role") not in {"admin", "super_admin"}: raise HTTPException(status_code=403, detail="需要运营人员权限") return current_user @router.get("/product/{product_id}", response_model=dict) def get_product_parameter_values( product_id: str, db: Session = Depends(get_db), current_user: dict = Depends(require_admin) ): """获取商品的参数值""" values = product_parameter_value.get_by_product_with_detail(db, product_id) return success_response({ "list": values, "total": len(values) }) @router.post("/product/{product_id}", response_model=dict) def save_product_parameter_values( product_id: str, save_data: ProductParameterValueBatchSave, 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")} values_data = [item.model_dump() for item in save_data.values] product_parameter_value.batch_save(db, product_id, values_data, creator) # 重新获取更新后的列表 values = product_parameter_value.get_by_product_with_detail(db, product_id) return success_response({ "list": values, "total": len(values) })