wangpengfei
2023-07-04 1142bc88cebcfedac1617749bc195a2615799518
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package model
 
import (
    "aps_crm/pkg/mysqlx"
    "gorm.io/gorm"
    "time"
)
 
type (
    Client struct {
        Id                int            `json:"id" gorm:"column:id;primaryKey;autoIncrement;not null"`
        Name              string         `json:"name" gorm:"column:name;unique;type:varchar(255);comment:客户名称"`
        Number            string         `json:"number" gorm:"column:number;type:varchar(255);comment:客户编号"`
        ClientStatusId    int            `json:"client_status_id" gorm:"column:client_status_id;type:int(11);comment:客户状态ID"`
        ClientTypeId      int            `json:"client_type_id" gorm:"column:client_type_id;type:int(11);comment:客户类型ID"`
        ClientOriginId    int            `json:"client_origin_id" gorm:"column:client_origin_id;type:int(11);comment:客户来源ID"`
        ClientLevelId     int            `json:"client_level_id" gorm:"column:client_level_id;type:int(11);comment:客户等级ID"`
        Contacts          []Contact      `json:"contacts" gorm:"foreignKey:ClientId"`
        MemberId          int            `json:"member_id" gorm:"column:member_id;type:int(11);comment:销售负责人ID"`
        ServiceMemberId   int            `json:"service_member_id" gorm:"column:service_member_id;type:int(11);comment:服务负责人ID"`
        DetailAddress     string         `json:"detail_address" gorm:"column:detail_address;type:varchar(255);comment:详细地址"`
        Remark            string         `json:"remark" gorm:"column:remark;type:varchar(255);comment:备注"`
        NextVisitTime     time.Time      `json:"next_visit_time" gorm:"column:next_visit_time;type:datetime;comment:下次回访时间"`
        LatestServiceTime time.Time      `json:"latest_service_time" gorm:"column:latest_service_time;type:datetime;comment:最晚服务时间"`
        FollowRecord      []FollowRecord `json:"follow_record" gorm:"foreignKey:ClientId"`
        Address
        Business
        gorm.Model `json:"-"`
    }
 
    ClientSearch struct {
        Client
        Orm *gorm.DB
    }
)
 
func (Client) TableName() string {
    return "clients"
}
 
func NewClientSearch() *ClientSearch {
    return &ClientSearch{
        Orm: mysqlx.GetDB(),
    }
}
 
func (slf *ClientSearch) build() *gorm.DB {
    var db = slf.Orm.Model(&Client{})
    if slf.Id != 0 {
        db.Where("id = ?", slf.Id)
    }
    if slf.Name != "" {
        db.Where("name = ?", slf.Name)
    }
 
    return db
}
 
func (slf *ClientSearch) Create(record *Client) error {
    var db = slf.build()
    return db.Create(record).Error
}
 
func (slf *ClientSearch) Update(record *Client) error {
    var db = slf.build()
    return db.Save(record).Error
}
 
func (slf *ClientSearch) Delete() error {
    var db = slf.build()
    return db.Delete(&Client{}).Error
}
 
func (slf *ClientSearch) SetId(id int) *ClientSearch {
    slf.Id = id
    return slf
}
 
func (slf *ClientSearch) SetName(name string) *ClientSearch {
    slf.Name = name
    return slf
}
 
func (slf *ClientSearch) SetNumber(number string) *ClientSearch {
    slf.Number = number
    return slf
}
 
func (slf *ClientSearch) First() (*Client, error) {
    var db = slf.build()
    var record = &Client{}
    err := db.First(record).Error
    return record, err
}
 
func (slf *ClientSearch) Find() ([]*Client, error) {
    var db = slf.build()
    var records = make([]*Client, 0)
    err := db.Preload("FollowRecord").Preload("EnterpriseNature").Preload("RegisteredCapital").Preload("Industry").Preload("EnterpriseScale").Preload("Contacts").Preload("Country").Preload("Province").Preload("City").Preload("Region").Find(&records).Error
    return records, err
}
 
func (slf *ClientSearch) UpdateByMap(data map[string]interface{}) error {
    var db = slf.build()
    return db.Updates(data).Error
}