MAX: Рабочие баннеры

This commit is contained in:
Alexey Polyakov
2026-04-24 15:51:01 +03:00
parent 4abe6de885
commit 9fcba1af86
2 changed files with 51 additions and 11 deletions

View File

@@ -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)

View File

@@ -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`)
);