add backend ticket stat basics
This commit is contained in:
@@ -4,6 +4,8 @@ namespace common\models;
|
||||
|
||||
use Yii;
|
||||
use yii\db\ActiveRecord;
|
||||
use yii\db\Query;
|
||||
use yii\db\Expression;
|
||||
|
||||
/**
|
||||
* This is the model class for table "ticket".
|
||||
@@ -148,4 +150,47 @@ class Ticket extends \common\models\BaseFitnessActiveRecord
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static function statistic($start,$end){
|
||||
// $sql = "select
|
||||
// ticket_type.name,
|
||||
// count(ticket.id_ticket) as total ,
|
||||
// sum(case when ticket.end > '2015-11-05' and ticket.start <= '2015-11-05' then 1 else 0 end) as valid,
|
||||
// sum(case when ticket.created_at < '2015-11-06' and ticket.created_at >= '2015-11-05' then 1 else 0 end) as created,
|
||||
// sum(case when ticket.created_at < '2015-11-06' and ticket.created_at >= '2015-11-05' then transfer.money else 0 end) as created_money,
|
||||
// sum(case when ticket.created_at < '2015-11-06' and ticket.created_at >= '2015-11-05' and transfer.paid_at is not null then transfer.money else 0 end) as created_money_paid,
|
||||
// sum(case when ticket.created_at < '2015-11-06' and ticket.created_at >= '2015-11-05' and transfer.paid_at is null then transfer.money else 0 end) as created_money_not_paid,
|
||||
// sum(case when ticket.created_at >= '2015-11-06' and ticket.created_at < '2015-11-05' and transfer.paid_at < '2015-11-06' and transfer.paid_at >= '2015-11-05' then transfer.money else 0 end) as dept_paid,
|
||||
// sum(case when ticket.end < '2015-11-06' and ticket.created_at >= '2015-11-05' then 1 else 0 end) as expired
|
||||
// from ticket_type
|
||||
// inner join ticket on ticket.id_ticket_type = ticket_type.id_ticket_type
|
||||
// inner join transfer on ticket.id_ticket = transfer.id_object and transfer.type = 20
|
||||
// group by ticket_type.name;";
|
||||
|
||||
$query = new Query();
|
||||
$query->addSelect( [
|
||||
new Expression( 'ticket_type.id as id'),
|
||||
new Expression( 'ticket_type.name as name'),
|
||||
new Expression( 'count(ticket.id_ticket) as total'),
|
||||
new Expression( "sum( case when ticket.end > ':start' and ticket.start <= ':end' then 1 else 0 end) as valid" ),
|
||||
new Expression( "sum(case when ticket.created_at < ':end' and ticket.created_at >= ':start' then 1 else 0 end) as created" ),
|
||||
new Expression( "sum(case when ticket.created_at < ':end' and ticket.created_at >= ':start' then transfer.money else 0 end) as created_money" ),
|
||||
new Expression( "sum(case when ticket.created_at < '2015-11-06' and ticket.created_at >= '2015-11-05' and transfer.paid_at is not null then transfer.money else 0 end) as created_money_paid" ),
|
||||
new Expression( "sum(case when ticket.created_at < '2015-11-06' and ticket.created_at >= '2015-11-05' and transfer.paid_at is null then transfer.money else 0 end) as created_money_not_paid" ),
|
||||
new Expression( "sum(case when ticket.created_at >= '2015-11-06' and ticket.created_at < '2015-11-05' and transfer.paid_at < '2015-11-06' and transfer.paid_at >= '2015-11-05' then transfer.money else 0 end) as dept_paid" ),
|
||||
new Expression( "sum(case when ticket.end < '2015-11-06' and ticket.created_at >= '2015-11-05' then 1 else 0 end) as expired" ),
|
||||
|
||||
|
||||
]);
|
||||
|
||||
$query->from('ticket_type');
|
||||
$query->innerJoin('ticket', 'ticket.id_ticket_type = ticket_type.id_ticket_type');
|
||||
$query->innerJoin('transfer', 'ticket.id_ticket = transfer.id_object and transfer.type = 20');
|
||||
|
||||
$query->groupBy("ticket_type.id_ticket, ticket_type.name");
|
||||
|
||||
$query->params([':start' => $start, ':end' => $end]);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user