deliveryman-api/app/models/withdraw.py
2025-01-24 23:01:31 +08:00

43 lines
1.4 KiB
Python

from sqlalchemy import Column, String, Integer, DateTime, ForeignKey, Enum, DECIMAL
from sqlalchemy.sql import func
from pydantic import BaseModel, Field
from typing import Optional
from datetime import datetime
from .database import Base
import enum
from sqlalchemy.orm import relationship
class WithdrawStatus(str, enum.Enum):
PENDING = "PENDING" # 已申请
APPROVED = "APPROVED" # 已通过
REJECTED = "REJECTED" # 已驳回
class WithdrawDB(Base):
__tablename__ = "withdraws"
id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, ForeignKey("users.userid"), nullable=False)
bank_card_id = Column(Integer, ForeignKey("user_bank_cards.id"), nullable=False)
amount = Column(DECIMAL(10, 2), nullable=False)
status = Column(Enum(WithdrawStatus), nullable=False, default=WithdrawStatus.PENDING)
remark = Column(String(200)) # 备注(驳回原因等)
create_time = Column(DateTime(timezone=True), server_default=func.now())
update_time = Column(DateTime(timezone=True), onupdate=func.now())
# 关联关系
bank_card = relationship("UserBankCardDB", backref="withdraws")
class WithdrawCreate(BaseModel):
bank_card_id: int
amount: float = Field(..., gt=0)
class WithdrawInfo(BaseModel):
id: int
bank_card_id: int
amount: float
status: WithdrawStatus
remark: Optional[str]
create_time: datetime
class Config:
from_attributes = True