from datetime import datetime from sqlalchemy import DateTime, String, Text, JSON from sqlalchemy.orm import Mapped, mapped_column from app.core.base_model import PaymentModelMixin, TenantMixin from app.common.enums import PermissionFilterStrategy from .enums import EnterpriseStatusEnum class EnterpriseModel(PaymentModelMixin, TenantMixin): """企业模型""" __tablename__ = "pay_enterprise" __table_args__ = {"comment": "企业表"} __permission_strategy__ = PermissionFilterStrategy.ENTERPRISE_BASED enterprise_id: Mapped[str | None] = mapped_column( String(64), unique=True, comment="企业ID(业务主键)" ) out_biz_no: Mapped[str | None] = mapped_column( String(64), unique=True, index=True, comment="外部业务号" ) account_id: Mapped[str | None] = mapped_column( String(64), index=True, comment="支付宝账号ID(签约后获取)" ) name: Mapped[str | None] = mapped_column(String(128), comment="企业名称") short_name: Mapped[str | None] = mapped_column(String(64), comment="企业简称") status: Mapped[str] = mapped_column( String(32), default=EnterpriseStatusEnum.ENTERPRISE_APPLICATION.value, comment="状态: ENTERPRISE_APPLICATION/ENTERPRISE_CREATE/ENTERPRISE_ACTIVATED/ENTERPRISE_UNSIGN/ENTERPRISE_WITHDRAW/ENTERPRISE_AUTH/ENTERPRISE_AUTH_REJECTED", ) sign_url: Mapped[str | None] = mapped_column(Text, comment="签约链接") pc_invite_url: Mapped[str | None] = mapped_column(Text, comment="邀请URL") invite_time: Mapped[datetime | None] = mapped_column( DateTime, comment="邀请码创建时间" ) expire_time: Mapped[datetime | None] = mapped_column( DateTime, comment="链接过期时间" ) identity_type: Mapped[str | None] = mapped_column( String(64), comment="企业管理员身份类型: ALIPAY_USER_ID/ALIPAY_LOGON_ID/ISV_USER_ID" ) identity: Mapped[str | None] = mapped_column( String(64), comment="企业管理员身份标识" ) identity_open_id: Mapped[str | None] = mapped_column( String(128), comment="企业管理员openId" ) register_mode: Mapped[str | None] = mapped_column( String(32), comment="注册模式: NORMAL/ISV_AGENT/ISV_VIRTUAL" ) sign_fund_way: Mapped[str | None] = mapped_column( String(32), comment="签约出资方式: BALANCE/CREDIT/CORPORATE_CARD/ENT_FA_EXPRESS/GEN_PER_ADV_PAY/CARD_PAY_LEDGER/PER_ALI_CREDIT" ) base_info: Mapped[dict | None] = mapped_column( JSON, comment="企业基本信息: industry/enterprise_code/enterprise_name" ) profiles: Mapped[dict | None] = mapped_column( JSON, comment="扩展参数: group_app_id/access_channel等" ) remark: Mapped[str | None] = mapped_column(Text, comment="备注")