SeMant
NoDeny
Старожил
Карма: 4
Offline
Сообщений: 266
|
|
« : 20 Апреля 2014, 07:30:27 » |
|
В связи с проблемами в стране верхний провайдер отказывался 6 дней ремонтиновать линию. Теперь необходимо всем сделать перерасчёт за эти дни. Директор хочет, чтобы услуга у всех, кому доступ разрешён, была продлена. Режим услуги Стандарт. Возможно ли на ходу продливать жизнь назначенной услуге или сделать перерасчёт группе клиентов ( если ничего не путаю, то об этом Я читал, но найти ничего не смог). Как мне наиболее безболезненно выйти из этой ситуации ?
|
|
|
Записан
|
|
|
|
Dolphin
|
|
« Ответ #1 : 20 Апреля 2014, 16:26:12 » |
|
На этапе переезда на N+, был вопрос, об изменении времени начала и конца услуги. Правил руками. В представлениях базы, есть таблица: `v_services`. В ней поля `tm_start` и `tm_end` соответствуют началу и концу даты услуги. В твоем случае, нужно выбрать по условию и обновить `tm_end` с новым значением +6 дней.
Не знаю, на сколько это будет корректным, но у меня прокатило.
|
|
|
Записан
|
|
|
|
Sis
|
|
« Ответ #2 : 29 Января 2016, 23:02:57 » |
|
а это разве поменяет что то у действующих клиентов?
|
|
|
Записан
|
|
|
|
Tooreagen
|
|
« Ответ #3 : 31 Января 2016, 11:39:03 » |
|
На этапе переезда на N+, был вопрос, об изменении времени начала и конца услуги. Правил руками. В представлениях базы, есть таблица: `v_services`. В ней поля `tm_start` и `tm_end` соответствуют началу и концу даты услуги. В твоем случае, нужно выбрать по условию и обновить `tm_end` с новым значением +6 дней.
Не знаю, на сколько это будет корректным, но у меня прокатило.
В N+ это таблица users_services, поле tm_end в секундах.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #4 : 31 Января 2016, 15:52:37 » |
|
Выложу детальную инфу:
users_services - таблица с уже подключенными услугами к конкретным абонам. Ее изменение влияет на текущие услуги. Т.е. можно менять время окончания и услуга будет продлена. Стоимость этой, уже подключенной услуги, при этом не меняется. Если надо изменить - это надо править платеж-списание.
services - таблица с параметрами услуг. Это не подключенные услуги, а именно их описание и параметры. Изменения в этой таблице никак не влияет на текущие подключенные услуги.
v_services - это виртуальная таблица, которая просто соединяет users_services и services чтобы можно было по подключенной услуге получить больше инфы. Можно менять эту таблицу и изменения будут наноситься на таблицы users_services и services. Но я бы не рекомендовал менять именно ее, лучше users_services.
поле tm_end - это время окончания услуги в так называемом виде timestamp - количество секунд, прошедшее с 1970 года. Чтобы добавить сутки, можно сделать так: tm_end = tm_end + 24*60*60, что в идеале не совсем корректно из-за всяких переходов на летнее или зимнее время, но то такие нюансы, что вам париться не надо. Если хочется сделать идеально красиво - юзайте функцию interval в mysql
|
|
|
Записан
|
|
|
|
Sis
|
|
« Ответ #5 : 16 Июля 2016, 04:04:03 » |
|
Я не очень силён в мускуле, мне нужно добавить 2 дня ко всем текущим услугам. Значит это будет выглядеть примерно так UPDATE users_services SET tm_end = tm_end + 48*60*60 верно, подскажите?
|
|
|
Записан
|
|
|
|
Tooreagen
|
|
« Ответ #6 : 22 Июля 2016, 11:50:26 » |
|
Я не очень силён в мускуле, мне нужно добавить 2 дня ко всем текущим услугам. Значит это будет выглядеть примерно так UPDATE users_services SET tm_end = tm_end + 48*60*60 верно, подскажите?
Аналогично. Нужно нескольку десятков абонов продлить услугу. Подскажите правильную команду, а то уже запарился в таблице копошится.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #7 : 22 Июля 2016, 13:18:51 » |
|
Я не очень силён в мускуле, мне нужно добавить 2 дня ко всем текущим услугам. Значит это будет выглядеть примерно так UPDATE users_services SET tm_end = tm_end + 48*60*60 верно, подскажите?
верно. Но бекап все равно лучше сделать
|
|
|
Записан
|
|
|
|
Tooreagen
|
|
« Ответ #8 : 22 Июля 2016, 14:57:48 » |
|
Я не очень силён в мускуле, мне нужно добавить 2 дня ко всем текущим услугам. Значит это будет выглядеть примерно так UPDATE users_services SET tm_end = tm_end + 48*60*60 верно, подскажите?
верно. Но бекап все равно лучше сделать А как указать конкретные uid, если несколько абонов
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #9 : 22 Июля 2016, 15:45:46 » |
|
UPDATE users_services SET tm_end = tm_end + 48*60*60 WHERE uid IN (11, 20, 56);
|
|
|
Записан
|
|
|
|
Tooreagen
|
|
« Ответ #10 : 22 Июля 2016, 15:50:23 » |
|
UPDATE users_services SET tm_end = tm_end + 48*60*60 WHERE uid IN (11, 20, 56); Отлично, все работает! Спасибо большое!
|
|
|
Записан
|
|
|
|
|