deliveryman-api/app/models/user_account.py
aaron 91e56c9eb3 1. merchant 增加 user 归属
2. 验证订单后,给对应的 user 增加结算 balance 和 details
3. 配送订单完成后,根据是否需要支付,切换到不同的状态。
2025-01-19 15:03:29 +08:00

53 lines
1.6 KiB
Python

from sqlalchemy import Column, Integer, DECIMAL, DateTime, ForeignKey, Enum, String
from sqlalchemy.sql import func
from .database import Base
from pydantic import BaseModel, Field
import enum
from typing import Optional
from datetime import datetime
class AccountDetailType(str, enum.Enum):
INCOME = "INCOME" # 收入
EXPENSE = "EXPENSE" # 支出
# 用户账户表
class UserAccountDB(Base):
__tablename__ = "user_accounts"
id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, ForeignKey("users.userid"), unique=True, nullable=False)
balance = Column(DECIMAL(10, 2), nullable=False, default=0)
create_time = Column(DateTime(timezone=True), server_default=func.now())
update_time = Column(DateTime(timezone=True), onupdate=func.now())
# 账户明细表
class AccountDetailDB(Base):
__tablename__ = "account_details"
id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, ForeignKey("users.userid"), nullable=False)
amount = Column(DECIMAL(10, 2), nullable=False)
type = Column(Enum(AccountDetailType), nullable=False)
description = Column(String(200), nullable=False)
create_time = Column(DateTime(timezone=True), server_default=func.now())
# Pydantic 模型
class AccountInfo(BaseModel):
user_id: int
balance: float
create_time: datetime
update_time: Optional[datetime]
class Config:
from_attributes = True
class AccountDetailInfo(BaseModel):
id: int
user_id: int
amount: float
type: AccountDetailType
description: str
create_time: datetime
class Config:
from_attributes = True