Skip to content

Эндпоинт который возвращает промокоды, созданные текущим пользователем#47

Merged
danuk merged 3 commits intodanuk:masterfrom
orkhv:feature-promo-created-by-user
Mar 4, 2026
Merged

Conversation

@orkhv
Copy link
Contributor

@orkhv orkhv commented Mar 3, 2026

Сейчас в клиентском API нет способа получить список промокодов, которые пользователь сам создал. Так как на промокоды можно подвязать различные функции получение такого списка в клиентом пригодилось бы.

Впервые делаю PR. Может что-то упустил. Использовал ИИ для изменения. Тесты провел - вроде все ок.

Summary

  • Добавлен эндпоинт /shm/v1/promo/created, который возвращает промокоды, созданные текущим пользователем.

Changes

1. Новый метод Promo::api_created

Файл app/lib/Core/Promo.pm

2. Новый эндпоинт /shm/v1/promo/created + Swagger

Файл app/public_html/shm/v1.cgi:

Testing

  • Интеграционный тест промокодов:

    docker compose exec core prove -v /app/t/integration/promo/promo.t

    Результат:

    • Check promo — OK
    • Check reusable promo — OK
    • Result: PASS
  • Ручная проверка нового эндпоинта:

    • создание test-пользователя;
    • генерация трёх промокодов на этого пользователя;
    • запрос /shm/v1/promo/created возвращает именно эти три промокода, с ожидаемыми полями и без данных других пользователей.

Пример ответа:

{
  "TZ": "Europe/Moscow",
  "data": [
    {
      "created": "2026-03-03 23:37:56",
      "expire": null,
      "promo_code": "CID2_M8EBAFXRN1",
      "reusable": 0,
      "status": 1,
      "template_id": "test_promo_for_cid2",
      "used": 0
    },
    {
      "created": "2026-03-03 23:37:56",
      "expire": null,
      "promo_code": "CID2_N3RARNNX6P",
      "reusable": 0,
      "status": 1,
      "template_id": "test_promo_for_cid2",
      "used": 0
    },
    {
      "created": "2026-03-03 23:37:56",
      "expire": null,
      "promo_code": "CID2_TKBT1KTTZX",
      "reusable": 0,
      "status": 1,
      "template_id": "test_promo_for_cid2",
      "used": 0
    }
  ],
  "items": 3,
  "limit": 25,
  "offset": 0,
  "status": 200,
  "version": "0.0.1-"
}

return @data;
}

sub api_created {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Уже есть метод: api_get, который выводит список использованных промокодов для пользователя.

Предлагаю:

  1. Переделать метод api_get, убрать used_by в запросе, чтобы он показывал ВСЕ промики пользователя
  2. Добавить в ответ больше полей (как предложено у тебя), в том числе, добавить поле used_by
  3. Не показывать в ответе поле template_id (для безопасности). Пользователь этим не управляет, а значит ему не нужно знать эту инфу.

Так как у нас нет возможности создавать промики самим пользователем через API, то не вижу смысла делать отдельный метод для их отображения. Используй стандартный, существующий метод: v1/pormo, который должен показывать все промики пользователя, использованные и нет.

…to include used_date and used_by fields for user-created promo codes.
@orkhv
Copy link
Contributor Author

orkhv commented Mar 4, 2026

Поправил. Посмотри все ли корректно для reusable кодов.

@danuk danuk merged commit 5a5debe into danuk:master Mar 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants