Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
abills:docs:manual:trix [2013/01/03 15:31]
asmodeus [Автоматическое заполнение полей Номер контракта и Дата контракта]
abills:docs:manual:trix [2017/07/20 17:33] (текущий)
anton [Изменение секретного слова шифрования паролей]
Строка 209: Строка 209:
  
  
-====Изминение секретного слова шифрования паролей====+====Изменение секретного слова шифрования паролей====
  
 Секретный ключ сохраняется в переменной **$conf{secretkey}** конфигурационного файла **config.pl** Секретный ключ сохраняется в переменной **$conf{secretkey}** конфигурационного файла **config.pl**
Строка 225: Строка 225:
   UPDATE mail_boxes SET password=ENCODE(DECODE(password,​ '​OLD_SECRET_KEY'​),​ '​NEW_SECRET_KEY'​);​   UPDATE mail_boxes SET password=ENCODE(DECODE(password,​ '​OLD_SECRET_KEY'​),​ '​NEW_SECRET_KEY'​);​
 Карточная платформа:​ Карточная платформа:​
-  UPDATE cards_users SET password=ENCODE(DECODE(password, '​OLD_SECRET_KEY'​),​ '​NEW_SECRET_KEY'​);​+  UPDATE cards_users SET pin=ENCODE(DECODE(pin, '​OLD_SECRET_KEY'​),​ '​NEW_SECRET_KEY'​);​
  
-====Изменении логина абонента====+Если используется модуль sql для FreeRadius, нужно также поменять секретный ключ в конце файла **/​usr/​local/​etc/​raddb/​sql.conf** 
 +====Изменение логина абонента====
  
   update users set id='​new_login'​ where id='​old_Login'​   update users set id='​new_login'​ where id='​old_Login'​
Строка 234: Строка 235:
 ====Автоматическое создание логинов и контрактов идентичным UID==== ====Автоматическое создание логинов и контрактов идентичным UID====
 в **config.pl** ​ в **config.pl** ​
-установеить переменную проверки логинов в +установить переменную проверки логинов в 
  
   $conf{USERNAMEREGEXP}="​.{0,​20}";​   $conf{USERNAMEREGEXP}="​.{0,​20}";​
  
 +** параметр `TABLE_SCHEMA`='​abills' ​ должен соответствовать названию базы в параметре ​ $conf{dbname} **
  
-MYSQL тригера+MYSQL тригер
  
 <​code>​ <​code>​
Строка 245: Строка 247:
 CREATE TRIGGER login_id BEFORE INSERT ON users CREATE TRIGGER login_id BEFORE INSERT ON users
 FOR EACH ROW BEGIN FOR EACH ROW BEGIN
 +  DECLARE user_id INT;
  
   IF NEW.id = ''​ THEN   IF NEW.id = ''​ THEN
-    ​SET NEW.id=(SELECT `AUTO_INCREMENT` FROM `information_schema`.TABLES WHERE `TABLE_SCHEMA`='​abills'​ AND `TABLE_NAME`='​users'​);​+    SELECT `AUTO_INCREMENT` ​INTO user_id  ​FROM `information_schema`.TABLES WHERE `TABLE_SCHEMA`='​abills'​ AND `TABLE_NAME`='​users'​
 +    SET NEW.id=CONCAT(if(@login_prefix IS NOT NULL, @login_prefix,​ ''​),​ user_id);
   END IF;   END IF;
  
Строка 273: Строка 277:
  
  
 +
 +====Удаление нуля как первого символа пин ​ на карте пополнения ====
 +
 +проверка перекодировки
 +<​code>​
 +SELECT id, 
 + ​serial, ​
 + ​number, ​
 + ​DECODE(pin,​ '​test12345678901234567890'​) as pin ,
 +
 +if (DECODE(pin,​ '​test12345678901234567890'​) REGEXP '​^0'​ =1, 
 +  SUBSTRING(DECODE(pin,​ '​test12345678901234567890'​) FROM 2), 
 +  DECODE(pin, '​test12345678901234567890'​)) AS result,
 +
 +ENCODE( if (DECODE(pin,​ '​test12345678901234567890'​) REGEXP '​^0'​ =1, 
 +  SUBSTRING(DECODE(pin,​ '​test12345678901234567890'​) FROM 2), 
 +  DECODE(pin, '​test12345678901234567890'​)),​
 + '​test12345678901234567890'​
 +) AS hex_result
 +
 +FROM cards_users ​
 +
 +WHERE serial = '​seria'​
 +
 +LIMIT 100;
 +
 +</​code>​
 +
 +если все нормально ​
 +
 +перекодировка ​
 +
 +<​code>​
 +UPDATE cards_users SET pin=ENCODE( if (DECODE(pin,​ '​test12345678901234567890'​) REGEXP '​^0'​ =1, 
 +  SUBSTRING(DECODE(pin,​ '​test12345678901234567890'​) FROM 2), 
 +  DECODE(pin, '​test12345678901234567890'​)),​
 + '​test12345678901234567890'​
 +)
 +WHERE serial = '​seria'​
 +</​code>​
 +
 +
 +====Создание логинов с UID определённого диапазона===
 +создание логинов в диапазоне ниже 100 000 Ghb при наличии свободных UID и существовании UID  выше 100 000
 +
 +<​code>​
 +
 +DELIMITER //
 +CREATE TRIGGER create_uid BEFORE INSERT ON users
 +FOR EACH ROW BEGIN
 +
 +  DECLARE new_uid INTEGER;
 +
 +  IF NEW.uid = ''​ THEN
 +    SET new_uid=1;
 +  ​
 +    SELECT uid+1 INTO new_uid
 +       FROM users WHERE uid < 100000 ​
 +       ORDER BY uid DESC LIMIT 1;
 +    SET NEW.uid=new_uid;​
 + 
 +  END IF;  ​
 +END
 +//
 +DELIMITER ;
 +
 +</​code>​
 +
 +====Изменение тарифного плана абонентам с определённой группой====
 +
 +  UPDATE dv_main set tp_id=225 WHERE uid IN (SELECT uid from users WHERE gid=123);
 +  ​
 +  ​
 +====Конвертация денежной единицы для абонентов (смена основной валюты или девальвация)====
 +
 +1.Конвертация списку/​группе абонентов депозита по указанному курсу.
 +для абонентов без компаний ​
 +<​code>​
 +UPDATE bills b, users u, companies c 
 +  SET b.deposit=b.deposit * [ курс ] 
 +  WHERE b.id=u.bill_id AND u.gid IN ([ группа ], [группа])
 +</​code>​
 +
 +для абонентов в компаниях
 +<​code>​
 +UPDATE bills b, users u, companies company
 +  SET b.deposit=b.deposit * [ курс ] 
 +  WHERE  ​
 +  u.company_id=company.id
 +  AND company.bill_id=b.id
 +  AND u.gid IN ([ группа ])
 +</​code>​
 +
 +2.Конвертация списку/​группе абонентов кредита по указанному курсу.
 +
 +<​code>​
 +UPDATE users u SET u.credit=u.credit * [ курс ] WHERE u.gid IN ([ номера групп ])
 +</​code>​
 +
 +3. Определенному списку/​группе тарифных планов. Конвертирует стоимость в тарифных планах (ежедневные и ежемесячные снятия,​ изменение ТП и т.п.) ​ по указанному курсу.
 +
 +для ТП
 +
 +<​code>​
 +UPDATE tarif_plans tp
 +  SET 
 +    tp.day_fee=tp.day_fee * [ курс ],
 +    tp.month_fee=tp.month_fee * [ курс ],
 +    tp.activate_price=tp.activate_price * [ курс ],
 +    tp.change_price=tp.change_price * [ курс ]
 +WHERE 
 +   tp.id IN ([ номера тарифных планов ])
 +</​code>​
 +
 +Группы тарифных планов
 +<​code>​
 +UPDATE tarif_plans tp, tp_groups tp_g 
 +  SET 
 +    tp.day_fee=tp.day_fee *  [ курс ],
 +    tp.month_fee=tp.month_fee *  [ курс ],
 +    tp.activate_price=tp.activate_price *  [ курс ],
 +    tp.change_price=tp.change_price *  [ курс ]
 +WHERE 
 +  tp.gid=tp_g.id AND  tp_g.id IN ([ номера групп тарифных планов ])
 +</​code>​
 ====Объединение 2 ABillS ​ систем==== ====Объединение 2 ABillS ​ систем====
  
Строка 302: Строка 431:
   INSERT INTO admin_actions SELECT * from abills2.admin_actions;​   INSERT INTO admin_actions SELECT * from abills2.admin_actions;​
  
 +
 +====Приведение номеров телефонов к общему формату====
 +
 +перевести ​ номера +38050xxxxxx в 050xxxxxx
 +
 +<​code>​
 +UPDATE users_pi SET phone=REPLACE(phone,​ '​+38050',​ '​050'​)
 +WHERE phone like '​+38050%'​
 +</​code>​