重构后端服务架构并优化前端错误处理

This commit is contained in:
ylweng
2025-09-12 01:21:43 +08:00
parent d550a8ed51
commit 3a48a67757
53 changed files with 3925 additions and 0 deletions

View File

View 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

View 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

View 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