common/model/amo.go

220 lines
9.7 KiB
Go
Raw Normal View History

2024-04-17 09:30:19 +00:00
package model
type User struct {
/* - айдишник в нашей системе Primary Key*/
2024-04-17 17:42:13 +00:00
ID int64 `json:"ID"`
2024-04-17 09:30:19 +00:00
/* - id пользователя из токена в нашей системе*/
Accountid string `json:"AccountID"`
/* - айдишник пользователя в амо*/
2024-04-17 17:42:13 +00:00
AmoID int32 `json:"AmocrmID"`
2024-04-17 09:30:19 +00:00
/* - имя аккаунта в амо*/
Name string `json:"Name"`
/* - почта пользователя из амо*/
Email string `json:"Email"`
/* - роль пользователя в амо*/
2024-04-20 09:13:57 +00:00
Role int32 `json:"Role"`
2024-04-17 09:30:19 +00:00
/* - группы пользователя в амо*/
2024-04-20 09:13:57 +00:00
Group int32 `json:"Group"`
2024-04-17 09:30:19 +00:00
/* - флаг мягкого удаления*/
Deleted bool `json:"Deleted"`
/* - таймштамп создания аккаунта*/
Createdat int64 `json:"CreatedAt"`
/* - поддомен организации в амо*/
Subdomain string `json:"Subdomain"`
/* - айдишник пользвателя, который подключал интеграцию*/
2024-04-17 17:42:13 +00:00
Amouserid int32 `json:"AmoUserID"`
2024-04-17 09:30:19 +00:00
/* - страна указанная в настройках амо*/
Country string `json:"Country"`
}
type UserGroups struct {
ID int `json:"id" bson:"id"`
Name string `json:"name" bson:"name"`
UUID interface{} `json:"uuid" bson:"uuid"`
}
type Token struct {
AccountID string `json:"account_id"` // id в квизе
RefreshToken string `json:"refresh_token"` // 80 дней
AccessToken string `json:"access_token"` // 20 минут
AuthCode string `json:"auth_code"`
Expiration int64 `json:"expiration"` // таймшамп времени когда кончится AccessToken
CreatedAt int64 `json:"created_at"` // таймшамп времени создания, нужен для отслеживания 80 дней
}
type Pipeline struct {
// айдишник в нашей системе Primary Key
2024-04-18 11:00:02 +00:00
ID int64 `json:"ID"`
2024-04-17 09:30:19 +00:00
/* - айдишник воронки в амо*/
2024-04-18 11:00:02 +00:00
Amoid int32 `json:"AmoID"`
2024-04-17 09:30:19 +00:00
/* - связь с аккаунтом в интеграции амо id аккаунта в амо*/
2024-04-18 11:00:02 +00:00
AccountID int32 `json:"AccountID"`
2024-04-17 09:30:19 +00:00
/* - название воронки в амо*/
Name string `json:"Name"`
/* - флаг архивной воронки в амо*/
Isarchive bool `json:"IsArchive"`
/* - флаг мягкого удаления*/
Deleted bool `json:"Deleted"`
/* - таймштамп создания воронки в нашей системе*/
Createdat int64 `json:"CreatedAt"`
}
type Step struct {
/* - айдишник в нашей системе Primary Key*/
2024-04-18 11:00:02 +00:00
ID int64 `json:"ID"`
2024-04-17 09:30:19 +00:00
/* - айдишник шага воронки в амо*/
2024-04-18 11:00:02 +00:00
Amoid int32 `json:"AmoID"`
2024-04-17 09:30:19 +00:00
/* - айдишник воронки в амо*/
2024-04-18 11:00:02 +00:00
Pipelineid int32 `json:"PipelineID"`
2024-04-17 09:30:19 +00:00
/* - связь с аккаунтом в интеграции амо id в амо*/
2024-04-18 11:00:02 +00:00
Accountid int32 `json:"AccountID"`
2024-04-17 09:30:19 +00:00
/* - название воронки в амо*/
Name string `json:"Name"`
/* - цвет шага в амо*/
Color string `json:"Color"`
/* - флаг мягкого удаления*/
Deleted bool `json:"Deleted"`
/* - таймштамп создания воронки в нашей системе*/
Createdat int64 `json:"CreatedAt"`
}
type Tag struct {
/* - айдишник в нашей системе Primary Key*/
2024-04-18 11:00:02 +00:00
ID int64 `json:"ID"`
2024-04-17 09:30:19 +00:00
/* - айдишник тега в амо*/
2024-04-18 11:00:02 +00:00
Amoid int32 `json:"AmoID"`
2024-04-17 09:30:19 +00:00
/* - связь с аккаунтом в интеграции амо id аккаунта в амо*/
2024-04-18 11:00:02 +00:00
Accountid int32 `json:"AccountID"`
2024-04-17 09:30:19 +00:00
/* - сущность, к которой принадлежит этот тег. Наверное, стоит сделать через enum в базе*/
Entity EntityType `json:"Entity"`
/* - название тега в амо*/
Name string `json:"Name"`
/* - цвет тега в амо*/
Color *string `json:"Color"`
/* - флаг мягкого удаления*/
Deleted bool `json:"Deleted"`
/* - таймштамп создания тега в нашей системе*/
Createdat int64 `json:"CreatedAt"`
}
type Field struct {
/* - айдишник в нашей системе Primary Key*/
2024-04-18 11:00:02 +00:00
ID int64 `json:"ID"`
2024-04-17 09:30:19 +00:00
/* - айдишник кастомного поля в амо*/
2024-04-18 11:00:02 +00:00
Amoid int32 `json:"AmoID"`
2024-04-17 09:30:19 +00:00
/* - кодовое слово в амо*/
Code string `json:"Code"`
/* - связь с аккаунтом в интеграции амо id аккаунта в амо*/
2024-04-18 11:00:02 +00:00
Accountid int32 `json:"AccountID"`
2024-04-17 09:30:19 +00:00
/* - название воронки в амо*/
Name string `json:"Name"`
/* - тип сущности в амо, для которой это кастомное поле*/
Entity EntityType `json:"Entity"`
/* - тип поля https://www.amocrm.ru/developers/content/crm_platform/custom-fields#%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BD%D1%8B%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B-%D0%BF%D0%BE%D0%BB%D0%B5%D0%B9*/
2024-04-28 13:03:05 +00:00
Type FieldType `json:"Type"`
2024-04-17 09:30:19 +00:00
/* - флаг мягкого удаления*/
Deleted bool `json:"Deleted"`
/* - таймштамп создания воронки в нашей системе*/
Createdat int64 `json:"CreatedAt"`
}
type EntityType string
const (
2024-04-29 14:03:48 +00:00
LeadsType EntityType = "leads"
ContactsType EntityType = "contacts"
CompaniesType EntityType = "companies"
CustomersType EntityType = "customers"
2024-04-17 09:30:19 +00:00
)
type Rule struct {
/* - айдишник в нашей системе*/
2024-04-23 12:04:24 +00:00
ID int64 `json:"ID"`
2024-04-17 09:30:19 +00:00
/* - связь с аккаунтом в интеграции амо id в амо*/
2024-04-23 12:04:24 +00:00
Accountid int32 `json:"AccountID"`
2024-04-17 09:30:19 +00:00
/* - айдишник опроса*/
2024-04-23 12:04:24 +00:00
Quizid int32 `json:"QuizID"`
2024-04-17 09:30:19 +00:00
/* - айдишник ответственного за сделку*/
2024-04-23 12:04:24 +00:00
Performerid int32 `json:"PerformerID"`
2024-04-17 09:30:19 +00:00
/* - айдишник воронки*/
2024-04-23 12:04:24 +00:00
Pipelineid int32 `json:"PipelineID"`
2024-04-17 09:30:19 +00:00
/* - айдишник этапа*/
2024-04-23 12:04:24 +00:00
Stepid int32 `json:"StepID"`
2024-04-17 09:30:19 +00:00
/* - список UTM для этого опроса*/
2024-04-23 12:04:24 +00:00
Utms []int32 `json:"UTMs"`
2024-04-17 09:30:19 +00:00
/* - правила заполнения полей сущностей в амо*/
Fieldsrule Fieldsrule `json:"FieldsRule"`
/* - флаг мягкого удаления*/
Deleted bool `json:"Deleted"`
/* - таймштамп создания воронки в нашей системе*/
2024-04-17 15:17:07 +00:00
Createdat int64 `json:"CreatedAt"`
2024-04-17 09:30:19 +00:00
}
type Fieldsrule struct {
Lead []FieldRule `json:"Lead"`
Contact []FieldRule `json:"Contact"`
Company []FieldRule `json:"Company"`
Customer []FieldRule `json:"Customer"`
}
type FieldRule struct {
/* - сопоставление айдишника вопроса полю, которое будет заполняться ответом. соответственно QuestionID это айдишник вопроса. это я так мэпу пытался записать*/
Questionid map[int]int `json:"QuestionID"` // ключ id вопроса значение id астомного поля
}
type UTM struct {
/* - айдишник в нашей системе Primary Key*/
2024-04-22 15:13:59 +00:00
ID int64 `json:"ID"`
2024-04-17 09:30:19 +00:00
/* - айдишник кастомного поля в амо*/
2024-04-22 15:13:59 +00:00
Amofieldid int32 `json:"AmoFieldID"`
2024-04-17 09:30:19 +00:00
/* - айдишник квиза*/
2024-04-22 15:13:59 +00:00
Quizid int32 `json:"QuizID"`
2024-04-17 09:30:19 +00:00
/* - связь с аккаунтом в интеграции амо id амо*/
2024-04-22 15:13:59 +00:00
Accountid int32 `json:"AccountID"`
2024-04-17 09:30:19 +00:00
/* - название тега в амо*/
Name string `json:"Name"`
/* - флаг мягкого удаления*/
Deleted bool `json:"Deleted"`
/* - таймштамп создания тега в нашей системе*/
Createdat int64 `json:"CreatedAt"`
}
2024-04-28 13:03:05 +00:00
type FieldType string
const (
TypeAmoText FieldType = "text" //Текст
TypeAmoNumeric FieldType = "numeric" //Число
TypeAmoCheckbox FieldType = "checkbox" //Флаг
TypeAmoSelect FieldType = "select" //Список
TypeAmoMultiselect FieldType = "multiselect" //Мультисписок
TypeAmoDate FieldType = "date" //Дата
TypeAmoUrl FieldType = "url" // Ссылка
TypeAmoTextarea FieldType = "textarea" // Текстовая область
TypeAmoRadiobutton FieldType = "radiobutton" // Переключатель
TypeAmoStreetAddress FieldType = "streetaddress" // Короткий адрес
TypeAmoSmartAddress FieldType = "smart_address" // Адрес
TypeAmoBirthday FieldType = "birthday" // День рождения
TypeAmoLegalEntity FieldType = "legal_entity" // Юр. лицо
TypeAmoDateTime FieldType = "date_time" // Дата и время
TypeAmoPrice FieldType = "price" //Цена
TypeAmoCategory FieldType = "category" // Категория
TypeAmoItems FieldType = "items" // Предметы
TypeAmoTrackingData FieldType = "tracking_data" // Отслеживаемые данные
TypeAmoLinkedEntity FieldType = "linked_entity" // Связь с другим элементом
TypeAmoChainedList FieldType = "chained_list" // Каталоги и списки (платная опция Супер-поля)
TypeAmoMonetary FieldType = "monetary" // Денежное (платная опция Супер-поля)
TypeAmoFile FieldType = "file" // Файл
TypeAmoPayer FieldType = "payer" // Плательщик (только в списке Счета-покупки)
TypeAmoSupplier FieldType = "supplier" // Поставщик (только в списке Счета-покупки)
2024-04-29 09:36:30 +00:00
TypeAmoMultiText FieldType = "multitext" // что то чего нет в списке полей но она есть в амо))
2024-04-28 13:03:05 +00:00
)
2024-04-29 08:45:00 +00:00
type CheckUserUtm struct {
ID int64 `json:"ID"`
Amofieldid int32 `json:"AmoFieldID"`
Quizid int32 `json:"QuizID"`
Accountid int32 `json:"AccountID"`
Name string `json:"Name"`
Status bool
}