как вытащить количество предоплаченного трафика из базы?

Технические вопросы по UTM 5.0
Ответить
Vovik
Сообщения: 162
Зарегистрирован: Пт янв 21, 2005 06:18
Откуда: Omsk city

как вытащить количество предоплаченного трафика из базы?

Сообщение Vovik »

сабж собственно.
знаю, что есть таблица traf_serv_tclasses.
как зная логин (ip-адрес, сервисная связка.....) вытащить количество предоплаченного трафика из базы для этого пользователя?

Спасибо!

Sky
Сообщения: 44
Зарегистрирован: Пн янв 24, 2005 08:01

Сообщение Sky »

можно через urfa php
фукнция rpcf_get_prepaid_units 0x5500

Аватара пользователя
MaxDM
Сообщения: 313
Зарегистрирован: Пн апр 03, 2006 10:26
Контактная информация:

Сообщение MaxDM »

Perl, PostgreSQL

Код: Выделить всё

sub
get_prepaid_traffic {
  my $query1 = "SELECT service_id FROM service_links WHERE account_id=$_[1] AND is_deleted=0;";
  my $sth1 = $_[0]->prepare($query1) or die "Couldn't prepare statement: ".$_[0]->errstr;
  $sth1->execute() or die "Couldn't execute statement: ".$sth1->errstr;

  my @tmp;
  my $i=0;
  my @service_id;
  while (@tmp = $sth1->fetchrow_array ) {
    @service_id[$i++] = @tmp[0];
  }
  $sth1->finish();

  my $query2 = "SELECT tst_id FROM iptraffic_services_data WHERE id=$service_id[0] AND null_service_prepaid=0 AND is_deleted=0;";
  my $sth2 = $_[0]->prepare($query2) or die "Couldn't prepare statement: ".$_[0]->errstr;
  $sth2->execute() or die "Couldn't execute statement: ".$sth2->errstr;
  my $tst_id = $sth2->fetchrow_array();
  $sth2->finish();

  if ( $tst_id > 0 ) {
    my $query3 = "SELECT traf_serv_tclasses.prepaid_units ".
               "FROM traf_serv_tclasses INNER JOIN t_class ON traf_serv_tclasses.tclass_id=t_class.id ".
               "WHERE tst_id=$tst_id;";
    my $sth3 = $_[0]->prepare($query3) or die "Couldn't prepare statement: ".$_[0]->errstr;
    $sth3->execute() or die "Couldn't execute statement: ".$sth3->errstr;
    my $prepaid = $sth3->fetchrow_array();
    $sth3->finish();
    return $prepaid+$_[3]-$_[2] if $prepaid > 0;
  } else {
    return 0;
  }
}

Vovik
Сообщения: 162
Зарегистрирован: Пт янв 21, 2005 06:18
Откуда: Omsk city

Сообщение Vovik »

собственно пользуясь дебагом утм-а
сделал такой запрос:

SELECT users.login,yy.tclass_id,yy.prepaid_units,service_links.service_id, inet_ntoa(tt.ipid & 0xffffffff) AS ip FROM users,traf_serv_tclasses AS yy, iptraffic_services_data AS ii, service_links,discount_transactions_iptraffic_all AS tt WHERE users.id=service_links.user_id AND service_links.id=tt.slink_id AND discount_date>='1235844000' AND discount_date <='1238518799' AND inet_ntoa(tt.ipid & 0xffffffff) like '192.168.%' AND ii.id=service_links.service_id AND ii.tst_id=yy.tst_id AND yy.tclass_id=10 GROUP BY ipid INTO OUTFILE '/var/tmp/ttt.txt';



даты может и не нужны... не знаю... но вроде работает
выводит список логинов на каждый ip, класс предоплаченного трафика, предоплаченные байты,сервисную связку для ip-шников вида 192.168.xxx.xxx.

Ответить