| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- from datetime import datetime, date
- from decimal import Decimal
- from typing import Optional
- from sqlalchemy import BigInteger, String, DateTime, Integer, Text, Date, Numeric, SmallInteger
- from sqlalchemy.orm import Mapped, mapped_column
- from app.database import Base
- class CrmOpportunity(Base):
- __tablename__ = "crm_opportunity"
- id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
- opportunity_no: Mapped[Optional[str]] = mapped_column(String(50), comment="商机编号")
- opportunity_name: Mapped[Optional[str]] = mapped_column(String(200), comment="商机名称")
- customer_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="客户ID")
- customer_name: Mapped[Optional[str]] = mapped_column(String(200), comment="客户名称")
- contact_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="联系人ID")
- contact_name: Mapped[Optional[str]] = mapped_column(String(50), comment="联系人姓名")
- amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="商机金额")
- stage: Mapped[Optional[str]] = mapped_column(String(20), comment="商机阶段")
- stage_percent: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="阶段百分比")
- status: Mapped[Optional[str]] = mapped_column(String(20), default="1", comment="状态(1进行中 2已赢单 3已输单)")
- win_rate: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="赢单概率")
- expect_deal_date: Mapped[Optional[date]] = mapped_column(Date, comment="预计成交日期")
- actual_deal_date: Mapped[Optional[date]] = mapped_column(Date, comment="实际成交日期")
- lost_reason: Mapped[Optional[str]] = mapped_column(String(500), comment="输单原因")
- owner_user_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="负责人ID")
- owner_user_name: Mapped[Optional[str]] = mapped_column(String(50), comment="负责人姓名")
- product_count: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="产品数量")
- last_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="最后跟进时间")
- next_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="下次联系时间")
- follow_count: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="跟进次数")
- contract_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="关联合同ID")
- source: Mapped[Optional[str]] = mapped_column(String(20), comment="商机来源")
- type: Mapped[Optional[str]] = mapped_column(String(20), comment="商机类型")
- description: Mapped[Optional[str]] = mapped_column(Text, comment="描述")
- competitors: Mapped[Optional[str]] = mapped_column(String(500), comment="竞争对手")
- key_factors: Mapped[Optional[str]] = mapped_column(String(500), comment="关键因素")
- tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
- create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
- create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
- create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
- update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
- update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
- del_flag: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="删除标志(0存在 1删除)")
- version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
- remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
- class CrmOpportunityFollow(Base):
- __tablename__ = "crm_opportunity_follow"
- id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
- opportunity_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="商机ID")
- follow_type: Mapped[Optional[str]] = mapped_column(String(20), comment="跟进方式")
- follow_content: Mapped[Optional[str]] = mapped_column(Text, comment="跟进内容")
- follow_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="跟进时间")
- stage: Mapped[Optional[str]] = mapped_column(String(20), comment="跟进时阶段")
- stage_percent: Mapped[Optional[int]] = mapped_column(Integer, comment="阶段百分比")
- next_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="下次联系时间")
- next_content: Mapped[Optional[str]] = mapped_column(String(500), comment="下次跟进内容")
- attachments: Mapped[Optional[str]] = mapped_column(String(1000), comment="附件")
- contact_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="联系人ID")
- contact_name: Mapped[Optional[str]] = mapped_column(String(50), comment="联系人姓名")
- location: Mapped[Optional[str]] = mapped_column(String(200), comment="跟进地点")
- duration: Mapped[Optional[int]] = mapped_column(Integer, comment="跟进时长(分钟)")
- follow_by: Mapped[Optional[str]] = mapped_column(String(50), comment="跟进人")
- tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
- create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
- create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
- create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
- update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
- update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
- del_flag: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="删除标志")
- version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
- remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
- class CrmOpportunityProduct(Base):
- __tablename__ = "crm_opportunity_product"
- id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
- opportunity_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="商机ID")
- product_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="产品ID")
- product_name: Mapped[Optional[str]] = mapped_column(String(200), comment="产品名称")
- product_no: Mapped[Optional[str]] = mapped_column(String(50), comment="产品编号")
- category_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="分类ID")
- category_name: Mapped[Optional[str]] = mapped_column(String(100), comment="分类名称")
- model: Mapped[Optional[str]] = mapped_column(String(100), comment="规格型号")
- unit: Mapped[Optional[str]] = mapped_column(String(20), comment="单位")
- quantity: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("1"), comment="数量")
- price: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="单价")
- discount: Mapped[Optional[Decimal]] = mapped_column(Numeric(5, 2), default=Decimal("100"), comment="折扣(%)")
- subtotal: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="小计")
- sort: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="排序号")
- tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
- create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
- create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
- create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
- update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
- update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
- del_flag: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="删除标志")
- version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
- remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
- class CrmOpportunityStageLog(Base):
- __tablename__ = "crm_opportunity_stage_log"
- id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
- opportunity_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="商机ID")
- from_stage: Mapped[Optional[str]] = mapped_column(String(20), comment="原阶段")
- from_stage_name: Mapped[Optional[str]] = mapped_column(String(50), comment="原阶段名称")
- from_percent: Mapped[Optional[int]] = mapped_column(Integer, comment="原阶段百分比")
- to_stage: Mapped[Optional[str]] = mapped_column(String(20), comment="新阶段")
- to_stage_name: Mapped[Optional[str]] = mapped_column(String(50), comment="新阶段名称")
- to_percent: Mapped[Optional[int]] = mapped_column(Integer, comment="新阶段百分比")
- change_type: Mapped[Optional[str]] = mapped_column(String(20), comment="变更类型")
- change_reason: Mapped[Optional[str]] = mapped_column(String(500), comment="变更原因")
- change_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), comment="变更金额")
- tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
- create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
- create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
- create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
- update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
- update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
- del_flag: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="删除标志")
- version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
- remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
- lost_detail: Mapped[Optional[str]] = mapped_column(String(500), comment="输单详情")
- competitor_info: Mapped[Optional[str]] = mapped_column(String(500), comment="竞争对手信息")
- improvement: Mapped[Optional[str]] = mapped_column(String(500), comment="改进建议")
- won_remark: Mapped[Optional[str]] = mapped_column(String(500), comment="赢单备注")
|