8 8 ,ggg, ,ggg,_,ggg, ,gggg,
ad88888ba dP""Y8dP""Y88P""Y8b ,88"""Y8b, ,dPYb,
d8" 8 8 "8b Yb, `88' `88' `88 d8" `Y8 IP'`Yb
Y8, 8 8 `" 88 88 88 d8' 8b d8 I8 8I
`Y8a8a8a, 88 88 88 ,8I "Y88P' I8 8'
`"8"8"8b, 88 88 88 ,ggg, ,gggg,gg ,gggg,gg I8' ,gggg,gg I8 dP ,gggg,
8 8 `8b 88 88 88 i8" "8i dP" "Y8I dP" "Y8I d8 dP" "Y8I I8dP dP" "Yb
Y8a 8 8 a8P 88 88 88 I8, ,8I i8' ,8I i8' ,8I Y8, i8' ,8I I8P i8'
"Y88888P" 88 88 Y8, `YbadP' ,d8, ,d8I ,d8, ,d8b,`Yba,,_____, ,d8, ,d8b,,d8b,_ ,d8,_ _
8 8 88 88 `Y8888P"Y888P"Y8888P"888P"Y8888P"`Y8 `"Y8888888 P"Y8888P"`Y88P'"Y88P""Y8888PP
,d8I'
,dP'8I
,8" 8I
I8 8I
`8, ,8I
`Y8P"
MegaCalc - серверная часть калькулятора выгоды для СберМегаМаркета, отвечает за аутентификацию пользователей в TWA-приложении.
- Method: GET
- URL:
http://localhost:8080/secure/code?code=t3s1c0d3
- Description: Создаёт инвайт код в базе данных, по умолчанию код помечается как активный.
- Response:
{ "code_id": "ed2b3249-3424-47bb-9639-ac5e6dcb3be7", "code": "t3s1c0d3", "active": true }
- Method: GET
- URL:
http://localhost:8080/user?tgid=12345678&code=t3s1c0d3
- Description: СОздаёт пользователя и добалвяет к нему активный инвайт-код. Поле
active
у инвайт-кода помечается какfalse
в БД. - Response:
{ "user_id": "b316a917-0652-4f3c-aa7f-375086ead3dd", "telegram_id": "12345678", "invite_code_id": "ed2b3249-3424-47bb-9639-ac5e6dcb3be7" }
- Method: DELETE
- URL:
http://localhost:8080/secure/user
- Body:
{ "telegram_id": "12345678" }
- Description: Удаляет пользователя по
TelegramID
- Response:
"User deleted! Telegram ID: 12345678"
- Method: POST
- URL:
http://localhost:8080/secure/list-all-codes
- Body:
{ "page": 0 }
- Description: Выводит список всех инвайт-кодов по 20 штук на странице.
- Response:
[ { "code_id": "b236f25d-634b-4f8d-993f-f86939fb52f8", "code": "test1", "active": true }, { "code_id": "f22b1c02-7273-4bcc-a02a-af9c8a5b3315", "code": "test2", "active": true } ]
Список активных промокодов
- Method: GET
- URL:
http://localhost:8080/promo/code?state={Bool}
- Description: Выводит список активных промокодов.
- Response:
[ { "promo_id": "e548b625-0387-4995-b065-62280d742456", "promo_name": "ДАША", "promo": "0/0;1000/6000;5000/30000;10000/55000;20000/110000::ДАША", "active": true }, { "promo_id": "2ddd69d6-1260-46b6-8955-128f060bade8", "promo_name": "ЖАЛКОЧТОЛИ", "promo": "0/0;2000/18000;5000/45000;9000/82000;12000/110000::ЖАЛКОЧТОЛИ", "active": true }, { "promo_id": "4804c5a3-d38a-438e-b5cd-b17bbc2dcb58", "promo_name": "ЛАДНОКУПЛЮ", "promo": "0/0;1000/11000;2000/18000;3000/27000;4000/40000::ЛАДНОКУПЛЮ", "active": true } ]
Создание нового промокода
- Method: POST
- URL:
http://localhost:8080/promo/code
- Body:
{ "promo_name": "ПРОМИК", "promo_string": "0/0;1000/2000;5000/20000;10000/35000;20000/85000::ПРОМИК", "state": true }
- Description: Создаёт новый промокод в базе.
- Response:
{ "promo_id": "b236da5d-634b-4t8d-993f-f8697gfb52f8", "promo_name": "ПРОМИК", "promo": "0/0;1000/2000;5000/20000;10000/35000;20000/85000::ПРОМИК", "active": true }
- Клонирование репозитория:
git clone https://github.com/malvere/Megacalc-backend
- Установка пакетов:
go mod download
- Сборка:
go build
- Запуск:
./megacalc-backend
BOT_TOKEN=0123456789:ABCD...
- Токен телеграм ботаCHAT_ID=-1000123456789
- ID Чата, участникам которого будет доступен калькулятор (бот должен иметь дотуп к списку участников)CONFIG_PATH=./configs/local.yaml
- Путь к файлу конфигурацииDB_URL="host=localhost dbname=megacalc sslmode=disable"
- Строка для подклбчения к БДORIGIN_ALLOWED=https://abuzometer.js
- Домен где развёрнута фронтовая часть калькулятораPROMO_TOKEN=promik
- Bearer-токен для доступа к промокодамSECRET_TOKEN=0123456789abcd
- Bearer-токен для доступа к инвайт-кодам
- Создайте промкода через эндпоинт
/secure/code
. - Добавить пользователя черещ
/user
с Telegram ID и инвайт-кодом. - Список всех инвайт кодов можно получить через
/secure/list-all-codes
.