83 lines
2.9 KiB
Python
83 lines
2.9 KiB
Python
"""Pydantic schemas - 分类参数关联"""
|
||
from pydantic import BaseModel, Field, ConfigDict
|
||
from typing import Optional, List
|
||
from datetime import datetime
|
||
|
||
|
||
class CategoryParameterBase(BaseModel):
|
||
"""分类参数关联基础字段"""
|
||
model_config = ConfigDict(populate_by_name=True)
|
||
|
||
category_id: str = Field(..., description="分类ID", alias="categoryId")
|
||
parameter_id: str = Field(..., description="参数ID", alias="parameterId")
|
||
is_required: int = Field(default=0, description="该分类下是否必填:0-否, 1-是", alias="isRequired")
|
||
default_value: Optional[str] = Field(None, max_length=500, description="默认值", alias="defaultValue")
|
||
sort_order: int = Field(default=0, description="排序", alias="sortOrder")
|
||
|
||
|
||
class CategoryParameterItem(BaseModel):
|
||
"""批量更新中的单个参数项(不包含categoryId)"""
|
||
model_config = ConfigDict(populate_by_name=True)
|
||
|
||
parameter_id: str = Field(..., description="参数ID", alias="parameterId")
|
||
is_required: int = Field(default=0, description="该分类下是否必填:0-否, 1-是", alias="isRequired")
|
||
default_value: Optional[str] = Field(None, max_length=500, description="默认值", alias="defaultValue")
|
||
sort_order: int = Field(default=0, description="排序", alias="sortOrder")
|
||
|
||
|
||
class CategoryParameterCreate(CategoryParameterBase):
|
||
"""创建分类参数关联请求"""
|
||
pass
|
||
|
||
|
||
class CategoryParameterUpdate(BaseModel):
|
||
"""更新分类参数关联请求"""
|
||
model_config = ConfigDict(populate_by_name=True)
|
||
|
||
is_required: Optional[int] = Field(None, description="是否必填", alias="isRequired")
|
||
default_value: Optional[str] = Field(None, max_length=500, description="默认值", alias="defaultValue")
|
||
sort_order: Optional[int] = Field(None, description="排序", alias="sortOrder")
|
||
|
||
|
||
class CategoryParameterBatchUpdate(BaseModel):
|
||
"""批量更新分类参数关联请求"""
|
||
model_config = ConfigDict(populate_by_name=True)
|
||
|
||
items: List[CategoryParameterItem] = Field(..., description="参数关联列表")
|
||
|
||
|
||
class CategoryParameterResponse(CategoryParameterBase):
|
||
"""分类参数关联响应"""
|
||
id: str
|
||
create_at: datetime
|
||
create_by: Optional[str] = None
|
||
create_name: Optional[str] = None
|
||
update_at: Optional[datetime] = None
|
||
|
||
class Config:
|
||
from_attributes = True
|
||
|
||
|
||
class CategoryParameterWithDetailResponse(BaseModel):
|
||
"""带参数详情的分类参数关联响应"""
|
||
id: str
|
||
category_id: str
|
||
parameter_id: str
|
||
parameter_name: str
|
||
parameter_code: str
|
||
param_type: str
|
||
options: Optional[str] = None
|
||
placeholder: Optional[str] = None
|
||
is_required: int
|
||
default_value: Optional[str] = None
|
||
sort_order: int
|
||
|
||
class Config:
|
||
from_attributes = True
|
||
|
||
|
||
class CategoryParameterListResponse(BaseModel):
|
||
"""分类参数关联列表响应"""
|
||
list: List[CategoryParameterWithDetailResponse]
|
||
total: int
|