2023-01-29 10:26:52 +08:00

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;
}
}