You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
191 lines
7.1 KiB
PHP
191 lines
7.1 KiB
PHP
<?php
|
|
|
|
if (!defined('BASEPATH'))
|
|
exit('No direct script access allowed');
|
|
|
|
|
|
class Statistics_model extends CI_Model {
|
|
|
|
function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->DEST = $this->load->database('DEST', TRUE);
|
|
}
|
|
|
|
// 总订单数
|
|
public function total_order_count($startdate,$enddate)
|
|
{
|
|
$sql="SELECT count(0) as total_order_count FROM orders WHERE o_date BETWEEN '$startdate' AND '$enddate' AND o_delete!=1";
|
|
$query=$this->DEST->query($sql);
|
|
$result=$query->result();
|
|
return $result[0]->total_order_count;
|
|
}
|
|
|
|
//总成行
|
|
public function total_success_count($startdate,$enddate)
|
|
{
|
|
$sql="SELECT count(0) as total_success_count
|
|
FROM orders LEFT JOIN payments on o_sn=pm_o_sn
|
|
WHERE pm_sn in (select min(pm_sn) from payments group by pm_o_sn)
|
|
AND o_date BETWEEN '$startdate' AND '$enddate'";
|
|
$query=$this->DEST->query($sql);
|
|
$result=$query->result();
|
|
return $result[0]->total_success_count;
|
|
}
|
|
|
|
//总人数
|
|
public function total_guest_count($startdate,$enddate)
|
|
{
|
|
$sql="SELECT (SUM(occ_adultcount)+SUM(occ_childrencount)+SUM(occ_babycount)) as total_guest_count
|
|
FROM orders
|
|
left join order_circuit on o_sn=occ_o_sn
|
|
where o_date BETWEEN '$startdate' AND '$enddate'";
|
|
$query=$this->DEST->query($sql);
|
|
$result=$query->result();
|
|
empty($result[0]->total_guest_count)?$result[0]->total_guest_count=0:'';
|
|
return $result[0]->total_guest_count;
|
|
}
|
|
|
|
//总成行人数
|
|
public function guest_success_count($startdate,$enddate)
|
|
{
|
|
$sql="SELECT (SUM(occ_adultcount)+SUM(occ_childrencount)+SUM(occ_babycount)) as guest_success_count
|
|
FROM orders
|
|
left join order_circuit on o_sn=occ_o_sn
|
|
LEFT JOIN payments on o_sn=pm_o_sn
|
|
where pm_sn in (select min(pm_sn) from payments group by pm_o_sn)
|
|
and o_date BETWEEN '$startdate' AND '$enddate'";
|
|
$query=$this->DEST->query($sql);
|
|
$result=$query->result();
|
|
empty($result[0]->guest_success_count)?$result[0]->guest_success_count=0:'';
|
|
return $result[0]->guest_success_count;
|
|
}
|
|
|
|
//总销售额
|
|
public function total_money($startdate,$enddate)
|
|
{
|
|
$sql="SELECT SUM(occ_price) as total_money
|
|
FROM orders
|
|
left join order_circuit on o_sn=occ_o_sn
|
|
WHERE o_date BETWEEN '$startdate' AND '$enddate'";
|
|
$query=$this->DEST->query($sql);
|
|
$result=$query->result();
|
|
empty($result[0]->total_money)?$result[0]->total_money=0:'';
|
|
return $result[0]->total_money;
|
|
}
|
|
|
|
//总销售额
|
|
public function total_success_money($startdate,$enddate)
|
|
{
|
|
$sql="SELECT SUM(occ_price) as total_success_money
|
|
FROM orders
|
|
left join order_circuit on o_sn=occ_o_sn
|
|
LEFT JOIN payments on o_sn=pm_o_sn
|
|
where pm_sn in (select min(pm_sn) from payments group by pm_o_sn)
|
|
and o_date BETWEEN '$startdate' AND '$enddate'";
|
|
$query=$this->DEST->query($sql);
|
|
$result=$query->result();
|
|
empty($result[0]->total_success_money)?$result[0]->total_success_money=0:'';
|
|
return $result[0]->total_success_money;
|
|
}
|
|
|
|
//产品订单数
|
|
public function product_order_count($startdate,$enddate,$filed='occ_circuitcode',$success=false)
|
|
{
|
|
$joinsql=$filed=='occ_circuitcode'?' LEFT JOIN order_circuit on o_sn=occ_o_sn ':'';
|
|
$joinsql.=$success?" LEFT JOIN payments on o_sn=pm_o_sn ":'';
|
|
$mapsql=$success?" AND pm_sn in (select min(pm_sn) from payments group by pm_o_sn) ":'';
|
|
|
|
$sql="SELECT isnull($filed,'') as $filed,count(0) as total_order_count
|
|
FROM orders
|
|
$joinsql
|
|
WHERE o_date BETWEEN '$startdate' AND '$enddate' $mapsql
|
|
GROUP by $filed";
|
|
$query=$this->DEST->query($sql);
|
|
$result=$query->result();
|
|
|
|
$product_count=array();
|
|
foreach ($result as $value) {
|
|
if (!isset($product_count[$value->$filed])) {
|
|
$product_count[$value->$filed]=0;
|
|
}
|
|
$product_count[$value->$filed]+=$value->total_order_count;
|
|
}
|
|
return $product_count;
|
|
}
|
|
|
|
//产品订单人数
|
|
public function product_order_guests($startdate,$enddate,$filed='occ_circuitcode',$success=false)
|
|
{
|
|
$joinsql=$success?" LEFT JOIN payments on o_sn=pm_o_sn ":'';
|
|
$mapsql=$success?" AND pm_sn in (select min(pm_sn) from payments group by pm_o_sn) ":'';
|
|
|
|
$sql="SELECT isnull($filed,'') as $filed,(SUM(occ_adultcount)+SUM(occ_childrencount)+SUM(occ_babycount)) as guest_count
|
|
FROM orders
|
|
left join order_circuit on o_sn=occ_o_sn $joinsql
|
|
where o_date BETWEEN '$startdate' AND '$enddate' $mapsql
|
|
GROUP by $filed ";
|
|
$query=$this->DEST->query($sql);
|
|
$result=$query->result();
|
|
|
|
$product_guests=array();
|
|
foreach ($result as $value) {
|
|
if (!isset($product_guests[$value->$filed])) {
|
|
$product_guests[$value->$filed]=0;
|
|
}
|
|
$product_guests[$value->$filed]+=$value->guest_count;
|
|
}
|
|
|
|
return $product_guests;
|
|
}
|
|
|
|
//总销售额
|
|
public function product_order_money($startdate,$enddate,$filed='occ_circuitcode',$success=false)
|
|
{
|
|
$joinsql=$success?" LEFT JOIN payments on o_sn=pm_o_sn ":'';
|
|
$mapsql=$success?" AND pm_sn in (select min(pm_sn) from payments group by pm_o_sn) ":'';
|
|
|
|
$sql="SELECT isnull($filed,'') as $filed,SUM(occ_price) as total_money
|
|
FROM orders
|
|
left join order_circuit on o_sn=occ_o_sn $joinsql
|
|
WHERE o_date BETWEEN '$startdate' AND '$enddate' $mapsql
|
|
GROUP by $filed";
|
|
$query=$this->DEST->query($sql);
|
|
$result=$query->result();
|
|
|
|
$product_money=array();
|
|
foreach ($result as $value) {
|
|
if (!isset($product_money[$value->$filed])) {
|
|
$product_money[$value->$filed]=0;
|
|
}
|
|
$product_money[$value->$filed]+=$value->total_money;
|
|
}
|
|
|
|
return $product_money;
|
|
}
|
|
|
|
//支付方式数据统计
|
|
public function payment_type($startdate,$enddate)
|
|
{
|
|
$sql="SELECT isnull(pm_money_type,'未知支付方式') as pm_money_type,count(0) as ordercount
|
|
FROM orders
|
|
LEFT JOIN payments on o_sn=pm_o_sn
|
|
WHERE o_date BETWEEN '$startdate' AND '$enddate'
|
|
GROUP by pm_money_type";
|
|
$query=$this->DEST->query($sql);
|
|
$result=$query->result();
|
|
|
|
$ordercount=array();
|
|
foreach ($result as $value) {
|
|
if (!isset($ordercount[$value->pm_money_type])) {
|
|
$ordercount[$value->pm_money_type]=0;
|
|
}
|
|
$ordercount[$value->pm_money_type]+=$value->ordercount;
|
|
}
|
|
|
|
return $ordercount;
|
|
}
|
|
|
|
|
|
|
|
} |