| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- from sqlalchemy import Column, Integer, String, Boolean, DateTime, Numeric, func
- from sqlalchemy.orm import declarative_base
- Base = declarative_base()
- class SuperAdmin(Base):
- """超级管理员表"""
- __tablename__ = "super_admin"
- __table_args__ = {"schema": "domain_monitor"}
- id = Column(Integer, primary_key=True, autoincrement=True)
- username = Column(String, nullable=False)
- nickname = Column(String)
- remark = Column(String) # 域名备注,作为超管显示名称
- created_at = Column(DateTime(timezone=True), server_default=func.now())
- class SuperAdminTenant(Base):
- """超级管理员-租户关联表"""
- __tablename__ = "super_admin_tenant"
- __table_args__ = {"schema": "domain_monitor"}
- id = Column(Integer, primary_key=True, autoincrement=True)
- super_admin_id = Column(Integer, nullable=False, index=True)
- tenant_id = Column(Integer, nullable=False, index=True)
- class Tenant(Base):
- """租户(企业)表"""
- __tablename__ = "tenant"
- __table_args__ = {"schema": "domain_monitor"}
- id = Column(Integer, primary_key=True, autoincrement=True)
- company_name = Column(String)
- subdomain = Column(String, unique=True, nullable=False, index=True)
- balance = Column(Numeric(20, 4), server_default="0")
- created_at = Column(DateTime(timezone=True), server_default=func.now())
- updated_at = Column(DateTime(timezone=True), onupdate=func.now())
- class Model(Base):
- """模型信息参考表"""
- __tablename__ = "models"
- __table_args__ = {"schema": "domain_monitor"}
- id = Column(Integer, primary_key=True, autoincrement=True)
- model_code = Column(String, unique=True, nullable=False, index=True)
- model_name = Column(String, nullable=False)
- original_price = Column(Numeric(20, 4))
- class SuperAdminModelDiscount(Base):
- """超级管理员模型折扣表(从 crawler 同步)"""
- __tablename__ = "super_admin_model_discount"
- __table_args__ = {"schema": "domain_monitor"}
- id = Column(Integer, primary_key=True, autoincrement=True)
- model_code = Column(String, unique=True, nullable=False, index=True)
- discount_rate = Column(Numeric(10, 4), server_default="1.0000", nullable=False)
- created_at = Column(DateTime(timezone=True), server_default=func.now())
- updated_at = Column(DateTime(timezone=True), onupdate=func.now())
- class UserConsumptionDetail(Base):
- """用户模型消费明细表(每次调用的记录)"""
- __tablename__ = "user_consumption_detail"
- __table_args__ = {"schema": "domain_monitor"}
- id = Column(Integer, primary_key=True, autoincrement=True)
- user_id = Column(String, nullable=False, index=True)
- username = Column(String)
- tenant_id = Column(Integer, nullable=False, index=True)
- model_code = Column(String, nullable=False, index=True)
- call_count = Column(Integer, server_default="0")
- # 用户侧:用户实际支付
- user_actual_total = Column(Numeric(20, 4), server_default="0")
- user_discount = Column(Numeric(10, 4), server_default="1.0000")
- user_actual_price = Column(Numeric(20, 4))
- # 租户侧:平台向企业收取
- tenant_actual_total = Column(Numeric(20, 4), server_default="0")
- tenant_discount = Column(Numeric(10, 4), server_default="1.0000")
- tenant_actual_price = Column(Numeric(20, 4))
- # 超管侧:平台向超管收取
- super_admin_discount = Column(Numeric(10, 4), server_default="1.0000")
- super_admin_actual_price = Column(Numeric(20, 4))
- original_price = Column(Numeric(20, 4))
- consumption_date = Column(DateTime(timezone=True), nullable=False, index=True)
- order_no = Column(String)
- invoiced = Column(Boolean, server_default="false")
- created_at = Column(DateTime(timezone=True), server_default=func.now())
|