| | |
| | | |
| | | import ( |
| | | "aps_crm/pkg/mysqlx" |
| | | "fmt" |
| | | "gorm.io/gorm" |
| | | ) |
| | | |
| | |
| | | Name string `json:"name" gorm:"column:name;type:varchar(255);comment:公司名称"` |
| | | Number string `json:"number" gorm:"column:number;type:varchar(255);comment:销售线索编号"` |
| | | ContactId int `json:"contact_id" gorm:"column:contact_id;type:int(11);comment:联系人ID"` |
| | | Contact Contact `json:"contact" gorm:"foreignKey:ContactId;references:Id"` |
| | | ClientId int `json:"client_id" gorm:"column:client_id;type:int(11);comment:客户ID"` |
| | | SalesSourcesId int `json:"sales_sources_id" gorm:"column:sales_sources_id;type:int(11);comment:商机来源ID"` |
| | | SaleTypeId int `json:"sale_type_id" gorm:"column:sale_type_id;type:int(11);comment:商机类型ID"` |
| | |
| | | Currency int `json:"currency" gorm:"column:currency;type:int(11);comment:币种"` |
| | | ExpectedTime *CustomTime `json:"expected_time" gorm:"column:expected_time;type:datetime;comment:预计成交时间"` |
| | | StatusId int `json:"status_id" gorm:"column:status_id;type:int(11);comment:状态ID"` |
| | | Status Status `json:"status"` //状态 |
| | | PainPoints string `json:"pain_points" gorm:"column:pain_points;type:text;comment:痛点"` |
| | | WhetherEstablished string `json:"whether_established" gorm:"column:whether_established;type:text;comment:是否成立"` |
| | | CapitalBudget string `json:"capital_budget" gorm:"column:capital_budget;type:text;comment:资金预算"` |
| | |
| | | Threats string `json:"threats" gorm:"column:threats;type:text;comment:竞争威胁"` |
| | | DetailAddress string `json:"detail_address" gorm:"column:detail_address;type:text;comment:详细地址"` |
| | | Remark string `json:"remark" gorm:"column:remark;type:text;comment:备注"` |
| | | Contact Contact `json:"contact" gorm:"foreignKey:ContactId;references:Id"` |
| | | Client Client `json:"client" gorm:"foreignKey:ClientId;references:Id"` |
| | | CollectionProjections []CollectionProjection `json:"collection_projections" gorm:"foreignKey:SaleChanceId"` |
| | | SalesSources SalesSources `json:"sales_sources"` |
| | | CodeStandID string `json:"codeStandID" gorm:"column:code_stand_id;type:varchar(255);comment:编码id"` |
| | | Products []*Product `json:"products" gorm:"many2many:SaleChanceProduct;"` |
| | | Address |
| | | gorm.Model `json:"-"` |
| | | } |
| | |
| | | } |
| | | if slf.Name != "" { |
| | | db = db.Where("name = ?", slf.Name) |
| | | } |
| | | if slf.Number != "" { |
| | | db = db.Where("number = ?", slf.Number) |
| | | } |
| | | |
| | | if len(slf.SearchMap) > 0 { |
| | |
| | | db = db.Where("expected_time LIKE ?", "%"+v+"%") |
| | | } |
| | | |
| | | case int: |
| | | case float64: |
| | | if key == "member_id" || key == "budget" || key == "projected_amount" { |
| | | case int, float64: |
| | | if key == "member_id" || key == "budget" || key == "projected_amount" || key == "client_id" { |
| | | db = db.Where(key+" = ?", v) |
| | | } |
| | | case []int: |
| | | if key == "member_ids" { |
| | | db = db.Where("sale_chance.member_id in ?", v) |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | func (slf *SaleChanceSearch) Update(record *SaleChance) (err error) { |
| | | var db = slf.build() |
| | | err = db.Updates(record).Error |
| | | err = db.Preload("Products").Updates(record).Error |
| | | return |
| | | } |
| | | |
| | |
| | | |
| | | func (slf *SaleChanceSearch) Find() (record SaleChance, err error) { |
| | | var db = slf.build() |
| | | err = db.First(&record).Error |
| | | err = db.Preload("Products").First(&record).Error |
| | | return |
| | | } |
| | | |
| | |
| | | db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) |
| | | } |
| | | |
| | | err := db.Preload("SaleType").Preload("RegularCustomers").Preload("SalesSources").Preload("Member").Preload("SaleStage").Preload("Possibility").Preload("CollectionProjections").Preload("Client").Preload("Contact").Order("id desc").Find(&records).Error |
| | | err := db.Preload("SaleType").Preload("RegularCustomers").Preload("SalesSources").Preload("Products"). |
| | | Preload("Member").Preload("SaleStage").Preload("Possibility"). |
| | | Preload("CollectionProjections").Preload("Client"). |
| | | Preload("Province").Preload("City").Preload("Contact").Preload("Status").Order("id desc").Find(&records).Error |
| | | return records, total, err |
| | | } |
| | | |
| | | func (slf *SaleChanceSearch) Count() (int64, error) { |
| | | var db = slf.build() |
| | | var total int64 |
| | | err := db.Count(&total).Error |
| | | return total, err |
| | | } |
| | | |
| | | func (slf *SaleChanceSearch) SetId(id int) *SaleChanceSearch { |
| | |
| | | return slf |
| | | } |
| | | |
| | | func (slf *SaleChanceSearch) SetNumber(number string) *SaleChanceSearch { |
| | | slf.Number = number |
| | | return slf |
| | | } |
| | | |
| | | func (slf *SaleChanceSearch) SetSearchMap(searchMap map[string]interface{}) *SaleChanceSearch { |
| | | slf.SearchMap = searchMap |
| | | return slf |
| | | } |
| | | func (slf *SaleChanceSearch) SetIds(ids []int) *SaleChanceSearch { |
| | | slf.Orm = slf.Orm.Where("id in (?)", ids) |
| | | return slf |
| | | } |
| | | func (slf *SaleChanceSearch) UpdateByMap(data map[string]interface{}) error { |
| | | var db = slf.build() |
| | | return db.Updates(data).Error |
| | | } |
| | | |
| | | func (slf *SaleChanceSearch) MaxAutoIncr() (int, error) { |
| | | type Result struct { |
| | | Max int |
| | | } |
| | | |
| | | var ( |
| | | result Result |
| | | db = slf.build() |
| | | ) |
| | | |
| | | err := db.Select("MAX(id) as max").Scan(&result).Error |
| | | if err != nil { |
| | | return result.Max, fmt.Errorf("max err: %v", err) |
| | | } |
| | | return result.Max, nil |
| | | } |