Backend rest api в виде отдельного модуля в yii2
Цена договорная
День добрый
Ищем специалиста способного помочь разработкой модуля для специализированного ГЕО ПО. ПО собственной разработки, им занимается отдельная команда. Эти же коллеги будут прикручивать модуль к ПО и отвечать на ваши вопросы в ходе разработки.
С очень высокой вероятностью дальнейшая поддержка и развитие модуля также будет на вашей стороне, поэтому для продуктивности желателен весь набор самых лучших человеческих черт и знание того на чем мы работаем:
Постоянно используем
• Php
• yii2 (или другой фреймворк, с пониманием чем он лучше под задачу )
• js
• sql (join, вложенные запросы)
Временами используем
• Vue (или любой js фреймворк)
• postgre
• postgis
• vagrant
Наш стек
• Php
• Yii2
• Vue
• Vuex
• Vuetify
• vagrant
• leaflet
• yandex maps api
• postgre
• postgis
Собственно задание на модуль. От вас прошу оценку срока и стоимости. Ну и также насколько имеет возможность далее поддерживать и докручивать.
Спасибо.
Ps Ниже прилеплены файлы еще - там сэмплы данных (формат txt иначе прикрепить не мог, но по сути это csv).
PPs у нас два модуля на разработку второй тоже разместил как заказ отдельный.
++++++++++++++
в yii2
в виде отдельного модуля в yii2 (https://www.yiiframework.com/doc/api/2.0/yii-base-module).
Надо сделать несколько endpoint для работы с таблицей бд.
в базе на postgresql есть таблица с данными, с произвольными колонками
типы данных: int, float, varchar, boolean, date. В процессе еще может добавиться что угодно.
1 endpoint – получение информации о колонках таблицы.
Надо сделать endpoint, который отдает информацию о колонках в таблице
примерно в таком виде:
columns: [
{
“title”: “Название”,
“type”: “string”,
“column”: “title” ,
},
{
“title”: “Номер”,
“type”: “int”,
“column”: “number”,
“min”: 1,
“max”: 126
},
...
]
title - Название колонки, которое будет выводиться в интерфейсе. Должно браться из комментария колонки в таблице.
type – унифицированный тип данных. Например если в базе int или bigint, надо выводить как int. Тип данных колонки должен браться из базы.
Унифицированные типы данных:
• int,
• float,
• data,
• string,
• text
• boolean
column – название колонки, как она называется в базе
min, max – цифр и дат, надо считать минимальное и максимальное значение
Т.к. база меняется не часто, результат надо кэшировать через
https://www.yiiframework.com/doc/api/2.0/yii-cachi...
Надо сделать абстракцию, над Yii2 кэшированием, и обращаться к ней.
Получение информации о колонках в базе, надо сделать универсально. Отдельным классом, которому как свойства задаются название схемы и таблицы бд. И метод run(), который возвращает массив с данными по колонкам.
Пример:
$form = new TableColumnsInfo(‘public’, ‘data’);
$columns = $form→run()
Для выполнения запросов в виде простого sql надо сделать класс, с свойством $sql
и методами queryAll, queryOne, execute. Абстракция над createCommand (https://www.yiiframework.com/doc/api/2.0/yii-db-connection)
2 endpoint – фильтрация данных в таблице, подсчет строк
Должна быть модель (https://www.yiframework.com/doc/api/2.0/yii-db-activerecord) привязанная к нужной таблице.
Нужен класс, которому как, свойства будут задаваться объект запроса (https://www.yiiframework.com/doc/api/2.0/yii-db-query)
И массив с условиями фильтрации. Метод run, возвращающий объект запроса с навешанными условиями с помощью методов andFilterWhere и andWhere (https://www.yiiframework.com/doc/api/2.0/yii-db-querytrait#andFilterWhere()-detail).
$form = new QueryFilter(Query $query, Array $filters);
$query = $form→run();
пример массива условий:
[
{
“column”: “title”,
“condition”: “like”,
“value”: [“a”, “b”, “c”],
“not”: false
},
{
“column”: “number”,
“condition”: “between”,
“value”: {“min”: 11, “max”: “22”},
“not”: false
}
]
column – название колонки в базе
condition – тип условия. Одно из equal, like, between, greater_than, lower_than
not – префик not
в результате должен получиться объект запроса, с условием:
WHERE ( column LIKE ‘%a%’ OR column LIKE %b%’ OR olumn LIKE ‘%c%’) AND ( number BETWEEN 11 AND 22 )
На вход в endpoint будут подаваться 2 массива из условий
надо посчитать количество строк, отфильтрованных по 1 массиву.
Надо посчитать количество строк, отфильтрованных по 2 массиву, но считать надо из данных отфильтированных первым массивом.
Как вариант можно сделать вложенными запросами. Сгенерить объекты запросов и получить код sql запроса https://www.yiiframework.com/wiki/857/show-raw-sql...
и собрать обычный запрос в виде текста.
3 endpoint
Надо генерить и отдавать эксель из отфильтрованных данных.
Если на вход подается 1 массив с условиями, выгружать данные по нему.
Если на вход подаются 2 массива. Выгружать данные отфильтрованные сначала 1, потом 2 условиями
Ищем специалиста способного помочь разработкой модуля для специализированного ГЕО ПО. ПО собственной разработки, им занимается отдельная команда. Эти же коллеги будут прикручивать модуль к ПО и отвечать на ваши вопросы в ходе разработки.
С очень высокой вероятностью дальнейшая поддержка и развитие модуля также будет на вашей стороне, поэтому для продуктивности желателен весь набор самых лучших человеческих черт и знание того на чем мы работаем:
Постоянно используем
• Php
• yii2 (или другой фреймворк, с пониманием чем он лучше под задачу )
• js
• sql (join, вложенные запросы)
Временами используем
• Vue (или любой js фреймворк)
• postgre
• postgis
• vagrant
Наш стек
• Php
• Yii2
• Vue
• Vuex
• Vuetify
• vagrant
• leaflet
• yandex maps api
• postgre
• postgis
Собственно задание на модуль. От вас прошу оценку срока и стоимости. Ну и также насколько имеет возможность далее поддерживать и докручивать.
Спасибо.
Ps Ниже прилеплены файлы еще - там сэмплы данных (формат txt иначе прикрепить не мог, но по сути это csv).
PPs у нас два модуля на разработку второй тоже разместил как заказ отдельный.
++++++++++++++
в yii2
в виде отдельного модуля в yii2 (https://www.yiiframework.com/doc/api/2.0/yii-base-module).
Надо сделать несколько endpoint для работы с таблицей бд.
в базе на postgresql есть таблица с данными, с произвольными колонками
типы данных: int, float, varchar, boolean, date. В процессе еще может добавиться что угодно.
1 endpoint – получение информации о колонках таблицы.
Надо сделать endpoint, который отдает информацию о колонках в таблице
примерно в таком виде:
columns: [
{
“title”: “Название”,
“type”: “string”,
“column”: “title” ,
},
{
“title”: “Номер”,
“type”: “int”,
“column”: “number”,
“min”: 1,
“max”: 126
},
...
]
title - Название колонки, которое будет выводиться в интерфейсе. Должно браться из комментария колонки в таблице.
type – унифицированный тип данных. Например если в базе int или bigint, надо выводить как int. Тип данных колонки должен браться из базы.
Унифицированные типы данных:
• int,
• float,
• data,
• string,
• text
• boolean
column – название колонки, как она называется в базе
min, max – цифр и дат, надо считать минимальное и максимальное значение
Т.к. база меняется не часто, результат надо кэшировать через
https://www.yiiframework.com/doc/api/2.0/yii-cachi...
Надо сделать абстракцию, над Yii2 кэшированием, и обращаться к ней.
Получение информации о колонках в базе, надо сделать универсально. Отдельным классом, которому как свойства задаются название схемы и таблицы бд. И метод run(), который возвращает массив с данными по колонкам.
Пример:
$form = new TableColumnsInfo(‘public’, ‘data’);
$columns = $form→run()
Для выполнения запросов в виде простого sql надо сделать класс, с свойством $sql
и методами queryAll, queryOne, execute. Абстракция над createCommand (https://www.yiiframework.com/doc/api/2.0/yii-db-connection)
2 endpoint – фильтрация данных в таблице, подсчет строк
Должна быть модель (https://www.yiframework.com/doc/api/2.0/yii-db-activerecord) привязанная к нужной таблице.
Нужен класс, которому как, свойства будут задаваться объект запроса (https://www.yiiframework.com/doc/api/2.0/yii-db-query)
И массив с условиями фильтрации. Метод run, возвращающий объект запроса с навешанными условиями с помощью методов andFilterWhere и andWhere (https://www.yiiframework.com/doc/api/2.0/yii-db-querytrait#andFilterWhere()-detail).
$form = new QueryFilter(Query $query, Array $filters);
$query = $form→run();
пример массива условий:
[
{
“column”: “title”,
“condition”: “like”,
“value”: [“a”, “b”, “c”],
“not”: false
},
{
“column”: “number”,
“condition”: “between”,
“value”: {“min”: 11, “max”: “22”},
“not”: false
}
]
column – название колонки в базе
condition – тип условия. Одно из equal, like, between, greater_than, lower_than
not – префик not
в результате должен получиться объект запроса, с условием:
WHERE ( column LIKE ‘%a%’ OR column LIKE %b%’ OR olumn LIKE ‘%c%’) AND ( number BETWEEN 11 AND 22 )
На вход в endpoint будут подаваться 2 массива из условий
надо посчитать количество строк, отфильтрованных по 1 массиву.
Надо посчитать количество строк, отфильтрованных по 2 массиву, но считать надо из данных отфильтированных первым массивом.
Как вариант можно сделать вложенными запросами. Сгенерить объекты запросов и получить код sql запроса https://www.yiiframework.com/wiki/857/show-raw-sql...
и собрать обычный запрос в виде текста.
3 endpoint
Надо генерить и отдавать эксель из отфильтрованных данных.
Если на вход подается 1 массив с условиями, выгружать данные по нему.
Если на вход подаются 2 массива. Выгружать данные отфильтрованные сначала 1, потом 2 условиями
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.