diff --git a/Application/Admin/Controller/StatController.class.php b/Application/Admin/Controller/StatController.class.php index 856e8c242..fad630ebd 100644 --- a/Application/Admin/Controller/StatController.class.php +++ b/Application/Admin/Controller/StatController.class.php @@ -123,6 +123,8 @@ class StatController extends ThinkController */ public function userretention($p = 0) { + echo "暂不开放"; + die(); $request=$_REQUEST; $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 diff --git a/Application/Home/Controller/QueryController.class.php b/Application/Home/Controller/QueryController.class.php index 285c7416a..0ef5f6fda 100644 --- a/Application/Home/Controller/QueryController.class.php +++ b/Application/Home/Controller/QueryController.class.php @@ -1036,12 +1036,14 @@ class QueryController extends BaseController $childPromoteIds = getAllChildPromoteList(3); if (empty($childPromoteIds)) { $userPlayInfoWhere['tab_user_play_info.promote_id'] = PID; + $userPlayInfoWhere2['ti.promote_id'] = PID; $userGameLoginWhere['tab_user_game_login_record.promote_id'] = PID; $spendWhere['tab_spend.promote_id'] = PID; } else { $childPromoteIds .= ',' . PID; $userPlayInfoWhere['tab_user_play_info.promote_id'] = ['in', $childPromoteIds]; + $userPlayInfoWhere2['ti.promote_id'] = ['in', $childPromoteIds]; $userGameLoginWhere['tab_user_game_login_record.promote_id'] = ['in', $childPromoteIds]; $spendWhere['tab_spend.promote_id'] = ['in', $childPromoteIds]; } @@ -1056,12 +1058,14 @@ class QueryController extends BaseController $childPromoteIds = getAllChildPromoteList(3, $teamLeaderId); if (empty($childPromoteIds)) { $userPlayInfoWhere['tab_user_play_info.promote_id'] = $teamLeaderId; + $userPlayInfoWhere2['ti.promote_id'] = $teamLeaderId; $userGameLoginWhere['tab_user_game_login_record.promote_id'] = $teamLeaderId; $spendWhere['tab_spend.promote_id'] = $teamLeaderId; } else { $childPromoteIds = $teamLeaderId . ',' . $childPromoteIds; $userPlayInfoWhere['tab_user_play_info.promote_id'] = ['in', $childPromoteIds]; + $userPlayInfoWhere2['ti.promote_id'] = ['in', $childPromoteIds]; $userGameLoginWhere['tab_user_game_login_record.promote_id'] = ['in', $childPromoteIds]; $spendWhere['tab_spend.promote_id'] = ['in', $childPromoteIds]; } @@ -1075,12 +1079,14 @@ class QueryController extends BaseController } $userPlayInfoWhere['tab_user_play_info.promote_id'] = $promoteId; + $userPlayInfoWhere2['ti.promote_id'] = $promoteId; $userGameLoginWhere['tab_user_game_login_record.promote_id'] = $promoteId; $spendWhere['tab_spend.promote_id'] = $promoteId; } if (!empty(I('own_id'))) { $userPlayInfoWhere['tab_user_play_info.promote_id'] = I('own_id'); + $userPlayInfoWhere2['ti.promote_id'] = I('own_id'); $userGameLoginWhere['tab_user_game_login_record.promote_id'] = I('own_id'); $spendWhere['tab_spend.promote_id'] = I('own_id'); } @@ -1094,6 +1100,7 @@ class QueryController extends BaseController if (!empty(I('sdk_version'))) { $userPlayInfoWhere['tab_user_play_info.sdk_version'] = I('sdk_version'); + $userPlayInfoWhere2['ti.sdk_version'] = I('sdk_version'); $userGameLoginWhere['tab_user_game_login_record.sdk_version'] = I('sdk_version'); $spendWhere['tab_spend.sdk_version'] = I('sdk_version'); } @@ -1111,6 +1118,7 @@ class QueryController extends BaseController $spendWhere['tab_spend.pay_status'] = 1; if (!empty(I('server_id'))) { $userPlayInfoWhere['tab_user_play_info.server_id'] = I('server_id'); + $userPlayInfoWhere2['ti.server_id'] = I('server_id'); $userGameLoginWhere['tab_user_game_login_record.server_id'] = I('server_id'); $spendWhere['tab_spend.server_id'] = I('server_id'); } @@ -1135,7 +1143,6 @@ class QueryController extends BaseController $allData['spend_voucher'] = 0; foreach ($data as &$list) { $thisDateTime = strtotime($list['day']); - $userPlayInfoWhere2 = $userPlayInfoWhere; $userPlayInfoWhere['tab_user_play_info.create_time'] = ['between', [$thisDateTime, $thisDateTime + 86399]]; $userGameLoginWhere['tab_user_game_login_record.login_time'] = ['between', [$thisDateTime, $thisDateTime + 86399]]; $spendWhere['tab_spend.pay_time'] = ['between', [$thisDateTime, $thisDateTime + 86399]]; @@ -1153,35 +1160,53 @@ class QueryController extends BaseController ->group('tab_user_play_info.game_id,tab_user_play_info.user_id') ->select());//创角用户 + $newUserNumSql = $userPlayInfoModel + ->table('tab_user_play_info as ti') + ->where($userPlayInfoWhere2) + ->where('ti.user_id = tab_user_play_info.user_id and ti.game_id = tab_user_play_info.game_id and ti.create_time < ' . $thisDateTime) + ->fetchSql(true) + ->count(); $newUserNumData = $userPlayInfoModel - ->field('tab_user_play_info.create_time') + ->field('tab_user_play_info.create_time,(' . $newUserNumSql . ') as num') ->join($join) - ->where($userPlayInfoWhere2) + ->where($userPlayInfoWhere) ->where($map) ->group('tab_user_play_info.user_id') - ->having('tab_user_play_info.create_time between ' . $thisDateTime . ' and ' . ($thisDateTime + 86399)) + ->having('num = 0') ->order('tab_user_play_info.id') ->select(); $list['new_user_num'] = count($newUserNumData);//新创角用户 + $newDeviceSql = $userPlayInfoModel + ->table('tab_user_play_info as ti') + ->where($userPlayInfoWhere2) + ->where('ti.create_device_number = tab_user_play_info.create_device_number and ti.game_id = tab_user_play_info.game_id and ti.create_time < ' . $thisDateTime) + ->fetchSql(true) + ->count(); $newDeviceData = $userPlayInfoModel - ->field('tab_user_play_info.create_time') + ->field('tab_user_play_info.create_time,(' . $newDeviceSql . ') as num') ->join($join) - ->where($userPlayInfoWhere2) + ->where($userPlayInfoWhere) ->where($map) ->group('tab_user_play_info.create_device_number') - ->having('tab_user_play_info.create_time between ' . $thisDateTime . ' and ' . ($thisDateTime + 86399)) + ->having('num = 0') ->order('tab_user_play_info.id') ->select(); $list['new_device_num'] = count($newDeviceData);//新创角设备 + $newIpNumSql = $userPlayInfoModel + ->table('tab_user_play_info as ti') + ->where($userPlayInfoWhere2) + ->where('ti.create_ip = tab_user_play_info.create_ip and ti.game_id = tab_user_play_info.game_id and ti.create_time < ' . $thisDateTime) + ->fetchSql(true) + ->count(); $newIpNumData = $userPlayInfoModel - ->field('tab_user_play_info.create_time') + ->field('tab_user_play_info.create_time,(' . $newIpNumSql . ') as num') ->join($join) - ->where($userPlayInfoWhere2) + ->where($userPlayInfoWhere) ->where($map) ->group('tab_user_play_info.create_ip') - ->having('tab_user_play_info.create_time between ' . $thisDateTime . ' and ' . ($thisDateTime + 86399)) + ->having('num = 0') ->order('tab_user_play_info.id') ->select(); $list['new_ip_num'] = count($newIpNumData);//新增创角IP @@ -1480,9 +1505,10 @@ class QueryController extends BaseController ->select(); $list['new_ip_num'] = count($newIpData);//新增创角IP - $list['login_user_num'] = $userGameLoginModel + $list['login_user_num'] = count($userGameLoginModel ->where($userGameLoginMap) - ->count('distinct tab_user_game_login_record.user_id');//登录用户数 + ->group('tab_user_game_login_record.game_id,tab_user_game_login_record.user_id') + ->select());//登录用户数 $list['spend_user_num'] = $spendModel ->where($spendMap) @@ -2010,7 +2036,7 @@ class QueryController extends BaseController $subMap['pay_status'] = 1; $subMap['pay_game_status'] = 1; $subQuery = M('spend', 'tab_')->field('game_player_id')->where($subMap)->group('game_player_id')->having($having)->buildSql(); - $map['_string'] = 'role_id in ('. $subQuery . ')'; + $map['_string'] = 'role_id in (' . $subQuery . ')'; } $query = M('user_play_info', 'tab_')->where($map)->order('play_time desc'); list($roles, $pagination, $count) = $this->paginate($query);