Наша цель помочь братьям нашим меньшим выживать в этом жестоком мире. Но без вас нам не справиться! Мы создали систему, в которой вы можете взаимодействовать с бездомными собаками прямо онлайн. От вас же нужно лишь желание помочь.
- Для отслеживания местоположения собаки.
- По их id будут записаны характеристики собаки. Порода, размер и т.д.
- По их id будут записаны задания пользователей.
- Мониторить как долго находиться ошейник на одном месте. Либо собака как-то его потеряла, либо с ней что-то случилось.
- Мониторить приходит ли сигнал от ошейника. Сломался ли ошейник.
- Мониторить задания от пользователей. Мало ли там что то жестокое придумают.
- При добавлении новой собаки в эту систему, нужно добавлять ошейник с собакой в базу данных.
После того как пользователь зарегиструется он может:
- Посмотреть на карте, где находяться собаки.
- Посмотреть характеристики собаки.
- Дать задание для других пользователей по определенной собаке.
- Может взять задание для выполнения.
Примерная схема запросов-ответов
- При регистрации новой собаки на сервер посылается запрос с данными о собаке. Соответственно эти данные фиксируется в базе данных.
/dogs/register
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"characteristic": "Рыжий корги, рост 25 см, вес 10кг, дружелюбный и обаятельный"
}
- Ответ
{
"success": "true",
"dog_id": 44
}
- Ошейник посылает раз в какое то время запрос с данными о местоположении. Местоположение и время последнего сигнала фиксируется в базе данных.
/dogs/update
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"time": "2024.11.04T11:44:12",
"dog_id": 44,
"coordinates": "52.250323, 104.264442"
}
- Ответ
{
"success": "true",
}
- При регистрации нового пользователя посылается запрос на сервер. Проверяются данные и записываются в базу данных.
/user/register
- Запрос
{
"nickname":"Andrey",
"password":"strongpassword1337"
}
- Ответ
{
"success": "true",
"accessToken": "JusOh2nRK1kZpxzK"
}
- При авторизации пользователя посылается запрос на сервер. Проверяются данные и отправляется разрешение на вход.
/user/login
- Запрос
{
"nickname":"Andrey",
"password":"strongpassword1337"
}
- Ответ
{
"success": "true",
"accessToken": "JusOh2nRK1kZpxzK"
}
- При прогрузке страницы с картой собак серверу посылается запрос для получения координат ошейников.
/dogs/coordinates
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"place": "Irkutsk"
}
- Ответ
{
"success": "true",
"dogs": [
{
"dog_id": 3,
"coordinates": "52.250323, 104.264442"
},
{
"dog_id": 12,
"coordinates": "52.250884, 104.263155"
}]
}
- При выборе определенной собаки серверу посылается запрос для получения характеристик собаки.
/dogs/characteristic
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"dog_id": 3
}
- Ответ
{
"success": "true",
"characteristic": "Рыжий корги, рост 25 см, вес 10кг, дружелюбный и обаятельный"
}
- При выборе текущих заданий у собаки.
/dogs/task/list
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"dog_id": 3
}
- Ответ
{
"success": "true",
"tasks": [
{
"goal_id": 34,
"asked_user": "Glebus",
"goal": "Принести собаку в шаурмечную"
},
{
"goal_id": 3,
"asked_user": "Danny",
"goal": "Вытащить собаку из шаурмечной"
}
]
}
- При составлении задания серверу посылается запрос. Задание записывается в базу данных.
/dogs/task/create
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"dog_id": 3,
"goal": "Покормить собаку"
}
- Ответ
{
"success": "true",
"goal_id": 12
}
- Если пользователь решает взять задание, то отправляется запрос. В базе данных фиксируется исполнитель задания.
/dogs/task/take
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"goal_id": 12
}
- Ответ
{
"success": "true"
}
- Если пользователь хочет приложить отклик к взятому заданию, отправляется запрос и в базе данных всё это фиксируется.
/dogs/task/response/give
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"goal_id": 12,
"comments": "Всё сделал как надо",
"photo": "dog.img",
"done": "true"
}
- Ответ
{
"success": "true"
}
- Если создатель задания захочет посмотреть отклики.
/dogs/task/response/list
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"goal_id": 12
}
- Ответ
{
"success": "true"
"responses": [
{
"response_user": "Danny",
"response_id": 3,
"comment": "Всё сделал как надо",
"photo": "dog.img"
},
{
"response_user": "Danny",
"response_id": 21,
"comment": "Отвез в шаурменко",
"photo": "dog2.img"
}]
}
- Подтверждение, что задание выполнено или отменить задание.
/dogs/task/response/confirm
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"goal_id": 12,
"done": "true"
}
- Ответ
{
"success": "true"
}
- Посылается запрос, чтобы получить дату последнего сигнала и координаты.
/dogs/info
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"dog_id": 12,
}
- Ответ
{
"lastsend": "2024.11.04T11:44:12",
"coordinates": "52.250323, 104.264442"
}
users(user_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, login VARCHAR(255), password VARCHAR(255)(хэшированный), is_deleted BOOLEAN)
dogs(dog_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, characteristic VARCHAR(255), coords VARCHAR(255), last_send DATETIME, is_deleted BOOLEAN)
dogs(dog_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, characteristic VARCHAR(255), coords VARCHAR(255), last_send DATETIME, is_deleted BOOLEAN)