model.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. from datetime import datetime
  2. from sqlalchemy import DateTime, String, Text, JSON
  3. from sqlalchemy.orm import Mapped, mapped_column
  4. from app.core.base_model import PaymentModelMixin, TenantMixin
  5. from app.common.enums import PermissionFilterStrategy
  6. from .enums import EnterpriseStatusEnum
  7. class EnterpriseModel(PaymentModelMixin, TenantMixin):
  8. """企业模型"""
  9. __tablename__ = "pay_enterprise"
  10. __table_args__ = {"comment": "企业表"}
  11. __permission_strategy__ = PermissionFilterStrategy.ENTERPRISE_BASED
  12. enterprise_id: Mapped[str | None] = mapped_column(
  13. String(64), unique=True, comment="企业ID(业务主键)"
  14. )
  15. out_biz_no: Mapped[str | None] = mapped_column(
  16. String(64), unique=True, index=True, comment="外部业务号"
  17. )
  18. account_id: Mapped[str | None] = mapped_column(
  19. String(64), index=True, comment="支付宝账号ID(签约后获取)"
  20. )
  21. name: Mapped[str | None] = mapped_column(String(128), comment="企业名称")
  22. short_name: Mapped[str | None] = mapped_column(String(64), comment="企业简称")
  23. status: Mapped[str] = mapped_column(
  24. String(32),
  25. default=EnterpriseStatusEnum.ENTERPRISE_APPLICATION.value,
  26. comment="状态: ENTERPRISE_APPLICATION/ENTERPRISE_CREATE/ENTERPRISE_ACTIVATED/ENTERPRISE_UNSIGN/ENTERPRISE_WITHDRAW/ENTERPRISE_AUTH/ENTERPRISE_AUTH_REJECTED",
  27. )
  28. sign_url: Mapped[str | None] = mapped_column(Text, comment="签约链接")
  29. pc_invite_url: Mapped[str | None] = mapped_column(Text, comment="邀请URL")
  30. invite_time: Mapped[datetime | None] = mapped_column(
  31. DateTime, comment="邀请码创建时间"
  32. )
  33. expire_time: Mapped[datetime | None] = mapped_column(
  34. DateTime, comment="链接过期时间"
  35. )
  36. identity_type: Mapped[str | None] = mapped_column(
  37. String(64), comment="企业管理员身份类型: ALIPAY_USER_ID/ALIPAY_LOGON_ID/ISV_USER_ID"
  38. )
  39. identity: Mapped[str | None] = mapped_column(
  40. String(64), comment="企业管理员身份标识"
  41. )
  42. identity_open_id: Mapped[str | None] = mapped_column(
  43. String(128), comment="企业管理员openId"
  44. )
  45. register_mode: Mapped[str | None] = mapped_column(
  46. String(32), comment="注册模式: NORMAL/ISV_AGENT/ISV_VIRTUAL"
  47. )
  48. sign_fund_way: Mapped[str | None] = mapped_column(
  49. String(32), comment="签约出资方式: BALANCE/CREDIT/CORPORATE_CARD/ENT_FA_EXPRESS/GEN_PER_ADV_PAY/CARD_PAY_LEDGER/PER_ALI_CREDIT"
  50. )
  51. base_info: Mapped[dict | None] = mapped_column(
  52. JSON, comment="企业基本信息: industry/enterprise_code/enterprise_name"
  53. )
  54. profiles: Mapped[dict | None] = mapped_column(
  55. JSON, comment="扩展参数: group_app_id/access_channel等"
  56. )
  57. remark: Mapped[str | None] = mapped_column(Text, comment="备注")