|
|
|
@ -2466,7 +2466,230 @@ class ExportController extends Controller
|
|
|
|
|
'order_amount'=>$sum_order_amount['sum_order_amount'],
|
|
|
|
|
'pay_amount'=>$sum_pay_amount['sum_order_amount']]];
|
|
|
|
|
$xlsData = array_merge($xlsData,$sumData);
|
|
|
|
|
break;
|
|
|
|
|
break;
|
|
|
|
|
case 28:
|
|
|
|
|
$xlsCell = array(
|
|
|
|
|
"账号ID","玩家账号", "账户平台币", "累计使用平台币", "累计充值平台币", "后台发放平台币"
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$params = I('get.');
|
|
|
|
|
$map = [];
|
|
|
|
|
$mapBanlance = [];
|
|
|
|
|
$mapSpend['pay_status'] = 1;
|
|
|
|
|
$mapSpend['pay_way'] = 0;
|
|
|
|
|
$mapDeposit['pay_status'] = 1;
|
|
|
|
|
$mapPromoteCoin['type'] = 2;
|
|
|
|
|
$mapPromoteCoin['sub_type'] = 4;
|
|
|
|
|
$nowTime = date('Y-m-d');
|
|
|
|
|
$initBegTime = date('Y-m-d', strtotime('-6 day', strtotime($nowTime)));
|
|
|
|
|
$initEndTime = date('Y-m-d', time());
|
|
|
|
|
if(!empty($params['user_account'])){
|
|
|
|
|
$userInfo = M('user', 'tab_')->where(['account'=>I('user_account')])->getField('id');
|
|
|
|
|
$map['user_account'] = $params['user_account'];
|
|
|
|
|
$mapBanlance['user_account'] = $params['user_account'];
|
|
|
|
|
$mapSpend['user_account'] = $params['user_account'];
|
|
|
|
|
$mapDeposit['user_account'] = $params['user_account'];
|
|
|
|
|
$mapPromoteCoin['target_id'] = $userInfo;
|
|
|
|
|
}
|
|
|
|
|
if (!empty($params['timestart']) && !empty($params['timeend'])) {
|
|
|
|
|
$map['create_time'] = array('between', [strtotime($params['timestart']), strtotime($params['timeend']) + 86399]);
|
|
|
|
|
$mapPromoteCoin['create_time'] = array('between', [strtotime($params['timestart']), strtotime($params['timeend']) + 86399]);
|
|
|
|
|
$mapDeposit['create_time'] = array('between', [strtotime($params['timestart']), strtotime($params['timeend']) + 86399]);
|
|
|
|
|
$mapSpend['pay_time'] = array('between', [strtotime($params['timestart']), strtotime($params['timeend']) + 86399]);
|
|
|
|
|
} elseif (!empty($params['timestart']) && empty($params['timeend'])) {
|
|
|
|
|
$map['create_time'] = array('between', [strtotime($params['timestart']), time()]);
|
|
|
|
|
$mapPromoteCoin['create_time'] = array('between', [strtotime($params['timestart']), time()]);
|
|
|
|
|
$mapDeposit['create_time'] = array('between', [strtotime($params['timestart']), time()]);
|
|
|
|
|
$mapSpend['pay_time'] = array('between', [strtotime($params['timestart']), time()]);
|
|
|
|
|
} elseif (empty($params['timestart']) && !empty($params['timeend'])) {
|
|
|
|
|
$map['create_time'] = array('elt', (strtotime($params['timeend']) + 86399));
|
|
|
|
|
$mapPromoteCoin['create_time'] = array('elt', (strtotime($params['timeend']) + 86399));
|
|
|
|
|
$mapDeposit['create_time'] = array('elt', (strtotime($params['timeend']) + 86399));
|
|
|
|
|
$mapSpend['pay_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
|
|
|
|
|
}
|
|
|
|
|
elseif (empty($_REQUEST['timestart']) && empty($_REQUEST['timeend']) && empty($params['user_account'])) {
|
|
|
|
|
$map['create_time'] = array('between', [strtotime($initBegTime), strtotime($initEndTime) + 86399]);
|
|
|
|
|
$mapPromoteCoin['create_time'] = array('between', [strtotime($initBegTime), strtotime($initEndTime) + 86399]);
|
|
|
|
|
$mapDeposit['create_time'] = array('between', [strtotime($initBegTime), strtotime($initEndTime) + 86399]);
|
|
|
|
|
$mapSpend['pay_time'] = array('between', [strtotime($initBegTime), strtotime($initEndTime) + 86399]);
|
|
|
|
|
}
|
|
|
|
|
$total = M('deposit', 'tab_')->where($mapDeposit)->sum('pay_amount');
|
|
|
|
|
$totalSpend = M('spend', 'tab_')->where($mapSpend)->sum('pay_amount');
|
|
|
|
|
$total_bind_balance = M('user_play', 'tab_')->where($mapBanlance)->sum('bind_balance');
|
|
|
|
|
$totalPromoteCoin = M('promote_coin_record', 'tab_')->where($mapPromoteCoin)->sum('coin');
|
|
|
|
|
$total = empty($total) ? '0.00' : $total;
|
|
|
|
|
$totalSpend = empty($totalSpend) ? '0.00' : $totalSpend;
|
|
|
|
|
$total_bind_balance = empty($total_bind_balance) ? '0.00' : $total_bind_balance;
|
|
|
|
|
$totalPromoteCoin = empty($totalPromoteCoin) ? '0.00' : $totalPromoteCoin;
|
|
|
|
|
|
|
|
|
|
$csvFileName = '平台币统计'.'.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流中
|
|
|
|
|
|
|
|
|
|
// $datas = M('user_play','tab_')
|
|
|
|
|
// ->group('user_id')
|
|
|
|
|
// ->field("id,user_id,user_account,bind_balance")
|
|
|
|
|
// ->where($map)
|
|
|
|
|
// ->page($page,$row)
|
|
|
|
|
// ->select();
|
|
|
|
|
$count = M('user_play','tab_')
|
|
|
|
|
->field("id,user_id,user_account,bind_balance")
|
|
|
|
|
->where($map)
|
|
|
|
|
->count('DISTINCT user_id');
|
|
|
|
|
|
|
|
|
|
$perSize = 10000;//每次查询的条数
|
|
|
|
|
$pages = ceil($count / $perSize);
|
|
|
|
|
for($i = 1; $i <= $pages; $i++) {
|
|
|
|
|
|
|
|
|
|
$datas = M('user_play','tab_')
|
|
|
|
|
->group('user_id')
|
|
|
|
|
->field("user_id,user_account,bind_balance")
|
|
|
|
|
->where($map)
|
|
|
|
|
->limit(($i-1)*$perSize ,$perSize)
|
|
|
|
|
->select();
|
|
|
|
|
|
|
|
|
|
foreach($datas as $data) {
|
|
|
|
|
$user_id = $data['user_id'];
|
|
|
|
|
$mapSpend['user_id'] = $user_id;
|
|
|
|
|
$mapDeposit['user_id'] = $user_id;
|
|
|
|
|
$mapPromoteCoin['target_id'] = $user_id;
|
|
|
|
|
$bind_balance = M('user_play', 'tab_')->where(['user_id' => $user_id])->sum('bind_balance');
|
|
|
|
|
$spend = M('spend', 'tab_')->where($mapSpend)->sum('pay_amount');
|
|
|
|
|
if (empty($spend)) {
|
|
|
|
|
$spend = '0.00';
|
|
|
|
|
}
|
|
|
|
|
$deposit = M('deposit', 'tab_')->where($mapDeposit)->sum('pay_amount');
|
|
|
|
|
if (empty($deposit)) {
|
|
|
|
|
$deposit = '0.00';
|
|
|
|
|
}
|
|
|
|
|
$promoteCoin = M('promote_coin_record', 'tab_')->where($mapPromoteCoin)->sum('coin');
|
|
|
|
|
if (empty($promoteCoin)) {
|
|
|
|
|
$promoteCoin = '0.00';
|
|
|
|
|
}
|
|
|
|
|
$data['user_id'] = $data['user_id'];
|
|
|
|
|
$data['user_account'] = $data['user_account'];
|
|
|
|
|
$data['bind_balance'] = $bind_balance;
|
|
|
|
|
$data['spend_amount'] = $spend;
|
|
|
|
|
$data['deposit_amount'] = $deposit;
|
|
|
|
|
$data['coin_amount'] = $promoteCoin;
|
|
|
|
|
mb_convert_variables('GBK', 'UTF-8', $data);
|
|
|
|
|
fputcsv($fp, $data);
|
|
|
|
|
}
|
|
|
|
|
unset($datas);//释放变量的内存
|
|
|
|
|
//刷新输出缓冲到浏览器
|
|
|
|
|
ob_flush();
|
|
|
|
|
flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
|
|
|
|
|
}
|
|
|
|
|
$alldatas['user_id'] = "汇总(检索时间内所有数据的统计)";
|
|
|
|
|
$alldatas['user_account'] = "";
|
|
|
|
|
$alldatas['bind_balance'] = $total_bind_balance;
|
|
|
|
|
$alldatas['spend_amount'] = $totalSpend;
|
|
|
|
|
$alldatas['deposit_amount'] = $total;
|
|
|
|
|
$alldatas['coin_amount'] = $totalPromoteCoin;
|
|
|
|
|
mb_convert_variables('GBK', 'UTF-8', $alldatas);
|
|
|
|
|
fputcsv($fp, $alldatas);
|
|
|
|
|
fclose($fp);
|
|
|
|
|
//操作日志
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exit();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 29:
|
|
|
|
|
$xlsCell = array(
|
|
|
|
|
"订单号","时间", "类型", "变化值", "变化后的平台币"
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$params = I('get.');
|
|
|
|
|
$map = [];
|
|
|
|
|
if($orderNumber) {
|
|
|
|
|
$map['order_number'] = $params['order_number'];
|
|
|
|
|
}
|
|
|
|
|
$map['user_id'] = $params['user_id'];
|
|
|
|
|
if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
|
|
|
|
|
$map['create_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]);
|
|
|
|
|
} elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) {
|
|
|
|
|
$map['create_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]);
|
|
|
|
|
} elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
|
|
|
|
|
$map['create_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
|
|
|
|
|
}
|
|
|
|
|
$total = 0;
|
|
|
|
|
// $valueDetailDatas = M('value_detail_log', 'tab_')->field('order_number, user_id, before_value, value, after_value, create_time, type, remark, pay_type')
|
|
|
|
|
// ->where($map)
|
|
|
|
|
// ->page($page,$row)
|
|
|
|
|
// ->select();
|
|
|
|
|
|
|
|
|
|
$csvFileName = '平台币明细'.'.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流中
|
|
|
|
|
$counts = M('value_detail_log', 'tab_')->field('id')
|
|
|
|
|
->where($map)
|
|
|
|
|
->count();
|
|
|
|
|
$perSize = 10000;//每次查询的条数
|
|
|
|
|
$pages = ceil($counts / $perSize);
|
|
|
|
|
|
|
|
|
|
for($i = 1; $i <= $pages; $i++) {
|
|
|
|
|
|
|
|
|
|
$valueDetailDatas = M('value_detail_log', 'tab_')->field('order_number, create_time, type, value, after_value, pay_type')
|
|
|
|
|
->where($map)
|
|
|
|
|
->limit(($i-1)*$perSize ,$perSize)
|
|
|
|
|
->select();
|
|
|
|
|
|
|
|
|
|
foreach ($valueDetailDatas as $key => $valueDetailData) {
|
|
|
|
|
$vlaueDetailData['order_number'] = $valueDetailData['order_number'];
|
|
|
|
|
$vlaueDetailData['create_time'] = date('Y-m-d H:i:s', $valueDetailData['create_time']);
|
|
|
|
|
if($valueDetailData['pay_type'] == 1) {
|
|
|
|
|
$vlaueDetailData['type'] = "消费";
|
|
|
|
|
$total -= $valueDetailData['value'];
|
|
|
|
|
}
|
|
|
|
|
if($valueDetailData['pay_type'] == 2) {
|
|
|
|
|
$vlaueDetailData['type'] = "充值";
|
|
|
|
|
$total += $valueDetailData['value'];
|
|
|
|
|
}
|
|
|
|
|
if ($valueDetailData['pay_type'] == 3) {
|
|
|
|
|
$vlaueDetailData['type'] = "平台发放";
|
|
|
|
|
$total += $valueDetailData['value'];
|
|
|
|
|
}
|
|
|
|
|
$vlaueDetailData['value'] = $valueDetailData['value'];
|
|
|
|
|
$vlaueDetailData['after_value'] = $valueDetailData['after_value'];
|
|
|
|
|
|
|
|
|
|
mb_convert_variables('GBK', 'UTF-8', $vlaueDetailData);
|
|
|
|
|
fputcsv($fp, $vlaueDetailData);
|
|
|
|
|
}
|
|
|
|
|
unset($vlaueDetailDatas);//释放变量的内存
|
|
|
|
|
//刷新输出缓冲到浏览器
|
|
|
|
|
ob_flush();
|
|
|
|
|
flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
|
|
|
|
|
}
|
|
|
|
|
$alldatas['order_number'] = "汇总(检索时间内所有数据的统计)";
|
|
|
|
|
$alldatas['create_time'] = "";
|
|
|
|
|
$alldatas['type'] = "";
|
|
|
|
|
$alldatas['value'] = $total;
|
|
|
|
|
$alldatas['after_value'] = "";
|
|
|
|
|
|
|
|
|
|
mb_convert_variables('GBK', 'UTF-8', $alldatas);
|
|
|
|
|
fputcsv($fp, $alldatas);
|
|
|
|
|
fclose($fp);
|
|
|
|
|
exit;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
$xlsName = $xlsCell = $xlsData = [];
|
|
|
|
|