field("count_date,cash_count,balance_coin_count,inside_cash_count,all_cash_count") // ->where($map) // ->page($page,$row) // ->group("count_date") // ->select(); // if (empty(I('game_id'))) { // $field = "count_date,sum(cash_count) as cash_count,sum(balance_coin_count) as balance_coin_count, // sum(inside_cash_count) as inside_cash_count,sum(cash_count+balance_coin_count) as all_cash_count"; // $InsideField = "inside_cash_count"; // $map['inside_cash_count'] = ['neq',0]; // $insideData = D("spend_count")->getSpendCountData($map,"count_date,inside_cash_count as count","promote_id,count_date"); // unset($map['inside_cash_count']); // } else { // $field = "count_date,sum(cash_count) as cash_count,sum(balance_coin_count) as balance_coin_count, // sum(bind_coin_count) as inside_cash_count,sum(cash_count+balance_coin_count) as all_cash_count"; // $InsideField = "bind_coin_count"; // $map['bind_coin_count'] = ['neq',0]; // $insideData = D("spend_count")->getSpendCountData($map,"count_date,bind_coin_count as count","promote_id,count_date,game_id"); // unset($map['bind_coin_count']); // } // //内充流水与绑定流水数据 // $insideDataSum = []; // foreach ($insideData as $key => $value) { // if (isset($insideDataSum[$value['count_date']])) { // $insideDataSum[$value['count_date']] = $insideDataSum[$value['count_date']] + $value['count']; // } else { // $insideDataSum[$value['count_date']] = $value['count']; // } // } // var_dump($insideDataSum); // var_dump(array_sum($insideDataSum)); // echo D("spend_count")->_sql(); // var_dump($insideData);die(); // $group = "count_date"; // $order = "id DESC"; // $data = D("spend_count")->getSpendCountData($map,$field,$group,$order,$page,$row); // // foreach ($data as $key => $value) { // $data[$key]['all_cash_count'] = $value['all_cash_count'] + $insideDataSum[$value['count_date']]; // $data[$key]['inside_cash_count'] = $insideDataSum[$value['count_date']]; // } // // $sumCash = D("spend_count")->sumSpendCountField($map,"cash_count"); // $sumBalance = D("spend_count")->sumSpendCountField($map,"balance_coin_count"); // $sumInside = array_sum($insideDataSum); // $allField = "cash_count+balance_coin_count"; // $sumAll = D("spend_count")->sumSpendCountField($map,$allField)+array_sum($insideDataSum); // // $count = D("spend_count")->getSpendCountData($map,$field,$group,''); $order = "id DESC"; $data = M('spend_month_count','tab_') ->field("cash_count,balance_coin_count,inside_cash_count,all_count,count_date,balance_coin_deposit,bind_coin_count") ->where($map) ->page($page,$row) ->order($order) ->select(); $count = M('spend_month_count','tab_') ->field("cash_count,balance_coin_count,inside_cash_count,all_count,count_date") ->where($map) ->order($order) ->select(); $sumData = M('spend_month_count','tab_') ->field("sum(cash_count) as cash_count,sum(balance_coin_count) as balance_coin_count,sum(inside_cash_count) as inside_cash_count,sum(all_count) as all_count,count_date,sum(balance_coin_deposit) as balance_coin_deposit,sum(bind_coin_count) as bind_coin_count") ->where($map) ->order($order) ->find(); // echo D("spend_count")->_sql();die(); $count = count($count); $page = set_pagination($count,$row); // var_dump($page);die(); if($page) {$this->assign('_page', $page);} $this->meta_title = '月结统计'; // $this->assign('sumCash',$sumCash); // $this->assign('sumBalance',$sumBalance); // $this->assign('sumInside',$sumInside); // $this->assign('sumAll',$sumAll); $this->assign('sumData',$sumData); $this->assign('data',$data); $this->display(); } function gameFinance($p = 1) { $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 $row=10; if(isset($_REQUEST['row'])) { $row = $_REQUEST['row']; }else{ $row = 10; } $map = []; if(!empty(I('count_date'))){ $map['count_date']=I('count_date'); } if (!empty(I('root_name'))) { $map['promote_account'] = array('like','%'.I("root_name").'%'); } $game_ids = array_column(getGameByName(I("game_name"), I("sdk_type")), 'id'); if ($game_ids) { $map['game_id'] = ['in', $game_ids]; } if(!empty(I('root_id'))||I('root_id')=='0') { $root_id = I('root_id'); if ($root_id == '0') { $map['_string'] = "promote_id = {$root_id}"; } else if($root_id){ $map['_string'] = "promote_id = {$root_id} or chain like '%/{$root_id}/%'"; // $map['_string'] = "promote_id = {$root_id} or parent_id = {$root_id} or root_id = {$root_id}"; } } if (!empty(I('partner_id'))) { $map['partner_id']=I('partner_id'); } if (I('sign') == 2&&empty(I('root_id'))) { $map['_string'] = "parent_id >0 or root_id>0"; } if (I('sign') == 3&&empty(I('root_id'))) { $map['_string'] = "parent_id >0 and root_id>0"; } // var_dump($map);die(); if(!empty(I('parent_id'))) { $parent_id = I('parent_id'); $map['_string'] = "promote_id = {$parent_id} or chain like '%/{$parent_id}/%'"; } if (!empty(I('promote_id'))) { $promote_id = I('promote_id'); $map['_string'] = "promote_id = {$promote_id}"; } $map['inside_cash_count'] = ['neq',0]; $insideData = D("spend_count")->getSpendCountData($map,"game_id,inside_cash_count as count","promote_id,count_date"); unset($map['inside_cash_count']); //内充流水与绑定流水数据 $insideDataSum = []; foreach ($insideData as $key => $value) { if (isset($insideDataSum[$value['game_id']])) { $insideDataSum[$value['game_id']] = $insideDataSum[$value['game_id']] + $value['count']; } else { $insideDataSum[$value['game_id']] = $value['count']; } } // var_dump($insideDataSum);die(); $field = "count_date,sum(cash_count) as cash_count,sum(balance_coin_count) as balance_coin_count, sum(inside_cash_count) as inside_cash_count,sum(cash_count+balance_coin_count) as all_cash_count,game_name,game_id,partner_name"; $group = "game_id"; $order = "id DESC"; $data = D("spend_count")->getSpendCountData($map,$field,$group,$order,$page,$row); foreach ($data as $key => $value) { $data[$key]['inside_cash_count'] = number_format($insideDataSum[$value['game_id']],2,'.',''); $data[$key]['all_cash_count'] = number_format($insideDataSum[$value['game_id']]+$data[$key]['all_cash_count'],2,'.',''); } $sumCash = D("spend_count")->sumSpendCountField($map,"cash_count"); $sumBalance = D("spend_count")->sumSpendCountField($map,"balance_coin_count"); $sumInside = number_format(array_sum($insideDataSum),2,'.',''); $sumAll = D("spend_count")->sumSpendCountField($map,"cash_count+balance_coin_count") + array_sum($insideDataSum); $count = D("spend_count")->getSpendCountData($map,$field,$group,$order); $count = count($count); $page = set_pagination($count,$row); if($page) {$this->assign('_page', $page);} $this->meta_title = '每月情况查看详情'; $this->assign('from',I('from')); $this->assign('sumCash',$sumCash); $this->assign('sumBalance',$sumBalance); $this->assign('sumInside',$sumInside); $this->assign('sumAll',$sumAll); $this->assign('data',$data); $this->display(); } function gameFinanceDetail($p = 1) { set_time_limit(0); if (!empty(I("promote_id"))) { $promote_id[] = I("promote_id"); } if (!empty(I("root_id"))) { $root_id = I("root_id"); $promote_id = $this->getPromoteList($root_id); array_push($promote_id,$root_id); } if ($_REQUEST['root_id']=='0') { $map['promote_id'] = $_REQUEST['root_id']; } if (!empty(I("parent_id"))) { $parent_id = I("parent_id"); $promote_id = $this->getPromoteList($parent_id); array_push($promote_id,$parent_id); } $promote_id = implode(',',$promote_id); if ($promote_id) { $map['promote_id'] = ['in',$promote_id]; } if (!empty(I('partner_id'))&&empty(I("game_id"))) { $wherePartner = I('partner_id'); $gameId = M("game","tab_")->field("id")->where("partner_id={$wherePartner}")->select(); $gameId = implode(',',array_column($gameId,'id')); $map['game_id'] = ['in',$gameId]; } // var_dump($map);die(); $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 $row=10; if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;} if (!empty(I("count_date"))) { $month = I("count_date"); $tarry = explode('-',$month); $startTime=mktime(0,0,0,$tarry[1],1,$tarry[0]); $endTime =mktime(0,0,0,$tarry[1]-0+1,1,$tarry[0])-1; $map['pay_time'] = array('between',array($startTime,$endTime)); } $map['pay_status'] = 1; if (!empty(I("game_id"))) { $map['game_id'] = I("game_id"); } if (!empty(I('user_account'))) { $map['user_account'] = array('like','%'.I("user_account").'%'); } if (!empty(I('user_nickname'))) { $map['game_player_name'] = array('like',I("user_nickname").'%'); } // var_dump($map);die(); $field = "pay_order_number,FROM_UNIXTIME(pay_time) as pay_time,user_account,user_nickname,game_name,promote_account,spend_ip,server_name,game_player_name,pay_amount,cost,pay_way"; $group = ""; $order = "pay_time DESC"; $data = D('spend')->getSpendData($map,$field,$group,$order,$page,$row); // echo D("spend")->_sql();die(); foreach($data as $key => $value) { $data[$key]['pay_way'] = getPayType($value['pay_way']); } $sum = D('spend')->sumSpend($map,'pay_amount'); $count = D("spend")->getSpendData($map,$field,$group,$order); $count = count($count); $page = set_pagination($count,$row); if($page) {$this->assign('_page', $page);} $this->meta_title = '游戏充值流水'; $this->assign('data',$data); $this->assign('sum_amount',$sum); $this->display(); } //按月份获取会长统计 public function getRootUser($p = 1) { $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 $row=10; if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;} //获取所有数据 if (!empty(I("count_date"))) { $map['count_date'] = I("count_date"); } if (!empty(I("root_name"))) { $map['promote_account']=['like','%'.I("root_name").'%']; } // $map['chain'] = "/"; $map['level'] = ['elt',1]; $subQueryAll = M('spend_user_count','tab_') ->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count') ->where($map) ->group('promote_id') ->page($page,$row) ->select(); $sumData = M('spend_user_count','tab_') ->field('sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count') ->where($map) ->find(); $count = M('spend_user_count','tab_') ->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count') ->where($map) ->group('promote_id') ->select(); $count = count($count); $page = set_pagination($count,$row); if($page) {$this->assign('_page', $page);} $this->meta_title = '会长流水'; $this->assign('sumData',$sumData); $this->assign('data',$subQueryAll); $this->display(); } public function getMiniterUser($p = 1) { $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 $row=10; if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;} if (!empty(I("count_date")) ) { $month = I("count_date"); $map['count_date'] =$month; } $parentData = []; if (!empty(I("root_id"))) { $root_id = I("root_id"); if ($page == 1) { $parentData = $this->getParentSpendData($root_id,$month,2); } $map['chain'] =['like','%/'.$root_id.'/%']; $map['level'] = 2; } else if(!empty(I("sign"))){ $map['parent_id'] = ['neq',0]; $map['root_id'] = ['eq',0]; } else { if (I("root_id") == 0) { $root_id = I("root_id"); $map['promote_id'] = $root_id; } } if (!empty(I("root_name"))) { $rootname = I("root_name"); $map['promote_account'] =['like','%'.$rootname.'%']; } $subQueryAll = M('spend_user_count','tab_') ->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count') ->where($map) ->group('promote_id') ->page($page,$row) ->select(); if (empty(I("root_name"))) { $subQueryAll = array_merge($parentData,$subQueryAll); } $sumData = M('spend_user_count','tab_') ->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count') ->where($map) ->find(); if (empty(I("root_name"))) { $sumData['cash_count'] = number_format($sumData['cash_count'] + $parentData[0]['cash_count'], 2, '.', ''); $sumData['balance_coin_count'] = number_format($sumData['balance_coin_count'] + $parentData[0]['balance_coin_count'], 2, '.', ''); $sumData['inside_cash_count'] = number_format($sumData['inside_cash_count'] + $parentData[0]['inside_cash_count'], 2, '.', ''); $sumData['all_count'] = number_format($sumData['all_count'] + $parentData[0]['all_count'], 2, '.', ''); $sumData['bind_coin_count'] = number_format($sumData['bind_coin_count'] + $parentData[0]['bind_coin_count'], 2, '.', ''); } $count = M('spend_user_count','tab_') ->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count') ->where($map) ->group('promote_id') ->select(); $count = count($count); $page = set_pagination($count,$row); if($page) {$this->assign('_page', $page);} $this->meta_title = '组长流水'; $this->assign('sumData',$sumData); $this->assign('data',$subQueryAll); $this->display(); } public function getParentUser($p = 1) { $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 $row=10; if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;} if (!empty(I("count_date")) ) { $month = I("count_date"); $map['count_date'] =$month; } $parentData = []; if (!empty(I("parent_id"))) { $root_id = I("parent_id"); if ($page == 1) { $parentData = $this->getParentSpendData($root_id,$month,3); } $map['chain'] =['like','%/'.$root_id.'/%']; $map['level'] = 3; } else if(!empty(I("sign"))){ $map['parent_id'] = ['neq',0]; $map['root_id'] = ['eq',0]; } else { if (I("parent_id") == 0) { $root_id = I("parent_id"); $map['promote_id'] = $root_id; } } if (!empty(I("root_name"))) { $rootname = I("root_name"); $map['promote_account'] =['like','%'.$rootname.'%']; } $subQueryAll = M('spend_user_count','tab_') ->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count') ->where($map) ->group('promote_id') ->page($page,$row) ->select(); if (empty(I("root_name"))) { $subQueryAll = array_merge($parentData,$subQueryAll); } $sumData = M('spend_user_count','tab_') ->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count') ->where($map) ->find(); if (empty(I("root_name"))) { $sumData['cash_count'] = number_format($sumData['cash_count'] + $parentData[0]['cash_count'], 2, '.', ''); $sumData['balance_coin_count'] = number_format($sumData['balance_coin_count'] + $parentData[0]['balance_coin_count'], 2, '.', ''); $sumData['inside_cash_count'] = number_format($sumData['inside_cash_count'] + $parentData[0]['inside_cash_count'], 2, '.', ''); $sumData['all_count'] = number_format($sumData['all_count'] + $parentData[0]['all_count'], 2, '.', ''); $sumData['bind_coin_count'] = number_format($sumData['bind_coin_count'] + $parentData[0]['bind_coin_count'], 2, '.', ''); } $count = M('spend_user_count','tab_') ->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count') ->where($map) ->group('promote_id') ->select(); $count = count($count); $page = set_pagination($count,$row); if($page) {$this->assign('_page', $page);} $this->meta_title = '组长流水'; $this->assign('sumData',$sumData); $this->assign('data',$subQueryAll); $this->display(); } public function getPromoteUser($p = 1) { $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 $row=10; if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;} if (!empty(I("count_date"))) { $month = I("count_date"); $map['count_date'] =$month; } $parentData = []; if (!empty(I("parent_id"))) { $parent_id = I("parent_id"); if ($page == 1) { $parentData = $this->getParentSpendData($parent_id,$month,4); } $map['chain'] =['like','%/'.$parent_id.'/%']; $map['level'] = 4; } if (!empty(I('sign'))) { $map['parent_id'] = ['neq',0]; if (!empty(I('root_id'))) { $map['root_id'] = I('root_id'); } else { $map['root_id'] = ['neq',0]; } } // var_dump($map);die(); // var_dump($map);die(); $subQueryAll = M('spend_user_count','tab_') ->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count') ->where($map) ->group('promote_id') ->page($page,$row) ->select(); $subQueryAll = array_merge($parentData,$subQueryAll); $sumData = M('spend_user_count','tab_') ->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count') ->where($map) ->find(); $sumData['cash_count'] = number_format($sumData['cash_count']+$parentData[0]['cash_count'],2,'.',''); $sumData['balance_coin_count'] = number_format($sumData['balance_coin_count']+$parentData[0]['balance_coin_count'],2,'.',''); $sumData['inside_cash_count'] = number_format($sumData['inside_cash_count']+$parentData[0]['inside_cash_count'],2,'.',''); $sumData['all_count'] = number_format($sumData['all_count']+$parentData[0]['all_count'],2,'.',''); $sumData['bind_coin_count'] = number_format($sumData['bind_coin_count']+$parentData[0]['bind_coin_count'],2,'.',''); $count = M('spend_user_count','tab_') ->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count') ->where($map) ->group('promote_id') ->select(); $count = count($count); $page = set_pagination($count,$row); if($page) {$this->assign('_page', $page);} $this->meta_title = '推广员流水'; $sum = array_sum($sumData); $this->assign('sumData',$sumData); $this->assign('data',$subQueryAll); $this->display(); # code... } function getPromoteList($root_id = 0) { $data = M('promote','tab_') ->field("id") ->where("chain like '%/{$root_id}/%'") ->select(); $handleData = []; foreach ($data as $key => $value) { array_push($handleData,$data[$key]['id']); } return $handleData; } 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("relation_game_name as game_name")->where($map)->group("relation_game_name")->select(); $this->ajaxReturn($data,'json'); } function getParentSpendData($root_id,$date,$level=2) { $data = []; if (!$root_id) { $this->error('数据错误'); } else { $map = []; if ($root_id) { $map['promote_id'] = $root_id; } if ($date) { $map['count_date'] = $date; } $data = M('spend_user_count','tab_') ->field('promote_id,promote_account, sum(cash_count) as cash_count,sum(balance_coin_count) as balance_coin_count,sum(inside_cash_count) as inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count') ->where($map)->select(); // dump($data); $map1['chain'] = ['like','%/'.$data[0]['promote_id'].'/%']; $map1['count_date'] = $date; $map1['level'] = $level; $sunData = M('spend_user_count','tab_') ->field('promote_id,promote_account, sum(cash_count) as cash_count,sum(balance_coin_count) as balance_coin_count,sum(inside_cash_count) as inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count') ->where($map1)->find(); // echo M('spend_user_count','tab_')->_sql(); // dump($sunData); //die(); $data[0]['cash_count'] = number_format($data[0]['cash_count']-$sunData['cash_count'],2,'.',''); $data[0]['balance_coin_count'] = number_format($data[0]['balance_coin_count']-$sunData['balance_coin_count'],2,'.',''); $data[0]['inside_cash_count'] = number_format($data[0]['inside_cash_count']-$sunData['inside_cash_count'],2,'.',''); $data[0]['all_count'] = number_format($data[0]['all_count']-$sunData['all_count'],2,'.',''); $data[0]['bind_coin_count'] = number_format($data[0]['bind_coin_count']-$sunData['bind_coin_count'],2,'.',''); // $map['inside_cash_count'] = ['neq',0]; // $insideData = D("spend_count")->getSpendCountData($map,"promote_id,inside_cash_count as count","promote_id,count_date"); // unset($map['bind_coin_count']); // //内充流水与绑定流水数据 // $insideDataSum = 0; // foreach ($insideData as $key => $value) { // if (isset($insideDataSum)) { // $insideDataSum = $insideDataSum + $value['count']; // } else { // $insideDataSum = $value['count']; // } // } } // if (!$data[0]['cash_count']&&!$data[0]['balance_coin_count']&&!$data[0]['inside_cash_count']&&!$data[0]['all_count']) { // $promoteData = M('promote','tab_')->field('account as promote_account')->where("id={$root_id}")->find(); // // $data[0]['promote_id'] = $root_id; // $data[0]['promote_account'] = $promoteData['promote_account']; // $data[0]['cash_count'] = number_format(0.00,2,'.',''); // $data[0]['balance_coin_count'] = number_format(0.00,2,'.',''); // $data[0]['inside_cash_count'] = number_format(0.00,2,'.',''); // $data[0]['all_count'] = number_format(0.00,2,'.',''); // } // $data[0]['inside_cash_count'] = number_format($insideDataSum,2,'.',''); // $data[0]['all_count'] = number_format($insideDataSum+$data[0]['all_count'],2,'.',''); // var_dump($data);die(); return $data; } /** *游戏统计 */ public function gameStatistics($p = 1) { if(!array_key_exists("timestart",$_REQUEST)){ $this->redirect(ACTION_NAME, array('timestart' => date('Y-m-d',strtotime('-30 day')),"timeend"=>date('Y-m-d'))); } $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 $row = $_REQUEST['row'] ?? 10; $map = []; $game_ids = array_column(getGameByName(I("game_name"), I("sdk_type")), 'id'); if ($game_ids) { $map['s.game_id'] = ['in', $game_ids]; } if (!empty(I('partner_id'))) { $map['g.partner_id'] = I('partner_id'); } if (!empty(I('timestart'))) { $timestart = strtotime(I('timestart')); $map['_string'] = "s.pay_time >= {$timestart}"; } if (!empty(I('timeend'))) { $timeend = strtotime(I('timeend') . ' 23:59:59'); if (!empty($map['_string'])) { $map['_string'] .= " and "; } $map['_string'] .= " s.pay_time < {$timeend}"; } if (!empty(I('game_type_id'))) { $map['g.game_type_id'] = I('game_type_id'); } $startTime = time(); //游戏统计列表 $data = D("spend")->gameStatistics($map, $row, $p); $endTime = time(); foreach ($data as $key => $value) { $data[$key]['all_cash_count'] = $value['cash_count'] + $value['balance_coin_count'] + $value['inside_cash_count']; } $count = D("spend")->gameStatisticsCount($map);//列表总数 // $allData = D("spend")->gameStatistics($map);//列表总数 // $count = count($allData); $page = set_pagination($count, $row); if ($page) { $this->assign('_page', $page);//分页 } //统计合计 $totalData = D("spend")->totalGameStatistics($map); $sumCash = $totalData['cash_count']; $sumBalance = $totalData['balance_coin_count']; $sumInside = $totalData['inside_cash_count']; $sumAll = $sumCash + $sumBalance + $sumInside; $game_types = M("game_type", 'tab_')->field('id, type_name')->select(); $this->assign('game_types', $game_types); $this->assign('sumCash', $sumCash); $this->assign('sumBalance', $sumBalance); $this->assign('sumInside', $sumInside); $this->assign('sumAll', $sumAll); $this->assign('data',$data); $this->display(); } public function gameStatisticsDetail($p = 1) { if (isset($_REQUEST['pay_way'])) { $map['pay_way'] = $_REQUEST['pay_way']; } if (!empty($_REQUEST['pay_order_number'])) { $map['pay_order_number'] = $_REQUEST['pay_order_number']; } if (!empty(I('partner_id'))&&empty(I("game_id"))) { $wherePartner = I('partner_id'); $gameId = M("game","tab_")->field("id")->where("partner_id={$wherePartner}")->select(); $gameId = implode(',',array_column($gameId,'id')); $map['game_id'] = ['in',$gameId]; } if (!empty(I('timestart'))) { $timestart = strtotime(I('timestart')); $map['_string'] = "pay_time >= {$timestart}"; } if (!empty(I('timeend'))) { $timeend = strtotime(I('timeend') . ' 23:59:59'); if (!empty($map['_string'])) { $map['_string'] .= " and "; } $map['_string'] .= " pay_time < {$timeend}"; } if (!empty(I("promote_id"))) { $promote_id[] = I("promote_id"); } if (!empty(I("root_id"))) { $root_id = I("root_id"); $promote_id = $this->getPromoteList($root_id); array_push($promote_id, $root_id); } if ($_REQUEST['root_id']=='0') { $map['promote_id'] = $_REQUEST['root_id']; } $promote_id = implode(',',$promote_id); if ($promote_id) { $map['promote_id'] = ['in',$promote_id]; } $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 if (isset($_REQUEST['row'])) { $row = $_REQUEST['row']; } else { $row = 10; } $map['pay_game_status'] = 1; if (!empty(I("game_id"))) { $map['game_id'] = I("game_id"); } if (!empty(I('user_account'))) { $map['user_account'] = array('like','%'.I("user_account").'%'); } if (!empty(I('user_nickname'))) { $map['game_player_name'] = array('like',I("user_nickname").'%'); } // var_dump($map);die(); $field = "pay_order_number,FROM_UNIXTIME(pay_time) as pay_time,user_account,user_nickname,game_name,promote_account,spend_ip,server_name,game_player_name,pay_amount,cost,pay_way"; $group = ""; $order = "pay_time DESC"; $data = D('spend')->getSpendData($map,$field,$group,$order,$page,$row); foreach($data as $key => $value) { $data[$key]['pay_way'] = getPayType($value['pay_way']); } $totalData = D('spend')->totalGameStatistics($map, false); $sumCash = $totalData['cash_count'] ?? 0; $sumBalance = $totalData['balance_coin_count'] ?? 0; $sumInside = $totalData['inside_cash_count'] ?? 0; $sumAll = $sumCash + $sumBalance + $sumInside; $this->assign('sumCash', $sumCash); $this->assign('sumBalance', $sumBalance); $this->assign('sumInside', $sumInside); $this->assign('sumAll', null_to_0($sumAll)); $count = D("spend")->getSpendData($map,'count(*) as count',$group,$order); $count = $count[0]['count']; $page = set_pagination($count,$row); if($page) {$this->assign('_page', $page);} $this->meta_title = '游戏订单查看'; $this->assign('data',$data); $this->display(); } public function coinDetail($p = 1) { set_time_limit(0); if (isset($_REQUEST['pay_way'])) { $map['pay_way'] = $_REQUEST['pay_way']; $this->assign('pay_way', $map['pay_way']); } if (!empty($_REQUEST['pay_order_number'])) { $map['pay_order_number'] = $_REQUEST['pay_order_number']; } if (!empty(I('partner_id'))&&empty(I("game_id"))) { $wherePartner = I('partner_id'); $gameId = M("game","tab_")->field("id")->where("partner_id={$wherePartner}")->select(); $gameId = implode(',',array_column($gameId,'id')); $map['tab_spend.game_id'] = ['in',$gameId]; } if (!empty(I('timestart'))) { $timestart = strtotime(I('timestart')); $map['_string'] = "pay_time > {$timestart}"; } if (!empty(I('timeend'))) { $timeend = strtotime(I('timeend')); $map['_string'] .= " and pay_time < {$timeend}"; } if (!empty(I("promote_id"))) { $promote_id[] = I("promote_id"); } if (!empty(I("root_id"))) { $root_id = I("root_id"); $promote_id = $this->getPromoteList($root_id); array_push($promote_id, $root_id); } if ($_REQUEST['root_id']=='0') { $map['tab_spend.promote_id'] = $_REQUEST['root_id']; } $promote_id = implode(',',$promote_id); if ($promote_id) { $map['tab_spend.promote_id'] = ['in',$promote_id]; } $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 if (isset($_REQUEST['row'])) { $row = $_REQUEST['row']; } else { $row = 10; } $map['pay_game_status'] = 1; if (!empty(I("game_id"))) { $map['tab_spend.game_id'] = I("game_id"); } if (!empty(I('user_account'))) { $map['tab_spend.user_account'] = array('like','%'.I("user_account").'%'); } if (!empty(I('user_nickname'))) { $map['tab_spend.game_player_name'] = array('like',I("user_nickname").'%'); } // var_dump($map);die(); $field = "pay_order_number,FROM_UNIXTIME(pay_time) as pay_time,tab_spend.user_account, tab_spend.user_nickname,tab_spend.game_name,tab_spend.promote_account,spend_ip,tab_spend.server_name, game_player_name,pay_amount,cost,pay_way"; $group = ""; $order = "pay_time DESC"; $join = false; if ($map['pay_way'] ==-1) {//绑定币 $field2 = $field . ',bind_balance'; $join = 'left join tab_user_play as p on p.user_id = tab_spend.user_id and tab_spend.game_id=p.game_id'; } elseif ($map['pay_way'] ==0) {//平台币 $field2 = $field . ',balance'; $join = 'left join tab_user as u on u.id = tab_spend.user_id'; } $data = D('spend')->getSpendData($map, $field2, $group, $order, $page, $row, $join); foreach($data as $key => $value) { $data[$key]['pay_way'] = getPayType($value['pay_way']); } $count = D("spend")->getSpendData($map,$field,$group,$order); $count = count($count); $page = set_pagination($count,$row); $total_cost = D('spend')->sumSpend($map, 'cost');//订单金额合计 $total_pay_amount = D('spend')->sumSpend($map, 'pay_amount');//实付金额合计 $this->assign('total_cost', $total_cost); $this->assign('total_pay_amount', $total_pay_amount); if($page) {$this->assign('_page', $page);} $this->meta_title = '游戏订单查看'; $this->assign('data',$data); $this->display(); } /** *获取合作公司 */ public function getPartnetList() { $game_ids = array_column(getGameByName(I("game_name"), I("sdk_type")), 'id'); if ($game_ids) { $map['g.id'] = ['in', $game_ids]; } if (I('sdk_type')) { $map['sdk_version'] = I('sdk_type'); } $data = M('partner','tab_')->alias('p') ->join('left join tab_game as g on g.partner_id = p.id') ->field("partner, p.id") ->where($map) ->group('p.id') ->select(); $this->ajaxReturn($data,'json'); } /** *充值方式统计 */ public function payTypeStatistics() { $time = array('egt', 0);; if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $time = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]); } elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) { $time = array('between', [strtotime($_REQUEST['timestart']), time()]); } elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $time = array('elt', (strtotime($_REQUEST['timeend']) + 86399)); } // setPowerPromoteIds($map); //获取现金充值 $cashStatistics = M('spend', 'tab_') ->field('pay_way,"" as pay_type,SUM(pay_amount) AS pay_amount') ->where(['pay_status' => 1,'pay_way'=>['egt',1],'pay_time'=>$time]) ->group('pay_way') ->select(); foreach ($cashStatistics as $key => $value) { $cashStatistics[$key]['pay_type'] = getPayType($value['pay_way']); $cashStatistics[$key]['balance'] = '0.00'; } $cashStatistics = array_column($cashStatistics, null, 'pay_way'); // dd($cashStatistics); //获取平台币充值 $deposit = M('deposit', 'tab_')->where([ 'pay_source' => 2, 'tab_deposit.pay_status' => 1, 'tab_deposit.pay_way' => ['gt', 0], 'tab_deposit.create_time'=>$time, ])->field('tab_deposit.pay_way,"" as pay_type, SUM(tab_deposit.pay_amount) AS balance') ->group('tab_deposit.pay_way') ->select(); foreach ($deposit as $key => $value) { if (!array_key_exists($value['pay_way'], $cashStatistics)) { $cashStatistics[$value['pay_way']] = $value; $cashStatistics[$value['pay_way']]['pay_type'] = getPayType($value['pay_way']);//充值方式文字影视 $cashStatistics[$value['pay_way']]['pay_amount'] = '0.00'; } $cashStatistics[$value['pay_way']]['balance'] = $value['balance'];//别表的平台币充值 } //超级签数据 $superSignData = M('game_supersign','tab_') ->field("pay_way,'' as pay_type,sum(pay_price) as pay_amount") ->where([ 'pay_status' => 1, 'pay_way' => ['gt', 0], 'pay_time'=>$time ]) ->group('pay_way') ->select(); foreach ($superSignData as $key => $value) { if (!array_key_exists($value['pay_way'], $cashStatistics)) { $cashStatistics[$value['pay_way']] = $value; $cashStatistics[$value['pay_way']]['pay_type'] = getPayType($value['pay_way']);//充值方式文字影视 $cashStatistics[$value['pay_way']]['pay_amount'] = '0.00'; $cashStatistics[$value['pay_way']]['balance'] = 0;//别表的平台币充值 } $cashStatistics[$value['pay_way']]['pay_amount'] += $value['pay_amount'];//别表的平台币充值 } //绑定币数据 $bindRechargeData = M('bind_recharge','tab_') ->field('pay_way,"" as pay_type,sum(real_amount) as pay_amount') ->where([ 'pay_status' => 1, 'pay_way' => ['gt', 0], 'create_time'=>$time ]) ->group('pay_way') ->select(); foreach ($bindRechargeData as $key => $value) { if ($value['pay_way'] == NULL&&$value['pay_amount'] == NULL) { continue; } if (!array_key_exists($value['pay_way'], $cashStatistics)) { $cashStatistics[$value['pay_way']] = $value; $cashStatistics[$value['pay_way']]['pay_type'] = getPayType($value['pay_way']);//充值方式文字影视 $cashStatistics[$value['pay_way']]['pay_amount'] = '0.00'; $cashStatistics[$value['pay_way']]['balance'] = 0;//别表的平台币充值 } $cashStatistics[$value['pay_way']]['balance'] += $value['pay_amount'];//别表的平台币充值 } //推广后台 $spreadData = M("coin_pay_order","tab_") ->field("pay_way,'' as pay_type,sum(pay_amount) as pay_amount") ->where([ 'order_status'=>['egt',1], 'pay_way'=>['egt',1],'pay_time'=>$time ]) ->group('pay_way') ->select(); foreach ($spreadData as $key => $value) { if ($value['pay_way'] == NULL&&$value['pay_amount'] == NULL) { continue; } if (!array_key_exists($value['pay_way'], $cashStatistics)) { $cashStatistics[$value['pay_way']] = $value; $cashStatistics[$value['pay_way']]['pay_type'] = getPayType($value['pay_way']);//充值方式文字影视 $cashStatistics[$value['pay_way']]['pay_amount'] = '0.00'; $cashStatistics[$value['pay_way']]['balance'] = 0;//别表的平台币充值 } $cashStatistics[$value['pay_way']]['balance'] += $value['pay_amount'];//别表的平台币充值 } //官网充值 $offcialmap['pay_status'] = 1; $offcialmap['pay_way'] = array('egt',1); $offcialmap['pay_source'] = 0; $offcialData = M('deposit','tab_') ->field("pay_way,'' as pay_type,sum(pay_amount) as pay_amount") ->where([ 'pay_status'=>1, 'pay_way'=>['egt',1], 'pay_source'=>0, 'create_time'=>$time ]) ->group('pay_way') ->select(); foreach ($offcialData as $key => $value) { if ($value['pay_way'] == NULL&&$value['pay_amount'] == NULL) { continue; } if (!array_key_exists($value['pay_way'], $cashStatistics)) { $cashStatistics[$value['pay_way']] = $value; $cashStatistics[$value['pay_way']]['pay_type'] = getPayType($value['pay_way']);//充值方式文字影视 $cashStatistics[$value['pay_way']]['pay_amount'] = '0.00'; $cashStatistics[$value['pay_way']]['balance'] = 0;//别表的平台币充值 } $cashStatistics[$value['pay_way']]['balance'] += $value['pay_amount'];//别表的平台币充值 } foreach ($cashStatistics as $key => $value) { $cashStatistics[$key]['total'] = $value['pay_amount'] + $value['balance'];//添加列表合计 } // var_dump($cashStatistics);die(); //底部总计 $all_pay_amount = array_sum(array_column($cashStatistics, 'pay_amount'));//现金充值总计 $all_balance = array_sum(array_column($cashStatistics, 'balance'));//平台币充值总计 $all_total = array_sum(array_column($cashStatistics, 'total'));//合计总计 $this->meta_title = "平台统计"; if($_REQUEST['export']) { foreach($cashStatistics as $key =>$value) { unset($cashStatistics[$key]['pay_way']); } db2csv(array_merge($cashStatistics, [0=>['pay_type'=>'总计','pay_amount'=>$all_pay_amount,'balance'=>$all_balance,'total'=>$all_total]]),'平台统计' ,['支付方式','现金充值','平台币充值','合计']); } $this->assign('all_pay_amount', $all_pay_amount); $this->assign('all_balance', $all_balance); $this->assign('all_total', $all_total); $this->assign('data', $cashStatistics); $this->display(); } }