[ 'name' => '注册用户', ], 'login' => [ 'name' => '登录用户', ], 'pay' => [ 'name' => '充值金额', ], 'cost' => [ 'name' => '消耗金额', ], ]; $tday = date('Y-m-d'); $lday = date('Y-m-d',time()-86400); $tmon = date('Y-m'); $lmon = date('Y-m',strtotime($tmon)-86400); $res = []; $baseTotalDayField = [ 'sum(reg_total)' => 'reg', 'sum(old_login_total)' => 'login', 'sum(pay_total)' => 'pay', ]; $tYear = (int)date('Y', strtotime($tday)); $lYear = (int)date('Y', strtotime($lday)); $res['tday'] = Db::connect('db_data_report')->table('base_total_day_'.$tYear)->field($baseTotalDayField)->where('tdate',$tday)->find(); $res['lday'] = Db::connect('db_data_report')->table('base_total_day_'.$lYear)->field($baseTotalDayField)->where('tdate',$lday)->find(); $baseTotalMonthField = [ 'sum(reg_total)' => 'reg', 'sum(login_total)' => 'login', 'sum(pay_total)' => 'pay', ]; $res['tmon'] = Db::connect('db_data_report')->table('game_total_month')->field($baseTotalMonthField)->where('tmonth',$tmon)->find(); $res['lmon'] = Db::connect('db_data_report')->table('game_total_month')->field($baseTotalMonthField)->where('tmonth',$lmon)->find(); $res['tday']['cost'] = Db::connect('db_advert')->table('media_cost')->where('tdate',$tday)->sum('money'); $res['lday']['cost'] = Db::connect('db_advert')->table('media_cost')->where('tdate',$lday)->sum('money'); $res['tmon']['cost'] = Db::connect('db_advert')->table('media_cost')->where('tdate',"{$tmon}-01,{$tday}")->sum('money'); $llday = date('Y-m-d',strtotime($tmon)-86400); $res['lmon']['cost'] = Db::connect('db_advert')->table('media_cost')->where('tdate',"{$lmon}-01,{$llday}")->sum('money'); foreach($res as $ak=>$val){ foreach($data as $bk=>$v){ $data[$bk][$ak] = $val[$bk]; } } return [ 'data' => $data, ]; } // 一周数据,图表 public function chartData() { $days = []; for($i=-6;$i<=0;$i++){ $days[] = date('Y-m-d',time()+86400*$i); } $where = [ ['tdate','between',[$days[0],$days[6]]], ]; $baseTotalDayField = [ 'sum(reg_total)' => 'reg', 'sum(old_login_total)' => 'login', 'sum(pay_total)' => 'pay', 'tdate' => 'tdate', ]; $baseTotal = Db::connect('db_data_report') ->table('base_total_day_'.date('Y')) ->field($baseTotalDayField) ->where($where) ->group('tdate') ->select()->toArray(); foreach($baseTotal as $v){ $res[$v['tdate']]['reg'] = $v['reg']; $res[$v['tdate']]['pay'] = $v['pay']; $res[$v['tdate']]['login'] = $v['login']; } $costField = [ 'SUM(money)' => 'cost', 'tdate' ]; $temp = Db::connect('db_advert') ->table('media_cost') ->field($costField) ->where($where) ->group('tdate') ->select()->toArray(); foreach($temp as $tmp){ $res[$tmp['tdate']]['cost'] = $tmp['cost']; } foreach($days as $k=>$d){ $data['days'][$k] = $d; $data['reg'][$k] = $res[$d]['reg']??0; $data['pay'][$k] = $res[$d]['pay']??0; $data['cost'][$k] = round($res[$d]['cost']??0); $data['login'][$k]= $res[$d]['login']??0; } return $data; } }