mirror of
https://github.com/openmax-server/server.git
synced 2026-05-22 19:41:41 +03:00
MAX: Рабочие баннеры
This commit is contained in:
@@ -32,15 +32,41 @@ class AuthProcessors(BaseProcessor):
|
|||||||
|
|
||||||
async def _send_banners(self, writer):
|
async def _send_banners(self, writer):
|
||||||
"""Функция отправки баннеров клиенту"""
|
"""Функция отправки баннеров клиенту"""
|
||||||
|
# Итоговый список баннеров для отдачи клиенту
|
||||||
|
banners = []
|
||||||
|
|
||||||
|
async with self.db_pool.acquire() as conn:
|
||||||
|
async with conn.cursor() as cursor:
|
||||||
|
# Собираем все баннеры, которые есть в бд
|
||||||
|
await cursor.execute(
|
||||||
|
"SELECT * FROM banners WHERE enabled = TRUE"
|
||||||
|
)
|
||||||
|
rows = await cursor.fetchall()
|
||||||
|
|
||||||
|
# Добавляем каждый баннер в лист
|
||||||
|
for row in rows:
|
||||||
|
banner = {
|
||||||
|
"description": row.get("description"),
|
||||||
|
"title": row.get("title"),
|
||||||
|
"priority": row.get("priority"),
|
||||||
|
"type": row.get("type"),
|
||||||
|
"hideCloseButton": bool(row.get("hide_close_button")),
|
||||||
|
"rerun": row.get("rerun"),
|
||||||
|
"url": row.get("url"),
|
||||||
|
"animojiId": row.get("animoji_id"),
|
||||||
|
"repeat": row.get("repeat"),
|
||||||
|
"hideOnClick": bool(row.get("hide_on_click")),
|
||||||
|
"id": row.get("id"),
|
||||||
|
"isTitleAnimated": bool(row.get("is_title_animated")),
|
||||||
|
}
|
||||||
|
|
||||||
|
banners.append(banner)
|
||||||
|
|
||||||
|
# Собираем данные пакета
|
||||||
payload = {
|
payload = {
|
||||||
"showTime": 86400000, # Сколько будет показываться баннер, тут сутки в миллисекундах
|
"showTime": 86400000,
|
||||||
# можно в будущем переделать, и сделать выбор в конфигурации
|
|
||||||
# думаю, было бы прикольно
|
|
||||||
"updateTime": int(time.time() * 1000),
|
"updateTime": int(time.time() * 1000),
|
||||||
"banners": [
|
"banners": banners
|
||||||
# TODO: разобраться как работают баннеры и их реализовать
|
|
||||||
# думаю админам инстансов было бы прикольно, и нам
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Собираем пакет
|
# Собираем пакет
|
||||||
@@ -558,10 +584,6 @@ class AuthProcessors(BaseProcessor):
|
|||||||
cmd=self.proto.CMD_OK, seq=seq, opcode=self.opcodes.LOGIN, payload=payload
|
cmd=self.proto.CMD_OK, seq=seq, opcode=self.opcodes.LOGIN, payload=payload
|
||||||
)
|
)
|
||||||
|
|
||||||
# print(
|
|
||||||
# json.dumps(payload, indent=4)
|
|
||||||
# )
|
|
||||||
|
|
||||||
# Отправляем
|
# Отправляем
|
||||||
await self._send(writer, packet)
|
await self._send(writer, packet)
|
||||||
|
|
||||||
|
|||||||
18
tables.sql
18
tables.sql
@@ -78,3 +78,21 @@ CREATE TABLE `contacts` (
|
|||||||
`is_blocked` BOOLEAN NOT NULL DEFAULT FALSE,
|
`is_blocked` BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
PRIMARY KEY (`owner_id`, `contact_id`)
|
PRIMARY KEY (`owner_id`, `contact_id`)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE TABLE `banners` (
|
||||||
|
`id` VARCHAR(64) NOT NULL,
|
||||||
|
`title` VARCHAR(256) NOT NULL,
|
||||||
|
`description` VARCHAR(512) NOT NULL,
|
||||||
|
`url` VARCHAR(512) NOT NULL,
|
||||||
|
`type` INT NOT NULL DEFAULT 1,
|
||||||
|
`priority` INT NOT NULL DEFAULT 0,
|
||||||
|
`animoji_id` INT NOT NULL DEFAULT 0,
|
||||||
|
`repeat` INT NOT NULL DEFAULT 1,
|
||||||
|
`rerun` BIGINT NOT NULL DEFAULT 0,
|
||||||
|
`hide_close_button` BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
|
`hide_on_click` BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
|
`is_title_animated` BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
|
`enabled` BOOLEAN NOT NULL DEFAULT TRUE,
|
||||||
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user