redirect(ACTION_NAME, array('timestart' => date('Y-m-d',strtotime('-30 day')),"timeend"=>date('Y-m-d'))); } $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 $arraypage = $page; if (isset($_REQUEST['row'])) { $row = $_REQUEST['row']; } else { $row = 10; } $map = []; if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); $coinMap['tab_deposit.payed_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); $bindMap['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); $offcialmap['create_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); $spreadMap['create_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); $maptestorder['pay_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); } elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) { $map['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]); $coinMap['tab_deposit.payed_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]); $bindMap['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]); $offcialmap['create_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]); $spreadMap['create_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]); $maptestorder['pay_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]); } elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['payed_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399)); $coinMap['tab_deposit.payed_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399)); $bindMap['payed_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399)); $offcialmap['create_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399)); $spreadMap['create_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399)); $maptestorder['pay_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399)); } if (!empty($_REQUEST['game_id'])) { $map['game_id'] = $_REQUEST['game_id']; $bindMap['game_id'] = $_REQUEST['game_id']; $coinMap['game_id'] = $_REQUEST['game_id']; $maptestorder['game_id'] = $_REQUEST['game_id']; } $map['pay_status'] = $coinMap['pay_status'] = 1; $map['pay_way'] = array('egt',1); // setPowerPromoteIds($map,'promote_id'); //游戏币计算 $data = M('spend use index(pay_channel)','tab_') ->field("game_name,sum(pay_amount) as pay_amount,game_id,sdk_version") ->where($map) ->group('game_id') ->order('pay_amount desc') ->select(); //平台币充值金额计算 $coinMap['pay_source'] = 2; $coinMap['extend'] = array('eq',''); $coinMap['tab_deposit.pay_way'] = array('egt',1); // setPowerPromoteIds($coinMap,'tab_deposit.promote_id'); $coinData = M('pay_info','tab_') ->join("inner join tab_deposit on tab_pay_info.order_id=tab_deposit.pay_order_number") ->field("tab_pay_info.game_name,0 as pay_amount,sum(tab_deposit.pay_amount) as platform_coin,0 as test_coin,tab_pay_info.game_id,tab_pay_info.sdk_version") ->where($coinMap) ->group("game_id") ->select(); // unset($coinMap['game_id']); //平台币充值 $coinSum = M('deposit','tab_') ->where($coinMap) ->sum('tab_deposit.pay_amount'); $data = array_merge($data,$coinData); $data = $this->unique_multi_array($data,'game_id'); //将平台币导入游戏数据中 $handleCoinData = []; foreach($coinData as $key => $value) { $handleCoinData[$value['game_id']] = $value['platform_coin']; } //测试数据汇总计算 $testData = M('spend','tab_') ->field("sum(pay_amount) as test_coin,game_name,game_id") ->join("inner join tab_test_white_list on tab_spend.user_id=tab_test_white_list.user_id") ->where($map) ->group('game_id') ->select(); //测试平台币充值金额计算 $testCoinData = M('pay_info','tab_') ->join("inner join tab_deposit on tab_pay_info.order_id=tab_deposit.pay_order_number") ->join("inner join tab_test_white_list on tab_test_white_list.user_id=tab_pay_info.user_id") ->field("sum(tab_deposit.pay_amount) as test_coin,tab_pay_info.game_name,tab_pay_info.game_id") ->where($coinMap) ->group("game_id") ->select(); // var_dump($testCoinData);die(); $handleTestData = []; foreach($testData as $key => $value) { $handleTestData[$value['game_id']] = $value['test_coin']; } $handleTestCoinData = []; foreach($testCoinData as $key => $value) { $handleTestCoinData[$value['game_id']] = $value['test_coin']; } foreach ($data as $key => $value) { $data[$key]['platform_coin'] = $handleCoinData[$value['game_id']]?$handleCoinData[$value['game_id']]:0; $data[$key]['test_coin'] = $handleTestData[$value['game_id']]?$handleTestData[$value['game_id']]:0; $data[$key]['test_platform_coin'] = $handleTestCoinData[$value['game_id']]?$handleTestCoinData[$value['game_id']]:0; $data[$key]['game_name'] =clearGameNameType($data[$key]['game_name']); $data[$key]['sdk_version'] =getGameTypeName($data[$key]['sdk_version']); } $superMap = $map; unset($superMap['payed_time']); $superMap['pay_time'] = $map['payed_time']; // unset($superMap['promote_id']); //超级签数据 $superSignData = M('game_supersign','tab_') ->field("0 as game_name,sum(pay_price) as pay_amount,0 as platform_coin,0 as test_coin") ->where($superMap) ->find(); $testSuperSignCost = M('game_supersign','tab_') ->join("inner join tab_test_white_list on tab_game_supersign.user_id=tab_test_white_list.user_id") ->where($superMap) ->sum('pay_price'); $superSignData['test_coin'] = $testSuperSignCost?$testSuperSignCost:0; $superSignData['sum'] = $superSignData['pay_amount']?$superSignData['pay_amount']:0; $superSignData['pay_amount'] = $superSignData['pay_amount'] - $superSignData['test_coin']; // var_dump($testSuperSignCost);die(); $this->assign('superSignData',$superSignData); //官网数据 $offcialmap['pay_status'] = 1; $offcialmap['pay_way'] = array('egt',1); $offcialmap['pay_source'] = 0; // setPowerPromoteIds($offcialmap,'promote_id'); $offcialData = M('deposit','tab_') ->field("id as game_name,sum(pay_amount) as pay_amount,0 as platform_coin,0 as test_coin") ->where($offcialmap) ->find(); $offcialTestCost = M('deposit','tab_') ->join("inner join tab_test_white_list on tab_deposit.user_id=tab_test_white_list.user_id") ->where($offcialmap) ->sum('pay_amount'); $offcialData['test_coin'] = $offcialTestCost?$offcialTestCost:0; $bindMap['pay_status'] = 1; $bindMap['pay_way'] = array('egt',1); // setPowerPromoteIds($bindMap,'promote_id'); $bindRechargeData = M('bind_recharge','tab_') ->field('sum(real_amount) as pay_amount') ->where(array($bindMap)) ->find(); $bindRechargeData['pay_amount'] = $bindRechargeData['pay_amount']?$bindRechargeData['pay_amount']:0; $offcialData['sum'] = $offcialData['pay_amount']+$bindRechargeData['pay_amount']; $offcialData['pay_amount'] = number_format($offcialData['pay_amount']+$bindRechargeData['pay_amount']-$offcialData['test_coin'],2,'.',''); $this->assign('offcialData',$offcialData); $spreadMap['order_status'] = array('egt',1); $spreadMap['pay_way'] = array('egt',1); // setPowerPromoteIds($spreadMap,'promote_id'); //推广后台 $spreadData = M("coin_pay_order","tab_") ->field("0 as game_name,sum(pay_amount) as pay_amount,0 as platform_coin,id as test_coin") ->where($spreadMap) ->find(); $spreadData['pay_amount'] = $spreadData['pay_amount']?number_format($spreadData['pay_amount'],2,'.',''):'0.00'; $spreadData['sum'] = number_format($spreadData['pay_amount'],2,'.',''); $this->assign('spreadData',$spreadData); $channelData = $this->getPayChannel($map); $testOrderChannelDatas = $this->getTestOrderPayChannel($maptestorder); $payTypeData['支付宝支付金额']['amount'] = 0; $payTypeData['微信支付金额']['amount'] = 0; $payTypeData['快捷支付金额']['amount'] = 0; $payTypeData['支付宝支付金额']['pay_way'] = "1"; $payTypeData['微信支付金额']['pay_way'] = "2"; $payTypeData['快捷支付金额']['pay_way'] = "4"; $payTypeData['支付宝支付金额']['type'] = "in"; $payTypeData['微信支付金额']['type'] = "in"; $payTypeData['快捷支付金额']['type'] = "in"; foreach($channelData as $key => $value) { if ($value['pay_way']==1 || $value['pay_way']==9 ) { $payTypeData['支付宝支付金额']['amount'] += number_format($value['pay_amount'],2,'.',''); } else if ($value['pay_way']==2 || $value['pay_way']==3 ) { $payTypeData['微信支付金额']['amount'] += number_format($value['pay_amount'],2,'.',''); } else { $payTypeData['快捷支付金额']['amount'] += number_format($value['pay_amount'],2,'.',''); } } $this->assign('payTypeData',$payTypeData); $pay_way_arr = []; foreach($channelData as $pay_way_key => $channelData_payway) { $pay_way_arr[$pay_way_key] = $channelData_payway['pay_way']; } $testorderChannelArr = []; foreach($channelData as $key=>$value) { $channelData[$key]['pay_amount'] = number_format($value['pay_amount'],2,'.',''); $channelData[$key]['pay_way'] = get_pay_way($value['pay_way']); if (!$value['pay_way']) { unset($channelData[$key]); } } $count = count($data); $page = set_pagination($count, $row); if ($page) { $this->assign('_page', $page); } $sumData['game_name'] = '汇总'; $sumData['pay_amount'] = 0; $sumData['platform_coin'] = 0; $sumData['test_coin'] = 0; $sumData['test_platform_coin'] = 0; foreach ($data as $key => $value) { $data[$key]['pay_amount'] = number_format($value['pay_amount'] - $value['test_coin'],2,'.',''); $data[$key]['platform_coin'] = number_format($value['platform_coin'] - $value['test_platform_coin'],2,'.',''); $data[$key]['test_coin'] = number_format($value['test_coin'] + $value['test_platform_coin'],2,'.',''); $data[$key]['sum'] = number_format($value['pay_amount'] + $value['platform_coin'],2,'.',''); if($_REQUEST['export'] == 1) { unset($data[$key]['game_id'] ); unset($data[$key]['test_platform_coin']); } //汇总计算 $sumData['pay_amount'] += number_format($value['pay_amount'] - $value['test_coin'],2,'.',''); $sumData['platform_coin'] += $handleCoinData[$value['game_id']]?number_format($handleCoinData[$value['game_id']],2,'.',''):0; $sumData['test_coin'] += $handleTestData[$value['game_id']]?number_format($handleTestData[$value['game_id']],2,'.',''):0; $sumData['test_platform_coin'] +=$handleTestCoinData[$value['game_id']]?number_format($handleTestCoinData[$value['game_id']],2,'.',''):0; } // 汇总数据 if ($_REQUEST['game_id']) { $sumData['platform_coin'] = number_format($sumData['platform_coin'] - $sumData['test_platform_coin'],2,'.',''); $sumData['test_coin'] = number_format($sumData['test_coin']+$sumData['test_platform_coin'],2,'.',''); $sumData['sum'] = number_format($sumData['pay_amount'] +$sumData['test_coin'] + $sumData['platform_coin'],2,'.',''); } else { $sumData['pay_amount'] = number_format($sumData['pay_amount'] + $superSignData['pay_amount'] + $bindRechargeData['pay_amount'],2,'.',''); $sumData['platform_coin'] = number_format($sumData['platform_coin'] - $sumData['test_platform_coin'] + $offcialData['pay_amount'] + $spreadData['pay_amount'],2,'.',''); $sumData['test_coin'] = number_format($sumData['test_coin']+$offcialTestCost+$testSuperSignCost+$sumData['test_platform_coin'],2,'.',''); $sumData['sum'] = number_format($sumData['pay_amount'] +$sumData['test_coin'] + $sumData['platform_coin'],2,'.',''); $coinSum = number_format($coinSum + $offcialData['pay_amount'] + $spreadData['pay_amount']+$offcialTestCost,2,'.',''); } $sum_pay_amount = M('test_order', 'tab_')->where($maptestorder)->field('sum(pay_amount) as sum_order_amount')->find(); $moneyAllCount = array_sum(array_column($channelData, 'pay_amount')); $sumData['pay_amount'] += $sum_pay_amount["sum_order_amount"]; $sumData['sum'] += $sum_pay_amount["sum_order_amount"]; if($_REQUEST['export'] == 1) { $title = array('产品名称','游戏现金金额','平台币直冲金额','测试金额','支付渠道内合计'); $superSignData['game_name'] = '超级签'; $superSignData['platform_coin'] = '0'; $superSignData['sdk_version'] = ''; $offcialData['game_name'] = '官网'; $offcialData['platform_coin'] = $offcialData['pay_amount']; $offcialData['pay_amount'] = "0"; $offcialData['sdk_version'] = ""; $spreadData['game_name'] = '推广后台'; $spreadData['platform_coin'] = $spreadData['pay_amount']; $spreadData['pay_amount'] = '0'; $spreadData['test_coin'] = '0'; $spreadData['sdk_version'] = ''; $sumData['sdk_version'] = ''; $testOrder["game_name"] = "测试环境内外网平台"; $testOrder["sdk_version"] = ""; $testOrder["pay_amount"] =$sum_pay_amount['sum_order_amount'] ?: "0"; $testOrder["platform_coin"] ="0"; $testOrder['test_coin'] = '0'; $testOrder['sum'] = $sum_pay_amount['sum_order_amount'] ?: "0"; //充值方式统计 $payTypeDataExport['game_name'] = '充值方式统计'; foreach($payTypeData as $key => $value) { if ($value) { $payTypeDataExport['sdk_version'] .= $key.':'.$value." "; } } $payTypeDataExport['sdk_version'] .= "平台币直充总金额(2019.12.18号以前的不显示在列表中,此项也不计入充值方式统计):". ($coinSum); if ($sum_platform_pay_amount['sum_order_amount'] != 0) { $testOrderDataExport['pay_amount'] = $sum_noplatform_pay_amount['sum_order_amount']; }else { $testOrderDataExport['pay_amount'] = '0.00'; } if ($sum_noplatform_pay_amount['sum_order_amount'] != 0) { $testOrderDataExport['platform_coin'] = $sum_platform_pay_amount['sum_order_amount']; }else { $testOrderDataExport['platform_coin'] = '0.00'; } $testOrderDataExport['test_coin'] = '0.00'; $testOrderDataExport['sum'] = '0.00'; $channelDataExport['game_name'] = '支付渠道'; $channelDataExport2['game_name'] = '支付渠道占比'; foreach(array_merge($channelData,$testorderChannelArr) as $key => $value) { if ($value) { $channelDataExport['sdk_version'] .= $value['pay_way'].':'.$value['pay_amount']." "; $channelDataExport2['sdk_version'] .= $value['pay_way'].':'.round($value['pay_amount']*100/ $moneyAllCount,2)."% "; } } unset($sumData['test_platform_coin']); if ($_REQUEST['game_id']) { unset($superSignData); unset($offcialData); unset($spreadData); } //操作日志 $GetData = $_GET; unset($GetData['export']); addOperationLog(['op_type'=>3,'key'=>getNowDate(),'url'=>U(CONTROLLER_NAME.'/'.ACTION_NAME,$GetData),'menu'=>"充值-财务管理-支付渠道查看-导出"]); //处理导出数据 data2csv(array_merge($data,[$superSignData],[$offcialData],[$spreadData],[$testOrder],[$sumData],[$payTypeDataExport],[$channelDataExport],[$channelDataExport2]),"支付渠道统计导出",array( "game_name"=>"产品名称","sdk_version"=>"设备名称","pay_amount"=>"游戏现金金额","platform_coin"=>"平台币直冲金额","test_coin"=>"测试金额","sum"=>"支付渠道内合计")); } $this->checkListOrCountAuthRestMap($map,[]); $sumData['pay_amount'] = number_format($sumData['pay_amount'],2,'.',''); $sumData['platform_coin'] = number_format($sumData['platform_coin'],2,'.',''); $sumData['test_coin'] = number_format($sumData['test_coin'],2,'.',''); $sumData['test_platform_coin'] = number_format($sumData['test_platform_coin'],2,'.',''); $this->meta_title = "支付渠道统计"; $size = $row;//每页显示的记录数 $data = array_slice($data, ($arraypage - 1) * $size, $size); //平台币直充金额,下面列表 $this->assign('coinSum',$coinSum); $channelData2 = $channelData; $arr_merge = array_merge($channelData2,$testorderChannelArr); $this->assign('sumData',$sumData); $this->assign('channelData',$arr_merge); $this->assign('listdata',$data); //统计总额和比例 $this->assign('channelData2',$channelData); $this->assign('sum_platform_pay_amount',$sum_platform_pay_amount); $this->assign('sum_noplatform_pay_amount',$sum_noplatform_pay_amount); $this->assign('sum_pay_amount',$sum_pay_amount); $moneyAllCount = array_sum(array_column($channelData, 'pay_amount')); $this->assign('moneyAllCount',$moneyAllCount); $this->display(); } protected function unique_multi_array($array, $key) { $temp_array = []; $i = 0; $key_array = []; foreach ($array as $val) { if (!in_array($val[$key], $key_array)) { $key_array[$i] = $val[$key]; $temp_array[$i] = $val; } $i++; } return $temp_array; } public function add_array($array_1, $array_2) { $array_merge = array_merge_recursive($array_1, $array_2); foreach($array_merge as $key => $value) { if(is_array($value)) $array_merge[$key] = array_sum($value); } return $array_merge; } public function getTestOrderPayChannel($map) { $testOrderChannelData = M('test_order','tab_') ->field('sum(pay_amount) as pay_amount,pay_way') ->where($map) ->group('pay_way') ->select(); return $testOrderChannelData; } public function getPayChannel($map) { //支付 //游戏订单渠道 $channelData = M('spend use index(pay_channel_type)','tab_') ->field('sum(pay_amount) as pay_amount,pay_way') ->where($map) ->group('pay_way') ->select(false); $superMap = $map; if ($map['payed_time']){ $superMap['pay_time'] = $map['payed_time']; unset($superMap['payed_time']); } //超级签数据 $superSignDataPay = M('game_supersign','tab_') ->field("sum(pay_price) as pay_amount,pay_way") ->where($superMap) ->group('pay_way') ->select(false); // var_dump($map);die(); //推广后台充值数据 $spreadMap['order_status'] = array('egt',1); $spreadMap['pay_way'] = array('egt',1); if($map['payed_time']) { $spreadMap['pay_time'] = $map['payed_time']; } // $spreadMap['promote_id'] = $map['promote_id']; //推广后台 $spreadDataPay = M("coin_pay_order","tab_") ->field("sum(pay_amount) as pay_amount,pay_way") ->where($spreadMap) ->select(false); if ($map['payed_time']) { // $map['payed_time'] = $map['payed_time']; $testMap['pay_time'] = $map['payed_time']; unset($map['pay_time']); } //充值平台币数据 $depositData = M('deposit','tab_') ->field('sum(pay_amount) as pay_amount,pay_way') ->where($map) ->group('pay_way') ->select(false); if ($_REQUEST['game_id']) { if ($map['pay_way']) { $map['tab_deposit.pay_way'] = $map['pay_way']; unset($map['pay_way']); } // if ($map['create_time']) { // $map['tab_deposit.create_time'] = $map['create_time']; // unset($map['create_time']); // } $map['tab_deposit.pay_source'] = 2; $map['tab_pay_info.extend'] = ''; $depositData = M('pay_info','tab_') ->join("inner join tab_deposit on tab_pay_info.order_id=tab_deposit.pay_order_number") ->field('sum(pay_amount) as pay_amount,tab_deposit.pay_way as pay_way') ->where($map) ->group('tab_deposit.pay_way') ->select(false); // var_dump($depositData);die(); } $bindMap['pay_status'] = 1; $bindMap['pay_way'] = array('egt',1); if($_REQUEST['game_id']) { $bindMap['game_id'] =$_REQUEST['game_id']; $testMap['game_id'] =$_REQUEST['game_id']; } if ($map['pay_time']) { $bindMap['create_time'] = $map['pay_time']; } // $bindMap['promote_id'] = $map['promote_id']; $bindRechargeData = M('bind_recharge','tab_') ->field('sum(real_amount) as pay_amount,pay_way') ->where($bindMap) ->select(false); $testMap['pay_status'] = 1; $testMap['pay_way'] = array('egt',1); if ($map['pay_way']) { $testMap['pay_way'] = $map['pay_way']; } $testorderData = M('test_order', 'tab_')->field('sum(pay_amount) as pay_amount,pay_way')->where($testMap)->group('pay_way')->select(false); if(!$_REQUEST['game_id']) { $sql = "{$channelData} UNION ALL {$depositData} UNION ALL {$superSignDataPay} UNION ALL {$spreadDataPay} UNION ALL {$bindRechargeData} UNION ALL {$testorderData}"; } else { $sql = "{$channelData} UNION ALL {$depositData} UNION ALL {$testorderData}"; } //将语句整合起来查询 $channelData = "select sum(pay_amount) as pay_amount,pay_way from ({$sql})t group by pay_way;"; // var_dump($channelData);die(); // $channelData = M()->table("({$channelData})a")->where()->select(); $channelData = M()->query($channelData); return $channelData; } public function gameDetail($p=1) { if (isset($_REQUEST['row'])) { $row = $_REQUEST['row']; } else { $row = 10; } $map = []; $coinMap = []; $model = 'spend'; if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); $coinMap['tab_deposit.payed_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); $spreadMap['create_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); $offcialmap['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); } elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) { $map['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]); $coinMap['tab_deposit.payed_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]); $spreadMap['create_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]); $offcialmap['create_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); } elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['payed_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399)); $coinMap['tab_deposit.payed_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399)); $spreadMap['create_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399)); $offcialmap['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); } if (!empty($_REQUEST['pay_order_number'])) { $map['pay_order_number'] = array('like',"{$_REQUEST['pay_order_number']}%"); $coinMap['pay_order_number'] = array('like',"{$_REQUEST['pay_order_number']}%"); $spreadMap['pay_order_number'] = array('like',"{$_REQUEST['pay_order_number']}%"); $offcialmap['pay_order_number'] = array('like',"{$_REQUEST['pay_order_number']}%"); } if (!empty($_REQUEST['user_account'])) { $map['user_account'] = array('like',"{$_REQUEST['user_account']}%"); $coinMap['tab_deposit.user_account'] = array('like',"{$_REQUEST['user_account']}%"); } $coinMap['tab_deposit.pay_way'] =$spreadMap['pay_way']=$map['pay_way'] = array('egt',1); $offcialmap['pay_way'] = array('egt',1); if (!empty($_REQUEST['pay_way']) || $_REQUEST['pay_way']=='0') { if ($_REQUEST['pay_way']=="2") { $_REQUEST['pay_way'] = ['in', '2,3,4']; } $map['pay_way'] = $_REQUEST['pay_way']; $coinMap['tab_deposit.pay_way'] = $_REQUEST['pay_way']; $spreadMap['pay_way'] = $_REQUEST['pay_way']; $offcialmap['pay_way'] = $_REQUEST['pay_way']; } $_REQUEST['game_id']?$map['game_id'] = $_REQUEST['game_id']:false; $_REQUEST['game_id']?$coinMap['game_id'] = $_REQUEST['game_id']:false; $map['pay_status'] = 1; $_REQUEST['model']?$model= $_REQUEST['model']:false; $page = $p ? $p : 1; //默认显示第一页数据 // setPowerPromoteIds($map,'promote_id'); // setPowerPromoteIds($coinMap,'tab_deposit.promote_id'); $spendData = M('spend','tab_') ->field("pay_order_number,pay_time,user_account,game_name,promote_account,spend_ip,server_name,game_player_name,cost,pay_amount,pay_way,sdk_version") ->where($map) ->select(false); // var_dump($spendData);die(); $coinMap['pay_status'] = 1; $coinMap['pay_source'] = 2; $coinMap['extend'] = ''; $coinData = M('pay_info','tab_') ->join("inner join tab_deposit on tab_pay_info.order_id=tab_deposit.pay_order_number") ->field("pay_order_number,tab_deposit.create_time as pay_time,tab_deposit.user_account,tab_pay_info.game_name,tab_deposit.promote_account, tab_deposit.pay_ip as spend_ip,tab_pay_info.server_name,tab_pay_info.game_player_name,tab_pay_info.sdk_version, tab_deposit.pay_amount as cost,tab_deposit.pay_amount,tab_deposit.pay_way") ->where($coinMap) ->select(false); $spreadMap['order_status'] = array('egt',1); // setPowerPromoteIds($spreadMap,'promote_id'); // $spreadMap['pay_way'] = array('egt',1); $coin_pay_order = M('coin_pay_order','tab_') ->field("pay_order_number,create_time as pay_time,promote_account,pay_amount,real_amount as cost,pay_way") ->where($spreadMap) ->select(false); //官网数据 $offcialmap['pay_status'] = 1; $offcialmap['pay_source'] = 0; // setPowerPromoteIds($offcialmap,'promote_id'); $offcialData = M('deposit','tab_') ->field("pay_order_number,create_time as pay_time,user_account,promote_account,pay_ip as spend_ip,pay_amount as cost,pay_amount,pay_way") ->where($offcialmap) ->select(false); if ($map['user_account']) { $map['account'] = $map['user_account']; unset($map['user_account']); } if ($map['pay_order_number']){ $map['order_id'] = $map['pay_order_number']; unset($map['pay_order_number']); } // unset($map['promote_id']); //超级签数据 $superSignMap = $map; $superSignMap['pay_time'] = $superSignMap['payed_time']; unset($superSignMap['payed_time']); $superSignData = M('game_supersign','tab_') ->field("order_id as pay_order_number,pay_time,tab_user.account as user_account,tab_user.promote_account,pay_price as cost,pay_price as pay_amount,pay_way") ->join('inner join tab_user on tab_user.id=tab_game_supersign.user_id') ->where($superSignMap) ->select(false); if ($model == 'spend') { $unionSql = "{$spendData} UNION ALL {$coinData}"; } elseif($model == 'coin_pay_order') { $unionSql = "{$coin_pay_order}"; } elseif($model == 'deposit') { $unionSql = "{$offcialData}"; } elseif($model == 'game_supersign') { $unionSql = "{$superSignData}"; } $page = ($page-1) * $row; $sql = "select * from ({$unionSql})t order by pay_time DESC limit {$page},{$row};"; $data = M()->query($sql); foreach ($data as $key => $value) { $data[$key]['pay_time'] = date('Y-m-d H:i:s',$value['pay_time']); ($data[$key]['promote_account']=='官方渠道')?($data[$key]['promote_account']=C('OFFICIEL_CHANNEL')):''; if ($model == 'spend') { $data[$key]['game_name'] =clearGameNameType($data[$key]['game_name']); $data[$key]['sdk_version'] =getGameTypeName($data[$key]['sdk_version']); } } $sql = "select count(1) as count from ({$unionSql})t;"; $count = M()->query($sql); $count = $count[0]['count']; $page = set_pagination($count, $row); if ($page) { $this->assign('_page', $page); } //总计金额逻辑 if ($model == 'spend') { $unionSql = "{$spendData}"; } elseif($model == 'coin_pay_order') { $unionSql = "{$coin_pay_order}"; } elseif($model == 'deposit') { $unionSql = "{$offcialData}"; } elseif($model == 'game_supersign') { $unionSql = "{$superSignData}"; } $sql = "select sum(pay_amount) as pay_amount,pay_way from ({$unionSql})t group by pay_way;"; $sumData = M()->query($sql); $sumAllData['pay_amount'] = 0; $sumAllData['platform_amount'] = 0; if ($model == 'spend') { $sumAllData['platform_amount'] = M('pay_info','tab_') ->join("inner join tab_deposit on tab_pay_info.order_id=tab_deposit.pay_order_number") ->where($coinMap) ->sum('tab_deposit.pay_amount'); } $sumAllData['platform_amount'] = $sumAllData['platform_amount']?$sumAllData['platform_amount']:0; foreach ($sumData as $key => $value) { if ($value['pay_way']>=1) { if($model == 'deposit'||$model == 'coin_pay_order') { $sumAllData['platform_amount'] += $value['pay_amount']; } else { $sumAllData['pay_amount'] += $value['pay_amount']; } } } $sumAllData['pay_amount'] = number_format($sumAllData['pay_amount'],2,'.','');; $sumAllData['platform_amount'] = number_format($sumAllData['platform_amount'],2,'.','');; $this->meta_title = "游戏订单查看"; $sumAllData['sum'] = number_format($sumAllData['bind_amount']+$sumAllData['platform_amount']+$sumAllData['pay_amount'],2,'.',''); // var_dump($sumAllData);die(); $this->checkListOrCountAuthRestMap($map,[]); $this->assign('sumAllData',$sumAllData); $this->assign('data',$data); $this->display(); } public function export_gameDatail() { $xlsName = $_REQUEST['xlsname']; $map = []; $coinMap = []; $model = 'spend'; if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); $coinMap['tab_deposit.payed_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); $spreadMap['create_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); $offcialmap['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); } elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) { $map['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]); $coinMap['tab_deposit.payed_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]); $spreadMap['create_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]); $offcialmap['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); } elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['payed_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399)); $coinMap['tab_deposit.payed_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399)); $spreadMap['create_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399)); $offcialmap['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); } if (!empty($_REQUEST['pay_order_number'])) { $map['pay_order_number'] = array('like',"{$_REQUEST['pay_order_number']}%"); $coinMap['pay_order_number'] = array('like',"{$_REQUEST['pay_order_number']}%"); $spreadMap['pay_order_number'] = array('like',"{$_REQUEST['pay_order_number']}%"); $offcialmap['pay_order_number'] = array('like',"{$_REQUEST['pay_order_number']}%"); } if (!empty($_REQUEST['user_account'])) { $map['user_account'] = array('like',"{$_REQUEST['user_account']}%"); $coinMap['tab_deposit.user_account'] = array('like',"{$_REQUEST['user_account']}%"); } $coinMap['tab_deposit.pay_way'] =$spreadMap['pay_way']=$map['pay_way'] = array('egt',1); $offcialmap['pay_way'] = array('egt',1); if (!empty($_REQUEST['pay_way']) || $_REQUEST['pay_way']=='0') { $map['pay_way'] = $_REQUEST['pay_way']; $coinMap['tab_deposit.pay_way'] = $_REQUEST['pay_way']; $spreadMap['pay_way'] = $_REQUEST['pay_way']; $offcialmap['pay_way'] = $_REQUEST['pay_way']; } $_REQUEST['game_id']?$map['game_id'] = $_REQUEST['game_id']:false; $_REQUEST['game_id']?$coinMap['game_id'] = $_REQUEST['game_id']:false; $map['pay_status'] = 1; // setPowerPromoteIds($map,'promote_id'); // setPowerPromoteIds($coinMap,'tab_deposit.promote_id'); // $_REQUEST['model']?$model= $_REQUEST['model']:false; if ($_REQUEST['model']) { $model= $_REQUEST['model']; } $spendData = M('spend','tab_') ->field("pay_order_number,pay_time,user_account,game_name,sdk_version,promote_account,spend_ip,server_name,game_player_name,cost,pay_amount,pay_way") ->where($map) ->select(false); // var_dump($spendData);die(); $coinMap['pay_status'] = 1; $coinMap['pay_source'] = 2; $coinMap['extend'] = ''; $coinData = M('pay_info','tab_') ->join("inner join tab_deposit on tab_pay_info.order_id=tab_deposit.pay_order_number") ->field("pay_order_number,tab_deposit.create_time as pay_time,tab_deposit.user_account,tab_pay_info.game_name,tab_pay_info.sdk_version,tab_deposit.promote_account, tab_deposit.pay_ip as spend_ip,tab_pay_info.server_name,tab_pay_info.game_player_name, tab_deposit.pay_amount as cost,tab_deposit.pay_amount,tab_deposit.pay_way") ->where($coinMap) ->select(false); $spreadMap['order_status'] = array('egt',1); // setPowerPromoteIds($spreadMap,'promote_id'); $coin_pay_order = M('coin_pay_order','tab_') ->field("pay_order_number,create_time as pay_time,promote_account,pay_amount as cost,real_amount as pay_amount,pay_way") ->where($spreadMap) ->select(false); //官网数据 $offcialmap['pay_status'] = 1; $offcialmap['pay_source'] = 0; // setPowerPromoteIds($offcialmap,'promote_id'); $offcialData = M('deposit','tab_') ->field("pay_order_number,create_time as pay_time,user_account,promote_account,pay_ip as spend_ip,pay_amount as cost,pay_amount,pay_way") ->where($offcialmap) ->select(false); if ($map['user_account']) { $map['account'] = $map['user_account']; unset($map['user_account']); } if ($map['pay_order_number']){ $map['order_id'] = $map['pay_order_number']; unset($map['pay_order_number']); } // unset($map['promote_id']); //超级签数据 $superSignMap = $map; $superSignMap['pay_time'] = $superSignMap['payed_time']; unset($superSignMap['payed_time']); $superSignData = M('game_supersign','tab_') ->field("order_id as pay_order_number,pay_time,tab_user.account as user_account,tab_user.promote_account,pay_price as cost,pay_price as pay_amount,pay_way") ->join('inner join tab_user on tab_user.id=tab_game_supersign.user_id') ->where($map) ->select(false); if ($model == 'spend') { $xlsCell = array('支付订单号', '充值时间', '玩家账号', '游戏名称', '设备名称','所属推广员', '充值ip', '游戏区服', '角色名称', '订单金额', '实付金额', '充值方式'); $unionSql = "{$spendData} UNION ALL {$coinData}"; } elseif($model == 'coin_pay_order') { $xlsCell = array('支付订单号', '充值时间', '所属推广员', '订单金额', '实付金额', '充值方式'); $unionSql = "{$coin_pay_order}"; } elseif($model == 'deposit') { $xlsCell = array('支付订单号', '充值时间', '玩家账号', '所属推广员', '充值ip', '订单金额', '实付金额', '充值方式'); $unionSql = "{$offcialData}"; } elseif($model == 'game_supersign') { $xlsCell = array('支付订单号', '充值时间', '玩家账号', '所属推广员', '订单金额', '实付金额', '充值方式'); $unionSql = "{$superSignData}"; } $sql = "select count(1) as count from ({$unionSql})t;"; $count = M()->query($sql); $accessNum = $count[0]['count']; $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流中 $perSize = 50000;//每次查询的条数 $pages = ceil($accessNum / $perSize); for($i = 1; $i <= $pages; $i++) { $page = ($i-1)*$perSize; $sql = "select * from ({$unionSql})t order by pay_time DESC limit {$page},{$perSize};"; $xlsData = M()->query($sql); foreach ($xlsData as $k => $v) { if ($model == 'spend') { $v['game_name'] =clearGameNameType($v['game_name']); $v['sdk_version'] =getGameTypeName($v['sdk_version']); } $v['pay_time'] = date('Y-m-d H:i:s',$v['pay_time']); $v['pay_way'] = get_pay_way($v['pay_way']); if ($v['user_account']) { checkEncryptionAuth($v['user_account'],'gameDetail'); } $xlsData[] = $v; mb_convert_variables('GBK', 'UTF-8', $v); fputcsv($fp, $v); } unset($xlsData);//释放变量的内存 //刷新输出缓冲到浏览器 ob_flush(); flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。 } //总计金额逻辑 if ($model == 'spend') { $unionSql = "{$spendData}"; } elseif($model == 'coin_pay_order') { $unionSql = "{$coin_pay_order}"; } elseif($model == 'deposit') { $unionSql = "{$offcialData}"; } elseif($model == 'game_supersign') { $unionSql = "{$superSignData}"; } $sql = "select sum(pay_amount) as pay_amount,pay_way from ({$unionSql})t group by pay_way;"; $sumData = M()->query($sql); $sumAllData['pay_amount'] = 0; $sumAllData['platform_amount'] = 0; if ($model == 'spend') { $sumAllData['platform_amount'] = M('pay_info','tab_') ->join("inner join tab_deposit on tab_pay_info.order_id=tab_deposit.pay_order_number") ->where($coinMap) ->sum('tab_deposit.pay_amount'); } $sumAllData['platform_amount'] = $sumAllData['platform_amount']?$sumAllData['platform_amount']:0; foreach ($sumData as $key => $value) { if ($value['pay_way']>=1) { if($model == 'deposit'||$model == 'coin_pay_order') { $sumAllData['platform_amount'] += $value['pay_amount']; } else { $sumAllData['pay_amount'] += $value['pay_amount']; } } } $sumAllData['sum'] = $sumAllData['bind_amount']+$sumAllData['platform_amount']+$sumAllData['pay_amount']; $sumDatas['pay_order_number'] = "总计"; $sumDatas['pay_time'] = "累计充值:{$sumAllData['sum']} 现金:{$sumAllData['pay_amount']} 平台币:{$sumAllData['platform_amount']}"; mb_convert_variables('GBK', 'UTF-8',$sumDatas); fputcsv($fp, $sumDatas); exit(); } public function testDetail($p=1) { $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 if (isset($_REQUEST['row'])) { $row = $_REQUEST['row']; } else { $row = 10; } $map = []; if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); } elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) { $map['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]); } elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['payed_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399)); } if (!empty($_REQUEST['pay_order_number'])) { $map['pay_order_number'] = array('like',"{$_REQUEST['pay_order_number']}%"); } if (!empty($_REQUEST['order_number'])) { $map['order_number'] = array('like',"{$_REQUEST['order_number']}%"); } if (!empty($_REQUEST['user_account'])) { $map['tab_spend.user_account'] = array('like',"{$_REQUEST['user_account']}%"); } $map['pay_status'] = $coinMap['tab_deposit.pay_status'] = 1; $map['pay_way'] = array('egt',1); if ($_REQUEST['pay_way'] || $_REQUEST['pay_way']=='0') { $map['pay_way'] = $_REQUEST['pay_way']; } $model = $_REQUEST['model']?$_REQUEST['model']:'spend'; $data = []; if ($model == 'spend') { if ($_REQUEST['game_id']) { $map['game_id'] = $_REQUEST['game_id']; } // setPowerPromoteIds($map,'promote_id'); $data = M('spend','tab_') ->field("pay_order_number,order_number,tab_spend.user_account,pay_time,game_name,server_name,game_player_name,cost,pay_amount,pay_way as pay_type,pay_way,pay_game_status,sdk_version") ->join('inner join tab_test_white_list on tab_spend.user_id=tab_test_white_list.user_id') ->where($map) // ->order('tab_spend.id DESC') ->select(false); if ($map['user_account']) { $map['tab_deposit.user_account'] = $map['user_account']; } $map['user_account'] = $map['tab_spend.user_account']; unset($map['tab_spend.user_account']); $coinMap = $map; $map['tab_spend.user_account'] = array('like',"{$_REQUEST['user_account']}%"); $coinMap['tab_deposit.pay_status'] = 1; $coinMap['tab_deposit.pay_way'] = $map['pay_way']; $coinMap['tab_deposit.user_account'] = $coinMap['user_account']; unset($coinMap['user_account']); if(!$coinMap['tab_deposit.user_account']) { unset($coinMap['tab_deposit.user_account']); } if (!$map['user_account']) { unset($map['user_account']); } unset($coinMap['pay_status']); unset($coinMap['pay_way']); // if ($map['pay_time']) { // $coinMap['tab_deposit.create_time'] = $map['pay_time']; // unset($coinMap['pay_time']); // } // unset($coinMap['promote_id']); // setPowerPromoteIds($coinMap,'tab_deposit.promote_id'); $coinData = M('pay_info','tab_') ->join("inner join tab_deposit on tab_pay_info.order_id=tab_deposit.pay_order_number") ->join("inner join tab_test_white_list on tab_test_white_list.user_id=tab_pay_info.user_id") ->field("pay_order_number,tab_deposit.order_number,tab_deposit.user_account,tab_deposit.create_time as pay_time, tab_pay_info.game_name,tab_pay_info.server_name,tab_pay_info.game_player_name,tab_deposit.pay_amount as cost, tab_deposit.pay_amount,tab_deposit.pay_way as pay_type,tab_deposit.pay_way,'' as pay_game_status,tab_pay_info.sdk_version") ->where($coinMap) ->select(false); // var_dump($coinData);die(); $page = ($page-1) * $row; $count = "select count(*) as count from ({$data} UNION ALL {$coinData})t;"; $data = "select * from ({$data} UNION ALL {$coinData})t limit {$page},{$row};"; $data = M()->query($data); $count = M()->query($count); $count = $count[0]['count']; foreach ($data as $key => $value) { if(!$value['order_number']) { $data[$key]['order_number'] = '无'; } $data[$key]['pay_time'] = Date('Y-m-d H:i:s',$value['pay_time']); $data[$key]['pay_type'] = get_pay_way($value['pay_type']); $data[$key]['game_name'] =clearGameNameType($data[$key]['game_name']); $data[$key]['sdk_version'] =getGameTypeName($data[$key]['sdk_version']); if ($value['pay_way']==1 || $value['pay_way']==9 ) { $data[$key]['pay_way'] = '支付宝'; } else if ($value['pay_way']==2 || $value['pay_way']==3 ) { $data[$key]['pay_way'] = '微信支付'; } else if ($value['pay_way']==15) { $data[$key]['pay_way'] = '快捷支付'; } else if ($value['pay_way']==7) { $data[$key]['pay_way'] = '苹果支付'; } else if ($value['pay_way']==17) { $data[$key]['pay_way'] = '易宝支付'; } else if($value['pay_way']){ $data[$key]['pay_way'] = '其他支付'; } if ($value['pay_game_status'] == '0') { $data[$key]['pay_game_status'] = '失败'; } else if ($value['pay_game_status'] == 1) { $data[$key]['pay_game_status'] = '成功'; } else if ($value['pay_game_status'] == 2) { $data[$key]['pay_game_status'] = '已退款'; } else if (!$value['pay_game_status']) { $data[$key]['pay_game_status'] = '无'; } } $field = "sum(cost) as cost,sum(pay_amount) as pay_amount,pay_way"; $coinDataSum = M('pay_info','tab_') ->join("inner join tab_deposit on tab_pay_info.order_id=tab_deposit.pay_order_number") ->join("inner join tab_test_white_list on tab_test_white_list.user_id=tab_pay_info.user_id") ->field("sum(tab_deposit.pay_amount) as cost,sum(tab_deposit.pay_amount) as pay_amount,tab_deposit.pay_way") ->where($coinMap) ->find(); $coinDataSumSql = M('pay_info','tab_') ->join("inner join tab_deposit on tab_pay_info.order_id=tab_deposit.pay_order_number") ->join("inner join tab_test_white_list on tab_test_white_list.user_id=tab_pay_info.user_id") ->field("sum(tab_deposit.pay_amount) as cost,sum(tab_deposit.pay_amount) as pay_amount,tab_deposit.pay_way") ->where($coinMap) ->group('pay_way') ->select(false); } elseif($model == 'game_supersign') { if ($map['pay_order_number']) { $map['order_id'] = $map['pay_order_number']; unset($map['pay_order_number']); } if ($map['user_account']) { $map['account'] = $map['user_account']; unset($map['user_account']); } if ($_REQUEST['game_id']) { $map['game_id'] = $_REQUEST['game_id']; } if ($map['payed_time']) { $map['pay_time'] = $map['payed_time']; unset($map['payed_time']); } $map['tab_game_supersign.pay_status'] = $map['pay_status']; unset($map['pay_status']); $data = M('game_supersign','tab_') ->field("order_id as pay_order_number,trade_id as order_number,account as user_account,pay_time,game_name,pay_price as cost,pay_price as pay_amount,pay_way as pay_type,pay_way") ->join('inner join tab_test_white_list on tab_game_supersign.user_id=tab_test_white_list.user_id') ->join('left join tab_game on tab_game_supersign.game_id= tab_game.id') ->page($page, $row) ->where($map) ->order('tab_game_supersign.id DESC') ->select(); foreach($data as $key => $value) { $data[$key]['pay_time'] = Date('Y-m-d H:i:s',$value['pay_time']); $data[$key]['pay_type'] = get_pay_way($value['pay_type']); $data[$key]['game_name'] =clearGameNameType($data[$key]['game_name']); $data[$key]['sdk_version'] ="苹果"; if ($value['pay_way']==1 || $value['pay_way']==9 ) { $data[$key]['pay_way'] = '支付宝'; } else if ($value['pay_way']==2 || $value['pay_way']==3 ) { $data[$key]['pay_way'] = '微信支付'; } else if ($value['pay_way']==15) { $data[$key]['pay_way'] = '快捷支付'; } else if ($value['pay_way']==7) { $data[$key]['pay_way'] = '苹果支付'; } else if ($value['pay_way']==17) { $data[$key]['pay_way'] = '易宝支付'; } else if($value['pay_way']){ $data[$key]['pay_way'] = '其他支付'; } } $count = M('game_supersign','tab_') ->field("order_id as pay_order_number,trade_id as order_number,account as user_account,pay_time,game_name,pay_price as cost,pay_price as pay_amount,pay_way as pay_type,pay_way") ->join('inner join tab_test_white_list on tab_game_supersign.user_id=tab_test_white_list.user_id') ->join('left join tab_game on tab_game_supersign.game_id= tab_game.id') ->where($map) ->order('tab_game_supersign.id DESC') ->count(); $field = "sum(pay_price) as cost,sum(pay_price) as pay_amount,pay_way"; } elseif($model == 'deposit') { $map['pay_source'] = 0; // if ($map['payed_time']) { // $map['create_time'] = $map['pay_time']; // unset($map['pay_time']); // } // setPowerPromoteIds($map,'tab_deposit.promote_id'); $data = M('deposit','tab_') ->field("pay_order_number,order_number,user_account,create_time as pay_time,pay_amount as cost,pay_amount,pay_way as pay_type,pay_way") ->join('inner join tab_test_white_list on tab_deposit.user_id=tab_test_white_list.user_id') ->where($map) ->page($page, $row) ->order('tab_deposit.id DESC') ->select(); foreach($data as $key => $value) { $data[$key]['pay_time'] = Date('Y-m-d H:i:s',$value['pay_time']); $data[$key]['pay_type'] = get_pay_way($value['pay_type']); if ($value['pay_way']==1 || $value['pay_way']==9 ) { $data[$key]['pay_way'] = '支付宝'; } else if ($value['pay_way']==2 || $value['pay_way']==3 ) { $data[$key]['pay_way'] = '微信支付'; } else if ($value['pay_way']==15) { $data[$key]['pay_way'] = '快捷支付'; } else if ($value['pay_way']==7) { $data[$key]['pay_way'] = '苹果支付'; } else if ($value['pay_way']==17) { $data[$key]['pay_way'] = '易宝支付'; } else if($value['pay_way']){ $data[$key]['pay_way'] = '其他支付'; } } $count = M('deposit','tab_') ->field("pay_order_number,order_number,user_account,create_time as pay_time,pay_amount as cost,pay_amount,pay_way as pay_type,pay_way") ->join('inner join tab_test_white_list on tab_deposit.user_id=tab_test_white_list.user_id') ->where($map) ->order('tab_deposit.id DESC') ->count(); $field = "sum(pay_amount) as cost,sum(pay_amount) as pay_amount,pay_way"; } $sumAllData = M($model,'tab_') ->field($field) ->join('inner join tab_test_white_list on tab_'.$model.'.user_id=tab_test_white_list.user_id') ->where($map) ->find(); $sumData = M($model,'tab_') ->field($field) ->join('inner join tab_test_white_list on tab_'.$model.'.user_id=tab_test_white_list.user_id') ->where($map) ->group('pay_way') ->select(false); if ($model == 'spend') { $sumData = "{$sumData} union all {$coinDataSumSql}"; $sumAllData['pay_amount'] += $coinDataSum['pay_amount']; $sumAllData['cost'] += $coinDataSum['cost']; } $sumAllData['pay_amount'] = number_format($sumAllData['pay_amount'],2,'.',''); $sumAllData['cost'] = number_format($sumAllData['cost'],2,'.',''); $this->assign('sumAllData',$sumAllData); $sumData = "select cost,sum(pay_amount) as pay_amount,pay_way from ({$sumData})t group by pay_way"; $sumData = M()->query($sumData); $payTypeData['支付宝支付金额'] = 0; $payTypeData['微信支付金额'] = 0; $payTypeData['快捷支付金额'] = 0; $payTypeData['苹果支付金额'] = 0; $payTypeData['易宝支付金额'] = 0; $payTypeData['其他支付金额'] = 0; foreach($sumData as $key => $value) { if ($value['pay_way']==1 || $value['pay_way']==9 ) { $payTypeData['支付宝支付金额'] += number_format($value['pay_amount'],2,'.',''); } else if ($value['pay_way']==2 || $value['pay_way']==3 ) { $payTypeData['微信支付金额'] += number_format($value['pay_amount'],2,'.',''); } else if ($value['pay_way']==15) { $payTypeData['快捷支付金额'] += number_format($value['pay_amount'],2,'.',''); } else if ($value['pay_way']==7) { $payTypeData['苹果支付金额'] += number_format($value['pay_amount'],2,'.',''); } else if ($value['pay_way']==17) { $payTypeData['易宝支付金额'] += number_format($value['pay_amount'],2,'.',''); } else if($value['pay_way']){ $payTypeData['其他支付金额'] += number_format($value['pay_amount'],2,'.',''); } } $payTypeData['支付宝支付金额'] = number_format($payTypeData['支付宝支付金额'],2,'.',''); $payTypeData['微信支付金额'] = number_format($payTypeData['微信支付金额'],2,'.',''); $payTypeData['快捷支付金额'] = number_format($payTypeData['快捷支付金额'],2,'.',''); $payTypeData['其他支付金额'] = number_format($payTypeData['其他支付金额'],2,'.',''); $payTypeData['苹果支付金额'] = number_format($payTypeData['苹果支付金额'],2,'.',''); $payTypeData['易宝支付金额'] = number_format($payTypeData['易宝支付金额'],2,'.',''); $this->assign('payTypeData',$payTypeData); foreach($sumData as $key=>$value) { $sumData[$key]['pay_amount'] = number_format($value['pay_amount'],2,'.',''); $sumData[$key]['pay_way'] = get_pay_way($value['pay_way']); if (!$value['pay_way']) { unset($sumData[$key]); } } $this->checkListOrCountAuthRestMap($map,[]); $page = set_pagination($count, $row); if ($page) { $this->assign('_page', $page); } $this->meta_title = "测试统计"; $this->assign('sumData',$sumData); $this->assign('data',$data); $this->display(); } public function export_testDetail() { $xlsName = $_REQUEST['xlsname']; $map = []; if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['pay_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); } elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) { $map['pay_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]); } elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['pay_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399)); } if (!empty($_REQUEST['pay_order_number'])) { $map['pay_order_number'] = array('like',"{$_REQUEST['pay_order_number']}%"); } if (!empty($_REQUEST['order_number'])) { $map['order_number'] = array('like',"{$_REQUEST['order_number']}%"); } if (!empty($_REQUEST['user_account'])) { $map['user_account'] = array('like',"{$_REQUEST['user_account']}%"); } $map['pay_status'] = $coinMap['tab_deposit.pay_status'] = 1; $map['pay_way'] = array('egt',1); $model = $_REQUEST['model']?$_REQUEST['model']:'spend'; if ($_REQUEST['pay_way'] || $_REQUEST['pay_way']=='0') { $map['pay_way'] = $_REQUEST['pay_way']; } $data = []; $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流 $perSize = 50000;//每次查询的条数 if ($model == 'spend') { $xlsCell = array('支付订单号', 'cp订单号', '测试账号', '充值时间', '游戏名称','设备名称', '游戏区服', '角色名称', '订单金额', ' 实付金额 ', '充值方式', '支付渠道', '游戏通知状态',); mb_convert_variables('GBK', 'UTF-8', $xlsCell); fputcsv($fp, $xlsCell);//将数据格式化为CSV格式并写入到output流中 if ($_REQUEST['game_id']) { $map['game_id'] = $_REQUEST['game_id']; } // setPowerPromoteIds($map,'promote_id'); $data = M('spend','tab_') ->field("pay_order_number,order_number,user_account,pay_time,game_name,sdk_version,server_name,game_player_name,cost,pay_amount,pay_way as pay_type,pay_way,pay_game_status") ->join('inner join tab_test_white_list on tab_spend.user_id=tab_test_white_list.user_id') ->where($map) // ->order('tab_spend.id DESC') ->select(false); // if ($map['user_account']) { // $map['tab_deposit.user_account'] = $map['user_account']; // } $map['user_account'] = $map['tab_spend.user_account']; unset($map['tab_spend.user_account']); $coinMap = $map; $coinMap['tab_deposit.pay_status'] = 1; $coinMap['tab_deposit.pay_way'] = $map['pay_way']; unset($coinMap['pay_status']); unset($coinMap['pay_way']); $coinMap['tab_deposit.user_account'] = $coinMap['user_account']; unset($coinMap['user_account']); if(!$coinMap['tab_deposit.user_account']) { unset($coinMap['tab_deposit.user_account']); } if (!$map['user_account']) { unset($map['user_account']); } if($map['pay_time']) { $coinMap['tab_deposit.create_time'] = $map['pay_time']; unset($coinMap['pay_time']); } // unset($coinMap['promote_id']); // setPowerPromoteIds($coinMap,'tab_deposit.promote_id'); $coinData = M('pay_info','tab_') ->join("inner join tab_deposit on tab_pay_info.order_id=tab_deposit.pay_order_number") ->join("inner join tab_test_white_list on tab_test_white_list.user_id=tab_pay_info.user_id") ->field("pay_order_number,tab_deposit.order_number,tab_deposit.user_account,tab_deposit.create_time as pay_time, tab_pay_info.game_name,tab_pay_info.sdk_version,tab_pay_info.server_name,tab_pay_info.game_player_name,tab_deposit.pay_amount as cost, tab_deposit.pay_amount,tab_deposit.pay_way as pay_type,tab_deposit.pay_way,'' as pay_game_status") ->where($coinMap) ->select(false); $count = "select count(*) as count from ({$data} UNION ALL {$coinData})t;"; $count = M()->query($count); $accessNum = $count[0]['count']; $pages = ceil($accessNum / $perSize); for($i = 1; $i <= $pages; $i++) { $page = ($i - 1) * $perSize; $data = "select * from ({$data} UNION ALL {$coinData})t limit {$page},{$perSize};"; $data = M()->query($data); foreach ($data as $key => $value) { checkEncryptionAuth($value['user_account'],'testDetail'); $value['pay_order_number'] = "'".$value['pay_order_number']; $value['order_number'] = "'".$value['order_number']; $value['game_name'] =clearGameNameType($value['game_name']); $value['sdk_version'] =getGameTypeName($value['sdk_version']); if (!$value['order_number']) { $data[$key]['order_number'] = '无'; } $value['pay_time'] = Date('Y-m-d H:i:s', $value['pay_time']); $value['pay_type'] = get_pay_way($value['pay_type']); if ($value['pay_way'] == 1 || $value['pay_way'] == 9) { $value['pay_way'] = '支付宝'; } else if ($value['pay_way'] == 2 || $value['pay_way'] == 3) { $value['pay_way'] = '微信支付'; } else if ($value['pay_way'] == 15) { $value['pay_way'] = '快捷支付'; } else if ($value['pay_way']==7) { $data[$key]['pay_way'] = '苹果支付'; } else if ($value['pay_way']==17) { $data[$key]['pay_way'] = '易宝支付'; } else if ($value['pay_way']) { $value['pay_way'] = '其他支付'; } if ($value['pay_game_status'] == '0') { $value['pay_game_status'] = '失败'; } else if ($value['pay_game_status'] == 1) { $value['pay_game_status'] = '成功'; } else if ($value['pay_game_status'] == 2) { $value['pay_game_status'] = '已退款'; } else if (!$value['pay_game_status']) { $value['pay_game_status'] = '无'; } mb_convert_variables('GBK', 'UTF-8', $value); fputcsv($fp, $value); } unset($data);//释放变量的内存 //刷新输出缓冲到浏览器 ob_flush(); flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。 } $field = "sum(cost) as cost,sum(pay_amount) as pay_amount,pay_way"; $coinDataSum = M('pay_info','tab_') ->join("inner join tab_deposit on tab_pay_info.order_id=tab_deposit.pay_order_number") ->join("inner join tab_test_white_list on tab_test_white_list.user_id=tab_pay_info.user_id") ->field("sum(tab_deposit.pay_amount) as cost,sum(tab_deposit.pay_amount) as pay_amount,tab_deposit.pay_way") ->where($coinMap) ->find(); $coinDataSumSql = M('pay_info','tab_') ->join("inner join tab_deposit on tab_pay_info.order_id=tab_deposit.pay_order_number") ->join("inner join tab_test_white_list on tab_test_white_list.user_id=tab_pay_info.user_id") ->field("sum(tab_deposit.pay_amount) as cost,sum(tab_deposit.pay_amount) as pay_amount,tab_deposit.pay_way") ->where($coinMap) ->group('pay_way') ->select(false); } elseif($model == 'game_supersign') { $xlsCell = array('支付订单号', '测试账号', '充值时间', '游戏名称','设备名称', '订单金额', ' 实付金额 ', '充值方式', '支付渠道',); mb_convert_variables('GBK', 'UTF-8', $xlsCell); fputcsv($fp, $xlsCell);//将数据格式化为CSV格式并写入到output流中 if ($map['pay_order_number']) { $map['order_id'] = $map['pay_order_number']; unset($map['pay_order_number']); } if ($map['user_account']) { $map['account'] = $map['user_account']; unset($map['user_account']); } if ($_REQUEST['game_id']) { $map['game_id'] = $_REQUEST['game_id']; } $map['tab_game_supersign.pay_status'] = $map['pay_status']; unset($map['pay_status']); $accessNum = M('game_supersign','tab_') ->field("order_id as pay_order_number,trade_id as order_number,account as user_account,pay_time,game_name,pay_price as cost,pay_price as pay_amount,pay_way as pay_type,pay_way") ->join('inner join tab_test_white_list on tab_game_supersign.user_id=tab_test_white_list.user_id') ->join('left join tab_game on tab_game_supersign.game_id= tab_game.id') ->where($map) ->order('tab_game_supersign.id DESC') ->count(); $pages = ceil($accessNum / $perSize); for($i = 1; $i <= $pages; $i++) { $page = ($i - 1) * $perSize; $data = M('game_supersign', 'tab_') ->field("order_id as pay_order_number,account as user_account,pay_time,game_name,@t:='苹果' sdk_version,pay_price as cost,pay_price as pay_amount,pay_way as pay_type,pay_way") ->join('inner join tab_test_white_list on tab_game_supersign.user_id=tab_test_white_list.user_id') ->join('left join tab_game on tab_game_supersign.game_id= tab_game.id') ->where($map) ->limit($page ,$perSize) ->order('tab_game_supersign.id DESC') ->select(); foreach ($data as $key => $value) { $value['pay_order_number'] = "'".$value['pay_order_number']; $value['pay_time'] = Date('Y-m-d H:i:s', $value['pay_time']); $value['game_name'] =clearGameNameType($value['game_name']); $value['pay_type'] = get_pay_way($value['pay_type']); if ($value['pay_way'] == 1 || $value['pay_way'] == 9) { $value['pay_way'] = '支付宝'; } else if ($value['pay_way'] == 2 || $value['pay_way'] == 3) { $value['pay_way'] = '微信支付'; } else if ($value['pay_way'] == 15) { $value['pay_way'] = '快捷支付'; } else if ($value['pay_way']==7) { $data[$key]['pay_way'] = '苹果支付'; } else if ($value['pay_way']==17) { $data[$key]['pay_way'] = '易宝支付'; } else if ($value['pay_way']) { $value['pay_way'] = '其他支付'; } mb_convert_variables('GBK', 'UTF-8', $value); fputcsv($fp, $value); } unset($data);//释放变量的内存 //刷新输出缓冲到浏览器 ob_flush(); flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。 } $field = "pay_price as cost,sum(pay_price) as pay_amount,pay_way"; } elseif($model == 'deposit') { $xlsCell = array('支付订单号', 'cp订单号', '测试账号', '充值时间', '订单金额', ' 实付金额 ', '充值方式', '支付渠道'); mb_convert_variables('GBK', 'UTF-8', $xlsCell); fputcsv($fp, $xlsCell);//将数据格式化为CSV格式并写入到output流中 $map['pay_source'] = 0; if ($map['pay_time']) { $map['create_time'] = $map['pay_time']; unset($map['pay_time']); } // setPowerPromoteIds($map,'tab_deposit.promote_id'); $accessNum = M('deposit','tab_') ->field("pay_order_number,order_number,user_account,create_time as pay_time,pay_amount as cost,pay_amount,pay_way as pay_type,pay_way") ->join('inner join tab_test_white_list on tab_deposit.user_id=tab_test_white_list.user_id') ->where($map) ->order('tab_deposit.id DESC') ->count(); $pages = ceil($accessNum / $perSize); for($i = 1; $i <= $pages; $i++) { $page = ($i - 1) * $perSize; $data = M('deposit', 'tab_') ->field("pay_order_number,order_number,user_account,create_time as pay_time,pay_amount as cost,pay_amount,pay_way as pay_type,pay_way") ->join('inner join tab_test_white_list on tab_deposit.user_id=tab_test_white_list.user_id') ->where($map) ->limit($page ,$perSize) ->order('tab_deposit.id DESC') ->select(); foreach ($data as $key => $value) { $value['pay_order_number'] = "'".$value['pay_order_number']; $value['order_number'] = "'".$value['order_number']; $value['pay_time'] = Date('Y-m-d H:i:s', $value['pay_time']); $value['pay_type'] = get_pay_way($value['pay_type']); if ($value['pay_way'] == 1 || $value['pay_way'] == 9) { $value['pay_way'] = '支付宝'; } else if ($value['pay_way'] == 2 || $value['pay_way'] == 3) { $value['pay_way'] = '微信支付'; } else if ($value['pay_way'] == 15) { $value['pay_way'] = '快捷支付'; } else if ($value['pay_way']==7) { $data[$key]['pay_way'] = '苹果支付'; } else if ($value['pay_way']==17) { $data[$key]['pay_way'] = '易宝支付'; } else if ($value['pay_way']) { $value['pay_way'] = '其他支付'; } mb_convert_variables('GBK', 'UTF-8', $value); fputcsv($fp, $value); } unset($data);//释放变量的内存 //刷新输出缓冲到浏览器 ob_flush(); flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。 } $field = "pay_amount as cost,sum(pay_amount) as pay_amount,pay_way"; } $sumAllData = M($model,'tab_') ->field($field) ->join('inner join tab_test_white_list on tab_'.$model.'.user_id=tab_test_white_list.user_id') ->where($map) ->find(); $sumData = M($model,'tab_') ->field($field) ->join('inner join tab_test_white_list on tab_'.$model.'.user_id=tab_test_white_list.user_id') ->where($map) ->group('pay_way') ->select(false); if ($model == 'spend') { $sumData = "{$sumData} union all {$coinDataSumSql}"; $sumAllData['pay_amount'] += $coinDataSum['pay_amount']; $sumAllData['cost'] += $coinDataSum['cost']; } $sumData = "select cost,sum(pay_amount) as pay_amount,pay_way from ({$sumData})t group by pay_way"; $sumData = M()->query($sumData); $payTypeData['支付宝支付金额'] = 0; $payTypeData['微信支付金额'] = 0; $payTypeData['快捷支付金额'] = 0; $payTypeData['其他支付金额'] = 0; $payTypeData['苹果支付金额'] = number_format($payTypeData['苹果支付金额'],2,'.',''); $payTypeData['易宝支付金额'] = number_format($payTypeData['易宝支付金额'],2,'.',''); foreach($sumData as $key => $value) { if ($value['pay_way']==1 || $value['pay_way']==9 ) { $payTypeData['支付宝支付金额'] += number_format($value['pay_amount'],2,'.',''); } else if ($value['pay_way']==2 || $value['pay_way']==3 ) { $payTypeData['微信支付金额'] += number_format($value['pay_amount'],2,'.',''); } else if ($value['pay_way']==15) { $payTypeData['快捷支付金额'] += number_format($value['pay_amount'],2,'.',''); } else if ($value['pay_way']==7) { $payTypeData['苹果支付金额'] += number_format($value['pay_amount'],2,'.',''); } else if ($value['pay_way']==17) { $payTypeData['易宝支付金额'] += number_format($value['pay_amount'],2,'.',''); } else if($value['pay_way']){ $payTypeData['其他支付金额'] += number_format($value['pay_amount'],2,'.',''); } } foreach($sumData as $key=>$value) { $sumData[$key]['pay_amount'] = number_format($value['pay_amount'],2,'.',''); $sumData[$key]['pay_way'] = get_pay_way($value['pay_way']); if (!$value['pay_way']) { unset($sumData[$key]); } } //总计 if ($model == 'spend') { $sumAllDataother['pay_order_number'] = '总计'; $sumAllDataother['order_number'] = '------'; $sumAllDataother['user_account'] = '------'; $sumAllDataother['pay_time'] = '------'; $sumAllDataother['game_name'] = '------'; $sumAllDataother['sdk_version'] = '------'; $sumAllDataother['server_name'] = '------'; $sumAllDataother['game_player_name'] = '------'; $sumAllDataother['cost'] = $sumAllData['cost']; $sumAllDataother['pay_amount'] = $sumAllData['pay_amount']; $sumAllDataother['pay_type'] = '------'; $sumAllDataother['pay_way'] = '------'; $sumAllDataother['pay_game_status'] = '------'; } elseif($model == 'game_supersign') { $sumAllDataother['pay_order_number'] = '总计'; $sumAllDataother['user_account'] = '------'; $sumAllDataother['pay_time'] = '------'; $sumAllDataother['game_name'] = '------'; $sumAllDataother['cost'] = $sumAllData['cost']; $sumAllDataother['pay_amount'] = $sumAllData['pay_amount']; $sumAllDataother['pay_type'] = '------'; $sumAllDataother['pay_way'] = '------'; } elseif($model == 'deposit') { $sumAllDataother['pay_order_number'] = '总计'; $sumAllDataother['order_number'] = '------'; $sumAllDataother['user_account'] = '------'; $sumAllDataother['pay_time'] = '------'; $sumAllDataother['cost'] = $sumAllData['cost']; $sumAllDataother['pay_amount'] = $sumAllData['pay_amount']; $sumAllDataother['pay_type'] = '------'; $sumAllDataother['pay_way'] = '------'; } mb_convert_variables('GBK', 'UTF-8',$sumAllDataother); fputcsv($fp, $sumAllDataother); $sumAllDataPay['pay_order_number'] = '充值方式合计'; $sumAllDataPay['order_number'] = ''; //支付渠道合计 foreach ($payTypeData as $key => $value) { $sumAllDataPay['order_number'] .= $key.':'.$value.' '; } mb_convert_variables('GBK', 'UTF-8',$sumAllDataPay); fputcsv($fp, $sumAllDataPay); //支付渠道 $sumDataPay['pay_order_number'] = '支付渠道'; $sumDataPay['order_number'] = ''; foreach ($sumData as $key => $value) { $sumDataPay['order_number'] .= $value['pay_way'].':'.$value['pay_amount'].' '; } mb_convert_variables('GBK', 'UTF-8',$sumDataPay); fputcsv($fp, $sumDataPay); } function getGameList() { if (I('partner_id')) { $map['partner_id'] = I('partner_id'); } if (I('sdk_type')) { $map['sdk_version'] = I('sdk_type'); } $data = M('game','tab_')->field("id,game_name")->where($map)->select(); $this->ajaxReturn($data,'json'); } }