crm_clue.py 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. from datetime import datetime, date
  2. from decimal import Decimal
  3. from typing import Optional
  4. from sqlalchemy import BigInteger, String, DateTime, Integer, Text, Date, SmallInteger
  5. from sqlalchemy.orm import Mapped, mapped_column
  6. from app.database import Base
  7. class CrmClue(Base):
  8. __tablename__ = "crm_clue"
  9. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  10. clue_name: Mapped[Optional[str]] = mapped_column(String(200), comment="线索名称")
  11. mobile: Mapped[Optional[str]] = mapped_column(String(20), comment="手机号")
  12. company: Mapped[Optional[str]] = mapped_column(String(200), comment="公司名称")
  13. customer_type: Mapped[Optional[str]] = mapped_column(String(20), comment="客户类型")
  14. telephone: Mapped[Optional[str]] = mapped_column(String(30), comment="固定电话")
  15. email: Mapped[Optional[str]] = mapped_column(String(100), comment="邮箱")
  16. title: Mapped[Optional[str]] = mapped_column(String(50), comment="称谓")
  17. position: Mapped[Optional[str]] = mapped_column(String(50), comment="职位")
  18. source: Mapped[Optional[str]] = mapped_column(String(20), comment="线索来源")
  19. level: 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. province: Mapped[Optional[str]] = mapped_column(String(50), comment="省")
  23. city: Mapped[Optional[str]] = mapped_column(String(50), comment="市")
  24. district: Mapped[Optional[str]] = mapped_column(String(50), comment="区")
  25. address: Mapped[Optional[str]] = mapped_column(String(255), comment="详细地址")
  26. website: Mapped[Optional[str]] = mapped_column(String(500), comment="网站")
  27. intent_products: Mapped[Optional[str]] = mapped_column(String(500), comment="意向产品")
  28. expect_time: Mapped[Optional[date]] = mapped_column(Date, comment="预计成交时间")
  29. budget: Mapped[Optional[Decimal]] = mapped_column(String(50), comment="预算")
  30. requirement: Mapped[Optional[str]] = mapped_column(Text, comment="需求描述")
  31. status: Mapped[Optional[str]] = mapped_column(String(20), default="1", comment="状态(1待跟进 2跟进中 3已转换 4无效)")
  32. owner_user_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="负责人ID")
  33. owner_user_name: Mapped[Optional[str]] = mapped_column(String(50), comment="负责人姓名")
  34. last_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="最后跟进时间")
  35. next_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="下次联系时间")
  36. follow_count: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="跟进次数")
  37. is_converted: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="是否已转换(0否 1是)")
  38. converted_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="转换时间")
  39. customer_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="转换后客户ID")
  40. converted_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="转换操作人")
  41. assign_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="分配时间")
  42. assign_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="分配人")
  43. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  44. create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
  45. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  46. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  47. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  48. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  49. del_flag: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="删除标志(0存在 1删除)")
  50. version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
  51. remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
  52. class CrmClueFollow(Base):
  53. __tablename__ = "crm_clue_follow"
  54. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  55. clue_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="线索ID")
  56. clue_name: Mapped[Optional[str]] = mapped_column(String(200), comment="线索名称")
  57. follow_type: Mapped[Optional[str]] = mapped_column(String(20), comment="跟进方式")
  58. follow_content: Mapped[Optional[str]] = mapped_column(Text, comment="跟进内容")
  59. next_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="下次联系时间")
  60. attachments: Mapped[Optional[str]] = mapped_column(String(1000), comment="附件")
  61. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  62. create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
  63. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  64. create_by_name: Mapped[Optional[str]] = mapped_column(String(50), comment="创建者姓名")
  65. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  66. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  67. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  68. del_flag: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="删除标志")
  69. version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
  70. remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")