crm_customer.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. from datetime import datetime
  2. from decimal import Decimal
  3. from typing import Optional
  4. from sqlalchemy import BigInteger, String, DateTime, Integer, Text, Numeric, SmallInteger
  5. from sqlalchemy.orm import Mapped, mapped_column
  6. from app.database import Base
  7. class CrmCustomer(Base):
  8. __tablename__ = "crm_customer"
  9. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  10. customer_no: Mapped[Optional[str]] = mapped_column(String(50), comment="客户编号")
  11. customer_name: Mapped[Optional[str]] = mapped_column(String(200), comment="客户名称")
  12. short_name: Mapped[Optional[str]] = mapped_column(String(100), comment="客户简称")
  13. customer_type: Mapped[Optional[str]] = mapped_column(String(20), comment="客户类型")
  14. mobile: Mapped[Optional[str]] = mapped_column(String(20), comment="手机号")
  15. telephone: Mapped[Optional[str]] = mapped_column(String(30), comment="固定电话")
  16. email: Mapped[Optional[str]] = mapped_column(String(100), comment="邮箱")
  17. website: Mapped[Optional[str]] = mapped_column(String(500), comment="客户网站")
  18. level: Mapped[Optional[str]] = mapped_column(String(20), comment="客户级别")
  19. source: Mapped[Optional[str]] = mapped_column(String(20), comment="客户来源")
  20. industry: Mapped[Optional[str]] = mapped_column(String(50), comment="所属行业")
  21. park_area: Mapped[Optional[str]] = mapped_column(String(100), comment="所在园区")
  22. payment_terms: Mapped[Optional[str]] = mapped_column(String(500), comment="付款条件")
  23. scale: Mapped[Optional[str]] = mapped_column(String(20), comment="企业规模")
  24. province: Mapped[Optional[str]] = mapped_column(String(50), comment="省")
  25. city: Mapped[Optional[str]] = mapped_column(String(50), comment="市")
  26. district: Mapped[Optional[str]] = mapped_column(String(50), comment="区")
  27. address: Mapped[Optional[str]] = mapped_column(String(255), comment="详细地址")
  28. status: Mapped[Optional[str]] = mapped_column(String(20), default="1", comment="客户状态(1正常 2公海 3无效)")
  29. deal_status: Mapped[Optional[str]] = mapped_column(String(20), default="0", comment="成交状态(0未成交 1已成交)")
  30. owner_user_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="负责人ID")
  31. owner_user_name: Mapped[Optional[str]] = mapped_column(String(50), comment="负责人姓名")
  32. last_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="最后跟进时间")
  33. next_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="下次联系时间")
  34. follow_count: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="跟进次数")
  35. deal_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="成交时间")
  36. deal_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="成交金额")
  37. contact_count: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="联系人数量")
  38. opportunity_count: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="商机数量")
  39. contract_count: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="合同数量")
  40. into_pool_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="进入公海时间")
  41. into_pool_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="放入公海操作人")
  42. into_pool_reason: Mapped[Optional[str]] = mapped_column(String(500), comment="放入公海原因")
  43. claim_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="领取时间")
  44. assign_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="分配时间")
  45. assign_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="分配人")
  46. protect_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="保护到期时间")
  47. clue_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="关联线索ID")
  48. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  49. create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
  50. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  51. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  52. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  53. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  54. del_flag: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="删除标志(0存在 1删除)")
  55. version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
  56. remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
  57. business_license_images: Mapped[Optional[str]] = mapped_column(String(1000), comment="营业执照图片")
  58. business_permit_images: Mapped[Optional[str]] = mapped_column(String(1000), comment="经营许可证图片")
  59. other_cert_images: Mapped[Optional[str]] = mapped_column(String(1000), comment="其他证件图片")
  60. class CrmCustomerFollow(Base):
  61. __tablename__ = "crm_customer_follow"
  62. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  63. customer_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="客户ID")
  64. customer_name: Mapped[Optional[str]] = mapped_column(String(200), comment="客户名称")
  65. contact_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="联系人ID")
  66. contact_name: Mapped[Optional[str]] = mapped_column(String(50), comment="联系人姓名")
  67. follow_type: Mapped[Optional[str]] = mapped_column(String(20), comment="跟进方式")
  68. follow_content: Mapped[Optional[str]] = mapped_column(Text, comment="跟进内容")
  69. next_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="下次联系时间")
  70. attachments: Mapped[Optional[str]] = mapped_column(String(1000), comment="附件")
  71. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  72. create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
  73. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  74. create_by_name: Mapped[Optional[str]] = mapped_column(String(50), comment="创建者姓名")
  75. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  76. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  77. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  78. del_flag: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="删除标志")
  79. version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
  80. remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
  81. class CrmCustomerTag(Base):
  82. __tablename__ = "crm_customer_tag"
  83. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  84. tag_name: Mapped[Optional[str]] = mapped_column(String(50), comment="标签名称")
  85. tag_color: Mapped[Optional[str]] = mapped_column(String(20), comment="标签颜色")
  86. tag_type: Mapped[Optional[str]] = mapped_column(String(20), comment="标签类型")
  87. sort_order: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="排序号")
  88. share_scope: Mapped[Optional[str]] = mapped_column(String(200), comment="共享范围")
  89. create_user_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建用户ID")
  90. create_user_name: Mapped[Optional[str]] = mapped_column(String(50), comment="创建用户姓名")
  91. use_count: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="使用次数")
  92. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  93. create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
  94. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  95. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  96. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  97. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  98. del_flag: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="删除标志")
  99. remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
  100. class CrmCustomerTagRelation(Base):
  101. __tablename__ = "crm_customer_tag_relation"
  102. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  103. customer_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="客户ID")
  104. customer_name: Mapped[Optional[str]] = mapped_column(String(200), comment="客户名称")
  105. tag_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="标签ID")
  106. tag_name: Mapped[Optional[str]] = mapped_column(String(50), comment="标签名称")
  107. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  108. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  109. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  110. del_flag: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="删除标志")
  111. class CrmCustomerPool(Base):
  112. __tablename__ = "crm_customer_pool"
  113. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  114. customer_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="客户ID")
  115. customer_name: Mapped[Optional[str]] = mapped_column(String(200), comment="客户名称")
  116. operation_type: Mapped[Optional[str]] = mapped_column(String(20), comment="操作类型")
  117. from_user_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="原负责人ID")
  118. from_user_name: Mapped[Optional[str]] = mapped_column(String(50), comment="原负责人姓名")
  119. to_user_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="新负责人ID")
  120. to_user_name: Mapped[Optional[str]] = mapped_column(String(50), comment="新负责人姓名")
  121. reason: Mapped[Optional[str]] = mapped_column(String(500), comment="原因")
  122. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  123. create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
  124. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  125. create_by_name: Mapped[Optional[str]] = mapped_column(String(50), comment="创建者姓名")
  126. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  127. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  128. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  129. del_flag: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="删除标志")
  130. version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
  131. remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
  132. class CrmCustomerPoolRule(Base):
  133. __tablename__ = "crm_customer_pool_rule"
  134. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  135. pool_name: Mapped[Optional[str]] = mapped_column(String(100), comment="规则名称")
  136. rule_type: Mapped[Optional[str]] = mapped_column(String(20), comment="规则类型")
  137. timeout_days: Mapped[Optional[int]] = mapped_column(Integer, comment="超时天数")
  138. protect_days: Mapped[Optional[int]] = mapped_column(Integer, comment="保护期天数")
  139. status: Mapped[Optional[str]] = mapped_column(String(20), default="1", comment="状态(1启用 0禁用)")
  140. sort: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="排序号")
  141. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  142. create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
  143. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  144. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  145. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  146. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  147. del_flag: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="删除标志")
  148. version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
  149. remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")