From e0d8539ea03db0ea54d1f0e00a9b8a1033cfa0cb Mon Sep 17 00:00:00 2001 From: sunke <18850253506@163.com> Date: Tue, 17 Mar 2020 10:28:59 +0800 Subject: [PATCH] ex --- .../Controller/ExportController.class.php | 180 ++++++++++-------- 1 file changed, 96 insertions(+), 84 deletions(-) diff --git a/Application/Admin/Controller/ExportController.class.php b/Application/Admin/Controller/ExportController.class.php index 9b96f1855..c60794ce5 100644 --- a/Application/Admin/Controller/ExportController.class.php +++ b/Application/Admin/Controller/ExportController.class.php @@ -2474,53 +2474,51 @@ class ExportController extends Controller $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; + $map['account'] = $_REQUEST['user_account']; + $userId = M('user', 'tab_')->where(['account'=>$_REQUEST['user_account']])->getField('id'); + $map1['user_id'] = $userId; + $map2['user_id'] = $userId; + $map3['user_id'] = $userId; + $map4['user_id'] = $userId; } 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; + $map1['create_time'] = $map['create_time']; + $map1['pay_type'] = 1; + $totalSpend = M('value_detail_log', 'tab_')->where($map1)->sum('value'); $totalSpend = empty($totalSpend) ? '0.00' : $totalSpend; - $total_bind_balance = empty($total_bind_balance) ? '0.00' : $total_bind_balance; - $totalPromoteCoin = empty($totalPromoteCoin) ? '0.00' : $totalPromoteCoin; + + $map2['create_time'] = $map['create_time']; + $map2['pay_type'] = 2; + $deposit = M('value_detail_log', 'tab_')->where($map2)->sum('value'); + $deposit= empty($deposit) ? '0.00' : $deposit; + + $map3['create_time'] = $map['create_time']; + $map3['pay_type'] = 3; + $allpromoteCoin = M('value_detail_log', 'tab_')->where($map3)->sum('value'); + $allpromoteCoin = empty($promoteCoin) ? '0.00' : $promoteCoin; + + $map4['create_time'] = $map['create_time']; + $banlace = M('value_detail_log', 'tab_')->field('user_id, after_value')->where($map4)->group('user_id')->select(); + $banlaceTotal = 0; + foreach($banlace as $k222 => $vvv) { + $banlaceTotal += $vvv['after_value']; + } $csvFileName = '平台币统计'.'.csv'; //设置好告诉浏览器要下载excel文件的headers @@ -2533,69 +2531,77 @@ class ExportController extends Controller $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") + $count = M('user', 'tab_') + ->field('id, account') ->where($map) - ->count('DISTINCT user_id'); + ->count(); - $perSize = 10000;//每次查询的条数 + $perSize = 1000;//每次查询的条数 $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") + $datas = M('user', 'tab_') + ->field('id, account') ->where($map) ->limit(($i-1)*$perSize ,$perSize) ->select(); + $allDatas = []; + foreach($datas as $key => $data) { + + $allDatas['user_id'] = $data['id']; + $allDatas['user_account'] = $data['account']; + $spend = M('value_detail_log', 'tab_')->where(['user_id'=>$id, 'pay_type'=>1])->sum('value'); + $map5['user_id'] = $id; + $map5['pay_type'] = 1; + $map5['create_time'] = $map['create_time']; + $spend = M('value_detail_log', 'tab_')->where($map5)->sum('value'); + if(empty($spend)) { + $spend = '0.00'; + } + $map6['user_id'] = $id; + $map6['pay_type'] = 2; + $map6['create_time'] = $map['create_time']; + $deposit = M('value_detail_log', 'tab_')->where($map6)->sum('value'); + if(empty($deposit)) { + $deposit = '0.00'; + } + $map7['user_id'] = $id; + $map7['pay_type'] = 3; + $map7['create_time'] = $map['create_time']; + $promoteCoin = M('value_detail_log', 'tab_')->where($map7)->sum('value'); + if(empty($promoteCoin)) { + $promoteCoin = '0.00'; + } - 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);//释放变量的内存 + $map8['user_id'] = $id; + $map8['create_time'] = $map['create_time']; + $newValueByTimeDatas = M('value_detail_log', 'tab_')->field('after_value')->where($map8)->group('user_id')->select(); + if(empty($newValueByTimeDatas)) { + $aValue = '0.00'; + }else { + $aValue = $newValueByTimeDatas['after_value']; + } + $allDatas['bind_balance'] = $aValue; + $allDatas['spend_amount'] = $spend; + $allDatas['deposit_amount'] = $deposit; + $allDatas['coin_amount'] = $promoteCoin; + mb_convert_variables('GBK', 'UTF-8', $allDatas); + fputcsv($fp, $allDatas); + } + + + unset($allDatas);//释放变量的内存 //刷新输出缓冲到浏览器 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); + $alldatas1['user_id'] = "汇总(检索时间内所有数据的统计)"; + $alldatas1['user_account'] = ""; + $alldatas1['bind_balance'] = $banlaceTotal; + $alldatas1['spend_amount'] = $totalSpend; + $alldatas1['deposit_amount'] = $deposit; + $alldatas1['coin_amount'] = $promoteCoin; + mb_convert_variables('GBK', 'UTF-8', $alldatas1); + fputcsv($fp, $alldatas1); fclose($fp); //操作日志 @@ -2612,6 +2618,7 @@ class ExportController extends Controller $params = I('get.'); $map = []; + $orderNumber = $params['order_number']; if($orderNumber) { $map['order_number'] = $params['order_number']; } @@ -2679,9 +2686,14 @@ class ExportController extends Controller ob_flush(); flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。 } + if ($total >= 0) { + $fuhao = '+'; + }else { + $fuhao = '-'; + } $alldatas['order_number'] = "汇总(检索时间内所有数据的统计)"; $alldatas['create_time'] = ""; - $alldatas['type'] = ""; + $alldatas['type'] = $fuhao; $alldatas['value'] = $total; $alldatas['after_value'] = ""; @@ -2689,7 +2701,7 @@ class ExportController extends Controller fputcsv($fp, $alldatas); fclose($fp); exit; - break; + break; default: $xlsName = $xlsCell = $xlsData = [];