Михаил Бабушкин
Заказчик Михаил Бабушкин miher19mri94 | FL.RU

Михаил Бабушкин

На сайте 10 лет и 8 месяцев (заходил 2 года 9 месяцев 17 дней назад)
5
617.1
Рейтинг
617.1
Все (1)       Заказы (1)        Вакансии (0)       Конкурсы (0)
Разместить заказ
13 Февраля 2022
ТЗ выгрузка данных YC в свою БД
Документация YClients developers.yclients.com/r...
Данные необходимо сохранять в БД PostgreSQL, размещенную на reg.ru

Таблицы:
1 Записи
2 Клиенты
2.1 Категории клиентов
3 Сотрудники
3.1 Должности сотрудников
4 Услуги
4.1 Сотрудники, оказывающие услугу
5 Финансовые операции
5.1 Категория операции
5.2 Касса
6 Таблица синхронизации. Поля: сущность, порядковый номер последней записи (нужна для того, чтобы очередной проход синхронизации стартовать с конкретного места, а не с начала)

Порядок синхронизации
1. Запуск скрипта
2. Авторизация
3. Выгружаем список сотрудников
4. Загружаем список услуг
5. Синхронизируем список всех клиентов (по алгоритму ниже)
6. Синхронизируем список всех записей (по алгоритму ниже)
7. Синхронизируем список всех финансовых операций

Общий алгоритм синхронизации пагинированных данных:
Смотрим последнюю запись в нашей БД, берем ее id. Смотрим последний порядковый номер записи из таблицы 6
Делаем запрос с нужной страницы. Например, если последний сохраненный порядковый номер 524, то делаем запрос с pageSize = 200 и pageNumber = 3. Таким образом, последняя сохраненная запись попадет в текущую страницу. Проверяем, что id записи из ответа запроса по порядковому номеру из таблицы 6 равен последнему id из нашей таблицы. Иначе говоря, проверяем, что ничего не добавилось/удалилось из начала таблицы.
Если все ок: синхронизируем данные дальше (отправляем запросы на следующие страницы при необходимости), все сохраняем в нашу таблицу. При достижении последней записи сохраняем информацию по ней в таблицу 6
Если не ок (id отличаются для одинаковых порядковых номеров в запросе и нашей таблице): удаляем все записи из таблицы и зависимые от нее записи, начинаем синхронизацию с первой страницы.

Авторизация
developers.yclients.com/r...

Запрос сотрудников
developers.yclients.com/r...
Запрос не панированный. Получили данные, все сохранили в БД. Должность сотрудника сохраняем в таблицу 3.1

Запрос услуг
developers.yclients.com/r...
Запрос не пагинированный. Массив staff сохраняем в таблицу 4.1.

Запрос клиентов
developers.yclients.com/r...
Body имеет следующий вид:
{
"page": 1,
"page_size": 25,
"fields": [
"id",
"name"
],
"order_by": "name",
"order_by_direction": "desc",
"operation": "AND",
"filters": []
}

Какие параметры указывать в body
page – номер страницы по алгоритму
page_size – 200
fields:
"id"
"name"
"phone"
"email"
"card"
"birth_date"
"comment"
"discount"
"sex_id"
"sex"
"sms_check"
"sms_bot"
"sms_not"
"balance"
"importance_id"
"importance"
"categories"
"last_change_date"
"custom_fields"
order_by: id
order_by_direction: asc
operation: AND
filters: []

Массив categories записывается в отдельную таблицу 2.1

Запрос записей
developers.yclients.com/r...
Параметры для query
page – номер страницы по алгоритму
page_size = 200

Массив services – ссылки не соответствующие услуги из таблицы 4
Массив staff – ссылки на соответствующие записи из таблицы 3
Client – ссылка на запись из таблицы 2
Document – не сохраняем

Запрос финансовых операций
developers.yclients.com/r...
поле «expense» пишем в отдельную таблицу 5.1 категорий финансовых операций, финансовая операция имеет ссылку на эту запись
Поле «account» пишем в отдельную таблицу «кассы» 5.2. Финансовая операция имеет ссылку на эту запись
Поле «client» – ссылка на запись клиента

Важно
В таблицах должны быть проставлены все необходимые ключи и индексы для возможности поиска клиентов по категориям/сотрудникам, оказавшим услугу и тд

Прошло времени с момента публикации: 2 года 10 месяцев 11 дней 6 часов 32 минуты
Раздел: Программирование / Прикладное программирование
Наши партнеры
Сведения об ООО «Ваан» внесены в реестр аккредитованных организаций, осуществляющих деятельность в области информационных технологий. ООО «Ваан» осуществляет деятельность, связанную с использованием информационных технологий, по разработке компьютерного программного обеспечения, предоставлению доступа к программе для ЭВМ и является правообладателем программы для ЭВМ «Платформа FL.ru (версия 2.0)».