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.

328 lines
11 KiB
PHTML

2 years ago
<?php
// +----------------------------------------------------------------------
// | 徐州梦创信息科技有限公司—专业的游戏运营,推广解决方案.
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.vlcms.com All rights reserved.
// +----------------------------------------------------------------------
// | Author: kefu@vlcms.com QQ97471547
// +----------------------------------------------------------------------
namespace Admin\Event;
use Think\Controller;
/**
* 后台首页控制器
*
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
class StatEvent extends Controller
{
/**
* 充值统计
*/
public function spend_statistics()
{
$model_name = "spend";
$serach_field = array("pay_time",'pay_status');
$field = "sum(pay_amount) as amount,pay_way";
$group = "pay_way";
$order = "pay_way ASC";
$last_month_amount = $this->last_month_data($model_name, $serach_field, $field, $group, $order);
$last_month_total = array_sum(array(
$last_month_amount[0]["amount"],
$last_month_amount[1]["amount"],
$last_month_amount[2]["amount"],
$last_month_amount[3]["amount"]
));
foreach ($last_month_amount as $key => $value) {
switch ($value['pay_way']) {
case 0:
$ptb =$ptb + $value["amount"];
break;
case 1: // 支付宝
$alipay = $alipay + $value["amount"];
break;
case 2: // 微信
$weixin = $weixin + $value["amount"];
break;
case 3: // 聚宝云
$jubaobar = $jubaobar + $value["amount"];
break;
}
}
$last_data = array(
$ptb,
$alipay,
$weixin,
$jubaobar,
$last_month_total == "" ? 0 : $last_month_total
);
$this_month_amount = $this->this_month_data($model_name, $serach_field, $field, $group, $order);
$this_month_total = array_sum(array(
$this_month_amount[0]["amount"],
$this_month_amount[1]["amount"],
$this_month_amount[2]["amount"],
$this_month_amount[3]["amount"]
));
foreach ($this_month_amount as $key => $value) {
switch ($value['pay_way']) {
case 0:
$ptb2 = $ptb2 + $value["amount"];
break;
case 1:
$alipay2 = $alipay2 + $value["amount"];
break;
case 2:
$weixin2 = $weixin2 + $value["amount"];
break;
case 3:
$jubaobar2 = $jubaobar2 + $value["amount"];
break;
}
}
$this_data = array(
$ptb2,
$alipay2,
$weixin2,
$jubaobar2,
$this_month_total == "" ? 0 : $this_month_total
);
$this->assign("spend_last_data", $last_data);
$this->assign("spend_this_data", $this_data);
}
/**
* 注册统计
*/
public function register_statistics()
{
$model_name = "User";
$serach_field = array("register_time",'lock_status');
$field = "count(id) as counts,register_way";
$group = "register_way";
$order = "register_way ASC";
$last_month1 = $this->last_month_data($model_name, $serach_field, $field, $group, $order);
foreach($last_month1 as $k=>$val){
$value[]=$val['register_way'];
}
if(!in_array(0,$value)){
$last_month[0]=array('counts'=>0,'register_way'=>0);
}else{
$last_month[0]=$last_month1[0];
}
if(!in_array(1,$value)){
$last_month[1]=array('counts'=>0,'register_way'=>1);
}else{
if(!in_array(0,$value)){
$last_month[1]=$last_month1[0];
}else{
$last_month[1]=$last_month1[1];
}
}
if(!in_array(2,$value)){
$last_month[2]=array('counts'=>0,'register_way'=>2);
}else{
$last_month[2]=end($last_month1);
}
$last_month_total = array_sum(array(
$last_month[0]["counts"],
$last_month[1]["counts"],
$last_month[2]["counts"],
));
$last_data = array(
$last_month[2]["counts"],
$last_month[1]["counts"],
$last_month[0]["counts"],
$last_month_total
);
$this_month1 = $this->this_month_data($model_name, $serach_field, $field, $group, $order);
foreach($this_month1 as $k=>$val){
$value[]=$val['register_way'];
}
if(!in_array(0,$value)){
$this_month[0]=array('counts'=>0,'register_way'=>0);
}else{
$this_month[0]=$this_month1[0];
}
if(!in_array(1,$value)){
$this_month[1]=array('counts'=>0,'register_way'=>1);
}else{
if(!in_array(0,$value)){
$this_month[1]=$this_month1[0];
}else{
$this_month[1]=$this_month1[1];
}
}
if(!in_array(2,$value)){
$this_month[2]=array('counts'=>0,'register_way'=>2);
}else{
$this_month[2]=end($this_month1);
}
$this_month_total = array_sum(array(
$this_month[0]["counts"],
$this_month[1]["counts"],
$this_month[2]["counts"]
));
$this_data = array(
$this_month[2]["counts"],
$this_month[1]["counts"],
$this_month[0]["counts"],
$this_month_total
);
$this->assign("reg_last_data", $last_data);
$this->assign("reg_this_data", $this_data);
}
/**
* 本年总充值
*/
public function spend_statistics_year()
{
$model_name = "spend";
$serach_field = "pay_time";
$field = "FROM_UNIXTIME(pay_time, '%c') as month,sum(pay_amount) as amount";
$group = "FROM_UNIXTIME(pay_time,'%Y%m%d')";
$order = "pay_time ASC";
$map["pay_status"] = 1;
$year_total = $this->data_year($model_name, $map, $serach_field, $field, $group, $order);
$map["promote_id"] = array(
"neq",
"0"
);
$map2["promote_id"] = array(
"eq",
"0"
);
$map2["pay_status"] = 1;
$year_promote = $this->data_year($model_name, $map, $serach_field, $field, $group, $order, $where);
$ziran_promote = $this->data_year($model_name, $map2, $serach_field, $field, $group, $order, $where);
$this->assign("ziran_promote", $ziran_promote);
$this->assign("year_total", $year_total);
$this->assign("year_promote", $year_promote);
}
/**
* 本年总注册
*/
public function register_statistics_year()
{
$model_name = "User";
$serach_field = "register_time";
$field = "FROM_UNIXTIME(register_time, '%c') as month,count(id) as counts";
$group = "FROM_UNIXTIME(register_time,'%c')";
$order = "register_time ASC";
$map["lock_status"] = 1;
$last_data = $this->user_data_year($model_name, $map, $serach_field, $field, $group, $order);
$map["promote_id"] = array(
"neq",
"0"
);
$map2["promote_id"] = array(
"eq",
"0"
);
$this_data = $this->user_data_year($model_name, $map, $serach_field, $field, $group, $order);
$ziran_data = $this->user_data_year($model_name, $map2, $serach_field, $field, $group, $order);
$this->assign("reg_data_year", $last_data);
$this->assign("prom_data_year", $this_data);
$this->assign("ziran_data_year", $ziran_data);
}
/**
* 上月数据
*/
public function last_month_data($model_name, $serach_field, $field = true, $group = "", $order = "")
{
$last_month_start = strtotime(date("Y-m-d H:i:s", mktime(0, 0, 0, date("m") - 1, 1, date("Y"))));
$last_month_end = strtotime(date("Y-m-d H:i:s", mktime(23, 59, 59, date("m"), 0, date("Y"))));
$map[reset($serach_field)] = array(
"BETWEEN",
array(
$last_month_start,
$last_month_end
)
);
$map[end($serach_field)]=1;
// var_dump($map);exit;
$model = D($model_name);
$data = $model->field($field)
->where($map)
->group($group)
->order($order)
->select();
return $data;
}
/**
* 本月数据
*/
protected function this_month_data($model_name, $serach_field, $field = true, $group = "", $order = "")
{
$this_month_start = strtotime(date("Y-m-d H:i:s", mktime(0, 0, 0, date("m"), 1, date("Y"))));
$this_month_end = strtotime(date("Y-m-d H:i:s", mktime(23, 59, 59, date("m"), date("t"), date("Y"))));
$map[reset($serach_field)] = array(
"BETWEEN",
array(
$this_month_start,
$this_month_end
)
);
$map[end($serach_field)]=1;
// var_dump($map);exit;
$model = D($model_name);
$data = $model->field($field)
->where($map)
->group($group)
->order($order)
->select();
return $data;
}
/**
* 本年数据 根据月份分组
*/
protected function data_year($model_name, $map, $serach_field, $field = true, $group = "", $order = "")
{
$this_year_start = strtotime(date("Y-m-d H:i:s", mktime(0, 0, 0, 1, 1, date("Y"))));
$this_year_end = strtotime(date("Y-m-d H:i:s", mktime(23, 59, 59, 12, 31, date("Y"))));
$map[$serach_field] = array(
"BETWEEN",
array(
$this_year_start,
$this_year_end
)
);
$model = D($model_name);
$data = $model->field($field)
->where($map)
->group($group)
->order($order)
->select();
$data = i_array_column($data, 'amount', 'month');
return $data;
}
protected function user_data_year($model_name, $map, $serach_field, $field = true, $group = "", $order = "", $where = "")
{
$this_year_start = strtotime(date("Y-m-d H:i:s", mktime(0, 0, 0, 1, 1, date("Y"))));
$this_year_end = strtotime(date("Y-m-d H:i:s", mktime(23, 59, 59, 12, 31, date("Y"))));
$map[$serach_field] = array(
"BETWEEN",
array(
$this_year_start,
$this_year_end
)
);
$model = D($model_name);
$data = $model->field($field)
->where($map)
->group($group)
->order($order)
->select();
$data = i_array_column($data, 'counts', 'month');
return $data;
}
}