379 lines
11 KiB
Plaintext
379 lines
11 KiB
Plaintext
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | 小说系统 数据统计 [ WE CAN DO IT JUST THINK IT ]
|
|
// +----------------------------------------------------------------------
|
|
|
|
namespace app\admin\controller;
|
|
use app\common\controller\Admin;
|
|
|
|
class Statistics extends Admin {
|
|
|
|
public function _initialize() {
|
|
parent::_initialize();
|
|
}
|
|
|
|
/**
|
|
* order [订单统计]
|
|
*
|
|
* @return type
|
|
**/
|
|
public function order(){
|
|
|
|
$data = array();
|
|
|
|
$map = array();
|
|
|
|
if(session('user_auth.group')==3){
|
|
$map['agentid'] = array('in',$this->agentUser(session('user_auth.uid')));
|
|
}
|
|
|
|
|
|
$nowday= date('Y-m-d');
|
|
$days=array();
|
|
$info=array();
|
|
for($i=30;$i>=1;$i--) {
|
|
$date=strtotime($nowday)-(30-$i)*24*3600;
|
|
$map['create_time'] = array(array('gt',$date),array('lt',$date+86399));
|
|
$map['status'] = 1;
|
|
$info[date('Y-m-d',$date)] = array(
|
|
"pay"=> $this->paySum(0,$date,$date+86399),
|
|
|
|
"paynormal"=> $this->paySum(0,$date,$date+86399,1),
|
|
"normalnum"=> db('order')->where(array_merge($map,array('type'=>1)))->cache()->count('uid'),//普通充值人数
|
|
|
|
"payvip"=> $this->paySum(0,$date,$date+86399,2),//年费VIP会员充值金额
|
|
"vipnum"=> db('order')->where(array_merge($map,array('type'=>2)))->cache()->count(),//充值人数
|
|
|
|
"payPaid"=>$this->statistics($date,$date+86399,1,1),//普通充值支付订单数
|
|
"payUnpaid"=> $this->statistics($date,$date+86399,1,0),//未付款
|
|
"payYaerPaid"=>$this->statistics($date,$date+86399,2,1),//年费VIP会员支付订单数
|
|
"payYaerUnpaid"=> $this->statistics($date,$date+86399,2,0),//未付款
|
|
|
|
);
|
|
}
|
|
|
|
$dataSection = $this ->dataSection();
|
|
$dataSection['all'] = array(
|
|
'Start'=>0,
|
|
'End'=>0,
|
|
);
|
|
foreach($dataSection as $k=>$v){
|
|
//充值金额
|
|
$data[$k."Pay"] = $this->paySum(0,$v['Start'],$v['End']);
|
|
//普通充值 已支付
|
|
$data[$k."Paid"] = $this->statistics($v['Start'],$v['End'],1,1);
|
|
//普通充值 未付款
|
|
$data[$k."Unpaid"] = $this->statistics($v['Start'],$v['End'],1,0);
|
|
//年费VIP会员 已支付
|
|
$data[$k."YearPaid"] = $this->statistics($v['Start'],$v['End'],2,1);
|
|
//年费VIP会员 未付款
|
|
$data[$k."YearUnpaid"] = $this->statistics($v['Start'],$v['End'],2,0);
|
|
|
|
}
|
|
|
|
$this->assign("info",$info);
|
|
$this->assign($data);
|
|
$this->setMeta('订单统计');
|
|
return $this->fetch();
|
|
}
|
|
|
|
|
|
/**
|
|
* kouliang [扣量统计]
|
|
*
|
|
* @return type
|
|
**/
|
|
public function kouliang(){
|
|
$data = array();
|
|
$map = array();
|
|
if(session('user_auth.group')==3){
|
|
$map['agentid'] = array('in',$this->agentUser(session('user_auth.uid')));
|
|
}
|
|
$nowday= date('Y-m-d');
|
|
$days=array();
|
|
$info=array();
|
|
for($i=30;$i>=1;$i--) {
|
|
$date=strtotime($nowday)-(30-$i)*24*3600;
|
|
$map['create_time'] = array(array('gt',$date),array('lt',$date+86399));
|
|
$map['status'] = 1;
|
|
$map['is_kouliang'] = 1;
|
|
$info[date('Y-m-d',$date)] = array(
|
|
"pay"=> $this->paySum(1,$date,$date+86399),
|
|
|
|
"paynormal"=> $this->paySum(1,$date,$date+86399,1),
|
|
"normalnum"=> db('order')->where(array_merge($map,array('type'=>1)))->cache()->count('uid'),//普通充值人数
|
|
|
|
"payvip"=> $this->paySum(1,$date,$date+86399,2),//年费VIP会员充值金额
|
|
"vipnum"=> db('order')->where(array_merge($map,array('type'=>2)))->cache()->count(),//充值人数
|
|
|
|
"payPaid"=>$this->statistics($date,$date+86399,1,1),//普通充值支付订单数
|
|
"payUnpaid"=> $this->statistics($date,$date+86399,1,0),//未付款
|
|
"payYaerPaid"=>$this->statistics($date,$date+86399,2,1),//年费VIP会员支付订单数
|
|
"payYaerUnpaid"=> $this->statistics($date,$date+86399,2,0),//未付款
|
|
|
|
);
|
|
}
|
|
|
|
$dataSection = $this ->dataSection();
|
|
$dataSection['all'] = array(
|
|
'Start'=>0,
|
|
'End'=>0,
|
|
);
|
|
foreach($dataSection as $k=>$v){
|
|
//充值金额
|
|
$data[$k."Pay"] = $this->paySum(1,$v['Start'],$v['End']);
|
|
//普通充值 已支付
|
|
$data[$k."Paid"] = $this->statistics($v['Start'],$v['End'],1,1);
|
|
//普通充值 未付款
|
|
$data[$k."Unpaid"] = $this->statistics($v['Start'],$v['End'],1,0);
|
|
//年费VIP会员 已支付
|
|
$data[$k."YearPaid"] = $this->statistics($v['Start'],$v['End'],2,1);
|
|
//年费VIP会员 未付款
|
|
$data[$k."YearUnpaid"] = $this->statistics($v['Start'],$v['End'],2,0);
|
|
|
|
}
|
|
|
|
$this->assign("info",$info);
|
|
$this->assign($data);
|
|
$this->setMeta('扣量统计');
|
|
return $this->fetch();
|
|
}
|
|
|
|
|
|
/**
|
|
* user [用户统计]
|
|
*
|
|
* @return type
|
|
**/
|
|
public function user(){
|
|
|
|
$dataSection = $this ->dataSection();
|
|
$dataSection['all'] = array(
|
|
'Start'=>0,
|
|
'End'=>0,
|
|
);
|
|
foreach($dataSection as $k=>$v){
|
|
//新增
|
|
$data[$k."newUser"] = $this ->newUser($v['Start'],$v['End']);
|
|
|
|
//新增男的
|
|
$data[$k."newUserman"] = $this ->newUser($v['Start'],$v['End'],1);
|
|
//新增女的
|
|
$data[$k."newUsergril"] = $this ->newUser($v['Start'],$v['End'],2);
|
|
//新增未知
|
|
$data[$k."newUsernone"] = $this ->newUser($v['Start'],$v['End'],0);
|
|
//已关注
|
|
$data[$k."attention"] = $this ->newUser($v['Start'],$v['End'],null,1);
|
|
//已付费
|
|
$data[$k."pay"] = $this ->newUser($v['Start'],$v['End'],null,0,1);
|
|
|
|
}
|
|
|
|
$nowday= date('Y-m-d');
|
|
$days=array();
|
|
$info=array();
|
|
for($i=30;$i>=1;$i--) {
|
|
$date=strtotime($nowday)-(30-$i)*24*3600;
|
|
$map['create_time'] = array(array('gt',$date),array('lt',$date+86399));
|
|
$map['status'] = 1;
|
|
$info[date('Y-m-d',$date)] = array(
|
|
"newUser"=> $this ->newUser($date,$date+86399),
|
|
"newUserman" => $this ->newUser($v['Start'],$v['End'],1),
|
|
"newUsergril" => $this ->newUser($v['Start'],$v['End'],2),
|
|
"attention" => $this ->newUser($v['Start'],$v['End'],null,1),
|
|
"pay" => $this ->newUser($v['Start'],$v['End'],null,0,1),
|
|
|
|
|
|
);
|
|
}
|
|
$this->assign("info",$info);
|
|
$this->assign($data);
|
|
$this->setMeta('用户统计');
|
|
return $this->fetch();
|
|
}
|
|
|
|
/**
|
|
* novel [小说统计]
|
|
*
|
|
* @return type
|
|
**/
|
|
public function novel() {
|
|
$info = array();
|
|
if(session('user_auth.group')==3){
|
|
$map['t.agentid'] = array('in',$this->agentUser(session('user_auth.uid')));
|
|
$novel = db('tuiguang')->alias('t')->join('cms_novel n','n.id = t.articleid')->where($map)->column('title','articleid');
|
|
}else{
|
|
$map['status'] =1;
|
|
$novel = db('novel')->where($map)->column('title','id');
|
|
}
|
|
|
|
$dataSection = $this ->dataSection();
|
|
unset($dataSection['month']);
|
|
$dataSection['all'] = array(
|
|
'Start'=>0,
|
|
'End'=>0,
|
|
);
|
|
if($novel){
|
|
foreach($novel as $k=>$v){
|
|
$info[$k]['name']=$v;
|
|
foreach($dataSection as $kk=>$vv){
|
|
$info[$k][$kk.'pay'] =$this->paySum(0,$vv['Start'],$vv['End'],0,$k);
|
|
//充值笔数
|
|
$info[$k][$kk.'Paid'] =$this->statistics($vv['Start'],$vv['End'],0,0,$k);
|
|
}
|
|
}
|
|
}
|
|
$this->assign("info",$info);
|
|
$this->setMeta('小说充值统计');
|
|
return $this->fetch();
|
|
|
|
}
|
|
|
|
/**
|
|
* statistics [充值笔数]
|
|
*
|
|
* @param type $startData [开始时间]
|
|
* @param type $endData [结束时间]
|
|
* @param type $type [订单类型]
|
|
* @param type $status [订单状态]
|
|
*
|
|
* @return type
|
|
**/
|
|
protected function statistics($startData,$endData,$type=0,$status=0,$articleid=0) {
|
|
if(session('user_auth.group')==3){
|
|
$map['agentid'] = array('in',$this->agentUser(session('user_auth.uid')));
|
|
}
|
|
if($startData && $endData){
|
|
$map['create_time'] = array(array('gt',$startData),array('lt',$endData)) ;
|
|
}
|
|
if($type){
|
|
$map['type'] = array('in',$type);
|
|
}
|
|
if($articleid){
|
|
$map['articleid'] = $articleid;
|
|
}
|
|
if($status){
|
|
$map['status'] = array('in',$status);
|
|
}
|
|
$total = db('order')->where($map)->cache(true,600)->count();
|
|
return $total;
|
|
}
|
|
|
|
|
|
/**
|
|
* paySum [充值金额]
|
|
*
|
|
* @param type $is_kouliang [是否扣量]
|
|
* @param type $startData [开始时间]
|
|
* @param type $endData [结束时间]
|
|
* @param type $type [订单类型]
|
|
* @param type $type [desc]
|
|
*
|
|
* @return type
|
|
**/
|
|
protected function paySum($is_kouliang=0,$startData,$endData,$type=0,$articleid=0) {
|
|
|
|
$map['status'] = 1;
|
|
if(session('user_auth.group')==3){
|
|
$map['agentid'] = array('in',$this->agentUser(session('user_auth.uid')));
|
|
}
|
|
if($startData && $endData){
|
|
$map['create_time'] = array(array('gt',$startData),array('lt',$endData)) ;
|
|
}
|
|
|
|
if($type){
|
|
$map['type'] = $type;
|
|
}
|
|
if($is_kouliang){
|
|
$map['is_kouliang'] = $is_kouliang;
|
|
}else{
|
|
$map['is_kouliang'] = 0;
|
|
}
|
|
if($articleid){
|
|
$map['articleid'] = $articleid;
|
|
}
|
|
$sum = db('order')->where($map)->cache(true,600)->sum('money');
|
|
return $sum;
|
|
}
|
|
|
|
|
|
/**
|
|
* agentUser [各等级代理商用户]
|
|
*
|
|
* @return type
|
|
**/
|
|
protected function agentUser($uid) {
|
|
$member = db('member')->where('uid='.$uid)->find();
|
|
|
|
if($member['is_top']==1){
|
|
$map['s_uid'] = $uid;
|
|
}elseif($member['is_top']==0 && empty($member['t_uid'])){
|
|
$map['t_uid'] = $uid;
|
|
}else{
|
|
return $uid;
|
|
}
|
|
$map['status'] =1;
|
|
$map['group'] =3;
|
|
|
|
$daili = db('member')->where($map)->cache(true,600)->column('uid');
|
|
$daili[]=$uid;
|
|
$agentid = implode(",",$daili);
|
|
return $agentid;
|
|
}
|
|
|
|
|
|
/**
|
|
* newUser [新增用户]
|
|
*
|
|
* @param type $startData [开始时间]
|
|
* @param type $endData [desc]
|
|
* @param type $sex [性别]
|
|
* @param type $attention [已关注]
|
|
* @param type $pay [已付费]
|
|
*
|
|
* @return type
|
|
**/
|
|
public function newUser($startData,$endData,$sex=null,$attention=0,$pay=0) {
|
|
if(session('user_auth.group')==3){
|
|
$map['agentid'] = array('in',$this->agentUser(session('user_auth.uid')));
|
|
}
|
|
if($startData && $endData){
|
|
$map['reg_time'] = array(array('gt',$startData),array('lt',$endData)) ;
|
|
}
|
|
$map['status'] = 1;
|
|
if(isset($sex)){
|
|
$map['sex'] = $sex;
|
|
}
|
|
if($attention){
|
|
$map['is_attention'] = $attention;
|
|
}
|
|
if($pay){
|
|
$map['pay'] = array('egt',$pay);
|
|
}
|
|
$map['group'] =4;
|
|
|
|
$sum = db('member')->where($map)->cache(true,600)->count();
|
|
return $sum;
|
|
|
|
}
|
|
|
|
/**
|
|
* dataSection [今天/昨天/月/时间区间]
|
|
*
|
|
* @return type
|
|
**/
|
|
protected function dataSection() {
|
|
|
|
$result['today']['Start'] = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
|
|
$result['today']['End'] = mktime(23, 59, 59, date("m"), date("d"), date("Y"));
|
|
|
|
$result['yesterday']['Start'] = mktime(0, 0, 0, date('m'), date('d')-1, date('Y'));
|
|
$result['yesterday']['End'] = mktime(0, 0, 0, date('m'), date('d'), date('Y'))-1;
|
|
|
|
$result['month']['Start'] =mktime(0, 0, 0, date("m"), 1, date("Y"));
|
|
$result['month']['End'] =mktime(23, 59, 59, date("m"), date("t"), date("Y"));
|
|
|
|
return $result;
|
|
}
|
|
|
|
} |