Наша цель помочь братьям нашим меньшим выживать в этом жестоком мире. Но без вас нам не справиться! Мы создали систему, в которой вы можете взаимодействовать с бездомными собаками прямо онлайн. От вас же нужно лишь желание помочь.
- Вы сможете отслеживать местоположения собак в вашем городе.
- Вы можете посмотреть характеристики конкретной собаки. Породу, размер и многое другое.
- Для организации заданий, которые пользователи могут выполнять и выдавать.
- Мониторить как долго находиться ошейник на одном месте.
- Мониторить приходит ли сигнал от ошейника. Сломался ли ошейник.
- Мониторить задания от пользователей на предмет запрещенного.
- При добавлении новой собаки в систему, нужно добавлять ошейник с собакой в базу данных.
После того как пользователь зарегиструется он может:
- Посмотреть на карте, где находяться собаки.
- Посмотреть характеристики конкретной собаки.
- Дать задание для других пользователей по определенной собаке.
- Может взять задание для выполнения.
Примерная схема запросов-ответов
- Ошейник посылает раз в 5 часов запрос с данными о местоположении. Местоположение и время последнего сигнала фиксируется в базе данных.
/dogs/update
- Запрос
{
"accessDogToken": "JusOh2nRK1kZpxzK",
"dog_id": 44,
"coordinates": "52.250323, 104.264442"
}
- Ответ
{
"success": "true",
}
- При регистрации нового пользователя посылается запрос на сервер. Проверяются данные и записываются в базу данных.
/user/register
- Запрос
{
"nickname":"Andrey",
"password":"strongpassword1337",
"special_code": "Danny"
}
- Ответ
{
"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": [
{
"task_id": 34,
"asked_user": "Glebus",
"goal": "Принести собаку в шаурмечную"
},
{
"task_id": 3,
"asked_user": "Danny",
"goal": "Вытащить собаку из шаурмечной"
}
]
}
- При составлении задания серверу посылается запрос. Задание записывается в базу данных.
/dogs/task/create
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"dog_id": 3,
"goal": "Покормить собаку"
}
- Ответ
{
"success": "true",
"task_id": 12
}
- Если пользователь решает взять задание, то отправляется запрос. В базе данных фиксируется исполнитель задания.
/dogs/task/take
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"task_id": 12
}
- Ответ
{
"success": "true"
}
- Если пользователь хочет приложить отклик к взятому заданию, отправляется запрос и в базе данных всё это фиксируется.
/dogs/task/response/give
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"task_id": 12,
"comments": "Всё сделал как надо",
"photo": "dog.img",
}
- Ответ
{
"success": "true"
}
- Если создатель задания захочет посмотреть отклики.
/dogs/task/response/list
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"task_id": 12
}
- Ответ
{
"success": "true"
"responses": [
{
"response_user": "Danny",
"comment": "Всё сделал как надо",
"photo": "dog.img"
},
{
"response_user": "Danny",
"comment": "Отвез в шаурменко",
"photo": "dog2.img"
}]
}
- Подтверждение, что задание выполнено или отменить задание.
/dogs/task/confirm
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"task_id": 12,
"done": "true"
}
- Ответ
{
"success": "true"
}
- При регистрации новой собаки на сервер посылается запрос с данными о собаке. Соответственно эти данные фиксируется в базе данных.
/dogs/register
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"characteristic": "Рыжий корги, рост 25 см, вес 10кг, дружелюбный и обаятельный",
"place": "Irkutsk",
}
- Ответ
{
"success": "true",
"dog_id": 44,
"accessDogToken": "JusOh2nRK1kZpxzK"
}
- Посылается запрос, чтобы получить дату последнего сигнала и координаты.
/dogs/info
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"dog_id": 12,
}
- Ответ
{
"lastsend": "2024.11.04T11:44:12",
"coordinates": "52.250323, 104.264442"
}
- Админ может заблокировать пользователя, который нарушил правила, либо его разбанить.
/user/changestatus
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"changed_user_login": 12,
"delete": true
}
- Ответ
{
"success": "true"
}
- Админ может заблокировать/разблокировать собаку.
/dogs/changestatus
- Запрос
{
"accessToken": "JusOh2nRK1kZpxzK",
"dog_id": 12,
"delete": true
}
- Ответ
{
"success": "true"
}
users (
id INT PRIMARY KEY,
login VARCHAR(255),
password VARCHAR(255)(хэшированный),
accessToken VARCHAR(255),
is_admin BOOLEAN,
is_deleted BOOLEAN
)
dogs (
id PRIMARY KEY,
characteristic VARCHAR(255),
coords VARCHAR(255),
last_send DATETIME,
is_deleted BOOLEAN,
place VARCHAR(255),
accessToken VARCHAR(255)
)
tasks (
id INT PRIMARY KEY,
upload_user_id INT,
dog_id INT,
goal VARCHAR(255),
done BOOLEAN
)
responses (
id INT PRIMARY KEY,
do_user_id INT,
task_id INT,
comment VARCHAR(255),
photo VARCHAR(255)
)