重构后端服务架构并优化前端错误处理
This commit is contained in:
0
fastapi-backend/app/schemas/__init__.py
Normal file
0
fastapi-backend/app/schemas/__init__.py
Normal file
58
fastapi-backend/app/schemas/order.py
Normal file
58
fastapi-backend/app/schemas/order.py
Normal file
@@ -0,0 +1,58 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
from enum import Enum
|
||||
|
||||
class OrderStatus(str, Enum):
|
||||
PENDING = "pending"
|
||||
CONFIRMED = "confirmed"
|
||||
PROCESSING = "processing"
|
||||
SHIPPED = "shipped"
|
||||
DELIVERED = "delivered"
|
||||
CANCELLED = "cancelled"
|
||||
COMPLETED = "completed"
|
||||
|
||||
class OrderBase(BaseModel):
|
||||
buyer_id: int
|
||||
seller_id: int
|
||||
variety_type: str
|
||||
weight_range: str
|
||||
weight_actual: Optional[float] = None
|
||||
price_per_unit: float
|
||||
total_price: float
|
||||
advance_payment: float = 0.0
|
||||
final_payment: float = 0.0
|
||||
status: OrderStatus = OrderStatus.PENDING
|
||||
delivery_address: Optional[str] = None
|
||||
delivery_time: Optional[datetime] = None
|
||||
remark: Optional[str] = None
|
||||
|
||||
class OrderCreate(OrderBase):
|
||||
pass
|
||||
|
||||
class OrderUpdate(BaseModel):
|
||||
buyer_id: Optional[int] = None
|
||||
seller_id: Optional[int] = None
|
||||
variety_type: Optional[str] = None
|
||||
weight_range: Optional[str] = None
|
||||
weight_actual: Optional[float] = None
|
||||
price_per_unit: Optional[float] = None
|
||||
total_price: Optional[float] = None
|
||||
advance_payment: Optional[float] = None
|
||||
final_payment: Optional[float] = None
|
||||
status: Optional[OrderStatus] = None
|
||||
delivery_address: Optional[str] = None
|
||||
delivery_time: Optional[datetime] = None
|
||||
remark: Optional[str] = None
|
||||
|
||||
class OrderInDBBase(OrderBase):
|
||||
id: int
|
||||
order_no: str
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
class Order(OrderInDBBase):
|
||||
pass
|
||||
52
fastapi-backend/app/schemas/payment.py
Normal file
52
fastapi-backend/app/schemas/payment.py
Normal file
@@ -0,0 +1,52 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
from enum import Enum
|
||||
|
||||
class PaymentType(str, Enum):
|
||||
ADVANCE = "advance"
|
||||
FINAL = "final"
|
||||
|
||||
class PaymentMethod(str, Enum):
|
||||
WECHAT = "wechat"
|
||||
ALIPAY = "alipay"
|
||||
BANK = "bank"
|
||||
|
||||
class PaymentStatus(str, Enum):
|
||||
PENDING = "pending"
|
||||
SUCCESS = "success"
|
||||
FAILED = "failed"
|
||||
REFUNDED = "refunded"
|
||||
|
||||
class PaymentBase(BaseModel):
|
||||
order_id: int
|
||||
user_id: int
|
||||
amount: float
|
||||
payment_type: PaymentType
|
||||
payment_method: PaymentMethod
|
||||
status: PaymentStatus = PaymentStatus.PENDING
|
||||
transaction_id: Optional[str] = None
|
||||
|
||||
class PaymentCreate(PaymentBase):
|
||||
pass
|
||||
|
||||
class PaymentUpdate(BaseModel):
|
||||
order_id: Optional[int] = None
|
||||
user_id: Optional[int] = None
|
||||
amount: Optional[float] = None
|
||||
payment_type: Optional[PaymentType] = None
|
||||
payment_method: Optional[PaymentMethod] = None
|
||||
status: Optional[PaymentStatus] = None
|
||||
transaction_id: Optional[str] = None
|
||||
|
||||
class PaymentInDBBase(PaymentBase):
|
||||
id: int
|
||||
payment_no: str
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
class Payment(PaymentInDBBase):
|
||||
pass
|
||||
51
fastapi-backend/app/schemas/user.py
Normal file
51
fastapi-backend/app/schemas/user.py
Normal file
@@ -0,0 +1,51 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
from enum import Enum
|
||||
|
||||
class UserType(str, Enum):
|
||||
CLIENT = "client"
|
||||
SUPPLIER = "supplier"
|
||||
DRIVER = "driver"
|
||||
STAFF = "staff"
|
||||
ADMIN = "admin"
|
||||
|
||||
class UserStatus(str, Enum):
|
||||
ACTIVE = "active"
|
||||
INACTIVE = "inactive"
|
||||
LOCKED = "locked"
|
||||
|
||||
class UserBase(BaseModel):
|
||||
username: str
|
||||
user_type: UserType = UserType.CLIENT
|
||||
status: UserStatus = UserStatus.ACTIVE
|
||||
|
||||
class UserCreate(UserBase):
|
||||
password: str
|
||||
|
||||
class UserUpdate(BaseModel):
|
||||
username: Optional[str] = None
|
||||
user_type: Optional[UserType] = None
|
||||
status: Optional[UserStatus] = None
|
||||
|
||||
class UserInDBBase(UserBase):
|
||||
id: int
|
||||
uuid: str
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
class User(UserInDBBase):
|
||||
pass
|
||||
|
||||
class UserInDB(UserInDBBase):
|
||||
password_hash: str
|
||||
|
||||
class Token(BaseModel):
|
||||
access_token: str
|
||||
token_type: str
|
||||
|
||||
class TokenData(BaseModel):
|
||||
uuid: Optional[str] = None
|
||||
Reference in New Issue
Block a user