date = $date; $this->table = $this->table . "_" . date('Y', strtotime($this->date)); try { $this->initStart(); }catch (\Exception $e){ return json_encode(["status"=>"error", "msg"=>$e->getMessage()], 256); } } return json_encode(["status"=>"success", "msg"=>""], 256); } protected function initStart(): void { // 重置数据 $this->data = []; $this->regData(); $this->loginData(); $this->oldLoginData(); $this->payRegData(); $this->payTotalData(); $this->roleCreateData(); $this->siteAuth(); $this->replaceData(); } protected function regData() { $regTotalTb = "basic_reg_total_" . date('Y', strtotime($this->date)); $filed = "{$this->group}, sum(reg_count) as reg_total, sum(login_count) as reg_login_total"; $where = ['tdate' => $this->date]; $result = Db::connect('db_data_report')->table($regTotalTb)->field($filed)->where($where)->group($this->group)->select(); $this->pushData($result); } protected function loginData() { $loginGameTb = "basic_login_total_game_" . date('Y', strtotime($this->date)); $filed = "{$this->group},sum(login_count) as login_total"; $where = ['tdate' => $this->date]; $result = Db::connect('db_data_report')->table($loginGameTb)->field($filed)->where($where)->group($this->group)->select(); $this->pushData($result); } protected function oldLoginData() { $loginGameTb = "basic_login_total_game_" . date('Y', strtotime($this->date)); $filed = "{$this->group},sum(login_count) as old_login_total"; $where = [ 'tdate' => $this->date, ['active', '>', 0] ]; $result = Db::connect('db_data_report')->table($loginGameTb)->field($filed)->where($where)->group('agent_id,site_id,game_id')->select(); $this->pushData($result); } // 付费统计 - 当天注册 protected function payRegData() { $tb = "sdk_order_success"; $sDate = "{$this->date} 00:00:00"; $eDate = "{$this->date} 23:59:59"; $filed = "{$this->group}, sum(money) as reg_pay_total, sum(paid_amount) as reg_pay_amount, count(distinct user_name) as reg_pay_num"; $where = [ ['reg_date', 'between', [$sDate, $eDate]], ['pay_date', 'between', [$sDate, $eDate]], ]; $result = Db::connect('db_game_log')->table($tb)->field($filed)->where($where)->group($this->group)->select(); $this->pushData($result); } // 付费统计 - 总 protected function payTotalData(): void { $tb = "sdk_order_success"; $sDate = "{$this->date} 00:00:00"; $eDate = "{$this->date} 23:59:59"; $filed = "{$this->group}, sum(money) as pay_total, sum(paid_amount) as pay_amount, count(distinct user_name) as pay_num"; $where = [ ['pay_date', 'between', [$sDate, $eDate]], ]; $result = Db::connect('db_game_log')->table($tb)->field($filed)->where($where)->group($this->group)->select(); $this->pushData($result); } /** * role_create_user 创建角色用户数 */ protected function roleCreateData(): void { $sTime = $this->date . " 00:00:00"; $eTime = $this->date . " 23:59:59"; $filed = "{$this->group}, COUNT(DISTINCT uid) as role_create_user"; $where = [ ['create_time', 'between', [$sTime, $eTime]], ]; // 安卓 $result = Db::connect('db_game_log')->table("role_data_and")->field($filed)->where($where)->group($this->group)->select(); $this->pushData($result); // iOS $result = Db::connect('db_game_log')->table("role_data_ios")->field($filed)->where($where)->group($this->group)->select(); $this->pushData($result); } protected function siteAuth(): void { $agentList = Db::connect('db_advert')->table("agent")->column("id, media_id, auth_id"); $agentListMap = array_column($agentList, null, "id"); if($this->data){ foreach ($this->data as &$item){ $item['auth_id'] = $agentListMap[$item['agent_id']]['auth_id'] ?? 0; // 负责人 $item['media_id'] = $agentListMap[$item['agent_id']]['media_id'] ?? 0; // 媒体 } } } protected function replaceData(): bool { // 先删除,再写入 Db::connect('db_data_report')->table($this->table)->where(['tdate' => $this->date])->delete(); return Db::connect('db_data_report')->table($this->table)->insertAll($this->data) !== false; } protected function pushData($rows): void { if ($rows) { foreach ($rows as $row) { $groupArr = explode(',', $this->group); $uniqueKey = ""; foreach ($groupArr as $groupKey){ $uniqueKey .= $row[$groupKey] . "-"; } foreach ($row as $k => $v) { $this->data[$uniqueKey][$k] = !empty($this->data[$uniqueKey][$k]) ? $this->data[$uniqueKey][$k] + $v :$v; } } } } }