deliveryman-api/app/models/merchant_pay_order.py
2025-02-13 16:24:30 +08:00

51 lines
1.9 KiB
Python

from sqlalchemy import Column, String, Integer, DateTime, ForeignKey, Enum, DECIMAL, Boolean
from sqlalchemy.sql import func
from pydantic import BaseModel, Field
from typing import Optional
from datetime import datetime
from .database import Base
import time
import enum
class MerchantPayOrderStatus(str, enum.Enum):
UNPAID = "UNPAID" # 未支付
PAID = "PAID" # 已支付
REFUNDING = "REFUNDING" # 退款中
REFUNDED = "REFUNDED" # 已退款
class MerchantPayOrderDB(Base):
__tablename__ = "merchant_pay_orders"
id = Column(Integer, primary_key=True, autoincrement=True)
order_id = Column(String(20), unique=True, nullable=False)
merchant_id = Column(Integer, ForeignKey("merchants.id"), nullable=False)
user_id = Column(Integer, ForeignKey("users.userid"), nullable=False)
amount = Column(DECIMAL(10,2), nullable=False)
gift_points = Column(Integer, nullable=False, default=0)
status = Column(Enum(MerchantPayOrderStatus), nullable=False, default=MerchantPayOrderStatus.UNPAID)
pay_status = Column(Boolean, nullable=False, default=False)
create_time = Column(DateTime(timezone=True), server_default=func.now())
update_time = Column(DateTime(timezone=True), onupdate=func.now())
pay_time = Column(DateTime(timezone=True), nullable=True)
transaction_id = Column(String(64)) # 微信支付交易号
class MerchantPayOrderCreate(BaseModel):
merchant_id: int
amount: float = Field(..., gt=0)
class MerchantPayOrderInfo(BaseModel):
id: int
order_id: str
merchant_id: int
user_id: int
amount: float
gift_points: int
status: MerchantPayOrderStatus
create_time: datetime
update_time: Optional[datetime]
pay_time: Optional[datetime]
merchant_name: Optional[str] = None
merchant_image: Optional[str] = None
class Config:
from_attributes = True