From c229f8922a4142a8ae2ac161bb6c121b9c9de672 Mon Sep 17 00:00:00 2001 From: wangpengfei <274878379@qq.com> Date: 星期三, 09 八月 2023 19:35:49 +0800 Subject: [PATCH] fix --- model/contact.go | 366 +++++++++++++++++++++++++++------------------------- 1 files changed, 191 insertions(+), 175 deletions(-) diff --git a/model/contact.go b/model/contact.go index a65213b..43d899a 100644 --- a/model/contact.go +++ b/model/contact.go @@ -1,175 +1,191 @@ -package model - -import ( - "aps_crm/pkg/mysqlx" - "gorm.io/gorm" - "time" -) - -type ( - Contact struct { - Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` - Name string `json:"name" gorm:"column:name;type:varchar(255);comment:鑱旂郴浜哄鍚�"` - Number string `json:"number" gorm:"column:number;type:varchar(255);comment:鑱旂郴浜虹紪鍙�"` - ClientId int `json:"client_id" gorm:"column:client_id;type:int(11);comment:瀹㈡埛ID"` - Position string `json:"position" gorm:"column:position;type:varchar(255);comment:鑱屼綅"` - Phone string `json:"phone" gorm:"column:phone;type:varchar(255);comment:鐢佃瘽"` - MemberId int `json:"member_id" gorm:"column:member_id;type:int(11);comment:璐熻矗浜篒D"` - IsFirst bool `json:"is_first" gorm:"column:is_first;type:tinyint(1);comment:鏄惁棣栬鑱旂郴浜�"` - Wechat string `json:"wechat" gorm:"column:wechat;type:varchar(255);comment:寰俊"` - Birthday time.Time `json:"birthday" gorm:"column:birthday;type:datetime;comment:鐢熸棩"` - Email string `json:"email" gorm:"column:email;type:varchar(255);comment:閭"` - Desc string `json:"desc" gorm:"column:desc;type:varchar(255);comment:澶囨敞"` - Address - gorm.Model `json:"-"` - } - - ContactSearch struct { - Contact - - Orm *gorm.DB - Keyword string - OrderBy string - PageNum int - PageSize int - } - - ContactDetail struct { - Contact - Client Client - FollowRecord []FollowRecord `gorm:"foreignKey:ContactId"` - } -) - -func (Contact) TableName() string { - return "contacts" -} - -func NewContactSearch(db *gorm.DB) *ContactSearch { - if db == nil { - db = mysqlx.GetDB() - } - return &ContactSearch{ - Orm: db, - } -} - -func (slf *ContactSearch) build() *gorm.DB { - var db = slf.Orm.Model(&Contact{}) - if slf.Keyword != "" { - db = db.Where("name LIKE ?", "%"+slf.Keyword+"%") - } - if slf.Id != 0 { - db = db.Where("id = ?", slf.Id) - } - if slf.Name != "" { - db = db.Where("name = ?", slf.Name) - } - - if slf.ClientId != 0 { - db = db.Where("client_id = ?", slf.ClientId) - } - - return db -} - -func (slf *ContactSearch) Create(record *Contact) error { - var db = slf.build() - return db.Create(record).Error -} - -func (slf *ContactSearch) Update(record *Contact) error { - var db = slf.build() - m := map[string]interface{}{ - "name": record.Name, - "number": record.Number, - "client_id": record.ClientId, - "position": record.Position, - "phone": record.Phone, - "member_id": record.MemberId, - "is_first": record.IsFirst, - "wechat": record.Wechat, - "birthday": record.Birthday, - "email": record.Email, - "desc": record.Desc, - "country_id": record.CountryId, - "province_id": record.ProvinceId, - "city_id": record.CityId, - "region_id": record.RegionId, - } - return db.Updates(m).Error -} - -func (slf *ContactSearch) Delete() error { - var db = slf.build() - return db.Delete(&Contact{}).Error -} - -func (slf *ContactSearch) Find() (*Contact, error) { - var db = slf.build() - var record = new(Contact) - err := db.First(record).Error - return record, err -} - -func (slf *ContactSearch) FindAll() ([]*ContactDetail, int64, error) { - var db = slf.build() - var records = make([]*ContactDetail, 0) - var total int64 - if err := db.Count(&total).Error; err != nil { - return records, total, err - } - if slf.PageNum > 0 && slf.PageSize > 0 { - db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) - } - - - err := db.Preload("FollowRecord").Preload("Client").Preload("Country").Preload("Province").Preload("City").Preload("Region").Find(&records).Error - return records, total, err -} - -func (slf *ContactSearch) SetId(id int) *ContactSearch { - slf.Id = id - return slf -} - -func (slf *ContactSearch) SetName(name string) *ContactSearch { - slf.Name = name - return slf -} - -func (slf *ContactSearch) First() (*Contact, error) { - var db = slf.build() - var record = new(Contact) - err := db.First(record).Error - return record, err -} - -func (slf *ContactSearch) SetClientId(clientId int) *ContactSearch { - slf.ClientId = clientId - return slf -} - -func (slf *ContactSearch) UpdateByMap(data map[string]interface{}) error { - var db = slf.build() - return db.Updates(data).Error -} - -func (slf *ContactSearch) SetKeyword(keyword string) *ContactSearch { - slf.Keyword = keyword - return slf -} - -func (slf *ContactSearch) SetPage(page, size int) *ContactSearch { - slf.PageNum, slf.PageSize = page, size - return slf -} - -func (slf *ContactSearch) SetOrder(order string) *ContactSearch { - slf.OrderBy = order - return slf -} -func (slf *ContactSearch) SetIds(ids []int) *ContactSearch { - slf.Orm = slf.Orm.Where("id in (?)", ids) - return slf -} +package model + +import ( + "aps_crm/pkg/mysqlx" + "gorm.io/gorm" + "time" +) + +type ( + Contact struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + Name string `json:"name" gorm:"column:name;type:varchar(255);comment:鑱旂郴浜哄鍚�"` + Number string `json:"number" gorm:"column:number;type:varchar(255);comment:鑱旂郴浜虹紪鍙�"` + ClientId int `json:"client_id" gorm:"column:client_id;type:int(11);comment:瀹㈡埛ID"` + Position string `json:"position" gorm:"column:position;type:varchar(255);comment:鑱屼綅"` + Phone string `json:"phone" gorm:"column:phone;type:varchar(255);comment:鐢佃瘽"` + MemberId int `json:"member_id" gorm:"column:member_id;type:int(11);comment:璐熻矗浜篒D"` + IsFirst bool `json:"is_first" gorm:"column:is_first;type:tinyint(1);comment:鏄惁棣栬鑱旂郴浜�"` + Wechat string `json:"wechat" gorm:"column:wechat;type:varchar(255);comment:寰俊"` + Birthday time.Time `json:"birthday" gorm:"column:birthday;type:datetime;comment:鐢熸棩"` + Email string `json:"email" gorm:"column:email;type:varchar(255);comment:閭"` + Desc string `json:"desc" gorm:"column:desc;type:varchar(255);comment:澶囨敞"` + Address + gorm.Model `json:"-"` + } + + ContactSearch struct { + Contact + + Orm *gorm.DB + SearchMap map[string]interface{} + OrderBy string + PageNum int + PageSize int + } + + ContactDetail struct { + Contact + Client Client + FollowRecord []FollowRecord `gorm:"foreignKey:ContactId"` + } +) + +func (Contact) TableName() string { + return "contacts" +} + +func NewContactSearch(db *gorm.DB) *ContactSearch { + if db == nil { + db = mysqlx.GetDB() + } + return &ContactSearch{ + Orm: db, + } +} + +func (slf *ContactSearch) build() *gorm.DB { + var db = slf.Orm.Model(&Contact{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + if slf.Name != "" { + db = db.Where("name = ?", slf.Name) + } + + if slf.ClientId != 0 { + db = db.Where("client_id = ?", slf.ClientId) + } + + if len(slf.SearchMap) > 0 { + for key, value := range slf.SearchMap { + switch v := value.(type) { + case string: + if key == "name" || key == "position" || key == "phone" || key == "Number" { + db = db.Where(key+" LIKE ?", "%"+v+"%") + } + + if key == "member_name" { + db = db.Joins("Member").Where("Member.username LIKE ?", "%"+v+"%") + } + + if key == "client_name" { + db = db.Joins("inner join clients on clients.id = contacts.client_id").Where("clients.name LIKE ?", "%"+v+"%") + } + case int: + } + } + } + + return db +} + +func (slf *ContactSearch) Create(record *Contact) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *ContactSearch) Update(record *Contact) error { + var db = slf.build() + m := map[string]interface{}{ + "name": record.Name, + "number": record.Number, + "client_id": record.ClientId, + "position": record.Position, + "phone": record.Phone, + "member_id": record.MemberId, + "is_first": record.IsFirst, + "wechat": record.Wechat, + "birthday": record.Birthday, + "email": record.Email, + "desc": record.Desc, + "country_id": record.CountryId, + "province_id": record.ProvinceId, + "city_id": record.CityId, + "region_id": record.RegionId, + } + return db.Updates(m).Error +} + +func (slf *ContactSearch) Delete() error { + var db = slf.build() + return db.Delete(&Contact{}).Error +} + +func (slf *ContactSearch) Find() (*Contact, error) { + var db = slf.build() + var record = new(Contact) + err := db.First(record).Error + return record, err +} + +func (slf *ContactSearch) FindAll() ([]*ContactDetail, int64, error) { + var db = slf.build() + var records = make([]*ContactDetail, 0) + var total int64 + if err := db.Count(&total).Error; err != nil { + return records, total, err + } + if slf.PageNum > 0 && slf.PageSize > 0 { + db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) + } + + err := db.Preload("FollowRecord").Preload("Client").Preload("Country").Preload("Province").Preload("City").Preload("Region").Find(&records).Error + return records, total, err +} + +func (slf *ContactSearch) SetId(id int) *ContactSearch { + slf.Id = id + return slf +} + +func (slf *ContactSearch) SetName(name string) *ContactSearch { + slf.Name = name + return slf +} + +func (slf *ContactSearch) First() (*Contact, error) { + var db = slf.build() + var record = new(Contact) + err := db.First(record).Error + return record, err +} + +func (slf *ContactSearch) SetClientId(clientId int) *ContactSearch { + slf.ClientId = clientId + return slf +} + +func (slf *ContactSearch) UpdateByMap(data map[string]interface{}) error { + var db = slf.build() + return db.Updates(data).Error +} + +func (slf *ContactSearch) SetPage(page, size int) *ContactSearch { + slf.PageNum, slf.PageSize = page, size + return slf +} + +func (slf *ContactSearch) SetOrder(order string) *ContactSearch { + slf.OrderBy = order + return slf +} +func (slf *ContactSearch) SetIds(ids []int) *ContactSearch { + slf.Orm = slf.Orm.Where("id in (?)", ids) + return slf +} + +func (slf *ContactSearch) SetSearchMap(data map[string]interface{}) *ContactSearch { + slf.SearchMap = data + return slf +} -- Gitblit v1.8.0