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 @@
-
+