added client method for added fields
This commit is contained in:
parent
25a43006d3
commit
a08a2f2ac0
@ -1,5 +1,10 @@
|
|||||||
package models
|
package models
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strconv"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
type FieldsType string
|
type FieldsType string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -63,3 +68,23 @@ const (
|
|||||||
NameEntityTypeQuote NameEntityType = "QUOTE"
|
NameEntityTypeQuote NameEntityType = "QUOTE"
|
||||||
NameEntityTypeRequisite NameEntityType = "REQUISITE"
|
NameEntityTypeRequisite NameEntityType = "REQUISITE"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type AddFields struct {
|
||||||
|
FieldName string `json:"FIELD_NAME"`
|
||||||
|
EditFormLabel string `json:"EDIT_FORM_LABEL"`
|
||||||
|
ListColumnLabel string `json:"LIST_COLUMN_LABEL"`
|
||||||
|
UserTypeID string `json:"USER_TYPE_ID"` // Тип поля
|
||||||
|
XMLID string `json:"XML_ID"`
|
||||||
|
Settings map[string]interface{} `json:"SETTINGS"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AddFields) GenFieldName() {
|
||||||
|
currentTime := time.Now().Unix()
|
||||||
|
currentTimeStr := strconv.FormatInt(currentTime, 10)
|
||||||
|
a.FieldName = currentTimeStr
|
||||||
|
a.XMLID = currentTimeStr
|
||||||
|
}
|
||||||
|
|
||||||
|
type AddFieldsResponse struct {
|
||||||
|
ID int64 `json:"result"`
|
||||||
|
}
|
||||||
|
@ -202,6 +202,7 @@ func (b *Bitrix) GetListPipelines(entityTypeID models.IntegerEntityType, accessT
|
|||||||
func (b *Bitrix) GetListFields(fieldType models.FieldsType, accessToken string, domain string) (*models.FieldsResponse, error) {
|
func (b *Bitrix) GetListFields(fieldType models.FieldsType, accessToken string, domain string) (*models.FieldsResponse, error) {
|
||||||
for {
|
for {
|
||||||
if b.rateLimiter.Check() {
|
if b.rateLimiter.Check() {
|
||||||
|
var listFields models.FieldsResponse
|
||||||
switch fieldType {
|
switch fieldType {
|
||||||
case models.FieldTypeCompany:
|
case models.FieldTypeCompany:
|
||||||
fullURL := fmt.Sprintf("https://%s/rest/crm.company.userfield.list", domain)
|
fullURL := fmt.Sprintf("https://%s/rest/crm.company.userfield.list", domain)
|
||||||
@ -227,7 +228,6 @@ func (b *Bitrix) GetListFields(fieldType models.FieldsType, accessToken string,
|
|||||||
return nil, fmt.Errorf(errorMessage)
|
return nil, fmt.Errorf(errorMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
var listFields models.FieldsResponse
|
|
||||||
err := json.Unmarshal(resBody, &listFields)
|
err := json.Unmarshal(resBody, &listFields)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.logger.Error("error unmarshal models.Company:", zap.Error(err))
|
b.logger.Error("error unmarshal models.Company:", zap.Error(err))
|
||||||
@ -260,7 +260,6 @@ func (b *Bitrix) GetListFields(fieldType models.FieldsType, accessToken string,
|
|||||||
return nil, fmt.Errorf(errorMessage)
|
return nil, fmt.Errorf(errorMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
var listFields models.FieldsResponse
|
|
||||||
err := json.Unmarshal(resBody, &listFields)
|
err := json.Unmarshal(resBody, &listFields)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.logger.Error("error unmarshal models.Lead:", zap.Error(err))
|
b.logger.Error("error unmarshal models.Lead:", zap.Error(err))
|
||||||
@ -293,7 +292,6 @@ func (b *Bitrix) GetListFields(fieldType models.FieldsType, accessToken string,
|
|||||||
return nil, fmt.Errorf(errorMessage)
|
return nil, fmt.Errorf(errorMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
var listFields models.FieldsResponse
|
|
||||||
err := json.Unmarshal(resBody, &listFields)
|
err := json.Unmarshal(resBody, &listFields)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.logger.Error("error unmarshal models.Contact:", zap.Error(err))
|
b.logger.Error("error unmarshal models.Contact:", zap.Error(err))
|
||||||
@ -325,7 +323,6 @@ func (b *Bitrix) GetListFields(fieldType models.FieldsType, accessToken string,
|
|||||||
return nil, fmt.Errorf(errorMessage)
|
return nil, fmt.Errorf(errorMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
var listFields models.FieldsResponse
|
|
||||||
err := json.Unmarshal(resBody, &listFields)
|
err := json.Unmarshal(resBody, &listFields)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.logger.Error("error unmarshal models.Company:", zap.Error(err))
|
b.logger.Error("error unmarshal models.Company:", zap.Error(err))
|
||||||
@ -376,3 +373,147 @@ func (b *Bitrix) GetCurrentUser(accessToken string, domain string) (*models.Resp
|
|||||||
time.Sleep(b.rateLimiter.Interval)
|
time.Sleep(b.rateLimiter.Interval)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// before neeed call req.GenFieldName()
|
||||||
|
func (b *Bitrix) AddFields(req models.AddFields, entity models.FieldsType, accessToken string, domain string) (int64, error) {
|
||||||
|
for {
|
||||||
|
if b.rateLimiter.Check() {
|
||||||
|
var result models.AddFieldsResponse
|
||||||
|
switch entity {
|
||||||
|
case models.FieldTypeContact:
|
||||||
|
bodyBytes, err := json.Marshal(req)
|
||||||
|
if err != nil {
|
||||||
|
b.logger.Error("error marshal req in Add Fields:", zap.Error(err))
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
uri := fmt.Sprintf("https://%s/rest/crm.contact.userfield.add", domain)
|
||||||
|
agent := b.fiberClient.Post(uri)
|
||||||
|
agent.Set("Content-Type", "application/json").Body(bodyBytes)
|
||||||
|
agent.Set("Authorization", "Bearer "+accessToken)
|
||||||
|
|
||||||
|
statusCode, resBody, errs := agent.Bytes()
|
||||||
|
if len(errs) > 0 {
|
||||||
|
for _, err := range errs {
|
||||||
|
b.logger.Error("error sending request in AddFields", zap.Error(err))
|
||||||
|
}
|
||||||
|
return 0, fmt.Errorf("request AddFields failed: %v", errs[0])
|
||||||
|
}
|
||||||
|
|
||||||
|
if statusCode != fiber.StatusOK {
|
||||||
|
errorMessage := fmt.Sprintf("error AddFields contact statusCode - %d, respBody - %s", statusCode, string(resBody))
|
||||||
|
b.logger.Error(errorMessage, zap.Int("status", statusCode))
|
||||||
|
return 0, fmt.Errorf(errorMessage)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal(resBody, &result)
|
||||||
|
if err != nil {
|
||||||
|
b.logger.Error("error unmarshal AddFields", zap.Error(err))
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.ID, nil
|
||||||
|
case models.FieldTypeCompany:
|
||||||
|
bodyBytes, err := json.Marshal(req)
|
||||||
|
if err != nil {
|
||||||
|
b.logger.Error("error marshal req in Add Fields:", zap.Error(err))
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
uri := fmt.Sprintf("https://%s/rest/crm.company.userfield.add", domain)
|
||||||
|
agent := b.fiberClient.Post(uri)
|
||||||
|
agent.Set("Content-Type", "application/json").Body(bodyBytes)
|
||||||
|
agent.Set("Authorization", "Bearer "+accessToken)
|
||||||
|
|
||||||
|
statusCode, resBody, errs := agent.Bytes()
|
||||||
|
if len(errs) > 0 {
|
||||||
|
for _, err := range errs {
|
||||||
|
b.logger.Error("error sending request in AddFields", zap.Error(err))
|
||||||
|
}
|
||||||
|
return 0, fmt.Errorf("request AddFields failed: %v", errs[0])
|
||||||
|
}
|
||||||
|
|
||||||
|
if statusCode != fiber.StatusOK {
|
||||||
|
errorMessage := fmt.Sprintf("error AddFields company statusCode - %d, respBody - %s", statusCode, string(resBody))
|
||||||
|
b.logger.Error(errorMessage, zap.Int("status", statusCode))
|
||||||
|
return 0, fmt.Errorf(errorMessage)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal(resBody, &result)
|
||||||
|
if err != nil {
|
||||||
|
b.logger.Error("error unmarshal AddFields", zap.Error(err))
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.ID, nil
|
||||||
|
case models.FieldTypeDeal:
|
||||||
|
bodyBytes, err := json.Marshal(req)
|
||||||
|
if err != nil {
|
||||||
|
b.logger.Error("error marshal req in Add Fields:", zap.Error(err))
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
uri := fmt.Sprintf("https://%s/rest/crm.deal.userfield.add", domain)
|
||||||
|
agent := b.fiberClient.Post(uri)
|
||||||
|
agent.Set("Content-Type", "application/json").Body(bodyBytes)
|
||||||
|
agent.Set("Authorization", "Bearer "+accessToken)
|
||||||
|
|
||||||
|
statusCode, resBody, errs := agent.Bytes()
|
||||||
|
if len(errs) > 0 {
|
||||||
|
for _, err := range errs {
|
||||||
|
b.logger.Error("error sending request in AddFields", zap.Error(err))
|
||||||
|
}
|
||||||
|
return 0, fmt.Errorf("request AddFields failed: %v", errs[0])
|
||||||
|
}
|
||||||
|
|
||||||
|
if statusCode != fiber.StatusOK {
|
||||||
|
errorMessage := fmt.Sprintf("error AddFields deal statusCode - %d, respBody - %s", statusCode, string(resBody))
|
||||||
|
b.logger.Error(errorMessage, zap.Int("status", statusCode))
|
||||||
|
return 0, fmt.Errorf(errorMessage)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal(resBody, &result)
|
||||||
|
if err != nil {
|
||||||
|
b.logger.Error("error unmarshal AddFields", zap.Error(err))
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.ID, nil
|
||||||
|
case models.FieldTypeLead:
|
||||||
|
bodyBytes, err := json.Marshal(req)
|
||||||
|
if err != nil {
|
||||||
|
b.logger.Error("error marshal req in Add Fields:", zap.Error(err))
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
uri := fmt.Sprintf("https://%s/rest/crm.lead.userfield.add", domain)
|
||||||
|
agent := b.fiberClient.Post(uri)
|
||||||
|
agent.Set("Content-Type", "application/json").Body(bodyBytes)
|
||||||
|
agent.Set("Authorization", "Bearer "+accessToken)
|
||||||
|
|
||||||
|
statusCode, resBody, errs := agent.Bytes()
|
||||||
|
if len(errs) > 0 {
|
||||||
|
for _, err := range errs {
|
||||||
|
b.logger.Error("error sending request in AddFields", zap.Error(err))
|
||||||
|
}
|
||||||
|
return 0, fmt.Errorf("request AddFields failed: %v", errs[0])
|
||||||
|
}
|
||||||
|
|
||||||
|
if statusCode != fiber.StatusOK {
|
||||||
|
errorMessage := fmt.Sprintf("error AddFields lead statusCode - %d, respBody - %s", statusCode, string(resBody))
|
||||||
|
b.logger.Error(errorMessage, zap.Int("status", statusCode))
|
||||||
|
return 0, fmt.Errorf(errorMessage)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal(resBody, &result)
|
||||||
|
if err != nil {
|
||||||
|
b.logger.Error("error unmarshal AddFields", zap.Error(err))
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.ID, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
time.Sleep(b.rateLimiter.Interval)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -2,9 +2,9 @@ package bitrixClient
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
"penahub.gitlab.yandexcloud.net/backend/quiz/bitrix/internal/models"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/bitrix/internal/workers/limiter"
|
"penahub.gitlab.yandexcloud.net/backend/quiz/bitrix/internal/workers/limiter"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
@ -22,10 +22,28 @@ func TestGetListFields(t *testing.T) {
|
|||||||
RateLimiter: lim,
|
RateLimiter: lim,
|
||||||
})
|
})
|
||||||
|
|
||||||
result, err := b.GetCurrentUser("9213f0660000071b00717f92000000010000070cbbcdb7c07c2a5e9668d3f7b04c4f8f", "b24-ld76ub.bitrix24.ru")
|
arr := []models.FieldsType{models.FieldTypeLead, models.FieldTypeCompany, models.FieldTypeContact, models.FieldTypeDeal}
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err)
|
for _, tipe := range arr {
|
||||||
|
req := models.AddFields{
|
||||||
|
EditFormLabel: "ТЕСТОВАЯ СТРОКА ОТ АПИ ГОГОГОГОГОГОГОГОГГО",
|
||||||
|
ListColumnLabel: "ТЕСТОВАЯ СТРОКА ОТ АПИ ГОГОГОГОГОГОГОГОГГО",
|
||||||
|
UserTypeID: "string",
|
||||||
|
Settings: map[string]interface{}{
|
||||||
|
"DEFAULT_VALUE": "GOGOGOGOGOGOGO!",
|
||||||
|
}}
|
||||||
|
req.GenFieldName()
|
||||||
|
result, err := b.AddFields(req, tipe, "6142f1660000071b00717f92000000010000075c982e18665711d1c3e5749d1dda6679", "b24-ld76ub.bitrix24.ru")
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
fmt.Println(result)
|
||||||
}
|
}
|
||||||
r, _ := json.Marshal(result)
|
|
||||||
fmt.Println(string(r))
|
//result, err := b.GetListFields(models.FieldTypeLead, "3434f1660000071b00717f920000000100000748ae9cd373ba39739040870e7dc9fb99", "b24-ld76ub.bitrix24.ru")
|
||||||
|
//if err != nil {
|
||||||
|
// fmt.Println(err)
|
||||||
|
//}
|
||||||
|
//r, _ := json.Marshal(result)
|
||||||
|
//fmt.Println(string(r))
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user