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