Documentation
¶
Overview ¶
avtoto - обёртка на API сервиса avtoto.ru
Изначально разработчики API предполагали использование SOAP-технологии, но в конечном итоге оставили дополнение для версии на cURL. Именно это дополнение используется для работы с API в этом проекте.
Установка ¶
go get github.com/rb-pro/avtoto
С чего начать? ¶
Для начала работы с API Вам необходимо:
- Заключите договор-поставки. Для этого обратитесь в клиентский отдел любым удобным способом. Дальнейшие действия возможны только после подписания договора.
- Активируйте сервис и добавьте IP адрес своего сайта на странице настройка веб-сервиса.
- Выполните настройки на своём сайте: введите логин / пароль (как при авторизации на сайте) и номер (id) клиента (номер указан в разделе общая информация).
Вам необходимо знать:
- Номер клиента
- Логин
- Пароль
С помощью этих данных Вы можете инициилизировать пользователя:
user := avtoto.User{
UserId: userIdInt,
UserLogin: UserLoginStr,
UserPassword: UserPasswordStr}
После этого Вам предоставлен функционал всего API. Методы описаны в данной документации и документации поставщиков API.
Index ¶
- Constants
- type AddToBasketRequest
- type AddToBasketResponse
- func (AddToBasketRes AddToBasketResponse) BasketResInCheckReq(partCount int) (CheckAvailabilityInBasketRequest, error)
- func (AddToBasketRes AddToBasketResponse) BasketResInDeleteReq(partCount int) (DeleteFromBasketRequest, error)
- func (AddToBasketRes AddToBasketResponse) BasketResInOrdersReq(partCount int) (AddToOrdersFromBasketRequest, error)
- func (AddToBasketRes AddToBasketResponse) BasketResInOrdersStatusReq(partCount int) (GetOrdersStatusRequest, error)
- func (AddToBasketRes AddToBasketResponse) BasketResInUpdateReq(partCount int) (UpdateCountInBasketRequest, error)
- func (AddToBasketRes AddToBasketResponse) Error() string
- type AddToOrdersFromBasketRequest
- type AddToOrdersFromBasketResponse
- type CheckAvailabilityInBasketRequest
- type CheckAvailabilityInBasketResponse
- type CustomIntToString
- type Date
- func (t Date) Day() string
- func (t Date) Hour() string
- func (t Date) MarshalJSON() ([]byte, error)
- func (t Date) Minute() string
- func (t Date) Month() string
- func (t Date) String() string
- func (t Date) Strings() (string, string, string)
- func (t *Date) UnmarshalJSON(s []byte) error
- func (t Date) Year() string
- type DeleteFromBasketRequest
- type DeleteFromBasketResponse
- type GetBrandsByCodeRequest
- type GetBrandsByCodeResponse
- type GetOrdersStatusRequest
- type GetOrdersStatusRequestData
- type GetOrdersStatusResponse
- type GetShippingListRequest
- type GetShippingListRequestData
- type GetShippingListResponse
- type GetStatSearchResponse
- type SearchGetParts2Request
- type SearchGetParts2Response
- func (SearchGetParts2Res SearchGetParts2Response) Error() string
- func (SearchGetParts2Res SearchGetParts2Response) LenParts() int
- func (SearchGetParts2Res SearchGetParts2Response) SearchResInBasketReq(partCount int) (AddToBasketRequest, error)
- func (SearchGetParts2Res SearchGetParts2Response) Status() string
- type SearchStartRequest
- type SearchStartResponse
- type TimeUnix
- func (t TimeUnix) Day() string
- func (t TimeUnix) Hour() string
- func (t TimeUnix) Minute() string
- func (t TimeUnix) Month() string
- func (t TimeUnix) String() string
- func (t TimeUnix) Strings() (string, string, string)
- func (t TimeUnix) Time() time.Time
- func (t TimeUnix) Unix() int64
- func (t *TimeUnix) UnmarshalJSON(s []byte) (err error)
- func (t TimeUnix) Year() string
- type UpdateCountInBasketRequest
- type UpdateCountInBasketResponse
- type User
- func (user User) AddToBasket(AddToBasketReq []AddToBasketRequest) (AddToBasketResponse, error)
- func (user User) AddToOrdersFromBasket(AddToOrdersFromBasketReq []AddToOrdersFromBasketRequest) (AddToOrdersFromBasketResponse, error)
- func (user User) CheckAvailabilityInBasket(CheckAvailabilityInBasketReq []CheckAvailabilityInBasketRequest) (CheckAvailabilityInBasketResponse, error)
- func (user User) DeleteFromBasket(DeleteFromBasketReq []DeleteFromBasketRequest) (DeleteFromBasketResponse, error)
- func (user User) GetBrandsByCode(GetBrandsByCodeReq GetBrandsByCodeRequest) (GetBrandsByCodeResponse, error)
- func (user User) GetOrdersStatus(GetOrdersStatusReq []GetOrdersStatusRequest) (GetOrdersStatusResponse, error)
- func (user User) GetShippingList(GetShippingListReq GetShippingListRequest) (GetShippingListResponse, error)
- func (user User) GetStatSearch() (GetStatSearchResponse, error)
- func (user User) SearchStartRequest(searchStartReq SearchStartRequest) (SearchStartResponse, error)
- func (user User) UpdateCountInBasket(UpdateCountInBasketReq []UpdateCountInBasketRequest) (UpdateCountInBasketResponse, error)
Constants ¶
const URL string = "https://www.avtoto.ru/?soap_server=json_mode"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AddToBasketRequest ¶
type AddToBasketRequest struct {
Code string `json:"Code"` // [*] Код детали
Manuf string `json:"Manuf"` // [*] Производитель
Name string `json:"Name"` // [*] Название
Price float64 `json:"Price"` // Цена
Storage string `json:"Storage"` // [*] Склад
Delivery string `json:"Delivery"` // [*] Срок доставки
Count int `json:"Count"` // [*] количество для покупки (тип: целое)
PartId int `json:"PartId"` // [*] Номер запчасти в списке результата поиска (тип: целое)
SearchID int `json:"SearchID"` // [*] Номер поиска (тип: целое)
RemoteID int `json:"RemoteID"` // ID запчасти в Вашей системе(тип: целое)
Comment string `json:"Comment,omitempty"` // Ваш комментарий к запчасти (тип: строка) [необязательный параметр]
}
Метод AddToBasket добавляет запчасти в корзину:
Примечание: Необходимо, чтобы количество для покупки Count не превышало максимальное количество MaxCount и соответствовало кратности заказа BaseCount. [*] — данные, сохраненные в результате поиска
Структура запроса метода AddToBasket ¶
type AddToBasketResponse ¶
type AddToBasketResponse struct {
Done []int `json:"Done"` // Массив RemoteID успешно добавленных элементов
Errors []struct {
Type string `json:"type"` // Тип ошибки: RemoteID - Если элемент прошел проверку на корректность, но возникла ошибка при добавлении элемента в корзину или Element, если возникла ошибка при проверке на корректность
Id int `json:"id"` // RemoteID или номер элемента
Error string `json:"error"` // Описание ошибки
} `json:"Errors"`
Info struct {
DocVersion string `json:"DocVersion"` // Версия документации
IP string `json:"IP"` // IP используемой машины
UserID int `json:"UserID"` // ID пользователя
} `json:"Info"`
DoneInnerID []struct {
RemoteID int `json:"RemoteID"` // ID товара в Вашей системе
InnerID int `json:"InnerID"` // ID товара в корзине AvtoTO
} `json:"DoneInnerId"`
}
Метод AddToBasket добавляет запчасти в корзину:
Структура ответа метода AddToBasket ¶
func (AddToBasketResponse) BasketResInCheckReq ¶
func (AddToBasketRes AddToBasketResponse) BasketResInCheckReq(partCount int) (CheckAvailabilityInBasketRequest, error)
Преобразовать ответ после добавления товара в корзину в запрос на получение информации по товару из корзины
basketCheck, errorbasketChecks := AddToBasketRes.BasketResInCheckReq(0)
if errorbasketChecks != nil {
fmt.Println(errorbasketChecks)
}
fmt.Printf("%+#v\n", basketCheck)
Output:
avtotoGo.CheckAvailabilityInBasketRequest{InnerID:99756690, RemoteID:1, Count:0}
func (AddToBasketResponse) BasketResInDeleteReq ¶
func (AddToBasketRes AddToBasketResponse) BasketResInDeleteReq(partCount int) (DeleteFromBasketRequest, error)
Функция преобразования ответа результата добавления товара в корзину в запрос на удаление позиции товара. Для примера была взята структура AddToBasketRes:
basketItemsDelete, errorBasketItemDelete := AddToBasketRes.BasketResInDeleteReq(0)
if errorBasketItemDelete != nil {
fmt.Println(errorBasketItemDelete)
}
Output:
avtotoGo.UpdateCountInBasketRequest{InnerID:99756690, RemoteID:1, NewCount:0x0}
func (AddToBasketResponse) BasketResInOrdersReq ¶
func (AddToBasketRes AddToBasketResponse) BasketResInOrdersReq(partCount int) (AddToOrdersFromBasketRequest, error)
Преобразовать ответ после добавления товара в корзину в запрос на добавление запчасти из корзины в заказы
orderBasket, errorbasketChecks := AddToBasketRes.BasketResInOrdersReq(0)
if errorbasketChecks != nil {
fmt.Println(errorbasketChecks)
}
fmt.Printf("%+#v\n", orderBasket)
Output:
avtotoGo.AddToOrdersFromBasketRequest{InnerID:99756690, RemoteID:1, Count:0}
func (AddToBasketResponse) BasketResInOrdersStatusReq ¶
func (AddToBasketRes AddToBasketResponse) BasketResInOrdersStatusReq(partCount int) (GetOrdersStatusRequest, error)
Преобразовать ответ после добавления товара в корзину в запрос на получения статуса заказа
orderStatusGet, errorbasketChecks := AddToBasketRes.BasketResInOrdersStatusReq(0)
if errorbasketChecks != nil {
fmt.Println(errorbasketChecks)
}
fmt.Printf("%+#v\n", orderStatusGet)
Output:
avtotoGo.GetOrdersStatusRequest{InnerID:99756690, RemoteID:1}
func (AddToBasketResponse) BasketResInUpdateReq ¶
func (AddToBasketRes AddToBasketResponse) BasketResInUpdateReq(partCount int) (UpdateCountInBasketRequest, error)
Функция преобразования ответа результата добавления товара в корзину в запрос на обновление позиции товара. Для примера была взята структура AddToBasketRes:
basketItemsUpdate, errorBasketItemUpdate := AddToBasketRes.BasketResInUpdateReq(0)
if errorBasketItemUpdate != nil {
fmt.Println(errorBasketItemUpdate)
}
Output:
avtotoGo.UpdateCountInBasketRequest{InnerID:99756690, RemoteID:1, NewCount:0x0}
func (AddToBasketResponse) Error ¶
func (AddToBasketRes AddToBasketResponse) Error() string
Получить ошибку из ответа метода AddToBasket
type AddToOrdersFromBasketRequest ¶
type AddToOrdersFromBasketRequest struct {
InnerID int `json:"InnerID"` // ID записи в корзине AvtoTO (тип: целое) — данные, сохраненные в результате добавления в корзину
RemoteID int `json:"RemoteID"` // ID запчасти в Вашей системе (тип: целое)
Count int `json:"Count,omitempty"` // Количество для добавления (необязательный параметр, тип: целое)
}
Метод AddToOrdersFromBasket добавляет запчасти в заказы из корзины Avtoto
Структура запроса метода AddToOrdersFromBasket ¶
type AddToOrdersFromBasketResponse ¶
type AddToOrdersFromBasketResponse struct {
Done []int `json:"Done"` // Массив RemoteID успешно добавленных элементов
Errors []struct {
RemoteID int `json:"RemoteID"` // ID товара в Вашей системе
InnerID int `json:"InnerID"` // ID товара в корзине AvtoTO (тип: целое)
Errors []string `json:"Errors"` // список ошибок по данному ID товара (массив)
} `json:"Errors"`
Info struct {
DocVersion string `json:"DocVersion"` // Версия документации
IP string `json:"IP"` // IP используемой машины
UserID int `json:"UserID"` // ID пользователя
} `json:"Info"`
DoneInnerId []struct {
RemoteID int `json:"RemoteID"` // ID товара в Вашей системе
InnerID int `json:"InnerID"` // InnerID - ID успешно добавленного в заказы товара AvtoTO
} `json:"DoneInnerId"`
}
Метод AddToOrdersFromBasket добавляет запчасти в заказы из корзины Avtoto
Структура ответа метода AddToOrdersFromBasket ¶
func (AddToOrdersFromBasketResponse) Error ¶
func (AddToOrdersFromBasketRes AddToOrdersFromBasketResponse) Error() string
Получить ошибку из ответа метода AddToOrdersFromBasket
type CheckAvailabilityInBasketRequest ¶
type CheckAvailabilityInBasketRequest struct {
InnerID int `json:"InnerID"` // ID записи в корзине AvtoTO (тип: целое)
RemoteID int `json:"RemoteID"` // ID запчасти в Вашей системе (тип: целое)
Count int `json:"Count,omitempty"` // Количество для добавления (необязательный параметр, тип: целое)
}
Метод CheckAvailabilityInBasket проверяет запчасти в корзине AvtoTO на наличие в прайсах для дальнейшего заказа, а так же срок хранения в корзине
Структура запроса метода CheckAvailabilityInBasket ¶
type CheckAvailabilityInBasketResponse ¶
type CheckAvailabilityInBasketResponse struct {
PartsInfo []struct {
RemoteID int `json:"RemoteID"` // ID товара в Вашей системе
InnerID int `json:"InnerID"` // ID товара в корзине AvtoTO (тип: целое)
Availability int `json:"Availability"` // 1/0 (в наличии / нет в наличии) (тип: целое)
MaxCount string `json:"MaxCount"` // максимальное допустимое количество товара для заказа в корзине AvtoTO (тип: целое, значение "-1" означает "без ограничений")
} `json:"PartsInfo"`
Errors []struct {
RemoteID int `json:"RemoteID"` // ID товара в Вашей системе
InnerID int `json:"InnerID"` // ID товара в корзине AvtoTO (тип: целое)
Errors []string `json:"Errors"` // список ошибок по данному ID товара (массив)
} `json:"Errors"`
Info struct {
DocVersion string `json:"DocVersion"` // Версия документации
IP string `json:"IP"` // IP используемой машины
UserID int `json:"UserID"` // ID пользователя
} `json:"Info"`
}
Метод CheckAvailabilityInBasket проверяет запчасти в корзине AvtoTO на наличие в прайсах для дальнейшего заказа, а так же срок хранения в корзине
Структура ответа метода CheckAvailabilityInBasket ¶
func (CheckAvailabilityInBasketResponse) Availability ¶
func (CheckAvailabilityInBasketRes CheckAvailabilityInBasketResponse) Availability(count int) (string, error)
Получить данные по Availability(наличие)
func (CheckAvailabilityInBasketResponse) Error ¶
func (CheckAvailabilityInBasketRes CheckAvailabilityInBasketResponse) Error() string
Получить ошибку из ответа метода CheckAvailabilityInBasket
type CustomIntToString ¶
type CustomIntToString struct {
// contains filtered or unexported fields
}
Структура созданная для десериализация JSON с неправильной типизацией - https://habr.com/ru/post/502176/ Так получилось, что API можетотдавать данные по ключу SearchID как string, так и integer. Эта структура и 2 объявленных для неё метода способны изменить это и предоставить постоянный рабочий функционал, который позволяет держать значение элемента массива типа string в завосимости от входного параметра.
func (CustomIntToString) MarshalJSON ¶
func (cf CustomIntToString) MarshalJSON() ([]byte, error)
Кастомное кодирование JSON для ключа SearchID
func (*CustomIntToString) UnmarshalJSON ¶
func (cis *CustomIntToString) UnmarshalJSON(data []byte) error
Кастомное декодирование JSON для ключа SearchID
type Date ¶
type Date struct {
// contains filtered or unexported fields
}
func (Date) MarshalJSON ¶
MarshalJSON is used to convert the timestamp to JSON
func (*Date) UnmarshalJSON ¶
UnmarshalJSON is used to convert the timestamp from JSON
type DeleteFromBasketRequest ¶
type DeleteFromBasketRequest struct {
InnerID int `json:"InnerID"` // ID записи в корзине AvtoTO (тип: целое)
RemoteID int `json:"RemoteID"` // ID запчасти в Вашей системе (тип: целое)
}
Метод DeleteFromBasket удаляет запчасти из корзины
Структура запроса метода DeleteFromBasket ¶
type DeleteFromBasketResponse ¶
type DeleteFromBasketResponse struct {
Done []int `json:"Done"` // Массив RemoteID успешно удаленных элементов
Errors []struct {
Type string `json:"type"` // Тип ошибки: RemoteID - Если элемент прошел проверку на корректность, но возникла ошибка при добавлении элемента в корзину или Element, если возникла ошибка при проверке на корректность
Id int `json:"id"` // RemoteID или номер элемента
Error string `json:"error"` // Описание ошибки
} `json:"Errors"`
Info struct {
DocVersion string `json:"DocVersion"` // Версия документации
IP string `json:"IP"` // IP используемой машины
UserID int `json:"UserID"` // ID пользователя
} `json:"Info"`
}
Метод DeleteFromBasket удаляет запчасти из корзины
Структура ответа метода DeleteFromBasket ¶
func (DeleteFromBasketResponse) Error ¶
func (DeleteFromBasketRes DeleteFromBasketResponse) Error() string
Получить ошибку из ответа метода DeleteFromBasket
type GetBrandsByCodeRequest ¶
type GetBrandsByCodeRequest struct {
UserId int `json:"user_id"` // [*] Уникальный идентификатор пользователя (номер клиента) (тип: целое)
UserLogin string `json:"user_login"` // [*] Логин пользователя (тип: строка)
UserPassword string `json:"user_password"` // Пароль пользователя (тип: строка)
SearchCode string `json:"search_code"` // Поисковый запрос, минимум 3 символа (тип: строка)
}
Метод GetBrandsByCode предназначен для поиска списка брендов по артикулу запчасти Примечание: Сервис поиска предложений будет работать в случае выполнения условия: сумма заказов / количество запросов > 20 после некоторого порога проценок. [*] — эти данные можно узнать зайдя на страницу Настройки после авторизации на сайте
Структура запроса метода GetBrandsByCode ¶
type GetBrandsByCodeResponse ¶
type GetBrandsByCodeResponse struct {
Brands []struct {
Manuf string `json:"Manuf"` // Производитель
Name string `json:"Name"` // Название
} `json:"Brands"`
Info struct {
Errors []string `json:"Errors"`
} `json:"Info"`
}
Метод GetBrandsByCode предназначен для поиска списка брендов по артикулу запчасти
Структура ответа метода GetBrandsByCode ¶
func (GetBrandsByCodeResponse) Error ¶
func (GetBrandsByCodeRes GetBrandsByCodeResponse) Error() string
Получить ошибку из ответа метода GetBrandsByCode
func (GetBrandsByCodeResponse) LenParts ¶
func (GetBrandsByCodeRes GetBrandsByCodeResponse) LenParts() int
Получить количество Parts метода GetBrandsByCode
type GetOrdersStatusRequest ¶
type GetOrdersStatusRequest struct {
InnerID int `json:"InnerID"` // ID записи в корзине AvtoTO (тип: целое) — данные, сохраненные в результате добавления в корзину
RemoteID int `json:"RemoteID"` // ID запчасти в Вашей системе (тип: целое)
}
Метод GetOrdersStatus предназначен для проверки статуса заказа в системе AvtoTO
Структура запроса метода GetOrdersStatus ¶
type GetOrdersStatusRequestData ¶
type GetOrdersStatusRequestData struct {
User User `json:"user"` // Данные пользователя для авторизации (тип: ассоциативный массив)
Parts []GetOrdersStatusRequest `json:"parts"` // Список запчастей для добавления в заказы (тип: индексированный массив)
}
Метод GetOrdersStatus предназначен для проверки статуса заказа в системе AvtoTO Полная структура запроса метода GetOrdersStatus скрыта от разработчика.
type GetOrdersStatusResponse ¶
type GetOrdersStatusResponse struct {
OrdersInfo []struct {
RemoteID int `json:"RemoteID"` // ID заказа в Вашей системе
InnerID int `json:"InnerID"` // ID заказа в системе AvtoTO
Info struct {
Progress int `json:"progress"` // общий статус заказа (тип: целое)
Progress_text string `json:"progress_text"` // общий статус заказа (тип: строка)
Count int `json:"count"` // общее количество заказа (тип: целое)
Sub_progress []string `json:"sub_progress"` // частичные статусы заказа (тип: массив)
// Частичный статус (номер) => количество частичного статуса
Sub_progress_text string `json:"sub_progress_text"` // частичные статусы заказа, описание (тип: строка с HTML разметкой)
} `json:"Info"`
} `json:"OrdersInfo"`
Errors []struct {
RemoteID int `json:"RemoteID"` // ID товара в Вашей системе
InnerID int `json:"InnerID"` // ID товара в корзине AvtoTO (тип: целое)
Errors []string `json:"Errors"` // список ошибок по данному ID товара (массив)
} `json:"Errors"`
}
Метод GetOrdersStatus предназначен для проверки статуса заказа в системе AvtoTO
Структура ответа метода GetOrdersStatus ¶
func (GetOrdersStatusResponse) Error ¶
func (GetOrdersStatusRes GetOrdersStatusResponse) Error() string
Получить ошибку из ответа метода GetOrdersStatus
type GetShippingListRequest ¶
type GetShippingListRequest struct {
From Date `json:"from,omitempty"` // дата начала выборки (ДД.ММ.ГГГГ) (опционально) (тип: строка)
To Date `json:"to,omitempty"` // дата окончания выборки (ДД.ММ.ГГГГ) (опционально) (тип: строка)
PageNum int `json:"page_num,omitempty"` // номер страницы (опционально) (тип: целое)
}
Метод GetShippingList предназначен для получения статистики проценок по всем объединенным регистрациям
Структура запроса метода GetShippingList ¶
type GetShippingListRequestData ¶
type GetShippingListRequestData struct {
User User `json:"user"` // Данные пользователя для авторизации (тип: ассоциативный массив)
// contains filtered or unexported fields
}
Метод GetShippingList предназначен для получения статистики проценок по всем объединенным регистрациям Полная структура запроса метода GetShippingList скрыта от разработчика.
type GetShippingListResponse ¶
type GetShippingListResponse struct {
Shippings []struct {
Id int `json:"Id"` // ID отгрузки
Date int `json:"Date"` // Дата отгрузки
Type int `json:"Type"` // Тип отгрузки
Summ int `json:"Summ"` // Сумма отгрузки
Orders []struct {
OrderId int `json:"OrderId"` // ID заказа
Comment string `json:"Comment"` // Комментарий к заказу
Sclad string `json:"Sclad"` // Направление склада
Code string `json:"Code"` // Артикул
Name string `json:"Name"` // Название
Manuf string `json:"Manuf"` // Бренд
Price int `json:"Price"` // Цена
Count int `json:"Count"` // Количество
} `json:"Orders"`
} `json:"Shippings"`
Pagination struct {
CountItems int `json:"CountItems"` // Количество отгрузок
CountPages int `json:"CountPages"` // Количество страниц
PerPage int `json:"PerPage"` // Количество результатов на странице
CurrentPage int `json:"CurrentPage"` // Текущая страница
} `json:"Pagination"`
Errors []string `json:"Errors"` // Массив ошибок, возникший в процессе поиска
Info struct {
DocVersion string `json:"DocVersion"` // Версия документации
} `json:"Info"`
}
Метод GetShippingList предназначен для получения статистики проценок по всем объединенным регистрациям
Структура ответа метода GetShippingList ¶
func (GetShippingListResponse) CountItems ¶
func (slr GetShippingListResponse) CountItems() int
Получить Количество отгрузок из ответа метода GetShippingList
func (GetShippingListResponse) CountPages ¶
func (slr GetShippingListResponse) CountPages() int
Получить Количество страниц из ответа метода GetShippingList
func (GetShippingListResponse) CurrentPage ¶
func (slr GetShippingListResponse) CurrentPage() int
Получить Текущую страницу из ответа метода GetShippingList
func (GetShippingListResponse) Error ¶
func (slr GetShippingListResponse) Error() string
Получить ошибки из ответа метода GetShippingList
func (GetShippingListResponse) PerPage ¶
func (slr GetShippingListResponse) PerPage() int
Получить Количество результатов на странице из ответа метода GetShippingList
type GetStatSearchResponse ¶
type GetStatSearchResponse struct {
StatInfo struct {
SearchCount int `json:"SearchCount"` // Количество проценок за определенный период
SearchEnabled bool `json:"SearchEnabled"` // Доступность использования проценки (true - доступно, false - недоступно)
MaxCount bool `json:"MaxCount"` // лимит проценок
OrdersSum int `json:"OrdersSum"` // сумма закупок за определенный период
StatDateStart Date `json:"StatDateStart"` // дата начала периода подсчета
StatDateStartStamp TimeUnix `json:"StatDateStartStamp"` // дата начала периода подсчета в формате UNIX
StatDateEnd Date `json:"StatDateEnd"` // Дата окончания периода подсчета
StatDateEndStamp TimeUnix `json:"StatDateEndStamp"` // Дата окончания периода подсчета в формате UNIX
SearchHistory []struct {
Day Date `json:"Day"` // День (в формате dd/mm)
SearchCount int `json:"SearchCount"` // Количество проценок
} `json:"SearchHistory"`
} `json:"StatInfo"`
BrandsStatInfo struct {
SearchCount string `json:"SearchCount"` // Количество запросов за определенный период
SearchEnabled bool `json:"SearchEnabled"` // Доступность использования запросов (true - доступно, false - недоступно)
MaxCount bool `json:"MaxCount"` // Лимит запросов
StatDateStart Date `json:"StatDateStart"` // Дата начала периода подсчета
StatDateStartStamp TimeUnix `json:"StatDateStartStamp"` // Дата начала периода подсчета в формате UNIX
StatDateEnd Date `json:"StatDateEnd"` // Дата окончания периода подсчета
StatDateEndStamp TimeUnix `json:"StatDateEndStamp"` // Дата окончания периода подсчета в формате UNIX
SearchHistory []struct {
Day Date `json:"Day"` // День (в формате dd/mm)
SearchCount int `json:"SearchCount"` // Количество запросов
} `json:"SearchHistory"`
} `json:"BrandsStatInfo"`
Errors []string `json:"Errors"` // Массив ошибок, возникший в процессе поиска
Info struct {
DocVersion string `json:"DocVersion"` // Версия API
} `json:"Info"`
}
Метод GetStatSearch предназначен для получения статистики проценок по всем объединенным регистрациям. Информаци о проценках - индексированный массив с упорядоченными целочисленными ключами, начиная с 0
Структура ответа метода GetStatSearch ¶
func (GetStatSearchResponse) Error ¶
func (GetStatSearchRes GetStatSearchResponse) Error() string
Получить ошибку из ответа метода GetStatSearch
type SearchGetParts2Request ¶
type SearchGetParts2Request struct {
ProcessSearchId string `json:"ProcessSearchId"` // Уникальный идентификатор процесса поиска (тип: строка).
Limit int `json:"Limit"` // необязательный параметр, орграничение на количество строк в выдаче (тип: целое).
}
Метод SearchGetParts2 предназначен для получения результатов поиска запчастей по коду на сервере AvtoTO. Расширенная версия, выдает статус ответа Полная структура запроса метода GetShippingList скрыта от разработчика.
func (SearchGetParts2Request) SearchGetParts2 ¶
func (SearchGetParts2Req SearchGetParts2Request) SearchGetParts2() (SearchGetParts2Response, error)
Получить данные по методу SearchGetParts2
SearchGetParts2Res, errorSearch := SearchGetParts2Req.SearchGetParts2() // Вызов метода SearchGetParts2
if errorSearch != nil {
log.Fatal(errorSearch)
}
if SearchGetParts2Res.Error() != "Запрос в обработке" {
fmt.Println(SearchGetParts2Res)
} else {
fmt.Println("Запрос в обработке. Ждём 1 секунду и заново опрашиваешь по методу SearchGetParts2")
}
type SearchGetParts2Response ¶
type SearchGetParts2Response struct {
Parts []struct {
Code string `json:"Code"` // [*] Код детали
Manuf string `json:"Manuf"` // [*] Производитель
Name string `json:"Name"` // [*] Название
Price int `json:"Price"` // Цена
Storage string `json:"Storage"` // [*] Склад
Delivery string `json:"Delivery"` // [*] Срок доставки
MaxCount string `json:"MaxCount"` // [*] Максимальное количество для заказа, остаток по складу. Значение "-1" - означает "много" или "неизвестно"
BaseCount string `json:"BaseCount"` // [*] Кратность заказа
StorageDate string `json:"StorageDate"` // [**] Дата обновления склада
DeliveryPercent int `json:"DeliveryPercent"` // [**] Процент успешных закупок из общего числа заказов
BackPercent int `json:"BackPercent"` // [**] Процент удержания при возврате товара (при отсутствии возврата поставщику возвращается значение "-1")
AvtotoData struct {
PartId int `json:"PartId"` // [*] Номер запчасти в списке результата поиска
} `json:"AvtotoData"`
} `json:"Parts"`
Info struct {
Errors []string `json:"Errors"` // Массив ошибок, возникший в процессе поиска
SearchStatus int `json:"SearchStatus"` // Информация о статусе процесса на сервере AvtoTO. Возможные варианты значений:
SearchID CustomIntToString `json:"SearchId"` // Уникальный идентификатор запроса поиска, возвращается в случае удачного поиска
} `json:"Info"`
}
Метод SearchGetParts2 предназначен для получения результатов поиска запчастей по коду на сервере AvtoTO. Расширенная версия, выдает статус ответа Список запчастей, найденных по запросу - индексированный массив с упорядоченными целочисленными ключами, начиная с 0. Каждый элемент этого массива содержит информацию о конкретной детали и представляет из себя ассоциативный массив. [*] — эти данные необходимо сохранить в Вашей системе, в дальнейшем они понадобятся для добавления запчастей в корзину [**] — В случае, когда SearchStatus = 4 (Результат получен)
Структура ответа метода SearchGetParts2 ¶
func (SearchGetParts2Response) Error ¶
func (SearchGetParts2Res SearchGetParts2Response) Error() string
Получить ошибку из ответа метода SearchGetParts2
func (SearchGetParts2Response) LenParts ¶
func (SearchGetParts2Res SearchGetParts2Response) LenParts() int
Получить количество Parts метода SearchGetParts2
func (SearchGetParts2Response) SearchResInBasketReq ¶
func (SearchGetParts2Res SearchGetParts2Response) SearchResInBasketReq(partCount int) (AddToBasketRequest, error)
Получить данные по методу SearchGetParts2
func (SearchGetParts2Response) Status ¶
func (SearchGetParts2Res SearchGetParts2Response) Status() string
Получить статус запроса по методу SearchGetParts2
type SearchStartRequest ¶
type SearchStartRequest struct {
UserId int `json:"user_id"` // [*] Уникальный идентификатор пользователя (номер клиента) (тип: целое)
UserLogin string `json:"user_login"` // [*] Логин пользователя (тип: строка)
UserPassword string `json:"user_password"` // Пароль пользователя (тип: строка)
SearchCode string `json:"search_code"` // Поисковый запрос, минимум 3 символа (тип: строка)
SearchCross string `json:"search_cross"` // Искать в аналогах или нет (тип: строка, 'on' или 'off')
Brand string `json:"brand,omitempty"` // [**] Искать код с учетом бренда, минимум 2 символа (опционально)(тип: строка)
}
type SearchStartResponse ¶
type SearchStartResponse struct {
ProcessSearchID string `json:"ProcessSearchId"` // идентификатор процесса поиска (тип: строка). Необходим для отслеживания результатов процесса поиска.
Info struct {
SearchID string `json:"SearchId"`
Errors []string `json:"Errors"`
Logs string `json:"Logs"`
} `json:"Info"`
}
Метод SearchStart предназначен для получения результатов поиска запчастей по коду на сервере AvtoTO
Структура ответа метода SearchStart ¶
func (SearchStartResponse) Error ¶
func (SearchStartRes SearchStartResponse) Error() string
Получить ошибку из ответа метода SearchStart
func (SearchStartResponse) LogsString ¶
func (responseSearchStart SearchStartResponse) LogsString() string
Получить логи из ответа метода SearchStart
func (SearchStartResponse) ProcessSearchCode ¶
func (searchStartRes SearchStartResponse) ProcessSearchCode() string
Получить ProcessSearchID из ответа метода SearchStart
func (SearchStartResponse) SearchResInReq ¶
func (searchStartRes SearchStartResponse) SearchResInReq() (SearchGetParts2Request, error)
Преобразование ответа в запрос. SearchStartResponse > SearchGetParts2Request
type TimeUnix ¶
type TimeUnix struct {
// contains filtered or unexported fields
}
func (TimeUnix) Unix ¶
Unix returns t as a Unix time, the number of seconds elapsed since January 1, 1970 UTC. The result does not depend on the location associated with t.
func (*TimeUnix) UnmarshalJSON ¶
UnmarshalJSON is used to convert the timestamp from JSON
type UpdateCountInBasketRequest ¶
type UpdateCountInBasketRequest struct {
InnerID int `json:"InnerID"` // ID записи в корзине AvtoTO (тип: целое) — данные, сохраненные в результате добавления в корзину
RemoteID int `json:"RemoteID"` // ID запчасти в Вашей системе (тип: целое)
NewCount uint `json:"NewCount"` // Необходимое количество запчастей в карзине (тип: целое, положительное) — Необходимо, чтобы новое количество NewCount не превышало максимальное количество MaxCount, и соответствовало кратности заказа BaseCount
}
Метод UpdateCountInBasket предназначен для получения результатов поиска запчастей по коду на сервере AvtoTO. Расширенная версия, выдает статус ответа
Структура запроса метода UpdateCountInBasket ¶
type UpdateCountInBasketResponse ¶
type UpdateCountInBasketResponse struct {
Done []struct {
RemoteID int `json:"RemoteID"`
} `json:"Done"`
Errors []struct {
Type string `json:"type"` // Тип ошибки: RemoteID - Если элемент прошел проверку на корректность, но возникла ошибка при добавлении элемента в корзину или Element, если возникла ошибка при проверке на корректность
Id int `json:"id"` // RemoteID или номер элемента
Error string `json:"error"` // Описание ошибки
} `json:"Errors"`
Info struct {
DocVersion string `json:"DocVersion"` // Версия документации
IP string `json:"IP"` // IP используемой машины
UserID int `json:"UserID"` // ID пользователя
} `json:"Info"`
}
Метод UpdateCountInBasket предназначен для получения результатов поиска запчастей по коду на сервере AvtoTO. Расширенная версия, выдает статус ответа
Структура ответа метода UpdateCountInBasket ¶
func (UpdateCountInBasketResponse) Error ¶
func (UpdateCountInBasketRes UpdateCountInBasketResponse) Error() string
Получить ошибку из ответа метода UpdateCountInBasket
type User ¶
type User struct {
UserId int `json:"user_id"` // Уникальный идентификатор пользователя (номер клиента) (тип: целое)
UserLogin string `json:"user_login"` // Логин пользователя (тип: строка)
UserPassword string `json:"user_password"` // Пароль пользователя (тип: строка)
}
Исходная структура для авторизации пользователя
func (User) AddToBasket ¶
func (user User) AddToBasket(AddToBasketReq []AddToBasketRequest) (AddToBasketResponse, error)
Получить данные по методу AddToBasket
basketItems := make([]avtoto.AddToBasketRequest, 1)
basketItem, errorBasketItem := SearchGetParts2Res.SearchResInBasketReq(0)
if errorBasketItem != nil {
fmt.Println(errorBasketItem)
}
basketItems[0] = basketItem
basketItems[0].RemoteID = 1
basketItems[0].Count = 20
AddToBasketRes, errorRes := user.AddToBasket(basketItems)
if errorRes != nil {
fmt.Println(errorRes)
}
func (User) AddToOrdersFromBasket ¶
func (user User) AddToOrdersFromBasket(AddToOrdersFromBasketReq []AddToOrdersFromBasketRequest) (AddToOrdersFromBasketResponse, error)
Получить данные по методу AddToOrdersFromBasket
orderBaskets := make([]avtoto.AddToOrdersFromBasketRequest, 1)
orderBasket, errorbasketChecks := AddToBasketRes.BasketResInOrdersReq(0)
if errorbasketChecks != nil {
fmt.Println(errorbasketChecks)
}
orderBaskets[0] = orderBasket
AddToOrdersFromBasketRes, errorOrders := user.AddToOrdersFromBasket(orderBaskets)
if errorOrders != nil {
fmt.Println(errorOrders)
}
func (User) CheckAvailabilityInBasket ¶
func (user User) CheckAvailabilityInBasket(CheckAvailabilityInBasketReq []CheckAvailabilityInBasketRequest) (CheckAvailabilityInBasketResponse, error)
Получить данные по методу CheckAvailabilityInBasket
basketChecks := make([]avtoto.CheckAvailabilityInBasketRequest, 1)
basketCheck, errorbasketChecks := AddToBasketRes.BasketResInCheckReq(0)
if errorbasketChecks != nil {
fmt.Println(errorbasketChecks)
}
basketChecks[0] = basketCheck
CheckAvailabilityInBasketRes, errorCheckInBasket := user.CheckAvailabilityInBasket(basketChecks)
if errorCheckInBasket != nil {
fmt.Println(errorCheckInBasket)
}
availability, errorAvailability := CheckAvailabilityInBasketRes.Availability(0)
if errorAvailability != nil {
fmt.Println(errorAvailability)
}
func (User) DeleteFromBasket ¶
func (user User) DeleteFromBasket(DeleteFromBasketReq []DeleteFromBasketRequest) (DeleteFromBasketResponse, error)
Получить данные по методу DeleteFromBasket
basketItemsDeletes := make([]avtoto.DeleteFromBasketRequest, 1)
basketItemsDelete, errorBasketItemDelete := AddToBasketRes.BasketResInDeleteReq(0)
if errorBasketItemDelete != nil {
fmt.Println(errorBasketItemDelete)
}
basketItemsDeletes[0] = basketItemsDelete
DeleteFromBasketRes, errorBusketDelete := user.DeleteFromBasket(basketItemsDeletes)
if errorBasketItemDelete != nil {
fmt.Println(errorBusketDelete)
}
func (User) GetBrandsByCode ¶
func (user User) GetBrandsByCode(GetBrandsByCodeReq GetBrandsByCodeRequest) (GetBrandsByCodeResponse, error)
Получить данные по методу GetBrandsByCode
myBrand := avtoto.GetBrandsByCodeRequest{SearchCode: mySearchCode} // Создаём структуру запроса бренда по заданному артиклу
dataGetBrandsByCode, errorSearch := user.GetBrandsByCode(myBrand) // Получаем с сервера список брендов
if errorSearch != nil {
log.Fatal(errorSearch)
}
fmt.Println("> Для артикла", mySearchCode, "найдено", len(dataGetBrandsByCode.Brands), "бренда(ов).",
"\nПервый найденный бренд имеет производителя", dataGetBrandsByCode.Brands[0].Manuf, "и имя", dataGetBrandsByCode.Brands[0].Name)
func (User) GetOrdersStatus ¶
func (user User) GetOrdersStatus(GetOrdersStatusReq []GetOrdersStatusRequest) (GetOrdersStatusResponse, error)
Получить данные по методу GetOrdersStatus
orderStatusGets := make([]avtoto.GetOrdersStatusRequest, 1)
orderStatusGet, errorbasketChecks := AddToBasketRes.BasketResInOrdersStatusReq(0)
if errorbasketChecks != nil {
fmt.Println(errorbasketChecks)
}
orderStatusGets[0] = orderStatusGet
GetOrdersStatusRes, errorOrdersStatus := user.GetOrdersStatus(orderStatusGets)
if errorOrdersStatus != nil {
fmt.Println(errorOrdersStatus)
}
orderStatus, orderStatusError := GetOrdersStatusRes.Status(0)
if orderStatusError != nil {
fmt.Println(orderStatusError)
}
func (User) GetShippingList ¶
func (user User) GetShippingList(GetShippingListReq GetShippingListRequest) (GetShippingListResponse, error)
Получить данные по методу GetShippingList
GetShippingListReq := avtoto.GetShippingListRequest{}
ShippingList, ShippingListError := user.GetShippingList(GetShippingListReq)
if ShippingListError != nil {
fmt.Println(ShippingListError)
}
func (User) GetStatSearch ¶
func (user User) GetStatSearch() (GetStatSearchResponse, error)
Получить данные по методу GetStatSearch
statSearch, statSearchError := user.GetStatSearch()
if statSearchError != nil {
fmt.Println(statSearchError)
}
func (User) SearchStartRequest ¶
func (user User) SearchStartRequest(searchStartReq SearchStartRequest) (SearchStartResponse, error)
Получить данные по методу SearchStart
searchStartReq := avtoto.SearchStartRequest{SearchCode: mySearchCode, SearchCross: "on", Brand: dataGetBrandsByCode.Brands[0].Manuf}// Объявление запроса метода SearchStart
datasSearchStartRequest, errorSearch := user.SearchStartRequest(searchStartReq)// Вызов метода SearchStartRequest с запросом
if errorSearch != nil {
log.Fatal(errorSearch)
}
fmt.Println("> Полученный ProcessSearchID", datasSearchStartRequest.ProcessSearchID)
func (User) UpdateCountInBasket ¶
func (user User) UpdateCountInBasket(UpdateCountInBasketReq []UpdateCountInBasketRequest) (UpdateCountInBasketResponse, error)
Получить данные по методу UpdateCountInBasket
basketItemsUpdates := make([]avtoto.UpdateCountInBasketRequest, 1)
basketItemsUpdate, errorBasketItemUpdate := AddToBasketRes.BasketResInUpdateReq(0)
if errorBasketItemUpdate != nil {
fmt.Println(errorBasketItemUpdate)
}
basketItemsUpdates[0] = basketItemsUpdate
basketItemsUpdates[0].NewCount = 10
UpdateCountinBasketRes, errorBasketUpdate := user.UpdateCountInBasket(basketItemsUpdates)
if errorBasketUpdate != nil {
fmt.Println(errorBasketUpdate)
}