scary horror logic with link need test with amo

This commit is contained in:
Pavel 2024-06-21 20:36:15 +03:00
parent 2429ab34bf
commit c12eac62a0
4 changed files with 49 additions and 4 deletions

2
go.mod

@ -12,7 +12,7 @@ require (
github.com/twmb/franz-go v1.16.1
go.uber.org/zap v1.27.0
google.golang.org/protobuf v1.33.0
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240621150128-4b70022ad675
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240621172746-5cbeb2b88f0a
)
require (

2
go.sum

@ -140,3 +140,5 @@ penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240621103513-961
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240621103513-9616b086fa4a/go.mod h1:n66zm88Dh12+idyfqh0vU5nd9BZYxM6Pv0XYnmy0398=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240621150128-4b70022ad675 h1:w9I3PSvR3XsxL48fgyi65zLhbnpJXUknKz3ZqkCltzI=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240621150128-4b70022ad675/go.mod h1:n66zm88Dh12+idyfqh0vU5nd9BZYxM6Pv0XYnmy0398=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240621172746-5cbeb2b88f0a h1:all9W8RrLcr+47k6dAQgdyjVGuXbO3H29AkMGMTcJ28=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240621172746-5cbeb2b88f0a/go.mod h1:n66zm88Dh12+idyfqh0vU5nd9BZYxM6Pv0XYnmy0398=

@ -35,8 +35,8 @@ type ContactResponse struct {
}
type LinkedContactReq struct {
EntityID int `json:"entity_id"` // ID главной сущности
ToEntityID int `json:"to_entity_id"` // ID связанной сущности
EntityID int32 `json:"entity_id"` // ID главной сущности
ToEntityID int32 `json:"to_entity_id"` // ID связанной сущности
ToEntityType string `json:"to_entity_type"` // Тип связанной сущности (leads, contacts, companies, customers, catalog_elements)
Metadata struct {
CatalogID int `json:"catalog_id"` // ID каталога

@ -414,6 +414,50 @@ func (wc *PostDeals) chooseAndCreateContact(ctx context.Context, result model.Am
}
}
}
var phoneContactID, emailContactID int32
var phoneID int64 /*emailID*/
for _, contactVariants := range existingContacts {
for _, contact := range contactVariants {
if contact.Field == resultInfo.Phone {
phoneContactID = contact.AmoID
phoneID = contact.ID
}
if contact.Field == resultInfo.Email {
emailContactID = contact.AmoID
//emailID = contact.ID
}
}
}
if phoneContactID != 0 && emailContactID != 0 && phoneContactID != emailContactID {
// делаем обновление телефона там где уже есть email
var valuePhone []models.FieldsValues
valuePhone = tools.AddContactFields(valuePhone, resultInfo.Phone, model.TypeContactPhone, contactRuleMap)
_, err := wc.amoClient.UpdateContact(models.CreateContactReq{
CustomFieldsValues: valuePhone,
}, result.SubDomain, result.AccessToken, emailContactID)
if err != nil {
return 0, err
}
err = wc.amoRepo.AmoRepo.UpdateAmoContact(ctx, phoneID, resultInfo.Phone, emailContactID)
if err != nil {
return 0, err
}
_, err = wc.amoClient.LinkedContactToContact(models.LinkedContactReq{
EntityID: emailContactID,
ToEntityID: phoneContactID,
ToEntityType: string(model.ContactsType),
}, result.SubDomain, result.AccessToken)
if err != nil {
return 0, err
}
return emailContactID, nil
}
}
// 2 ищем контакт только по телефону
@ -452,7 +496,6 @@ func (wc *PostDeals) chooseAndCreateContact(ctx context.Context, result model.Am
return contact.AmoID, nil
}
if emailExists && resultInfo.Email != "" {
// email не пустой значит это новый контакт создаем если наш email тоже не пустой
name := resultInfo.Name
if name == "" {