forum.bitel.ru http://forum.bitel.ru/ |
|
Скрипт группировки договоров в зависимости от cid http://forum.bitel.ru/viewtopic.php?f=19&t=785 |
Страница 1 из 1 |
Автор: | fisher [ 01 мар 2008, 19:56 ] |
Заголовок сообщения: | Скрипт группировки договоров в зависимости от cid |
Скрипт делает выборку первых сессий в текущем месяце логинов контрактов входящих в группу с ид $firm[0][gid], после в зависимости от значения cid присваивает значение фирмы и группы контракту из fid и gid соответствующей фирмы. Все не вошедшие контракты принимают значения из $firm[1]. Данные cid задаются в виде либо айпи_от-айпи_до или просто_айпи или мак через запятую. Мак со значением 00:01:23:45:67:89 в биллинге записывается как 00:1:23:45:67:89. Скрипт можно запускать раз в сутки по крону. Уважаемые господа биллингисты подскажите если что-то здесь неверно или некорректно. Код: <?
/***********************************************************************************/ /* Group sort for Bgbilling /* =========================== /* /* /* Скрипт делает выборку первых сессий в текущем месяце логинов контрактов входящих /* в группу с ид $firm[0][gid], после в зависимости от значения cid /* присваивает значение фирмы и группы контракту из fid и gid /* соответствующей фирмы. /* Все не вошедшие контракты принимают значения из $firm[1]. /* Данные cid задаются в виде либо айпи_от-айпи_до или просто_айпи или мак /* через запятую /***********************************************************************************/ $host="localhost"; $user="root"; $password=""; $db="bgbilling"; $log_file = "group.log"; $firm[2][name]="diller2"; $firm[2][gid]=64; $firm[2][fid]=2; $firm[2][cid]="10.1.1.0-10.1.1.255,10.2.0.0-10.2.255.255,10.3.1.1"; $firm[1][name]="diller1"; $firm[1][gid]=1; $firm[1][fid]=1; $firm[0][name]="nodiller"; $firm[0][gid]=16; mysql_connect("$host", "$user", "$password") or die("пп╣я яп╡япЇп╦ я"); mysql_select_db("$db") or die("пп╣я яп╡япЇп╦ я п╠п╟пЇп╬п╧ пЄп╟пҐпҐяя."); mysql_unbuffered_query("SET NAMES cp1251"); $a = mysql_query("SELECT from_number,lid,(SELECT cid FROM user_login_1 WHERE id = lid) AS cid,(SELECT title FROM `contract` WHERE id = cid) AS title FROM `log_session_1_".date("Ym")."` WHERE (SELECT cid FROM user_login_1 WHERE id = lid) = ANY (SELECT id FROM `contract` WHERE gr = ".$firm[0][gid].") GROUP BY cid"); $fh = fopen($log_file, "aw"); while($s = mysql_fetch_assoc($a)){ $valid_fid = valid_cid($s[from_number]); if($valid_fid){ $sqlvchars_insert=mysql_query("UPDATE `contract` set gr=".$firm[$valid_fid][gid].", pfid=".$firm[$valid_fid][fid]." WHERE id=$s[cid]"); $suc = fwrite($fh, date("Y-m-d H:i")." contract='$s[title]' firm='".$firm[$valid_fid][name]."'\n"); } else { $sqlvchars_insert=mysql_query("UPDATE `contract` set gr=".$firm[1][gid].", pfid=".$firm[1][fid]." WHERE id=$s[cid]"); $suc = fwrite($fh, date("Y-m-d H:i")." contract='$s[title]' firm='".$firm[1][name]."'\n"); }; } fclose($fh); function valid_cid($from_number) { global $firm; for($j=2;$j<sizeof($firm);$j++){ $cid = split(",", $firm[$j][cid]); for($i=0;$i<sizeof($cid);$i++){ $netcid = split('-', $cid[$i]); if(!ip2long($netcid[0])){ if($from_number == $netcid[0]) { return $firm[$j][fid]; break;}} else if($netcid[1]){ if((ip2long($from_number) >= ip2long($netcid[0])) and (ip2long($from_number) <= ip2long($netcid[1]))){ return $firm[$j][fid]; break; } } else { if(ip2long($from_number) == ip2long($netcid[0])){ return $firm[$j][fid]; break; } } } } } ?> |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |