玩家注册 充值玩家下载优化

master
sunke 5 years ago
parent a37c8aa945
commit ff224f4b7d

@ -1760,26 +1760,59 @@ class DownloadController extends BaseController {
public function registerExcelInfo($id,$map) {
$xlsName = "注册明细";
$xlsCell = array(
array('account','玩家账号'),
array('promote_account','推广账号'),
array('device_number','设备IMIE/IDFA'),
array('register_time','注册时间'),
array('register_ip','注册ip'),
array('login_time','登陆时间'),
array('login_ip','登陆ip')
'玩家账号',
'推广账号',
'设备IMIE/IDFA',
'注册时间',
'注册ip',
'登陆时间',
'登陆ip'
);
$model = M('user','tab_');
$data = $model->field('account,device_number,promote_account,register_time,register_ip,login_time,login_ip')->where($map)->order('tab_user.id desc')->select();
$xlsData = [];
foreach ($data as $key1 => $value1) {
$value1['register_time'] = date("Y-m-d H:i:s",$value1['register_time']);
$value1['login_time'] = date("Y-m-d H:i:s",$value1['login_time']);
$value1['account'] = $this->encryption($value1['account']);
$value1['device_number'] = $this->encryption($value1['device_number']);
$xlsData[] = $value1;
$data1 = $model->field('account')->where($map)->order('tab_user.id desc')->select();
$csvFileName = $xlsName.'.csv';
//设置好告诉浏览器要下载excel文件的headers
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="'. $csvFileName .'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
$fp = fopen('php://output', 'a');//打开output流
mb_convert_variables('gb2312', 'UTF-8', $xlsCell);
fputcsv($fp, $xlsCell);//将数据格式化为CSV格式并写入到output流中
$accessNum = '100000';//从数据库获取总量,假设是十万
$accessNum = count($data1)?:0 ;
$perSize = 5000;//每次查询的条数
$pages = ceil($accessNum / $perSize);
for($i = 1; $i <= $pages; $i++) {
$model = M('user','tab_');
$data = $model
->field('account,device_number,promote_account,register_time,register_ip,login_time,login_ip')
->where($map)
->limit(($i-1)*$perSize ,$perSize)
->order('tab_user.id desc')
->select();
foreach($data as $value1) {
$csvData['account'] = $this->encryption($value1['account']);
$csvData['promote_account'] = $value1['promote_account'];
$csvData['device_number'] = $this->encryption($value1['device_number']);
$csvData['register_time'] = date("Y-m-d H:i:s",$value1['register_time']);
$csvData['register_ip'] = $value1['register_ip'];
$csvData['login_time'] = date("Y-m-d H:i:s",$value1['login_time']);
$csvData['login_ip'] = $value1['login_ip'];
mb_convert_variables('GBK', 'UTF-8', $csvData);
fputcsv($fp, $csvData);
}
unset($csvData);
ob_flush();
flush();
}
$this->exportExcel($xlsName, $xlsCell, $xlsData,$id);
fclose($fp);
$this->backSuccessExport($id);
}
//玩家角色excel信息
@ -2892,18 +2925,18 @@ class DownloadController extends BaseController {
public function userRechargeExcelInfo($id,$map) {
$xlsName = "充值玩家";
$xlsCell = array(
array('user_account','玩家账号'),
array('game_name','游戏名称'),
array('server_name','游戏区服'),
array('sdk_version','平台'),
array('role_name','角色名'),
array('role_level','等级'),
array('recharge_cost','充值总额'),
array('recharge_count','充值次数'),
array('recharge_cost_today','昨日充值'),
array('unlogin_day','未登录天数'),
array('play_time','最后登录时间'),
array('promote_account','推广员账号'),
'玩家账号',
'游戏名称',
'游戏区服',
'平台',
'角色名',
'等级',
'充值总额',
'充值次数',
'昨日充值',
'未登录天数',
'最后登录时间',
'推广员账号',
);
$subMap = [];
@ -2957,6 +2990,7 @@ class DownloadController extends BaseController {
unset($map['begintime']);
unset($map['endtime']);
//$spendMap['_string'] = 'uc.game_id = tab_user_play_info.game_id and uc.server_id = tab_user_play_info.server_id and uc.role_id = tab_user_play_info.role_id';
$fieldUC = "sum(uc.recharge_cost) recharge_cost,sum(uc.recharge_count) recharge_count,sum(if(uc.create_time = {$nowTime},uc.recharge_cost,0)) as recharge_cost_today";
$fieldUI = "ui.user_account,ui.game_name,ui.role_name,ui.role_level,ui.server_name,ui.play_time,ui.play_ip,ui.promote_account,ui.sdk_version";
$field = $fieldUC . ',' . $fieldUI;
@ -2975,55 +3009,72 @@ class DownloadController extends BaseController {
->join('left join tab_user_play_info as ui on ui.game_id = uc.game_id and ui.server_id = uc.server_id and ui.role_id = uc.role_id')
->where($map)
->find();
foreach ($roles as $role) {
$records[] = [
'user_account' => empty($role['user_account']) ? '--' : encryption($role['user_account']),
'game_name' => empty($role['game_name']) ? '--' : $role['game_name'],
'role_name' => empty($role['role_name']) ? '--' : $role['role_name'],
'role_id' => empty($role['role_id']) ? '--' : $role['role_id'],
'role_level' => empty($role['role_level']) ? '--' : $role['role_level'],
'server_id' => empty($role['server_id']) ? '--' : $role['server_id'],
'server_name' => empty($role['server_name']) ? '--' : $role['server_name'],
'recharge_cost' => empty($role['recharge_cost']) ? 0 : $role['recharge_cost'],
'recharge_count' => empty($role['recharge_count']) ? 0 : $role['recharge_count'],
'recharge_cost_today' => empty($role['recharge_cost_today']) ? 0 : $role['recharge_cost_today'],
'play_time' => empty($role['play_time']) ? '--' : $role['play_time'],
'play_ip' => empty($role['play_ip']) ? '--' : $role['play_ip'],
'promote_id' => empty($role['promote_id']) ? '--' : $role['promote_id'],
'promote_account' => empty($role['promote_account']) ? '--' : $role['promote_account'],
'sdk_version' => empty($role['sdk_version']) ? '--' : $role['sdk_version'],
'unlogin_day' => empty($role['play_time']) ? '--' : intval((strtotime(date('Y-m-d 00:00:00')) - strtotime(date('Y-m-d 00:00:00', $role['play_time']))) / (24 * 3600))
];
}
$csvFileName = $xlsName.'.csv';
//设置好告诉浏览器要下载excel文件的headers
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="'. $csvFileName .'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
$fp = fopen('php://output', 'a');//打开output流
mb_convert_variables('gb2312', 'UTF-8', $xlsCell);
fputcsv($fp, $xlsCell);//将数据格式化为CSV格式并写入到output流中
$accessNum = '100000';//从数据库获取总量,假设是十万
$accessNum = count($roles)?:0 ;
$perSize = 5000;//每次查询的条数
$pages = ceil($accessNum / $perSize);
for($i = 1; $i <= $pages; $i++) {
$data = M()->alias('record')
->table($subQuery)
->limit(($i-1)*$perSize ,$perSize)
->select();
foreach($data as $key => $value) {
$csvData['user_account'] = empty($value['user_account']) ? '--' : encryption($value['user_account']);
$csvData['game_name'] = empty($value['game_name']) ? '--' :$value['game_name'];
$csvData['server_name'] = empty($value['server_name']) ? '--' :$value['server_name'];
if($value['sdk_version'] == 1) {
$csvData['sdk_version'] = "Android";
}else if($value['sdk_version'] == 2) {
$csvData['sdk_version'] = "ios";
} else {
$csvData['sdk_version'] = "--";
}
$csvData['role_name'] = empty($value['role_name']) ? '--' :$value['role_name'];
$csvData['role_level'] = empty($value['role_level']) ? '--' :$value['role_level'];
$csvData['recharge_cost'] = empty($value['recharge_cost']) ? 0 : $value['recharge_cost'];
$csvData['recharge_count'] = empty($value['recharge_count']) ? 0 : $value['recharge_count'];
$csvData['recharge_cost_today'] = empty($value['recharge_cost_today']) ? 0 : $value['recharge_cost_today'];
$csvData['unlogin_day'] = empty($value['play_time']) ? '--' : intval((strtotime(date('Y-m-d 00:00:00')) - strtotime(date('Y-m-d 00:00:00', $value['play_time']))) / (24 * 3600));
$csvData['play_time'] = empty($value['play_time']) ? '--' :date('Y-m-d H:i:s',$value['play_time']);
$csvData['promote_account'] = empty($value['promote_account']) ? '--' :$value['promote_account'];
mb_convert_variables('GBK', 'UTF-8', $csvData);
fputcsv($fp, $csvData);
$xlsData[] = $csvData;
}
unset($xlsData);
ob_flush();
flush();
}
$allData['user_account'] = '合计';
$allData['game_name'] = '--';
$allData['server_name'] = '--';
$allData['sdk_version'] = '--';
$allData['role_name'] = '--';
$allData['role_id'] = '--';
$allData['role_level'] = '--';
$allData['server_id'] = '--';
$allData['server_name'] = '--';
$allData['recharge_cost'] = $total['recharge_cost'];
$allData['recharge_count'] = $total['recharge_count'];
$allData['recharge_cost_today'] = $total['recharge_cost_today'];
$allData['unlogin_day'] = '--';
$allData['play_time'] = '--';
$allData['play_ip'] = '--';
$allData['promote_id'] = '--';
$allData['promote_account'] = '--';
$allData['sdk_version'] = '--';
$allData['unlogin_day'] = '--';
$xlsData = [];
foreach ($records as $key1 => $value1) {
$value1['user_account'] = $this->encryption($value1['user_account']);
$value1['play_time'] = date('Y-m-d H:i:s',$value1['play_time']);
if($value1['sdk_version'] == 1) {
$value1['sdk_version'] = "Android";
}else {
$value1['sdk_version'] = "ios";
}
$xlsData[] = $value1;
}
mb_convert_variables('GBK', 'UTF-8', $allData);
fputcsv($fp, $allData);
$xlsData[] = $allData;
$this->exportExcel($xlsName, $xlsCell, $xlsData,$id);
fclose($fp);
$this->backSuccessExport($id);
}
public function rechargeExcelInfo($id,$map) {

Loading…
Cancel
Save