diff --git a/Application/Admin/Common/extend.php b/Application/Admin/Common/extend.php index 9281b6a0c..14903a25e 100644 --- a/Application/Admin/Common/extend.php +++ b/Application/Admin/Common/extend.php @@ -1064,7 +1064,7 @@ function get_promote_parent($promote_id,$field='account'){ function get_promote_parent_acc($promote_id){ $Promote = M('promote','tab_'); - $data = $Promote->field('account,parent_id')->find($promote_id); + $data = $Promote->field('account,parent_id,chain')->find($promote_id); if(empty($data)){ return $data["account"]="官方渠道";exit; diff --git a/Application/Admin/Controller/AutoController.class.php b/Application/Admin/Controller/AutoController.class.php index b442ad320..8bdd063ae 100644 --- a/Application/Admin/Controller/AutoController.class.php +++ b/Application/Admin/Controller/AutoController.class.php @@ -894,27 +894,54 @@ public function auto_rrdae(){ public function userPlayDataCount() { $time = strtotime(date('Y-m-d 00:00:00', time() - (3600 * 24))); - $spendMap['pay_status'] = 1; - $spendMap['pay_game_status'] = 1; - $spendMap['game_player_id'] = ['gt', 0]; - $spendMap['pay_time'] = ['between', [$time, strtotime(date('Y-m-d 23:59:59', $time))]]; - - $field = 'FROM_UNIXTIME(pay_time, "%Y-%m-%d") as day,game_id,server_id,game_player_id,sum(pay_amount) as recharge_cost,count(id) as recharge_count'; - $spendCostData = M('spend', 'tab_')->field($field) - ->where($spendMap) - ->group('day,game_player_id,server_id,game_id') - ->select(); + $res = M('user_play_data_count', 'tab_')->where(array('create_time' => $time))->find(); + if (empty($res)) { + $map['pay_time'] = ['between', [$time, strtotime(date('Y-m-d 23:59:59', $time))]]; + + $this->userPlayDataCountByMap($map); + } + } - $data = []; - foreach ($spendCostData as $list) { - $save['game_id'] = $list['game_id']; - $save['server_id'] = $list['server_id']; - $save['role_id'] = $list['game_player_id']; - $save['recharge_cost'] = $list['recharge_cost']; - $save['recharge_count'] = $list['recharge_count']; - $save['create_time'] = strtotime($list['day']); - $data[] = $save; + //根据时间统计玩家充值--初始化 + public function userPlayDataCountInitial() + { + $res = M('user_play_data_count', 'tab_')->order('id asc')->find(); + if (empty($res)) { + $time = strtotime(date('Y-m-d 00:00:00', time())); + $map['pay_time'] = ['lt', $time]; + + $this->userPlayDataCountByMap($map); + echo '初始化成功'; + } else { + echo '表存在记录,无法初始化'; + } + } + + private function userPlayDataCountByMap($map) + { + if (isset($map['pay_time'])) { + $map['pay_status'] = 1; + $map['pay_game_status'] = 1; + $map['game_player_id'] = ['gt', 0]; + $field = 'FROM_UNIXTIME(pay_time, "%Y-%m-%d") as day,game_id,server_id,game_player_id,sum(pay_amount) as recharge_cost,count(id) as recharge_count'; + $spendData = M('spend', 'tab_')->field($field) + ->where($map) + ->group('day,game_player_id,server_id,game_id') + ->select(); + + if (!empty($spendData)) { + $data = []; + foreach ($spendData as $list) { + $save['game_id'] = $list['game_id']; + $save['server_id'] = $list['server_id']; + $save['role_id'] = $list['game_player_id']; + $save['recharge_cost'] = $list['recharge_cost']; + $save['recharge_count'] = $list['recharge_count']; + $save['create_time'] = strtotime($list['day']); + $data[] = $save; + } + M('user_play_data_count', 'tab_')->addAll($data); + } } - M('user_play_data_count', 'tab_')->addAll($data); } } diff --git a/Application/Admin/Controller/ExportController.class.php b/Application/Admin/Controller/ExportController.class.php index 9f99ad237..23c9627ab 100644 --- a/Application/Admin/Controller/ExportController.class.php +++ b/Application/Admin/Controller/ExportController.class.php @@ -5,6 +5,17 @@ use Think\Controller; class ExportController extends Controller { + + /** + * ExportController constructor. + */ + public function __construct() + { + parent::__construct(); + set_time_limit(0); + ini_set('memory_limit', '512M'); + } + public function exportExcel($expTitle, $expCellName, $expTableData) { $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称 @@ -186,185 +197,335 @@ class ExportController extends Controller break; case 3: if($_REQUEST['type']==2){ - $xlsCell = array( - array('id', L('Account_number_ID')), - array('register_type', L('Third_party_source'), "get_registertype", '*'), - array('account', "玩家账号"), - array('promote_account', L('Subordinate_channel')), - array('balance', "账户平台币"), - array('recharge_total', "累计充值"), - array('gold_coin', "金币"), - array('alipay', "绑定支付宝"), - array('small_count', "小号"), - array('vip_level', "VIP等级"), - array('register_time', L('Registration_time'), 'time_format', '*'), - array('login_time', "最后登录时间", 'time_format', '*'), - array('register_ip', L('Register_iP')), - array('lock_status', L('Account_status'), 'get_info_status', '*', '4'), - ); +// $xlsCell = array( +// array('id', L('Account_number_ID')), +// array('register_type', L('Third_party_source'), "get_registertype", '*'), +// array('account', "玩家账号"), +// array('promote_account', L('Subordinate_channel')), +// array('balance', "账户平台币"), +// array('recharge_total', "累计充值"), +// array('gold_coin', "金币"), +// array('alipay', "绑定支付宝"), +// array('small_count', "小号"), +// array('vip_level', "VIP等级"), +// array('register_time', L('Registration_time'), 'time_format', '*'), +// array('login_time', "最后登录时间", 'time_format', '*'), +// array('register_ip', L('Register_iP')), +// array('lock_status', L('Account_status'), 'get_info_status', '*', '4'), +// ); + $field = 'a.id,a.account,a.id as get_registertype,a.promote_account,a.balance,IFNULL(sum(ss.pay_amount),0) as recharge_total, + a.gold_coin,a.alipay,a.id as small_count,a.id as vip_level,a.register_type,a.register_time + ,a.register_ip,a.login_time,a.device_number,a.lock_status,check_status,a.age_status,a.register_way, + a.register_type'; + $xlsCell = [L('Account_number_ID'),"第三方来源","绑定账号",L('Subordinate_channel'), "账户平台币" + , "累计充值", "金币", "绑定支付宝", "小号", "VIP等级", L('Registration_time'), + L('Register_iP'), "最后登录时间","设备号", L('Account_status'),"拉黑状态"]; $map['tab_user.register_type']= ['in','3,4,5,6']; }else{ - $xlsCell = array( - array('id', L('Account_number_ID')), - array('account', "玩家账号"), - array('promote_account', L('Subordinate_channel')), - array('balance', "账户平台币"), - array('recharge_total', "累计充值"), - array('gold_coin', "金币"), - array('alipay', "绑定支付宝"), - array('small_count', "小号"), - array('vip_level', "VIP等级"), - array('register_type', "注册方式"), - array('register_time', L('Registration_time'), 'time_format', '*'), - array('login_time', "最后登录时间", 'time_format', '*'), - array('register_ip', L('Register_iP')), - array('lock_status', L('Account_status'), 'get_info_status', '*', '4'), - ); +// $xlsCell = array( +// array('id', L('Account_number_ID')), +// array('account', "玩家账号"), +// array('promote_account', L('Subordinate_channel')), +// array('balance', "账户平台币"), +// array('recharge_total', "累计充值"), +// array('gold_coin', "金币"), +// array('alipay', "绑定支付宝"), +// array('small_count', "小号"), +// array('vip_level', "VIP等级"), +// array('register_type', "注册方式"), +// array('register_time', L('Registration_time'), 'time_format', '*'), +// array('login_time', "最后登录时间", 'time_format', '*'), +// array('register_ip', L('Register_iP')), +// array('lock_status', L('Account_status'), 'get_info_status', '*', '4'), +// ); + $field = 'a.id,a.account,a.promote_account,a.balance,IFNULL(sum(ss.pay_amount),0) as recharge_total, + a.gold_coin,a.alipay,a.id as small_count,a.id as vip_level,a.register_type,a.register_time + ,a.register_ip,a.login_time,a.device_number,a.lock_status,check_status,a.age_status,a.register_way, + a.register_type'; + $xlsCell = [L('Account_number_ID'),"玩家账号",L('Subordinate_channel'), "账户平台币" + , "累计充值", "金币", "绑定支付宝", "小号", "VIP等级", "注册方式", L('Registration_time'), + L('Register_iP'), "最后登录时间","设备号", L('Account_status'),"拉黑状态"]; $map['tab_user.register_type']=['in','1,2']; $map['tab_user.register_type']=['in','0,1,2,7']; } - if (isset($_REQUEST['user_id'])) { - $map['tab_user.id'] = $_REQUEST['user_id']; - unset($_REQUEST['user_id']); - } - - if (isset($_REQUEST['device_number'])) { - $map['tab_user.device_number'] = $_REQUEST['device_number']; - unset($_REQUEST['device_number']); - } + $hav = ''; if ($_REQUEST['promote_id'] != '') { - if($_REQUEST['promote_id']=='UC'){ - $map['tab_user.promote_account'] = 'UC用户'; - } else if ($_REQUEST['promote_id']==0) { - $map['tab_user.promote_id'] = 0; - } else{ + if ($_REQUEST['promote_id'] == 'UC') { + $maps['tab_user.promote_account'] = 'UC用户'; + $hav .= "tab_user.promote_account = 'UC用户' "; + } else if ($_REQUEST['promote_id'] == 0) { + $maps['tab_user.promote_id'] = 0; + $hav .= "tab_user.promote_id = 0"; + } else { $promoter_ids = D("Promote")->where("chain like '%/{$_REQUEST['promote_id']}/%' or id={$_REQUEST['promote_id']}")->field('id')->select(); if ($promoter_ids) { - $map['tab_user.promote_id'] = ['in', implode(',', array_column($promoter_ids, 'id'))]; + $maps['tab_user.promote_id'] = ['in', implode(',', array_column($promoter_ids, 'id'))]; + $hav .= "tab_user.promote_id in (" . implode(',', array_column($promoter_ids, 'id')) . ") "; $spendprom = " AND ss.promote_id IN (" . implode(',', array_column($promoter_ids, 'id')) . ") "; } } } - $game_map = ""; - if (isset($_REQUEST['game_name'])) { - $game_map .= " and tab_user_play.game_id in (".implode(',', array_column(getGameByName($_REQUEST['game_name'], $_REQUEST['game_type']), 'id')).")"; - } - $game_play_map = ''; - if (isset($_REQUEST['server_name'])) { - $game_play_map .= " and tab_user_play_info.server_name = '{$_REQUEST['server_name']}' "; - } - // if (isset($_REQUEST['promote_account'])) { - // $map['promote_id'] = get_promote_id(trim(I('promote_account'))); - // unset($_REQUEST['promote_account']); - // } - if (isset($_REQUEST['register_way'])) { - if($_REQUEST['type']==1) { + if (I('type', 1) == 1) { + if (isset($_GET['register_way'])) { if ($_GET['register_way'] == 1) { - empty($hav) || $hav .= ' AND '; - $hav .= ' tab_user.register_type in (0,1)'; - $maps['tab_user.register_type'] = ['in',[0,1]]; - } elseif($_GET['register_way'] == 7){ - empty($hav) || $hav .= ' AND '; - $hav .= ' tab_user.register_type in(7)'; - $maps['tab_user.register_type'] = 7; - }else { - empty($hav) || $hav .= ' AND '; - $hav .= ' tab_user.register_type in(2)'; - $maps['tab_user.register_type'] = 2; + empty($hav) || $hav .= ' AND '; + $hav .= ' tab_user.register_type in (1)'; + $maps['tab_user.register_type'] = 1; + } elseif ($_GET['register_way'] == 7) { + empty($hav) || $hav .= ' AND '; + $hav .= ' tab_user.register_type in(7)'; + $maps['tab_user.register_type'] = 7; + } else { + empty($hav) || $hav .= ' AND '; + $hav .= ' tab_user.register_type in(2)'; + $maps['tab_user.register_type'] = 2; } } else { - $map['register_way'] = I('register_way'); - unset($_REQUEST['register_way']); + empty($hav) || $hav .= ' AND '; + $hav .= ' tab_user.register_type in (1,2,7)'; + $maps['tab_user.register_type'] = ['in', [1, 2, 7]]; + } + } else { + if (isset($_GET['register_type'])) { + empty($hav) || $hav .= ' AND '; + $hav .= ' tab_user.register_type = ' . $_GET['register_type']; + $maps['tab_user.register_type'] = $_GET['register_type']; + + } else { + empty($hav) || $hav .= ' AND '; + $hav .= ' tab_user.register_type in (0,3,4,5,6)'; + $maps['tab_user.register_type'] = ['in', [0, 3, 4, 5, 6]]; } } - if (isset($_REQUEST['register_type'])) { - $map['register_type'] = I('register_type'); - unset($_REQUEST['register_type']); + + if (isset($_REQUEST['user_id'])) { + empty($hav) || $hav .= ' AND '; + $hav .= "tab_user.id = '{$_REQUEST['user_id']}'"; + $maps['tab_user.id'] = $_REQUEST['user_id']; + unset($_REQUEST['user_id']); } - if (isset($_REQUEST['status'])) { - $map['lock_status'] = I('status'); - unset($_REQUEST['status']); + + if (isset($_REQUEST['account'])) { + empty($hav) || $hav .= ' AND '; + $hav .= "tab_user.account like '%" . I('account') . "%'"; + $maps['tab_user.account'] = ['like', "%" . I('account') . "%"]; + unset($_REQUEST['account']); } - if (!empty(I('time_start')) && !empty(I('time_end'))) { - $map['register_time'] = array('BETWEEN', array(strtotime(I('get.time_start')), strtotime(I('time_end')) + 24 * 60 * 60 - 1)); + if (isset($_REQUEST['device_number'])) { + empty($hav) || $hav .= ' AND '; + $hav .= "tab_user.device_number = '{$_REQUEST['device_number']}'"; + $maps['tab_user.device_number'] = $_REQUEST['device_number']; + unset($_REQUEST['device_number']); + } + if (isset($_REQUEST['age_status'])) { + empty($hav) || $hav .= ' AND '; + $hav .= 'tab_user.age_status =' . I('age_status'); + $maps['tab_user.age_status'] = I('age_status'); + unset($_REQUEST['age_status']); + } + if (isset($_REQUEST['time_start']) && isset($_REQUEST['time_end'])) { + empty($hav) || $hav .= ' AND '; + $hav .= 'tab_user.register_time BETWEEN ' . strtotime(I('time_start')) . ' AND ' . (strtotime(I('time_end')) + 24 * 60 * 60 - 1); + $maps['tab_user.register_time'] = ['between', [strtotime(I('time_start')), strtotime(I('time_end')) + 86399]]; + unset($_REQUEST['time_start']); + unset($_REQUEST['time_end']); + } elseif (isset($_REQUEST['time_start'])) { + empty($hav) || $hav .= ' AND '; + $hav .= 'tab_user.register_time > ' . strtotime(I('time_start')); + $maps['tab_user.register_time'] = ['GT', strtotime(I('time_start'))]; unset($_REQUEST['time_start']); + } elseif (isset($_REQUEST['time_end'])) { + empty($hav) || $hav .= ' AND '; + $hav .= 'tab_user.register_time < ' . (strtotime(I('time_end')) + 86399); + $maps['tab_user.register_time'] = ['LT', strtotime(I('time_end')) + 86399]; unset($_REQUEST['time_end']); } - empty(I('account')) || $map['account'] = ['like', '%' . I('account') . '%']; - //排序 - if (I('total_status') == 1) { - $order = 'cumulative asc'; - } elseif (I('total_status') == 2) { - $order = 'cumulative desc'; - } else { - $order = 'id desc'; + if (isset($_REQUEST['start']) && isset($_REQUEST['end'])) { + empty($hav) || $hav .= ' AND '; + $hav .= 'tab_user.register_time BETWEEN ' . strtotime(I('start')) . ' AND ' . strtotime(I('end')); + $maps['tab_user.register_time'] = array('between', [strtotime(I('start')), strtotime(I('end'))]); + unset($_REQUEST['start']); + unset($_REQUEST['end']); + } + if (!empty(I('line_day'))) { + $day = strtotime(date('Y-m-d')) - intval(I('line_day')) * 86400; + empty($hav) || $hav .= ' AND '; + $hav .= $day . '> tab_user.login_time'; + $maps['tab_user.login_time'] = ['lt', $day]; + } + if (isset($_REQUEST['status'])) { + $map['lock_status'] = $_REQUEST['status']; + unset($_REQUEST['status']); + } + + + // if (isset($_REQUEST['game_name'])) { + // //$game_map .= " and tab_user_play.game_id in (" . implode(',', array_column(getGameByName($_REQUEST['game_name'], $_REQUEST['game_type']), 'id')) . ")"; + // } + $spendprom = " and ss.game_id in (".implode(',', array_column(getGameByName($_REQUEST['game_name'], $_REQUEST['game_type']), 'id')).")"; + if (isset($_REQUEST['server_name'])) { + $map['server_name'] = ['like', "{$_REQUEST['server_name']}%"]; } if (isset($_REQUEST['viplevel'])) { - $havs = get_vip_level_limit('recharge_total',$_REQUEST['viplevel']); + $havs = get_vip_level_limit('recharge_total', $_REQUEST['viplevel']); + } + + //排序 + $order = ''; + if (I('key') == 1) { + if (I('balance_status') == 1) { + $order = 'balance,'; + } elseif (I('balance_status') == 2) { + $order = 'balance desc,'; + } + } else { + if (I('recharge_status') == 1) { + $order .= 'recharge_total,'; + } elseif (I('recharge_status') == 2) { + $order .= 'recharge_total desc,'; + } } + $order .= 'a.id desc'; - $map['puid'] = array('eq',0); + $user = M('user', 'tab_'); + $map['puid'] = array('eq', 0); $map['is_platform'] = 0; - if($_REQUEST['promote_id'] && $_REQUEST['promote_id'] > -1){ - $xlsData = M('user', 'tab_')->field('tab_user.id,tab_user.age_status,tab_user.account,tab_user.gold_coin,tab_user.alipay,tab_user.balance,tab_user.promote_account,register_time,tab_user.lock_status,tab_user.register_way,tab_user.register_type,tab_user.register_ip,tab_user.login_time,IFNULL(sum(ss.pay_amount),0) AS recharge_total') - ->join('left join tab_spend as ss on ss.user_id=tab_user.id AND ss.pay_status = 1'.$spendprom) - ->join($game_map ? "tab_user_play on tab_user_play.user_id = tab_user.id $game_map" : false) - ->join($game_play_map ? "tab_user_play_info on tab_user_play_info.user_id = tab_user.id $game_play_map" : false) + + $usermodel = M('user', 'tab_'); + $sql1 = $usermodel->field('tab_user.*,IFNULL(sum(b.pay_amount),0) as deposit_total') + ->join('left join tab_deposit AS b ON tab_user.id = b.user_id AND b.pay_status = 1') ->where($map) ->group('tab_user.id') - ->order($order) - ->having($havs) - ->select(); - }else{ - $xlsData = M('user', 'tab_')->field('tab_user.id,tab_user.age_status,tab_user.account,tab_user.gold_coin,tab_user.alipay,tab_user.balance,tab_user.promote_account,register_time,tab_user.lock_status,tab_user.register_way,tab_user.register_type,tab_user.register_ip,tab_user.login_time,IFNULL(sum(ss.pay_amount),0) AS recharge_total') - ->join('left join tab_spend as ss on ss.user_id=tab_user.id AND ss.pay_status = 1') - ->join($game_map ? "tab_user_play on tab_user_play.user_id = tab_user.id $game_map" : false) - ->join($game_play_map ? "tab_user_play_info on tab_user_play_info.user_id = tab_user.id $game_play_map" : false) + ->where($hav) + // ->order($order) + ->select(false); + + set_time_limit(0); +// $columns = [ +// '序号ID', '姓名', '电话', +// ]; + + $fileName = '导出.xlsx'; + $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('GBK', 'UTF-8', $xlsCell); + fputcsv($fp, $xlsCell);//将数据格式化为CSV格式并写入到output流中 + + $accessNum = '100000';//从数据库获取总量,假设是十万 + + + //计数 + $sql = M('user', 'tab_')->field('tab_user.id,IFNULL(sum(ss.pay_amount),0) AS recharge_total') + ->join('left join tab_spend as ss on ss.user_id=tab_user.id AND ss.pay_status = 1'.$spendprom) ->where($map) ->group('tab_user.id') - ->order($order) - ->having($havs) - ->select(); + ->where($hav) + ->having($havs)->select(false); + + //替换为新表 + if($_REQUEST['promote_id'] && $_REQUEST['promote_id'] > -1){ + $sql = M('user', 'tab_')->field('tab_user.id,IFNULL(sum(ss.pay_amount),0) AS recharge_total') + ->join('left join tab_spend as ss on ss.user_id=tab_user.id AND ss.pay_status = 1'.$spendprom) + ->where($map) + ->group('tab_user.id') + ->where($hav) + ->having($havs)->select(false); } - //数据 - - - if($xlsData) { - $ids = array_column($xlsData,'id'); - /* 在手里 */ - $small = M('user','tab_')->field('count(id) as count,puid')->where(['puid'=>array('in',$ids)])->group('puid')->select(); - /* 出售中 */ - $small2 = M('user','tab_')->field('count(id) as count,source_puid')->where(['source_puid'=>array('in',$ids),'source_time'=>0])->group('source_puid')->select(); - - foreach($xlsData as $k => $v) { - - - $xlsData[$k]['vip_level'] = get_vip_level($v['recharge_total']); - if(empty($v['alipay'])){ - $xlsData[$k]['alipay'] = '--'; - } - $xlsData[$k]['register_type'] = $v['register_type'] == 2?'手机号':($v['register_type']==7?'邮箱':'账号'); + $jcount = M('User', 'tab_')->field('count(a.id) as count,sum(a.recharge_total) recharge_total')->table('(' . $sql . ') as a')->select(); + $accessNum = $jcount[0]['count'] ?:0 ; + + $perSize = 5000;//每次查询的条数 + $pages = ceil($accessNum / $perSize); + + for($i = 1; $i <= $pages; $i++) { + + if($_REQUEST['promote_id'] && $_REQUEST['promote_id'] > -1){ + $xlsData = $usermodel->table('(' . $sql1 . ') as a ')->field($field) + ->join('left join tab_spend as ss on ss.user_id=a.id AND ss.pay_status = 1'.$spendprom) + ->limit(($i-1)*$perSize ,$perSize) + ->having($havs) + ->group('a.id') + ->order($order) + ->select(); + // echo $data;die(); + }else{ + $xlsData = $usermodel->table('(' . $sql1 . ') as a ')->field($field) + ->join('left join tab_spend as ss on ss.user_id=a.id AND ss.pay_status = 1') + ->limit(($i-1)*$perSize ,$perSize) + ->having($havs) + ->group('a.id') + ->order($order) + ->select(); + } + //数据 + - $xlsData[$k]['small_count'] = 0; - foreach($small as $s) { - if($s['puid'] == $v['id']) { - $xlsData[$k]['small_count'] += $s['count'];break; + if($xlsData) { + $ids = array_column($xlsData,'id'); + /* 在手里 */ + $small = M('user','tab_')->field('count(id) as count,puid')->where(['puid'=>array('in',$ids)])->group('puid')->select(); + /* 出售中 */ + $small2 = M('user','tab_')->field('count(id) as count,source_puid')->where(['source_puid'=>array('in',$ids),'source_time'=>0])->group('source_puid')->select(); + + foreach($xlsData as $k => $v) { + + + $xlsData[$k]['vip_level'] = get_vip_level($v['recharge_total']); + if(empty($v['alipay'])){ + $xlsData[$k]['alipay'] = '--'; } - } - foreach($small2 as $s) { - if($s['source_puid'] == $v['id']) { - $xlsData[$k]['small_count'] += $s['count'];break; + if($_REQUEST['type']==2){ + $xlsData[$k]['register_type'] = get_registertype($v['register_type']); + } + $xlsData[$k]['register_time'] = date('Y-m-d H:i:s',$xlsData[$k]['register_time']); + $xlsData[$k]['login_time'] = date('Y-m-d H:i:s',$xlsData[$k]['login_time']); + $xlsData[$k]['lock_status'] = $xlsData[$k]['lock_status']==1?'正常':'锁定'; + $xlsData[$k]['check_status'] = $xlsData[$k]['check_status']==1?'正常':'已拉黑'; + $xlsData[$k]['device_number'] = $xlsData[$k]['device_number']."'"; + + $xlsData[$k]['register_type'] = $v['register_type'] == 2?'手机号':($v['register_type']==7?'邮箱':'账号'); + + $xlsData[$k]['small_count'] = 0; + foreach($small as $s) { + if($s['puid'] == $v['id']) { + $xlsData[$k]['small_count'] += $s['count'];break; + } } + foreach($small2 as $s) { + if($s['source_puid'] == $v['id']) { + $xlsData[$k]['small_count'] += $s['count'];break; + } + } + unset($xlsData[$k]['age_status']); + unset($xlsData[$k]['register_way']); } } + foreach($xlsData as $value) { + mb_convert_variables('GBK', 'UTF-8', $value); + fputcsv($fp, $value); + $lastId = $value['id']; + } + unset($xlsData);//释放变量的内存 + //刷新输出缓冲到浏览器 + ob_flush(); + flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。 } + fclose($fp); + exit(); break; case 4: @@ -5562,8 +5723,8 @@ if ($key == 'model'){ function gameFinanceDetail() { - set_time_limit(0); - ini_set('memory_limit', '512M'); +// set_time_limit(0); +// ini_set('memory_limit', '512M'); $month = I("game_name"); $xlsName = $month.'充值流水'; diff --git a/Application/Admin/Controller/MemberController.class.php b/Application/Admin/Controller/MemberController.class.php index a516e315f..e484f10ad 100644 --- a/Application/Admin/Controller/MemberController.class.php +++ b/Application/Admin/Controller/MemberController.class.php @@ -789,6 +789,7 @@ class MemberController extends ThinkController } // $map['type'] = 1; // $map['login_time'] = ['exp', 'login_time<>0']; + $map['login_time'] = ['gt',0]; $extend = array(); $extend['map'] = $map; diff --git a/Application/Home/Controller/DownloadController.class.php b/Application/Home/Controller/DownloadController.class.php index a88cc4292..d687cc151 100644 --- a/Application/Home/Controller/DownloadController.class.php +++ b/Application/Home/Controller/DownloadController.class.php @@ -2889,6 +2889,11 @@ class DownloadController extends BaseController { 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; } $this->exportExcel($xlsName, $xlsCell, $xlsData,$id); diff --git a/Application/Home/Controller/QueryController.class.php b/Application/Home/Controller/QueryController.class.php index 8b2338baa..50e8def6c 100644 --- a/Application/Home/Controller/QueryController.class.php +++ b/Application/Home/Controller/QueryController.class.php @@ -1308,15 +1308,15 @@ class QueryController extends BaseController $allData['spend_user_num'] = $spendRepository->getPayUserCountByGame($params);//充值人数 $allData['spend_num'] = $spendRepository->getPayCountByGame($params);//充值次数 unset($params['pay_way']); - $allData['spend_all_amount'] = $spendRepository->getPayAmountByGameAndType($params);//充值总额 + $allData['spend_all_amount'] = null_to_0($spendRepository->getPayAmountByGameAndType($params));//充值总额 $params['pay_way'] = ['in', '1,2,3,4,5,6']; - $allData['spend_cash'] = $spendRepository->getPayAmountByGameAndType($params);//现金充值 + $allData['spend_cash'] = null_to_0($spendRepository->getPayAmountByGameAndType($params));//现金充值 $params['pay_way'] = 0; - $allData['spend_generic'] = $spendRepository->getPayAmountByGameAndType($params);//通用币充值 + $allData['spend_generic'] = null_to_0($spendRepository->getPayAmountByGameAndType($params));//通用币充值 $params['pay_way'] = -1; - $allData['spend_binding'] = $spendRepository->getPayAmountByGameAndType($params);//绑定币充值 - $allData['spend_discount'] = 0; - $allData['spend_voucher'] = 0; + $allData['spend_binding'] = null_to_0($spendRepository->getPayAmountByGameAndType($params));//绑定币充值 + $allData['spend_discount'] = '0.00'; + $allData['spend_voucher'] = '0.00'; } } @@ -1603,7 +1603,7 @@ class QueryController extends BaseController public function userRoles() { - $gameId = I('game_id', 0); + $relationGameId = I('relation_game_id', 0); $serverId = I('server_id', 0); $isSelf = I('is_self', 0); $roleName = I('role_name', ''); @@ -1633,8 +1633,13 @@ class QueryController extends BaseController $map['_string'] = '1<>1'; } - if ($gameId != 0) { - $map['game_id'] = $gameId; + if ($relationGameId != 0) { + $gameMap['relation_game_id'] = $relationGameId; + if ($sdkVersion != 0) { + $gameMap['sdk_version'] = $sdkVersion; + } + $gameId = M('game', 'tab_')->where($gameMap)->getField('id', true); + $map['game_id'] = ['in', $gameId]; } if ($serverId != 0) { $map['server_id'] = $serverId; @@ -1645,9 +1650,6 @@ class QueryController extends BaseController if ($userAccount != '') { $map['user_account'] = ['like', '%' . $userAccount . '%']; } - if ($sdkVersion != 0) { - $map['sdk_version'] = $sdkVersion; - } if ($roleLevelBegin != 0 && $roleLevelEnd == 0) { $map['role_level'] = ['egt', $roleLevelBegin]; } elseif ($roleLevelEnd != 0 && $roleLevelBegin == 0) { @@ -1693,7 +1695,7 @@ class QueryController extends BaseController } - $games = $this->getGamesByPromote($promote); + $games = get_promote_serach_game(); $this->assign('games', $games); $this->assign('records', $records); @@ -1704,7 +1706,7 @@ class QueryController extends BaseController public function userRecharges() { - $gameId = I('game_id', 0); + $relationGameId = I('relation_game_id', 0); $serverId = I('server_id', 0); $isSelf = I('is_self', 0); $roleName = I('role_name', ''); @@ -1748,9 +1750,14 @@ class QueryController extends BaseController } $subMap = []; - if ($gameId != 0) { - $map['game_id'] = $gameId; - $subMap['game_id'] = $gameId; + if ($relationGameId != 0) { + $gameMap['relation_game_id'] = $relationGameId; + if ($sdkVersion != 0) { + $gameMap['sdk_version'] = $sdkVersion; + } + $gameId = M('game', 'tab_')->where($gameMap)->getField('id', true); + $map['game_id'] = ['in', $gameId]; + $subMap['game_id'] = ['in', $gameId]; } if ($serverId != 0) { $map['server_id'] = $serverId; @@ -1762,9 +1769,6 @@ class QueryController extends BaseController if ($userAccount != '') { $map['user_account'] = ['like', '%' . $userAccount . '%']; } - if ($sdkVersion != 0) { - $map['sdk_version'] = $sdkVersion; - } if ($isSelf) { $map['promote_id'] = $queryPromote['id']; } @@ -1865,7 +1869,7 @@ class QueryController extends BaseController } } - $games = $this->getGamesByPromote($promote); + $games = get_promote_serach_game(); $this->assign('games', $games); $this->assign('records', $records); @@ -1894,7 +1898,16 @@ class QueryController extends BaseController public function getGameServers() { $gameId = I('game_id', 0); - $servers = M('server', 'tab_')->field(['id', 'server_id', 'server_name'])->where(['game_id' => $gameId])->order('server_id asc')->select(); + $sdkVersion = I('sdk_version', 0); + $servers = []; + if (!empty($gameId)) { + $map['relation_game_id'] = $gameId; + if (in_array($sdkVersion, [1, 2])) { + $map['sdk_version'] = $sdkVersion; + } + $gameIds = M('game', 'tab_')->where($map)->getField('id', true); + $servers = M('server', 'tab_')->field(['id', 'server_id', 'server_name'])->where(['game_id' => ['in', $gameIds]])->order('server_id asc')->select(); + } $this->ajaxReturn([ 'status' => 1, 'msg' => '成功', @@ -1965,7 +1978,7 @@ class QueryController extends BaseController $defaultTime = date('Y-m-d', time()); } $sdkVersion = I('sdk_version', 0); - $gameId = I('game_id', 0); + $relationGameId = I('relation_game_id', 0); $serverId = I('server_id', 0); $parentId = I('parent_id', 0); $promoteId = I('promote_id', 0); @@ -1990,7 +2003,7 @@ class QueryController extends BaseController $searchLevel = $parent['level'] + 1; $searchLevelName = $promoteService->getLevelName($searchLevel); - $games = $this->getGamesByPromote($parent); + $games = get_promote_serach_game(); $subPromotes = M('promote', 'tab_')->field(['id', 'account', 'real_name'])->where(['parent_id' => $parent['id']])->select(); @@ -2024,15 +2037,17 @@ class QueryController extends BaseController 'isContainSubs' => true, 'basicPromotes' => $basicPromotes, ]; - if ($gameId > 0) { - $params['game_id'] = $gameId; + if ($relationGameId > 0) { + $gameMap['relation_game_id'] = $relationGameId; + if ($sdkVersion > 0) { + $gameMap['sdk_version'] = $sdkVersion; + } + $gameId = M('game', 'tab_')->where($gameMap)->getField('id', true); + $params['game_id'] = ['in', $gameId]; } if ($serverId > 0) { $params['server_id'] = $serverId; } - if ($sdkVersion > 0) { - $params['sdk_version'] = $sdkVersion; - } if ($status > 0) { $params['lock_status'] = $status; } diff --git a/Application/Home/View/default/Apply/index.html b/Application/Home/View/default/Apply/index.html index 2a243b9a2..d678b6753 100644 --- a/Application/Home/View/default/Apply/index.html +++ b/Application/Home/View/default/Apply/index.html @@ -4,7 +4,7 @@ - +