diff --git a/go.mod b/go.mod index fb071d7..9bbd93c 100644 --- a/go.mod +++ b/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 ( diff --git a/go.sum b/go.sum index 5cc22d3..a9a58ff 100644 --- a/go.sum +++ b/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= diff --git a/internal/models/createContact.go b/internal/models/createContact.go index c10d1dd..5f21680 100644 --- a/internal/models/createContact.go +++ b/internal/models/createContact.go @@ -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 каталога diff --git a/internal/workers/post_deals_worker/deals_worker.go b/internal/workers/post_deals_worker/deals_worker.go index 110e6db..1ec2925 100644 --- a/internal/workers/post_deals_worker/deals_worker.go +++ b/internal/workers/post_deals_worker/deals_worker.go @@ -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 == "" {