feat(routers): 完善auth、card、file、user相关接口开发

This commit is contained in:
xingc
2025-02-22 11:38:56 +08:00
parent 02ddc81c51
commit 1b2f9c7539
11 changed files with 573 additions and 123 deletions

View File

@@ -4,37 +4,59 @@
# @Software : PyCharm
# @Author : xingc
# @Desc :
from typing import Optional, Literal
import re
from typing import Optional, Dict
from pydantic import BaseModel, conint
from pydantic import BaseModel, constr, condecimal, field_validator
from core.base.schema import SupportPlatformType, PlatformSourceType
from core.base.schema import SupportPlatformType, PlatformSourceType, CardCategoryType
class CardPrice(BaseModel):
front_picture: Optional[str] = None
reverse_picture: Optional[str] = None
# 自定义校验规则
@field_validator('front_picture', 'reverse_picture')
def check_length(cls, value):
if value is not None:
if not re.match(r'^http.*\.jpg$', value):
raise ValueError('链接不合法')
return value
class Card(BaseModel):
cert_number: str
card_year: conint(gt=0, le=2099)
card_year: Optional[constr(pattern=r'^\d{4}([-~]\d{1,4})?$')]
card_brand: Optional[str] = None
card_score: Optional[float] = None
auto_score: Optional[float] = None
card_name: str
card_number: Optional[str] = None
card_type: Optional[str] = None
card_picture: Optional[dict] = {}
card_picture: Optional[CardPrice] = {}
card_spare_picture: Optional[dict] = {}
source: SupportPlatformType
class CardIn(Card):
category: CardCategoryType
reward: Optional[bool] = False
class UpdateCard(BaseModel):
purchase_price: float
display_price: float
purchase_price: condecimal(max_digits=10, decimal_places=2)
display_price: condecimal(max_digits=10, decimal_places=2)
class CardOut(Card, UpdateCard):
card_year: int
class CardVisitOut(Card, UpdateCard):
source: PlatformSourceType
purchase_price: Optional[float] = None
display_price: Optional[float] = None
class CardOut(CardVisitOut):
id: Optional[int] = None
purchase_price: Optional[condecimal(max_digits=10, decimal_places=2)] = None
display_price: Optional[condecimal(max_digits=10, decimal_places=2)] = None
class DeleteCardIn(BaseModel):