package model import ( "aps_crm/pkg/mysqlx" "gorm.io/gorm" "time" ) type ( // Quotation 报价单 Quotation struct { Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` ClientId int `json:"client_id" gorm:"column:client_id;type:int;comment:客户id"` Number string `json:"number" gorm:"column:number;type:varchar(255);comment:报价单号"` QuotationStatusId int `json:"quotation_status_id" gorm:"column:quotation_status_id;type:int;comment:报价单状态id"` ValidityDate time.Time `json:"validity_date" gorm:"column:validity_date;type:datetime;comment:有效期"` ContactId int `json:"contact_id" gorm:"column:contact_id;type:int;comment:联系人id"` MemberId int `json:"member_id" gorm:"column:member_id;type:int;comment:负责人id"` SaleChanceId int `json:"sale_chance_id" gorm:"column:sale_chance_id;type:int;comment:商机id"` Conditions string `json:"conditions" gorm:"column:conditions;type:text;comment:报价条件"` File string `json:"file" gorm:"column:file;type:varchar(255);comment:附件"` Client Client `json:"client" gorm:"foreignKey:ClientId"` Contact Contact `json:"contact" gorm:"foreignKey:ContactId"` SaleChance SaleChance `json:"sale_chance" gorm:"foreignKey:SaleChanceId"` gorm.Model `json:"-"` } // QuotationSearch 报价单搜索条件 QuotationSearch struct { Quotation Orm *gorm.DB } ) func (Quotation) TableName() string { return "quotation" } func NewQuotationSearch() *QuotationSearch { return &QuotationSearch{ Orm: mysqlx.GetDB(), } } func (slf *QuotationSearch) build() *gorm.DB { var db = slf.Orm.Model(&Quotation{}) if slf.Id != 0 { db = db.Where("id = ?", slf.Id) } return db } func (slf *QuotationSearch) Create(record *Quotation) error { var db = slf.build() return db.Create(record).Error } func (slf *QuotationSearch) Delete() error { var db = slf.build() return db.Delete(&Quotation{}).Error } func (slf *QuotationSearch) Update(record *Quotation) error { var db = slf.build() return db.Updates(record).Error } func (slf *QuotationSearch) Find() (*Quotation, error) { var db = slf.build() var record Quotation err := db.Preload("Client").Preload("Contact").Preload("SaleChance").First(&record).Error return &record, err } func (slf *QuotationSearch) FindAll() ([]*Quotation, error) { var db = slf.build() var records []*Quotation err := db.Find(&records).Error return records, err } func (slf *QuotationSearch) SetId(id int) *QuotationSearch { slf.Id = id return slf } func (slf *QuotationSearch) Updates(data map[string]interface{}) error { var db = slf.build() return db.Updates(data).Error }