redirect(ACTION_NAME, array('year' => date('Y',time())) ); } $isExport = false; if(isset($_REQUEST['export']) && $_REQUEST['export'] == 1){ $isExport = true; } $page = intval($_REQUEST['p']); $page = $page ? $page : 1; //默认显示第一页数据 if (isset($_REQUEST['row'])) { $row = $_REQUEST['row']; } else { $row = 10; } $year = isset($_REQUEST['year']) ? $_REQUEST['year'] : date("Y",time()); $yearMap = [strtotime("$year-1-1 00:00:00"),strtotime("$year-12-31 23:59:59")]; $gameMap = "1"; if(isset($_REQUEST['relation_game_id'])){ $gameId = $_REQUEST['relation_game_id']; $gameMap .= " AND relation_game_id = '{$gameId}' "; } $gameDb = M("Game","tab_"); $data = $gameDb ->field("group_concat(id) game_id,relation_game_id,relation_game_name") ->where($gameMap) ->group("relation_game_id"); if($isExport){ $data = $data->select(); //生成头 $fp = $this->setGamePoolTitle($year,"game"); }else{ $data = $data->page($page,$row)->select(); $countTable = $gameDb->where($gameMap)->group("relation_game_id")->select(false); $count = M()->table("(".$countTable.") s")->count(); } //获取游戏累计注册 $sendData = []; foreach($data as $k=>$v){ $list = self::setGameYearList($year); $this->getGameRegisterCount($list,$v['game_id'],$yearMap); $this->getGamePayamountCount($list,$v['game_id'],$yearMap); $v["list"] = $list; $sendData[] = $v; if($isExport){ unset($v['game_id'],$v['relation_game_id']); $fp = $this->setGameCsvData($fp,$v); } } if($isExport){ //刷新输出缓冲到浏览器 fclose($fp); exit(); } $th = array_keys(self::setGameYearList($year)); $this->assign('th', $th); $this->assign('list_data', $sendData); $this->assign("companyList",D("PromoteCompany")->getList()); $this->getYearList(); $page = set_pagination($count, $row); if ($page) { $this->assign('_page', $page); } $this->display(); } //获取游戏注册量 protected function getGameRegisterCount(&$list,$gameids,$yearMap) { $map = [ "fgame_id"=>["in",$gameids], "register_time"=>["between",$yearMap] ]; $Register = M("User","tab_")->field("count(id) count,FROM_UNIXTIME(`register_time`, '%Y-%m') regtime")->where($map)->group("regtime")->select(); if(empty($Register)) return ; foreach ($Register as $v) { $list[$v['regtime']]['register'] = $v['count']; } } //获取游戏注册量 protected function getGamePayamountCount(&$list,$gameids,$yearMap) { $map = [ "game_id"=>["in",$gameids], "pay_time"=>["between",$yearMap], "pay_status"=>1 ]; D("Spend")->addSubsiteWhere($map); $Payamount = M("Spend","tab_")->field("sum(pay_amount) pay_amount,FROM_UNIXTIME(`pay_time`, '%Y-%m') paytime")->where($map)->group("paytime")->select(); if(empty($Payamount)) return ; foreach ($Payamount as $v) { $list[$v['paytime']]['payamount'] = $v['pay_amount']; } } //推广员汇总 public function promote_pool() { if(!array_key_exists("year",$_REQUEST) || !array_key_exists("company_belong",$_REQUEST)){ $this->redirect(ACTION_NAME, array('year' => date('Y',time()),"company_belong"=>0)); } $isExport = false; if(isset($_REQUEST['export']) && $_REQUEST['export'] == 1){ $isExport = true; } $page = intval($_REQUEST['p']); $page = $page ? $page : 1; //默认显示第一页数据 if (isset($_REQUEST['row'])) { $row = $_REQUEST['row']; } else { $row = 10; } $companyBelong = isset($_REQUEST['company_belong']) ? $_REQUEST['company_belong'] : 0; $year = isset($_REQUEST['year']) ? $_REQUEST['year'] : date("Y",time()); $yearMap = [strtotime("$year-1-1 00:00:00"),strtotime("$year-12-31 23:59:59")]; //获取公司数据 tab_promote_company $companyMap = "1"; if($companyBelong > -1){ $companyMap .= " AND company_belong = {$companyBelong}"; } if(isset($_REQUEST['company_id'])){ $companyId = $_REQUEST['company_id']; $companyMap .= " AND id = '{$companyId}' "; } $promoteCompany = M("promote_company","tab_"); $data = $promoteCompany ->field("id,company_name,company_belong") ->where($companyMap); if($isExport){ $data = $data->select(); //生成头 $fp = $this->setPromotePoolTitle($year); }else{ $data = $data->page($page,$row)->select(); $count = $promoteCompany->where($companyMap)->count(); } //获取公司累计注册 $sendData = []; $departmentName = A("Market",'Event')->getDepartmentNameByMarketType('uid'); foreach($data as $k=>$v){ $promote = getPromoteByLevel(0,$v['id'],'id, account, real_name , admin_id'); if(empty($promote)){ $promoteIds = ''; $v["department"] = '无'; }else{ $v["department"] = $departmentName[$promote[0]['admin_id']]??'无'; $promoteIds = implode(",",array_column($promote,"id")); } $list = self::setYearList($year); $this->getRegisterCount($list,$promoteIds,$yearMap); $this->getPayamountCount($list,$promoteIds,$yearMap); // $this->getunPayamountCount($list,$promoteIds,$yearMap); $v["list"] = $list; $v["company_belong"] = getCompanyBlongOther($v["company_belong"]); $sendData[] = $v; if($isExport) $fp = $this->setCsvData($fp,$v); } if($isExport){ //刷新输出缓冲到浏览器 fclose($fp); exit(); } $th = array_keys(self::setYearList($year)); $this->assign('th', $th); $this->assign('list_data', $sendData); $this->assign("companyList",D("PromoteCompany")->getList()); $this->getYearList(); $page = set_pagination($count, $row); if ($page) { $this->assign('_page', $page); } $this->display(); // var_dump($sendData); } //获取游戏公司每个月的注册及充值金额 private static function setGameYearList($year) { $range = []; $i = 1; do { if($i < 10){ $month = "0".$i; }else{ $month = $i; } $range[$year."-".$month] = ["register"=>0,"payamount"=>0]; $i++; } while ($i<13); return $range; } //获取公司每个月的注册及充值金额 private static function setYearList($year) { $range = []; $i = 1; do { if($i < 10){ $month = "0".$i; }else{ $month = $i; } $range[$year."-".$month] = ["register"=>0,"payamount"=>0,"unpay_amount"=>0]; $i++; } while ($i<13); return $range; } //获取注册量 protected function getRegisterCount(&$list,$promoteIds,$yearMap) { $map = [ "promote_id"=>["in",$promoteIds], "register_time"=>["between",$yearMap] ]; $Register = M("User","tab_")->field("count(id) count,FROM_UNIXTIME(`register_time`, '%Y-%m') regtime")->where($map)->group("regtime")->select(); if(empty($Register)) return ; foreach ($Register as $v) { $list[$v['regtime']]['register'] = $v['count']; } } //获取支付流水 protected function getPayamountCount(&$list,$promoteIds,$yearMap) { $map = [ "promote_id"=>["in",$promoteIds], "pay_time"=>["between",$yearMap], "pay_status"=>1 ]; $Payamount = SM("Spend","tab_")->field("sum(IF(is_check=1,pay_amount,0)) pay_amount,IFNULL(sum(IF(is_check=2,pay_amount,0)),0) unpay_amount,FROM_UNIXTIME(`pay_time`, '%Y-%m') paytime")->where($map)->group("paytime")->select(); if(empty($Payamount)) return ; foreach ($Payamount as $v) { $list[$v['paytime']]['payamount'] = $v['pay_amount']; $list[$v['paytime']]['unpay_amount'] = $v['unpay_amount']; } } //获取未结算流水 protected function getunPayamountCount(&$list,$promoteIds,$yearMap) { $map = [ "promote_id"=>["in",$promoteIds], "pay_time"=>["between",$yearMap], "pay_status"=>1 ]; $Payamount = SM("Spend","tab_")->field("sum(IF(is_check=2,pay_amount,0)) pay_amount,FROM_UNIXTIME(`pay_time`, '%Y-%m') paytime")->where($map)->group("paytime")->select(); if(empty($Payamount)) return ; foreach ($Payamount as $v) { $list[$v['paytime']]['unpayamount'] = $v['pay_amount']; } } //获取所有年分 protected function getYearList() { $star = 2019; $end = date("Y",time()); $list = []; for ($i=$star; $i <= $end; $i++) { $temp = array( "value"=>$i, "name"=>"{$i}年" ); $list[] = $temp ; } $this->assign('YearList', $list); } //获取导出头 private static function setGamePoolTitle($year,$type="promote") { if($type =="promote"){ $range = ["推广公司","内外团归属"]; $csvFileName = '推广公司汇总.csv'; }else{ $range = ["游戏名称"]; $csvFileName = '游戏汇总.csv'; } $i = 1; do { if($i < 10){ $month = "0".$i; }else{ $month = $i; } $range[] = $year."年".$month."月注册数"; $range[] = $year."年".$month."月充值流水"; $i++; } while ($i<13); //设置好告诉浏览器要下载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', $range); fputcsv($fp, $range);//将数据格式化为CSV格式并写入到output流中 return $fp; } //获取导出头 private static function setPromotePoolTitle($year,$type="promote") { if($type =="promote"){ $range = ["推广公司","内外团归属",'所属市场部']; $csvFileName = '推广公司汇总.csv'; }else{ $range = ["游戏名称"]; $csvFileName = '游戏汇总.csv'; } $i = 1; do { if($i < 10){ $month = "0".$i; }else{ $month = $i; } $range[] = $year."年".$month."月注册数"; $range[] = $year."年".$month."月充值流水"; $range[] = $year."年".$month."月不结算充值流水"; $i++; } while ($i<13); //设置好告诉浏览器要下载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', $range); fputcsv($fp, $range);//将数据格式化为CSV格式并写入到output流中 return $fp; } //获取导出头 private static function setGameCsvData($fp,$data) { unset($data['id']); $sendData = []; foreach ($data as $key => $value) { if($key != "list"){ $sendData[] = $value; } } foreach ($data['list'] as $key => $value) { $sendData[] = $value['register']; $sendData[] = $value['payamount']; } mb_convert_variables('GBK', 'UTF-8', $sendData); fputcsv($fp, $sendData);//将数据格式化为CSV格式并写入到output流中 ob_flush(); flush(); return $fp; } //获取导出头 private static function setCsvData($fp,$data) { unset($data['id']); $sendData = []; foreach ($data as $key => $value) { if($key != "list"){ $sendData[] = $value; } } foreach ($data['list'] as $key => $value) { $sendData[] = $value['register']; $sendData[] = $value['payamount']; $sendData[] = $value['unpay_amount']; } mb_convert_variables('GBK', 'UTF-8', $sendData); fputcsv($fp, $sendData);//将数据格式化为CSV格式并写入到output流中 ob_flush(); flush(); return $fp; } function game_statistics($p = 0) { $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 $arraypage = $page; if (isset($_REQUEST['row'])) { $row = $_REQUEST['row']; } else { $row = 10; } $user = M('User', 'tab_'); $map['fgame_id'] = array('egt', 0); $map['puid'] = 0; if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['register_time'] = ['between', array(strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399)]; unset($_REQUEST['timestart']); unset($_REQUEST['timeend']); } elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) { $map['register_time'] = ['between', array(strtotime($_REQUEST['timestart']), time())]; unset($_REQUEST['timestart']); } elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['register_time'] = ['elt', strtotime($_REQUEST['timeend']) + 86399]; unset($_REQUEST['timeend']); } // var_dump($_REQUEST);exit; if (isset($_REQUEST['game_id']) && $_REQUEST['game_id'] != '') { $map['tab_game.relation_game_id'] = $_REQUEST['game_id']; } if (!empty($_REQUEST['game_type'])) { $map['tab_game.sdk_version'] = $_REQUEST['game_type']; } $today = total(1); $week = total(2); $mounth = total(3); //为数据权限添加 setPowerPromoteIds($map); $data = $user ->field('tab_game.relation_game_id,tab_game.relation_game_name,date_format(FROM_UNIXTIME( register_time),"%Y-%m-%d") AS time, count(tab_user.id) as count') ->where($map) ->join('tab_game on tab_game.id = fgame_id', 'left') ->group('tab_game.relation_game_id') ->order('count desc,register_time') ->select(); $map2 = array(); $map2['fgame_id'] = array('egt', 0); $map2['puid'] = 0; if (isset($_REQUEST['game_id']) && $_REQUEST['game_id'] != '') { $map2['tab_game.relation_game_id'] = $_REQUEST['game_id']; } if (!empty($_REQUEST['game_type'])) { $map2['tab_game.sdk_version'] = $_REQUEST['game_type']; } setPowerPromoteIds($map2); $data2 = $user->field('tab_game.relation_game_id,count(IF(register_time ' . $today . ',1,null)) as today, count(IF(register_time ' . $week . ',1,null)) as week, count(IF(register_time ' . $mounth . ',1,null)) as mounth') ->where($map2) ->join('tab_game on tab_game.id = fgame_id', 'left') ->group('tab_game.relation_game_id') ->select(); $data2 = array_column($data2, null, 'relation_game_id'); $count = count($data); foreach ($data as $key => $value) { static $i = 0; $i++; $data[$key]['rand'] = $i; if ($data[$key]['relation_game_id'] == 0) { $data[$key]['relation_game_name'] = '其他注册'; } $data[$key]['today'] = $data2[$value['relation_game_id']]['today']; $data[$key]['week'] = $data2[$value['relation_game_id']]['week']; $data[$key]['mounth'] = $data2[$value['relation_game_id']]['mounth']; } $total = $this->data_total($data); $this->assign('total', $total); if ($_REQUEST['data_order'] != '') { $data_order = reset(explode(',', $_REQUEST['data_order'])); $data_order_type = end(explode(',', $_REQUEST['data_order'])); $this->assign('userarpu_order', $data_order); $this->assign('userarpu_order_type', $data_order_type); } $page = set_pagination($count, $row); if ($page) { $this->assign('_page', $page); } $data = my_sort($data, $data_order_type, (int)$data_order); $size = $row;//每页显示的记录数 $pnum = ceil(count($data) / $size); //总页数,ceil()函数用于求大于数字的最小整数 //用array_slice(array,offset,length) 函数在数组中根据条件取出一段值;array(数组),offset(元素的开始位置),length(组的长度) $data = array_slice($data, ($arraypage - 1) * $size, $size); $this->checkListOrCountAuthRestMap($map,[]); //dd($data); $this->meta_title = '游戏注册统计列表'; $this->assign('list_data', $data); $this->assign('games', M('game', 'tab_')->field('relation_game_id, relation_game_name')->group('relation_game_id')->select()); $this->assign("is_admin",is_administrator()); $this->display(); } function gamepay_statistics($p = 0) { $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 $arraypage = $page; if (isset($_REQUEST['row'])) { $row = $_REQUEST['row']; } else { $row = 10; } $spend = M('Spend', 'tab_'); $deposit = M('Deposit', "tab_"); if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['pay_time'] = ['between', array(strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399)]; unset($_REQUEST['timestart']); unset($_REQUEST['timeend']); } elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) { $map['pay_time'] = ['between', array(strtotime($_REQUEST['timestart']), time())]; unset($_REQUEST['timestart']); } elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['pay_time'] = ['elt', strtotime($_REQUEST['timeend']) + 86399]; unset($_REQUEST['timeend']); } //为数据权限添加 setPowerPromoteIds($map); $map['game_id'] = array('gt', 0); // var_dump($_REQUEST);exit; if (isset($_REQUEST['game_id']) && $_REQUEST['game_id'] != '') { $map['tab_game.relation_game_id'] = $_REQUEST['game_id']; //unset($_REQUEST['game_id']); } if (!empty($_REQUEST['game_type'])) { $map['tab_spend.sdk_version'] = $_REQUEST['game_type']; //unset($_REQUEST['game_type']); } $map['tab_spend.pay_status'] = 1; $today = total(1); $week = total(2); $mounth = total(3); D("Spend")->addSubsiteWhere($map,"tab_spend"); $data = $spend ->field('tab_game.relation_game_name as game_name, tab_game.relation_game_id as game_id,date_format(FROM_UNIXTIME(pay_time),"%Y-%m-%d") AS time, sum(pay_amount) as count') ->where($map) ->join('tab_game on tab_game.id = tab_spend.game_id', 'left') ->group('tab_game.relation_game_id') ->order('count desc,pay_time') ->select(); //今日、本周、本月不随搜索条件而变动 $map2['tab_spend.pay_status'] = 1; $map2['game_id'] = array('gt', 0); // var_dump($_REQUEST);exit; if (isset($_REQUEST['game_id']) && $_REQUEST['game_id'] != '') { $map2['tab_game.relation_game_id'] = $_REQUEST['game_id']; //unset($_REQUEST['game_id']); } if (!empty($_REQUEST['game_type'])) { $map2['tab_spend.sdk_version'] = $_REQUEST['game_type']; //unset($_REQUEST['game_type']); } setPowerPromoteIds($map2); D("Spend")->addSubsiteWhere($map2,"tab_spend"); $data2 = $spend ->field('tab_game.relation_game_id as game_id, sum(IF(pay_time ' . $today . ',pay_amount,0)) as today, sum(IF(pay_time ' . $week . ',pay_amount,0)) as week, sum(IF(pay_time ' . $mounth . ',pay_amount,0)) as mounth') ->join('tab_game on tab_game.id = tab_spend.game_id', 'left') ->where($map2) ->group('tab_game.relation_game_id') ->select(); $data2 = array_column($data2, null, 'game_id'); $count = count($data); foreach ($data as $key => $value) { static $i = 0; $i++; $data[$key]['rand'] = $i; //加入今日、本周、本月数据 $data[$key]['today'] = $data2[$value['game_id']]['today']; $data[$key]['week'] = $data2[$value['game_id']]['week']; $data[$key]['mounth'] = $data2[$value['game_id']]['mounth']; } $total = $this->data_total($data); $this->assign('total', $total); if ($_REQUEST['data_order'] != '') { $data_order = reset(explode(',', $_REQUEST['data_order'])); $data_order_type = end(explode(',', $_REQUEST['data_order'])); $this->assign('userarpu_order', $data_order); $this->assign('userarpu_order_type', $data_order_type); } $page = set_pagination($count, $row); if ($page) { $this->assign('_page', $page); } $this->checkListOrCountAuthRestMap($map,[]); $data = my_sort($data, $data_order_type, (int)$data_order); $size = $row;//每页显示的记录数 $pnum = ceil(count($data) / $size); //总页数,ceil()函数用于求大于数字的最小整数 //用array_slice(array,offset,length) 函数在数组中根据条件取出一段值;array(数组),offset(元素的开始位置),length(组的长度) $data = array_slice($data, ($arraypage - 1) * $size, $size); $this->meta_title = '游戏充值统计列表'; $this->assign('list_data', $data); $this->assign("is_admin",is_administrator()); $this->assign('games', M('game', 'tab_')->field('relation_game_id, relation_game_name')->group('relation_game_id')->select()); $this->display(); } function resway_statistics($p = 0) { // var_dump(total(2));exit; $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 $arraypage = $page; if (isset($_REQUEST['row'])) { $row = $_REQUEST['row']; } else { $row = 10; } $user = M('User', 'tab_'); $map['puid'] = 0; if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['register_time'] = ['between', array(strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399)]; unset($_REQUEST['timestart']); unset($_REQUEST['timeend']); } elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) { $map['register_time'] = ['between', array(strtotime($_REQUEST['timestart']), time())]; unset($_REQUEST['timestart']); } elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['register_time'] = ['elt', strtotime($_REQUEST['timeend']) + 86399]; unset($_REQUEST['timeend']); } // var_dump($_REQUEST);exit; if (isset($_REQUEST['register_way']) && $_REQUEST['register_way'] != '') { $map['register_way'] = $_REQUEST['register_way']; unset($_REQUEST['register_way']); } setPowerPromoteIds($map); $today = total(1); $week = total(2); $mounth = total(3); $data = $user ->field('register_way,date_format(FROM_UNIXTIME(register_time),"%Y-%m-%d") AS time, count(id) as count') ->where($map) ->group('register_way') ->order('count desc,register_time') ->select(); $map2 = array(); $map2['puid'] = 0; setPowerPromoteIds($map2); $data2 = $user ->field('register_way, count(IF(register_time ' . $today . ',1,null)) as today, count(IF(register_time ' . $week . ',1,null)) as week, count(IF(register_time ' . $mounth . ',1,null)) as mounth') ->where($map2) ->group('register_way') ->select(); $data2 = array_column($data2, null, 'register_way'); $count = count($data); foreach ($data as $key => $value) { static $i = 0; $i++; $data[$key]['rand'] = $i; $data[$key]['today'] = $data2[$value['register_way']]['today']; $data[$key]['week'] = $data2[$value['register_way']]['week']; $data[$key]['mounth'] = $data2[$value['register_way']]['mounth']; } $total = $this->data_total($data); if ($_REQUEST['data_order'] != '') { $data_order = reset(explode(',', $_REQUEST['data_order'])); $data_order_type = end(explode(',', $_REQUEST['data_order'])); $this->assign('userarpu_order', $data_order); $this->assign('userarpu_order_type', $data_order_type); } $page = set_pagination($count, $row); if ($page) { $this->assign('_page', $page); } $data = my_sort($data, $data_order_type, (int)$data_order); $size = $row;//每页显示的记录数 $pnum = ceil(count($data) / $size); //总页数,ceil()函数用于求大于数字的最小整数 //用array_slice(array,offset,length) 函数在数组中根据条件取出一段值;array(数组),offset(元素的开始位置),length(组的长度) $data = array_slice($data, ($arraypage - 1) * $size, $size); $this->checkListOrCountAuthRestMap($map,[]); $this->meta_title = '注册方式统计列表'; $this->assign('list_data', $data); $this->assign('total', $total); $this->assign("is_admin",is_administrator()); $this->display(); } function payway_statistics($p = 0) { $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 $arraypage = $page; if (isset($_REQUEST['row'])) { $row = $_REQUEST['row']; } else { $row = 10; } $deposit = M('Deposit', "tab_"); $user = M('User', 'tab_'); $spend = M('Spend', 'tab_'); if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['pay_time'] = ['between', array(strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399)]; unset($_REQUEST['timestart']); unset($_REQUEST['timeend']); } elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) { $map['pay_time'] = ['between', array(strtotime($_REQUEST['timestart']), time())]; unset($_REQUEST['timestart']); } elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['pay_time'] = ['elt', strtotime($_REQUEST['timeend']) + 86399]; unset($_REQUEST['timeend']); } // var_dump($_REQUEST);exit; if (isset($_REQUEST['pay_way']) && $_REQUEST['pay_way'] != '') { $map['pay_way'] = array('in', $_REQUEST['pay_way']); unset($_REQUEST['pay_way']); } setPowerPromoteIds($map); $map['pay_status'] = 1; $today = total(1); $week = total(2); $mounth = total(3); D("Spend")->addSubsiteWhere($map); $data = $spend ->field('pay_way,date_format(FROM_UNIXTIME(pay_time),"%Y-%m-%d") AS time, sum(pay_amount) as count') ->where($map) ->group('pay_way') ->order('count desc,pay_time') ->select(); $map2 = array(); $map2['pay_status'] = 1; setPowerPromoteIds($map2); D("Spend")->addSubsiteWhere($map2); $data2 = $spend ->field('pay_way, sum(IF(pay_time ' . $today . ',pay_amount,0)) as today, sum(IF(pay_time ' . $week . ',pay_amount,0)) as week, sum(IF(pay_time ' . $mounth . ',pay_amount,0)) as mounth') ->where($map2) ->group('pay_way') ->select(); $data2 = array_column($data2, null, 'pay_way'); $count = count($data); foreach ($data as $key => $value) { static $i = 0; $i++; $data[$key]['rand'] = $i; $data[$key]['today'] = $data2[$value['pay_way']]['today']; $data[$key]['week'] = $data2[$value['pay_way']]['week']; $data[$key]['mounth'] = $data2[$value['pay_way']]['mounth']; } $total = $this->data_total($data); $this->assign('total', $total); if ($_REQUEST['data_order'] != '') { $data_order = reset(explode(',', $_REQUEST['data_order'])); $data_order_type = end(explode(',', $_REQUEST['data_order'])); $this->assign('userarpu_order', $data_order); $this->assign('userarpu_order_type', $data_order_type); } $page = set_pagination($count, $row); if ($page) { $this->assign('_page', $page); } $this->checkListOrCountAuthRestMap($map,[]); $data = my_sort($data, $data_order_type, (int)$data_order); $size = $row;//每页显示的记录数 $pnum = ceil(count($data) / $size); //总页数,ceil()函数用于求大于数字的最小整数 //用array_slice(array,offset,length) 函数在数组中根据条件取出一段值;array(数组),offset(元素的开始位置),length(组的长度) $data = array_slice($data, ($arraypage - 1) * $size, $size); $this->meta_title = '充值方式统计列表'; $this->assign('list_data', $data); $this->assign("is_admin",is_administrator()); $this->display(); } function promote_statistics($p = 0) { $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 $arraypage = $page; if (isset($_REQUEST['row'])) { $row = $_REQUEST['row']; } else { $row = 10; } $user = M('User', 'tab_'); // $map['promote_id'] = array('egt', 0); // $map['puid'] = 0; if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['register_time'] = ['between', array(strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399)]; unset($_REQUEST['timestart']); unset($_REQUEST['timeend']); } elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) { $map['register_time'] = ['between', array(strtotime($_REQUEST['timestart']), time())]; unset($_REQUEST['timestart']); } elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['register_time'] = ['elt', strtotime($_REQUEST['timeend']) + 86399]; unset($_REQUEST['timeend']); } //TODO:应需求,取消玩家表,只要user表的fgame有就算注册无需在play表存在 $play_map = false; if (isset($_REQUEST['game_name'])) { $map['fgame_name'] = ['like', "{$_REQUEST['game_name']}%"]; // $play_map = " and up.game_name = '{$_REQUEST['game_name']}' "; } $play_info_map = false; if (isset($_REQUEST['server_id'])) { $play_map = false; //有区服就不检索玩家表,有区服一定已经选择游戏了 $play_info_map = " and upi.server_id = '{$_REQUEST['server_id']}' and upi.game_name like '{$_REQUEST['game_name']}%'"; } if (!empty($_REQUEST['admin_id'])) { $map['promote.admin_id'] = $_REQUEST['admin_id']; } if (!empty($_REQUEST['game_type'])) { $map['tab_game.sdk_version'] = $_REQUEST['game_type']; } $today = total(1); $week = total(2); $mounth = total(3); $isOffice = true; if (isset($_REQUEST['promote_id']) || isset($_REQUEST['company_id'])) { $isOffice = false; $pwhere = "1"; if(isset($_REQUEST['promote_id'])){ $pwhere .= " and (chain like '%/{$_REQUEST['promote_id']}/%' or id={$_REQUEST['promote_id']})"; } if(isset($_REQUEST['company_id'])){ $pwhere .= " and company_id={$_REQUEST['company_id']}"; } $promoter_ids = D("Promote")->where($pwhere)->field('id')->select(); if ($promoter_ids) { $map['u.promote_id'] = ['in', implode(',', array_column($promoter_ids, 'id'))]; }else{ $map['u.promote_id'] = -999; } } $promoteTableMap = 'tab_promote promote ON u.promote_id = promote.id'; if (isset($_REQUEST['company_belong'])){ $isOffice = false; $promoteTableMap .= " and promote.company_belong = {$_REQUEST['company_belong']}"; } if($isOffice){ $promoteTableMap = "left join ".$promoteTableMap; } // 如果是市场专员那么只能看自己的会长信息 $isMarketAdmin = isMarketAdmin(); if ($isMarketAdmin) { $map['promote.admin_id'] = is_login(); } //为数据权限添加 setPowerPromoteIds($map, 'u.promote_id'); $data = M("User u","tab_") ->field(" count(u.id) as count, IFNULL(tab_game.relation_game_id,0) relation_game_id, IFNULL(tab_game.relation_game_name,'其他渠道') relation_game_name, IFNULL(if(substring_index(substring_index(promote.`chain`,'/',2),'/',-1)='', u.promote_id, substring_index(substring_index(promote.`chain`,'/',2),'/',-1)),0) id") ->join($promoteTableMap) ->join($play_map ? "left join tab_user_play as up on up.user_id = u.id " . $play_map : false) ->join($play_info_map ? "left join tab_user_play_info as upi on upi.user_id = u.id " . $play_info_map : false) ->join('tab_game on u.fgame_id = tab_game.id',"left") ->where($map) ->group('tab_game.relation_game_id, id') ->order('count desc, register_time') ->select(); //今日/本周/本月不变 $tmap = $map; if(isset($tmap['register_time'])){ //获取最大最小 $tweek = total(2,false); $tmonth = total(3,false); //获取最小 $tmin = 0; if($tweek[1][0] < $tmonth[1][0]){ $tmin = $tweek[1][0]; }else{ $tmin = $tmonth[1][0]; } $tmap['register_time'] = ['between', array($tmin,$tmonth[1][1])]; } $tdata = M("User u","tab_") ->field("count(IF(register_time {$today},1,null)) as today, count(IF(register_time {$week},1,null)) as week, count(IF(register_time {$mounth},1,null)) as mounth, IFNULL(tab_game.relation_game_id,0) relation_game_id, IFNULL(tab_game.relation_game_name,'其他渠道') relation_game_name, IFNULL(if(substring_index(substring_index(promote.`chain`,'/',2),'/',-1)='',u.promote_id,substring_index(substring_index(promote.`chain`,'/',2),'/',-1)),0) id") ->join($promoteTableMap) ->join($play_map ? "tab_user_play as up on up.user_id = u.id " . $play_map : false) ->join($play_info_map ? "tab_user_play_info as upi on upi.user_id = u.id " . $play_info_map : false) ->join('tab_game on u.fgame_id = tab_game.id') ->where($tmap) ->group('tab_game.relation_game_id, id') ->order('register_time') ->select(); $tmdata = []; foreach($data as $k=>$v){ $v['today'] = 0; $v['week'] = 0; $v['mounth'] = 0; $tag = "{$v['id']}-{$v['relation_game_id']}"; $tmdata[$tag] = $v; } // 填入日/周/月统计 if(!empty($tdata)){ foreach ($tdata as $k => $v) { $tag = "{$v['id']}-{$v['relation_game_id']}"; $tmdata[$tag]['today'] = $v['today']; $tmdata[$tag]['week'] = $v['week']; $tmdata[$tag]['mounth'] = $v['mounth']; if (empty($tmdata[$tag]['relation_game_name']) && !empty($v['relation_game_name'])) { $tmdata[$tag]['relation_game_name'] = $v['relation_game_name']; } $tmdata[$tag]['id'] = $v['id']; } } $data = array_values($tmdata); unset($map['tp1.id']); unset($map['tp1.chain']); unset($tmap['tp1.id']); unset($tmap['tp1.chain']); $map['u.promote_id'] = 0; $tmap['u.promote_id'] = 0; $authorityData['count'] = 0; //数据排序 $last_names = array_column($data,'count'); array_multisort($last_names,SORT_DESC,$data); $count = count($data); foreach ($data as $key => $value) { static $i = 0; $i++; $data[$key]['rand'] = $i; } $total = $this->data_total($data); if ($_REQUEST['data_order'] != '') { $data_order = reset(explode(',', $_REQUEST['data_order'])); $data_order_type = end(explode(',', $_REQUEST['data_order'])); $this->assign('userarpu_order', $data_order); $this->assign('userarpu_order_type', $data_order_type); } $page = set_pagination($count, $row); if ($page) { $this->assign('_page', $page); } $this->checkListOrCountAuthRestMap($map,[]); $data = my_sort($data, $data_order_type, (int)$data_order); if(isset($_REQUEST["export"])){ $size = 999999; }else{ $size = $row;//每页显示的记录数 } $pnum = ceil(count($data) / $size); //总页数,ceil()函数用于求大于数字的最小整数 //用array_slice(array,offset,length) 函数在数组中根据条件取出一段值;array(数组),offset(元素的开始位置),length(组的长度) $data = array_slice($data, ($arraypage - 1) * $size, $size); $companys = !empty($data) ? M('promote', 'tab_') ->field('tab_promote.id, tab_promote.account as promote_account, company_name, sys_member.nickname as admin_username') ->join("tab_promote_company on tab_promote.company_id = tab_promote_company.id", 'left') ->join('sys_member on tab_promote.admin_id = sys_member.uid', 'left') ->where("tab_promote.id in (".implode(',', array_column($data, 'id')).")")->select() : []; $departmentName = A("Market",'Event')->getDepartmentNameByMarketType('nickname'); $companys = $companys ? array_column($companys, null, 'id') : []; foreach ($data as &$item) { $item['company_name'] = $companys[$item['id']]['company_name'] ?? '无'; $item['admin_username'] = $companys[$item['id']]['admin_username'] ?? '无'; $item['admin_department'] =$departmentName[$item['admin_username']] ?? '无'; if($item['id'] == 0){ $item['promote_account'] = C('OFFICIEL_CHANNEL'); } else { $item['promote_account'] = $companys[$item['id']]['promote_account']; } } if(isset($_REQUEST["export"])){ data2csv($data,'推广员注册统计',array( 'company_name' => '公司', "promote_account"=>"推广员账号", 'admin_username' => '市场专员', 'admin_department' => '所属市场部', 'relation_game_name' => '游戏', "count"=>"累计注册", "rand"=>"排行榜", "today"=>"今日注册", "week"=>"本周注册", "mounth"=>"本月注册", )); } $this->meta_title = '渠道注册统计列表'; $this->assign("is_admin",is_administrator()); $this->assign('list_data', $data); $this->assign('admin_users', M('member')->field('uid,nickname')->select()); $this->assign("companyList",D("PromoteCompany")->getList()); $this->assign('total', $total); $this->display(); } //TODO: public function promotepay_statistics($p = 0) { $page = intval($p); $page = $page ? $page : 1; //默认显示第一页数据 $arraypage = $page; if(!array_key_exists("timestart",$_REQUEST)){ $this->redirect(ACTION_NAME, array('timestart' => date('Y-m-d',strtotime('-7 day')),"timeend"=>date('Y-m-d'))); } if (isset($_REQUEST['row'])) { $row = $_REQUEST['row']; } else { $row = 10; } $map1['promote_id'] = $map['promote_id'] = array('egt', 0); $spend = M('Spend', 'tab_'); if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['pay_time'] = ['between', array(strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399)]; unset($_REQUEST['timestart']); unset($_REQUEST['timeend']); } elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) { $map['pay_time'] = ['between', array(strtotime($_REQUEST['timestart']), time())]; unset($_REQUEST['timestart']); } elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) { $map['pay_time'] = ['elt', strtotime($_REQUEST['timeend']) + 86399]; unset($_REQUEST['timeend']); } else { $map['pay_time'] = ['between', array(0, time())]; // $pay_time = " between 0 and " . time(); } $map1['s.pay_status'] = $map['s.pay_status'] = 1; $today = total(1); $week = total(2); $mounth = total(3); unset( $map['create_time']); // var_dump( $promote); $tweek = total(2,false); $tmonth = total(3,false); //获取最小 $tmin = 0; if($tweek[1][0] < $tmonth[1][0]){ $tmin = $tweek[1][0]; }else{ $tmin = $tmonth[1][0]; } $isOffice = true; if (isset($_REQUEST['promote_id']) || isset($_REQUEST['company_id']) ) { $isOffice = false; $pwhere = "1"; if(isset($_REQUEST['promote_id'])){ $pwhere .= " and (chain like '%/{$_REQUEST['promote_id']}/%' or id={$_REQUEST['promote_id']})"; $map['tp1.id'] = $_REQUEST['promote_id']; } if(isset($_REQUEST['company_id'])){ $map['tp1.company_id'] = $_REQUEST['company_id']; $pwhere .= " and company_id={$_REQUEST['company_id']}"; } $promoter_ids = D("Promote")->where($pwhere)->field('id')->select(); if ($promoter_ids) { $map['tp2.id'] = ['in', implode(',', array_column($promoter_ids, 'id'))]; } } else { $map['tp1.chain'] = '/'; } $map['tp1.level'] = '1'; if (isset($_REQUEST['company_belong'])){ $isOffice = false; $map['tp1.company_belong'] = $_REQUEST['company_belong']; } if (isset($_REQUEST['game_name'])) { $map['s.game_name'] = ['like', "{$_REQUEST['game_name']}%"]; if (isset($_REQUEST['server_id'])) { $map['s.server_id'] = $_REQUEST['server_id']; unset($_REQUEST['server_id']); } } if (!empty($_REQUEST['game_type'])) { $map['s.sdk_version'] = $_REQUEST['game_type']; } if (isMarketAdmin()) { $map['s.market_admin_id'] = is_login(); } else if (!empty($_REQUEST['admin_id'])) { $map['s.market_admin_id'] = $_REQUEST['admin_id']; } setPowerPromoteIds($map, 'tp1.id'); D("Spend")->addSubsiteWhere($map,"s"); $data = SM('promote', 'tab_')->alias('tp1') ->field('tp1.account as promote_account,tp1.id,g.relation_game_id,g.relation_game_name, floor(sum(IF(is_check=1,pay_amount,0))*100) as count,IFNULL(sum(IF(is_check=2,pay_amount,0)),0) unpay_count') ->join("tab_promote AS tp2 ON tp2.`chain` LIKE CONCAT('%/', tp1.id, '/%') OR tp2.id = tp1.id", 'left') ->join("tab_spend as s use INDEX(search) on tp2.id = s.promote_id", 'left') ->join("tab_game as g on g.id = s.game_id", 'left') ->where($map) ->group('tp1.id, g.relation_game_id') ->order('count desc') ->select(); //今日/本周/本月不变 $tmap = $map; if(isset($map['pay_time'])){ $tmap['pay_time'] = ['between', array($tmin,$tmonth[1][1])]; } $tdata = SM('promote', 'tab_')->alias('tp1') ->field('tp1.account as promote_account,tp1.id,g.relation_game_id,g.relation_game_name, floor(sum(IF(s.pay_time ' . $today . ' and is_check=1,pay_amount,0))*100) as today, floor(sum(IF(s.pay_time ' . $week . ' and is_check=1,pay_amount,0))*100) as week, floor(sum(IF(s.pay_time ' . $mounth . ' and is_check=1,pay_amount,0))*100) as mounth') ->join("tab_promote AS tp2 ON tp2.`chain` LIKE CONCAT('%/', tp1.id, '/%') OR tp2.id = tp1.id", 'left') ->join("tab_spend as s on tp2.id = s.promote_id", 'left') ->join("tab_game as g on g.id = s.game_id", 'left') ->where($tmap) ->group('tp1.id, g.relation_game_id') ->select(); $tmdata = []; foreach($data as $k=>$v){ $v['today'] = 0; $v['week'] = 0; $v['mounth'] = 0; $tag = "{$v['id']}-{$v['relation_game_id']}"; $tmdata[$tag] = $v; } //dd($data); foreach ($tdata as $k => $v) { $tag = "{$v['id']}-{$v['relation_game_id']}"; $tmdata[$tag]['today'] = $v['today']; $tmdata[$tag]['week'] = $v['week']; $tmdata[$tag]['mounth'] = $v['mounth']; if (!$tmdata[$tag]['promote_account']) { $tmdata[$tag]['promote_account'] = $v['promote_account']; $tmdata[$tag]['count'] = 0; } if (empty( $tmdata[$tag]['relation_game_name']) && !empty($v['relation_game_name'])) { $tmdata[$tag]['relation_game_name'] = $v['relation_game_name']; } $tmdata[$tag]['id'] = $v['id']; } $data = []; foreach($tmdata as $k => $v){ $data[] = $v; } if ($isOffice) { //dd($data); unset($map['tp1.id'], $map['tp2.id'], $map['tp2.admin_id'],$map['tp1.company_id'],$map['tp1.company_belong'],$map['tp1.level']); unset($map['tp1.chain']); unset($tmap['tp1.id']); unset($tmap['tp1.chain'], $tmap['tp2.id'],$tmap['tp1.company_id'],$tmap['tp1.company_belong'],$tmap['tp1.level']); $map['s.promote_id'] = 0; $tmap['s.promote_id'] = 0; $authorityData['count'] = 0; //如果有官方渠道权限 $user_auth_promote_ids = session('user_auth_promote_ids'); if ($user_auth_promote_ids == 'all' || in_array('0', explode(",", $user_auth_promote_ids))) { //官方渠道数据添加 $authorityData = SM('spend', 'tab_')->alias('s') ->field('floor(sum(IF(is_check=1,pay_amount,0))*100) as count,IFNULL(sum(IF(is_check=2,pay_amount,0)),0) unpay_count') ->where($map) ->find(); $tauthorityData = SM('spend', 'tab_')->alias('s') ->field(' floor(sum(IF(s.pay_time ' . $today . ' and is_check=1,pay_amount,0))*100) as today, floor(sum(IF(s.pay_time ' . $week . ' and is_check=1,pay_amount,0))*100) as week, floor(sum(IF(s.pay_time ' . $mounth . ' and is_check=1,pay_amount,0))*100) as mounth') ->where($tmap) ->find(); $authorityData['today'] = $tauthorityData['today']; $authorityData['week'] = $tauthorityData['week']; $authorityData['mounth'] = $tauthorityData['mounth']; } $authorityData['promote_account'] = C('OFFICIEL_CHANNEL'); $authorityData['id'] = "0"; if (isset($_REQUEST['promote_id'])||$authorityData['count']==0) { $authorityData = []; } else { array_push($data, $authorityData); } } // dump($data);die(); //数据排序 $last_names = array_column($data,'count'); array_multisort($last_names,SORT_DESC,$data); $count = count($data); foreach ($data as $key => $value) { $value['count'] ?: 0; $value['today'] ?: 0; $value['week'] ?: 0; $value['mounth'] ?: 0; static $i = 0; $i++; $data[$key]['rand'] = $i; $data[$key]['count'] = $value['count'] / 100; $data[$key]['unpay_count'] = $value['unpay_count'] ? $value['unpay_count'] : 0; $data[$key]['today'] = $value['today'] / 100; $data[$key]['week'] = $value['week'] / 100; $data[$key]['mounth'] = $value['mounth'] / 100; } $total = $this->data_total($data); $this->assign('total', $total); if ($_REQUEST['data_order'] != '') { $data_order = reset(explode(',', $_REQUEST['data_order'])); $data_order_type = end(explode(',', $_REQUEST['data_order'])); $this->assign('userarpu_order', $data_order); $this->assign('userarpu_order_type', $data_order_type); } $page = set_pagination($count, $row); if ($page) { $this->assign('_page', $page); } $data = my_sort($data, $data_order_type, (int)$data_order); $size = $row;//每页显示的记录数 $companys = !empty($data) ? M('promote', 'tab_') ->field('tab_promote.id, company_name, sys_member.nickname as admin_username') ->join("tab_promote_company on tab_promote.company_id = tab_promote_company.id", 'left') ->join('sys_member on tab_promote.admin_id = sys_member.uid', 'left') ->where("tab_promote.id in (".implode(',', array_column($data, 'id')).")")->select() : []; $companys = $companys ? array_column($companys, null, 'id') : []; $departmentName = A("Market",'Event')->getDepartmentNameByMarketType('nickname'); foreach ($data as &$item) { $item['company_name'] = $companys[$item['id']]['company_name'] ?? '无'; $item['admin_username'] = $companys[$item['id']]['admin_username'] ?? '无'; $item['admin_department'] = $departmentName[$item['admin_username']] ?? '无'; } if(isset($_REQUEST['export'])){ $GetData = $_GET; unset($GetData['export']); addOperationLog(['op_type'=>3,'key'=>getNowDate(),'op_name'=>'导出推广员充值统计','url'=>U('Platform/promotepay_statistics',$GetData),'menu'=>'统计-统计-推广员统计-推广员充值统计']); data2csv($data,'推广员充值统计',array( 'company_name' => '公司', "promote_account"=>"会长账号", 'admin_username' => '当前市场专员', 'admin_department' => '所属市场部', 'relation_game_name' => '游戏', "count"=>"累计充值", "unpay_count"=>"累计不结算充值", "rand"=>"排行榜", "today"=>"今日充值", "week"=>"本周充值", "mounth"=>"本月充值", )); } $this->checkListOrCountAuthRestMap($map,[]); $data = array_slice($data, ($arraypage - 1) * $size, $size); $this->meta_title = '渠道充值统计列表'; $this->assign('list_data', $data); $this->assign('admin_users', M('member')->field('uid,nickname')->select()); $this->assign("companyList",D("PromoteCompany")->getList()); $this->assign("is_admin",is_administrator()); $this->display(); } public function data_total($data) { $total['sum_count'] = array_sum(array_column($data, 'count')); $total['unpay_count'] = array_sum(array_column($data, 'unpay_count')); $total['sum_today'] = array_sum(array_column($data, 'today')); $total['sum_week'] = array_sum(array_column($data, 'week')); $total['sum_mounth'] = array_sum(array_column($data, 'mounth')); return $total; } function day_data($model = 'User', $column1 = array(), $column2 = 'count') { //今日本周本月不跟随选择的实现变动 只以当前日期为基准 $table = SM($model, 'tab_'); $today = total(1); $week = total(2); $mounth = total(3); if ($model == 'User') { $data['today'] = $table->field('count(id) as count')->where($column1)->where('register_time' . $today)->select(); $data['week'] = $table->field('count(id) as count')->where($column1)->where('register_time' . $week)->select(); $data['mounth'] = $table->field('count(id) as count')->where($column1)->where('register_time' . $mounth)->select(); } elseif ($model == 'Spend') { $data['today'] = $table->field('sum(pay_amount) as count')->where($column1)->where('pay_time' . $today)->where(array('pay_status' => 1))->select(); $data['week'] = $table->field('sum(pay_amount) as count')->where($column1)->where('pay_time' . $week)->where(array('pay_status' => 1))->select(); $data['mounth'] = $table->field('sum(pay_amount) as count')->where($column1)->where('pay_time' . $mounth)->where(array('pay_status' => 1))->select(); } foreach ($data as $key => $value) { $v = reset($value); $data[$key] = $v['count']; } return $data; } //渠道下注册详细信息 public function zhuce_detail($promote_id, $game_name = '', $server_name = '') { $map['promote_id'] = $promote_id; if (!empty($game_name)) { $map['fgame_name'] = $game_name; } if (empty($server_name)) { $data = M('user', 'tab_')->field('count(id) as count,fgame_name as game_name')->where($map)->order('fgame_id')->group('game_name')->select(); } else { $map['server_name'] = $server_name; $map['game_name'] = $map['fgame_name']; unset($map['fgame_name']); $data = M('user_play_info', 'tab_')->field('count(user_id) as count,game_name')->where($map)->order('game_id')->group('game_name')->select(); } $this->assign('list_data', $data); $this->display(); } //渠道下充值详细信息 public function chongzhi_detail($promote_id, $game_name = '', $server_name = '') { $map['promote_id'] = $promote_id; $map['pay_status'] = 1; $map['pay_way'] = array('GT', 0); if ($game_name) { $map['game_name'] = $game_name; } if ($server_name) { $map['server_name'] = $server_name; } $data = M('spend', 'tab_')->field('sum(pay_amount) as total_amount,game_name')->where($map)->order('game_id')->group('game_name')->select(); $this->assign('list_data', $data); $this->display(); } public function uc_statistics($p = 1) { if (isset($_REQUEST['timestart']) && isset($_REQUEST['timeend'])) { $map .= 'pay_time between ' . strtotime($_REQUEST['timestart']) . ' and ' . (strtotime($_REQUEST['timeend']) + 24 * 60 * 60 - 1) . ' and '; } if (isset($_REQUEST['game_name'])) { $map .= 'game_name like ' . '"' . '%' . $_REQUEST['game_name'] . '%' . '" and '; $map1 .= 'game_name like ' . '"' . '%' . $_REQUEST['game_name'] . '%' . '" and '; $map2 .= 'game_name like ' . '"' . '%' . $_REQUEST['game_name'] . '%' . '" and '; unset($_REQUEST['game_name']); } $map .= " version=1 and "; $map .= "platform!=1"; $uc = new Ucservice(); $page = $p; $data = $uc->uc_recharge_select($page, 10, $map); $map1 .= 'pay_time' . total(1) . ' and '; $map1 .= " version=1 and "; $map1 .= "platform!=1"; $map2 .= 'pay_time' . total(5) . ' and '; $map2 .= " version=1 and "; $map2 .= "platform!=1"; //今天 $ttotal = $uc->uc_recharge_select($page, 10, $map1)['total'] ? $uc->uc_recharge_select($page, 10, $map1)['total'] : 0; //昨天 $ytotal = $uc->uc_recharge_select($page, 10, $map2)['total'] ? $uc->uc_recharge_select($page, 10, $map2)['total'] : 0; //总共 $total = $data['total'] ? $data['total'] : 0; //该叶 $pagetotal = $data['totalpage'][0]['totalpage'] ? $data['totalpage'][0]['totalpage'] : 0; $this->meta_title = 'Uc充值列表'; $this->assign('ttotal', $ttotal); $this->assign('ytotal', $ytotal); $this->assign('pagetotal', $pagetotal); $this->assign('total', $total); $count = $data['count']; if (isset($_REQUEST['row'])) { $row = $_REQUEST['row']; } else { $row = 10; } $page = set_pagination($count, $row); if ($page) { $this->assign('_page', $page); } unset($data['count']); unset($data['total']); unset($data['totalpage']); $this->assign('data', $data); $this->display(); } public function getSpendServer(){ if(isset($_REQUEST['game_name'])){ $game = M('Game','tab_')->field('id')->where(['game_name'=>$_REQUEST['game_name']])->find(); $game_id = $game['id']; } if(isset($_REQUEST['game_id'])){ $game_id = $_REQUEST['game_id']; } $map['game_id'] = $game_id; $map['server_name'] = array('neq',''); $data = M('server','tab_')->field('server_name,server_id')->where($map)->group('server_name')->select(); $this->AjaxReturn($data); } public function uc_deposit($p = 1) { if (isset($_REQUEST['timestart']) && isset($_REQUEST['timeend'])) { $map .= 'create_time between ' . strtotime($_REQUEST['timestart']) . ' and ' . (strtotime($_REQUEST['timeend']) + 24 * 60 * 60 - 1) . ' and '; } $map .= " version=1 and "; $map .= "platform!=1"; $uc = new Ucservice(); $page = $p; $data = $uc->uc_deposit_select($page, 10, $map); $map1 .= 'create_time' . total(1) . ' and '; $map1 .= " version=1 and "; $map1 .= "platform!=1"; $map2 .= 'create_time' . total(5) . ' and '; $map2 .= " version=1 and "; $map2 .= "platform!=1"; //今天 $ttotal = $uc->uc_deposit_select($page, 10, $map1)['total'] ? $uc->uc_deposit_select($page, 10, $map1)['total'] : 0; //昨天 $ytotal = $uc->uc_deposit_select($page, 10, $map2)['total'] ? $uc->uc_deposit_select($page, 10, $map2)['total'] : 0; //总共 $total = $data['total'] ? $data['total'] : 0; //该叶 $pagetotal = $data['totalpage'][0]['totalpage'] ? $data['totalpage'][0]['totalpage'] : 0; $this->meta_title = 'Uc平台币充值列表'; $this->assign('ttotal', $ttotal); $this->assign('ytotal', $ytotal); $this->assign('pagetotal', $pagetotal); $this->assign('total', $total); $count = $data['count']; if (isset($_REQUEST['row'])) { $row = $_REQUEST['row']; } else { $row = 10; } $page = set_pagination($count, $row); if ($page) { $this->assign('_page', $page); } unset($data['count']); unset($data['total']); unset($data['totalpage']); $this->assign('data', $data); $this->display(); } }