Шаблоны
Шаблоны позволяют генерировать как однострочные команды, так и целые блоки текста.
Эти механизмы являются основой построения взаимодействий SHM.
Шаблоны рендерятся локально (сервером SHM), результат рендера может быть отправлен/выполнен с помощью Транспорта.
Шаблоны служат:
Введение
Синтаксис: {{ ОБЪЕКТ.ДАННЫЕ }}
Например, с помощью объекта user можно получить доступ к данным пользователя:
user.id - идентификатор пользователя
user.login - логин пользователя
user.balance - баланс пользователя
Используя эти функции мы можем написать такой шаблон:
Уважаемый клиент.
Ваш логин: {{ user.login }}
Ваш баланс: {{ user.balance }} руб.
В шаблонах поддерживаются условия и циклы, примеры использования вы можете увидеть здесь: Прогноз оплаты
Больше информации о шаблонизаторе Вы можете узнать здесь
Объекты и функции
Ниже приведен список методов для работы с SHM через шаблоны.
Достуность тех или иных методов зависит от контекста применения шаблона.
Подробнее о доступности методов описано здесь.
Пользователь
| Метод |
Описание |
| user.id() |
Идентификатор пользователя (получить/установить) |
| user.switch( USER_ID ) |
Переключение пользователя на указанного (смена контекста) |
| user.login |
Логин пользователя |
| user.balance |
Баланс пользователя |
| user.credit |
Кредитный лимит пользователя |
| user.dogovor |
Договор пользователя |
| user.full_name |
ФИО пользователя |
| user.settings |
Получить settings пользователя |
| user.get_bonus |
Получить кол-во бонусов |
| user.income_percent |
Получить процент партнерских бонусов |
| user.add_bonus( КОЛ-ВО, КОММЕНТ ) |
Начисление бонусов |
| user.set_settings({ 'foo' => 1 }) |
Сохранить в settings пользователя произвольные данные |
| user.services |
Ссылка на услуги пользователя |
| user.gen_session.id |
Специальная функция для генерации идентификатора сессии |
| user.set_new_passwd |
Смена пароля пользователя. Вернет новый пароль |
| user.pays. |
Ссылка на платежи пользователя |
| user.delete |
Удаление пользователя (с нулевым балансом, без услуг) |
| user.items() |
Получить всех пользователей |
Услуги пользователя
| Метод |
Описание |
| us.id() |
Идентификатор пользовательской услуги (получить/установить) |
| us.name |
Имя пользовательской услуги |
| us.created |
Дата создания пользовательской услуги |
| us.expire |
Дата истечения пользовательской услуги |
| us.status |
Статус пользовательской услуги |
| us.settings |
Получить параметры пользовательской услуги |
| us.set_settings({ 'foo' => 1 }) |
Сохранить в settings услуги пользователя произвольные данные |
| us.set(FIELD, VALUE) |
Установка поля FIELD в значение VALUE. Пример: us.set('next', 123) |
| us.child_by_category(CATEGORY). |
Ссылка на дочернюю услугу определенной категории |
| us.finish( 'money_back', 1) |
Завершение услуги с возвратом средств (биллинг продлит или заблокирует услугу в зависимости от наличия средств) |
| us.block |
Принудительная блокировка услуги пользователя |
| us.activate |
Активация услуги пользователя после блокировки |
| us.delete |
Удаление заблокированной услуги пользователя |
| us.gen_store_pass |
Специальная функция для генерации и сохранения пароля в settings |
| us.parent. |
Ссылка на родительскую услугу пользователя |
| us.top_parent. |
Ссылка на самую верхнюю услугу пользователя |
| us.service. |
Ссылка на каталог услуг |
| us.withdraw. |
Ссылка на списание услуги |
| us.items() |
Получение списка услуг пользователя |
Каталог услуг
| Метод |
Описание |
| service.id() |
Идентификатор пользовательской услуги (получить/установить) |
| service.name |
Название услуги |
| service.cost |
Базовая стоимость услуги |
| service.period |
Период услуги |
| service.category |
Категория услуги |
| service.server |
Ссылка на сервер услуги |
| service.id( N ).name |
Получение имени услуги c идентификатором N |
| service.id( N ). |
Получение произвольного поля услуги c идентификатором N |
| service.api_price_list() |
Возвращает массив услуг из каталога |
| service.settings |
Получить settings услуги |
| service.set_settings({ 'foo' => 1 }) |
Сохранить в settings услуги произвольные данные |
| service.withdraw. |
Ссылка на объект списания |
| service.reg( service_id = N, check_allow_to_order = 1 ) |
Регистрирует услугу клиенту с идентификатором N |
| service.items() |
Получение списка услуг из каталога |
Платежи
| Метод |
Описание |
| pay.id() |
Получить/установить id платежа |
| pay.date |
Дата и время платежа |
| pay.money |
Cумма платежа |
| pay.pay_system_id |
Имя платежной системы |
| pay.comment |
Данные платежа |
| pay.last |
Получить ссылку на последний платеж |
| pay.forecast |
Возвращает JSON прогноза оплат услуг |
| pay.paysystems |
Получить список платежных систем |
| pay.items() |
Получение списка платежей |
Бонусы
| Метод |
Описание |
| bonus.items() |
Получение списка бонусов |
Списания
| Метод |
Описание |
| wd.id() |
Получить/установить id списания |
| wd.create_date |
Дата создания списания |
| wd.withdraw_date |
Дата списания списания |
| wd.cost |
Сумма |
| wd.discount |
Скидка |
| wd.bonus |
Кол-во бонусов |
| wd.months |
Период услуги |
| wd.total |
Итоговая стоимость |
| wd.service_id |
идентификатор каталога услуг |
| wd.user_service_id |
идентификатор услуги пользователя |
| wd.qnt |
Кол-во единиц товара |
| wd.items() |
Получение списка списаний |
Сервера
| Метод |
Описание |
| server.id() |
Получить/установить id сервера |
| server.name |
Имя сервера |
| server.host |
Host сервера |
| server.transport |
Транспорт сервера |
| server.settings |
Получение settings текущего сервера |
| server.set_settings({ 'foo' => 1 }) |
Сохранить в settings сервера произвольные данные |
| server.group. |
Ссылка на группу сервера |
| server.servers_by_group_id( N ) |
Получение списка серверов из группы N |
| server.items() |
Получение списка серверов |
Группы серверов
| Метод |
Описание |
| sg.id() |
Получить/установить id группы серверов |
| sg.name |
Имя группы серверов |
| sg.type |
Способ выбора серверов (random,by-one,evenly) |
| sg.transport |
Транспорт группы (local,ssh,http…) |
| sg.settings |
settings группы серверов |
| sg.set_settings({ 'foo' => 1 }) |
Сохранить в settings группы серверов произвольные данные |
| sg.items() |
Получение списка групп серверов |
Шаблоны
| Метод |
Описание |
| tpl.id |
Получить/установить id шаблона |
| tpl.id( NAME ).parse( 'usi', 123 ) |
Выполнить шаблон с именем NAME для пользовательской услуги с идентификаторм 123 |
| tpl.data |
Данные шаблона |
| tpl.settings |
Получить settings шаблона |
Хранилище
| Метод |
Описание |
| storage.save( NAME, DATA ) |
Сохранить данные DATA в хранилище с ключом NAME |
| storage.load( NAME ) |
Получить данные из хранилища с ключом NAME |
| storage.del( NAME ) |
Удалить данные из хранилища с ключом NAME |
| storage.items() |
Получение списка данных |
Конфигурация
| Метод |
Описание |
| config.NAME |
Получить данные NAME из конфигурации |
Telegram
| Метод |
Описание |
| telegram.bot(TEMPLATE, CMD, [ARGS]) |
Выполнить CMD с аргументами ARGS из шаблона TEMPLATE |
Задачи
| Метод |
Описание |
| task |
Работа с задачами |
Вспомогательные ф-ии
| Метод |
Описание |
| params |
Аргументы вызова шаблона (http query string) |
| event_name |
Переменная содержит название текущего события |
| toJson() |
Функция преобразования объекта в JSON |
| toQueryString() |
Функция преобразования объектов в Query string |
| ref() |
Функция для преобразования данных в массив (устарела) |
| list_for_api() |
Функция для получения списков данных из объекта (устарела) |
| filter() |
Метод для точечной выборки данных (для items) |
| misc |
Вспомогательные ф-ии |
Примеры