Разрешить подключать услугу только один раз: відмінності між версіями

Матеріал з NoDeny
Перейти до навігації Перейти до пошуку
(Новая страница: «Задача: имеется акционная услуга «интернет за 50% стоимости» или, например, «Один месяц бе...»)
 
Немає опису редагування
Рядок 1: Рядок 1:
Задача: имеется акционная услуга «интернет за 50% стоимости» или, например, «Один месяц бесплатно». Необходимо разрешить абоненту подключить даннную услугу только один раз. Даже если после нее будет подключена иная или будет несколько смен на иные, больше никогда не будет разрешено подключить данную услугу.
= Задача =
Имеется акционная услуга «интернет за 50% стоимости» или, например, «Один месяц бесплатно». Необходимо разрешить абоненту подключить даннную услугу только один раз. Даже если после нее будет подключена иная или будет несколько смен на иные, больше никогда не будет разрешено подключить данную услугу.


Первое, что мы должны сделать, это в настройках акционной услуги поставить галку «Запрет продления».
Первое, что мы должны сделать, это в настройках акционной услуги поставить галку «Запрет продления».
Рядок 22: Рядок 23:


= Как это работает =
= Как это работает =
1) $service_condition_enabled = 1 разрешает применять условия в услугах. Эта возможность включается отдельно в sat.cfg поскольку этим самым разрешается выполнение '''любых sql''', которые будут установлены в услугах. Поэтому будьте внимательны и давайте учетку суперадмина исключительно доверенным людям.
2) При подключении услуги, создается платеж с категорий 100 (списание за услуги), в комментариях которого установлен комментарий из услуги
3) При подключении услуги, NoDeny к основному sql добавит условие NOT EXISTS (не существует) платежа о списание с комментарием как у текущей услуги

Версія за 18:19, 11 січня 2021

Задача

Имеется акционная услуга «интернет за 50% стоимости» или, например, «Один месяц бесплатно». Необходимо разрешить абоненту подключить даннную услугу только один раз. Даже если после нее будет подключена иная или будет несколько смен на иные, больше никогда не будет разрешено подключить данную услугу.

Первое, что мы должны сделать, это в настройках акционной услуги поставить галку «Запрет продления».

Далее в зависимости от типа услуги у нее может быть или не быть параметр «теги»

Есть параметр «теги»

  • в параметре «теги» вписываем: only_once
  • в параметре «условия»:
NOT EXISTS (SELECT 1 FROM pays WHERE mid=u.id AND category=100 AND tags LIKE='%,only_once,%')
  • в /usr/local/nodeny/sat.cfg установить (заменить):
$service_condition_enabled = 1;
  • перезапустить ядро NoDeny или только модуль ядра services, если возможно

Нет параметра «теги»

  • в параметре «условия»:
NOT EXISTS (SELECT 1 FROM pays WHERE mid=u.id AND category=100 AND comment='Один месяц бесплатно')
  • Здесь то, что написано в одинарныйх кавычках должно один в один соответствовать комментарию в услуги. Если хотя бы один символ не будет соответсвовать, например, в конце комментария будет перевод строки, результат не будет положительным
  • в /usr/local/nodeny/sat.cfg установить (заменить):
$service_condition_enabled = 1;
  • перезапустить ядро NoDeny или только модуль ядра services, если возможно

Как это работает

1) $service_condition_enabled = 1 разрешает применять условия в услугах. Эта возможность включается отдельно в sat.cfg поскольку этим самым разрешается выполнение любых sql, которые будут установлены в услугах. Поэтому будьте внимательны и давайте учетку суперадмина исключительно доверенным людям. 2) При подключении услуги, создается платеж с категорий 100 (списание за услуги), в комментариях которого установлен комментарий из услуги 3) При подключении услуги, NoDeny к основному sql добавит условие NOT EXISTS (не существует) платежа о списание с комментарием как у текущей услуги