from sqlalchemy import Column, Integer, DateTime, ForeignKey, Enum, String from sqlalchemy.sql import func from .database import Base import enum from pydantic import BaseModel from datetime import datetime from typing import Optional class PointChangeType(str, enum.Enum): CONSUME_RETURN = "CONSUME_RETURN" # 消费返还 CONSUME_DEDUCT = "CONSUME_DEDUCT" # 消费抵扣 SYSTEM_SEND = "SYSTEM_SEND" # 系统发放 class UserPointLogDB(Base): __tablename__ = "user_point_logs" id = Column(Integer, primary_key=True, autoincrement=True) user_id = Column(Integer, ForeignKey("users.userid"), nullable=False) change_amount = Column(Integer, nullable=False) # 变动数量,正数为增加,负数为减少 type = Column(Enum(PointChangeType), nullable=False) remark = Column(String(200)) # 备注说明 create_time = Column(DateTime(timezone=True), server_default=func.now()) class UserPointLogInfo(BaseModel): id: int user_id: int change_amount: int type: PointChangeType remark: Optional[str] create_time: datetime class Config: from_attributes = True