| | |
| | | import ( |
| | | "aps_crm/model" |
| | | "aps_crm/pkg/ecode" |
| | | "aps_crm/pkg/mysqlx" |
| | | "gorm.io/gorm" |
| | | ) |
| | | |
| | | type ClientService struct{} |
| | | |
| | | func (ClientService) AddClient(client *model.Client) int { |
| | | err := model.NewClientSearch(nil).Create(client) |
| | | if err != nil { |
| | | return ecode.ClientExist |
| | | } |
| | | return ecode.OK |
| | | } |
| | | func (ClientService) AddClient(client *model.Client, sId int) int { |
| | | if sId == 0 { |
| | | err := model.NewClientSearch(nil).Create(client) |
| | | if err != nil { |
| | | return ecode.ClientExist |
| | | } |
| | | } else { |
| | | tx := mysqlx.GetDB().Begin() |
| | | err := model.NewClientSearch(tx).Create(client) |
| | | if err != nil { |
| | | tx.Rollback() |
| | | return ecode.ClientExist |
| | | } |
| | | |
| | | func (ClientService) DeleteClient(id int) int { |
| | | // check client exist |
| | | _, err := model.NewClientSearch(nil).SetId(id).First() |
| | | if err != nil { |
| | | return ecode.ClientNotExist |
| | | err = model.NewSalesLeadsSearch(tx).SetId(sId).Delete() |
| | | if err != nil { |
| | | tx.Rollback() |
| | | return ecode.ClientExist |
| | | } |
| | | tx.Commit() |
| | | } |
| | | |
| | | // delete client |
| | | err = model.NewClientSearch(nil).SetId(id).Delete() |
| | | if err != nil { |
| | | return ecode.ClientDeleteErr |
| | | } |
| | | return ecode.OK |
| | | } |
| | | |
| | |
| | | return ecode.OK |
| | | } |
| | | |
| | | func (ClientService) UpdateClient(client *model.Client) int { |
| | | func (ClientService) UpdateClient(client *model.Client, conId int) int { |
| | | // check client exist |
| | | errCode := CheckClientExist(client.Id) |
| | | if errCode != ecode.OK { |
| | |
| | | } |
| | | |
| | | // update client |
| | | err := model.NewClientSearch(nil).SetId(client.Id).Update(client) |
| | | if err != nil { |
| | | return ecode.ClientUpdateErr |
| | | if len(client.Contacts) == 0 { |
| | | err := model.NewClientSearch(nil).SetId(client.Id).Update(client) |
| | | if err != nil { |
| | | return ecode.ClientUpdateErr |
| | | } |
| | | } else { |
| | | tx := mysqlx.GetDB().Begin() |
| | | err := model.NewClientSearch(tx).SetId(client.Id).Update(client) |
| | | if err != nil { |
| | | tx.Rollback() |
| | | return ecode.ClientUpdateErr |
| | | } |
| | | |
| | | for _, contact := range client.Contacts { |
| | | contact.ClientId = client.Id |
| | | |
| | | // check isFirst |
| | | errCode = setFirstContact(tx, &contact) |
| | | if errCode != ecode.OK { |
| | | return errCode |
| | | } |
| | | |
| | | if conId == 0 { |
| | | err = model.NewContactSearch(tx).Create(&contact) |
| | | if err != nil { |
| | | tx.Rollback() |
| | | return ecode.ClientUpdateErr |
| | | } |
| | | } else { |
| | | contact.Id = conId |
| | | err = model.NewContactSearch(tx).SetId(contact.Id).Update(&contact) |
| | | if err != nil { |
| | | tx.Rollback() |
| | | return ecode.ClientUpdateErr |
| | | } |
| | | } |
| | | } |
| | | tx.Commit() |
| | | } |
| | | |
| | | return ecode.OK |
| | | } |
| | | |
| | | func (ClientService) GetClientList(page, pageSize int, keyword string) ([]*model.Client, int64, int) { |
| | | func (ClientService) GetClientList(page, pageSize int, data map[string]interface{}) ([]*model.Client, int64, int) { |
| | | // get contact list |
| | | contacts, total, err := model.NewClientSearch(nil).SetKeyword(keyword).SetPage(page, pageSize).Find() |
| | | contacts, total, err := model.NewClientSearch(nil).SetPage(page, pageSize).SetSearchMap(data).Find() |
| | | if err != nil { |
| | | return nil, 0, ecode.ClientListErr |
| | | } |
| | | return contacts, total, ecode.OK |
| | | } |
| | | |
| | | func (ClientService) Assign(id, memberId int) int { |
| | | func (ClientService) Assign(ids []int, memberId int) int { |
| | | // check client exist |
| | | errCode := CheckClientExist(id) |
| | | if errCode != ecode.OK { |
| | | return errCode |
| | | } |
| | | //errCode := CheckClientExist(id) |
| | | //if errCode != ecode.OK { |
| | | // return errCode |
| | | //} |
| | | |
| | | // assign client |
| | | err := model.NewClientSearch(nil).SetId(id).UpdateByMap(map[string]interface{}{ |
| | | err := model.NewClientSearch(nil).SetIds(ids).UpdateByMap(map[string]interface{}{ |
| | | "member_id": memberId, |
| | | }) |
| | | if err != nil { |
| | |
| | | |
| | | return ecode.OK |
| | | } |
| | | |
| | | func (ClientService) DeleteClient(ids []int) int { |
| | | // delete client |
| | | err := model.NewClientSearch(nil).SetIds(ids).Delete() |
| | | if err != nil { |
| | | return ecode.ClientDeleteErr |
| | | } |
| | | return ecode.OK |
| | | } |
| | | |
| | | func (ClientService) CheckName(name string) int { |
| | | // check client exist |
| | | _, err := model.NewClientSearch(nil).SetName(name).First() |
| | | if err != gorm.ErrRecordNotFound { |
| | | return ecode.ClientExist |
| | | } |
| | | |
| | | return ecode.OK |
| | | } |