diff --git a/Application/Admin/Common/function.php b/Application/Admin/Common/function.php index 49f24c7a4..d8400d0cc 100644 --- a/Application/Admin/Common/function.php +++ b/Application/Admin/Common/function.php @@ -616,4 +616,62 @@ function encryptIdCard($str) { $stars_str = "****"; } return substr_replace($str, $stars_str, $length-4, 4); +} + +//获取推广员资质审核状态 $type 1-获取数组 2-获取文本 +function getPromoteVerStatus($status, $type = 1) +{ + $statusList = [ + 0 => '未认证', + 1 => '审核成功', + 2 => '审核失败', + 3 => '审核中', + 4 => '修改审核中', + ]; + + $records = null; + switch ($type) { + case 1: + $records = $status; + break; + case 2: + $records = $statusList[$status] ?? '未知'; + break; + default: + $records = false; + break; + } + return $records; +} + +//获取推广员账号 +function getPromoteAccount($promoteId) +{ + $map['id'] = intval($promoteId); + return M('promote', 'tab_')->where($map)->getField('account'); +} + +//获取推广员列表 $level 0-全部 +function getPromoteByLevel($level = 0) +{ + $field = 'id, account, real_name'; + if ($level) { + $map['level'] = $level; + $promotes = M('promote', 'tab_')->field($field)->where($map)->select(); + } else { + $promotes = M('promote', 'tab_')->field($field)->select(); + } + return $promotes; +} + +//获取游戏列表 +function getAllGameList($groupByRelation = false) +{ + $field = 'id, game_name, relation_game_id, relation_game_name'; + if ($groupByRelation) { + $games = M('game', 'tab_')->field($field)->group('relation_game_id')->select(); + } else { + $games = M('game', 'tab_')->field($field)->select(); + } + return $games; } \ No newline at end of file diff --git a/Application/Admin/Controller/ExportController.class.php b/Application/Admin/Controller/ExportController.class.php index 4bd128bb9..683ded289 100644 --- a/Application/Admin/Controller/ExportController.class.php +++ b/Application/Admin/Controller/ExportController.class.php @@ -2971,46 +2971,113 @@ class ExportController extends Controller * ltv统计 * @author 鹿文学 */ - public function ltv($p=1) { + public function ltv($p=1, $start, $end) { $xlsName = $_REQUEST['xlsname']; $xlsCell = array( - array('time','日期'), - array('amount','充值金额'), - array('active','活跃用户'), - array('ltv1','LTV1'), - array('ltv2','LTV2'), - array('ltv3','LTV3'), - array('ltv4','LTV4'), - array('ltv5','LTV5'), - array('ltv6','LTV6'), - array('ltv7','LTV7'), - array('ltv14','LTV14'), - array('ltv30','LTV30'), + array('date','日期'), + array('total_amt','充值金额'), + array('user_count','活跃用户'), + array('ltv_1','LTV1'), + array('ltv_2','LTV2'), + array('ltv_3','LTV3'), + array('ltv_4','LTV4'), + array('ltv_5','LTV5'), + array('ltv_6','LTV6'), + array('ltv_7','LTV7'), + array('ltv_14','LTV14'), + array('ltv_30','LTV30'), ); - if (is_file(dirname(__FILE__).'/access_data_ltv.txt')) { - - $filetxt = file_get_contents(dirname(__FILE__).'/access_data_ltv.txt'); - - $data = json_decode($filetxt,true); - - } else { - $page = intval($p); - $page = $page ? $page : 1; //默认显示第一页数据 - if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}//10; - - $start = I('start',date('Y-m-d',strtotime('-30 day'))); - - $end = I('end',date('Y-m-d',strtotime('-1 day'))); - - $end = strtotime($end)>=strtotime(date('Y-m-d'))?date('Y-m-d',strtotime('-1 day')):$end; - - $data = D('user')->ltv(strtotime($start),strtotime($end)); + $start_time = $start = strtotime($start); + $end_time = $end = strtotime($end) + 86400; + $map = " 1=1 "; + if (isset($_REQUEST['game_name'])) { + $map .= " AND game_id in (" . implode(',', array_column(getGameByName($_REQUEST['game_name'], $_REQUEST['game_type']), 'id')) . ")"; + } + if (isset($_REQUEST['server_name'])) { + $map .= " AND server_name = '{$_REQUEST['server_name']}' "; + } - } + // 获取包含的用户id + $users = M()->query(" + SELECT + count(*) as total_count, + GROUP_CONCAT(u.id) as ids, + FROM_UNIXTIME(u.register_time, '%Y-%m-%d') as reg_date + FROM + tab_user u + WHERE + u.register_time BETWEEN {$start_time} + AND {$end_time} + GROUP BY reg_date + ORDER BY reg_date asc + "); + $result = []; + foreach ($users as $index => $item) { + $ltv_start = strtotime($item['reg_date']); + $ltv_end = strtotime($item['reg_date']) + 30 * 86400; + $ltv = M()->query(" + SELECT + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 1).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_1, + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 2).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_2, + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 3).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_3, + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 4).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_4, + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 5).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_5, + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 6).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_6, + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 7).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_7, + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 14).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_14, + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 30).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_30, + SUM(pay_amount) as total_amt + FROM + tab_spend + WHERE + {$map} + AND pay_time BETWEEN {$ltv_start} + AND {$ltv_end} + AND user_id IN ({$item['ids']}) AND pay_status = 1 + "); + $result[] = [ + 'date'=>$item['reg_date'], + 'total_amt'=>$ltv[0]['total_amt'] ?: 0, + 'user_count'=>$item['total_count'] ?: 0, + 'ltv_1'=>$ltv[0]['ltv_1'] ?: 0, + 'ltv_2'=>$ltv[0]['ltv_2'] ?: 0, + 'ltv_3'=>$ltv[0]['ltv_3'] ?: 0, + 'ltv_4'=>$ltv[0]['ltv_4'] ?: 0, + 'ltv_5'=>$ltv[0]['ltv_5'] ?: 0, + 'ltv_6'=>$ltv[0]['ltv_6'] ?: 0, + 'ltv_7'=>$ltv[0]['ltv_7'] ?: 0, + 'ltv_14'=>$ltv[0]['ltv_14'] ?: 0, + 'ltv_30'=>$ltv[0]['ltv_30'] ?: 0 + ]; + unset($user[$index]); + } + $data = []; + $k = 0; + for($i=$start_time; $i<$end_time; $i+=86400) { + if (($result[$k]['date'] == date("Y-m-d", $i))) { + $data[] = $result[$k]; + $k += 1; + } else { + $data[] = [ + 'date'=>date("Y-m-d", $i), + 'total_amt'=> 0, + 'user_count'=> 0, + 'ltv_1'=> 0, + 'ltv_2'=> 0, + 'ltv_3'=> 0, + 'ltv_4'=> 0, + 'ltv_5'=> 0, + 'ltv_6'=> 0, + 'ltv_7'=> 0, + 'ltv_14'=> 0, + 'ltv_30'=> 0 + ]; + } + } foreach ($data as $v) { $xlsData[] = $v; diff --git a/Application/Admin/Controller/PromoteGameRatioController.class.php b/Application/Admin/Controller/PromoteGameRatioController.class.php index 3e9105e12..6e358417b 100644 --- a/Application/Admin/Controller/PromoteGameRatioController.class.php +++ b/Application/Admin/Controller/PromoteGameRatioController.class.php @@ -6,11 +6,126 @@ use Think\Controller; class PromoteGameRatioController extends ThinkController { + const MODEL_NAME = 'promote_game_ratio'; + const STATUS_REFUSE = -1; + const STATUS_WAIT = 0; + const STATUS_PASS = 1; + + public static $statusList = [ + self::STATUS_REFUSE => '审核未通过', + self::STATUS_WAIT => '待审核', + self::STATUS_PASS => '已审核', + ]; + public function lists() { $params = I('get.'); $promoteAccount = $params['promote_account'] ?? ''; $gameId = $params['game_id'] ?? 0; $status = $params['status'] ?? ''; + $page = $params['p'] ? intval($params['p']) : 1; + $row = $params['row'] ? intval($params['row']) : 10; + + $map['_string'] = '1 = 1'; + if ($promoteAccount) { + $promoteMap['account'] = trim($promoteAccount); + $promoteId = M('promote', 'tab_')->where($promoteMap)->getField('id'); + $promoteId = $promoteId ?? 0; + $map['promote_id'] = $promoteId; + } + if ($gameId) { + $map['game_id'] = intval($gameId); + } + if ($status !== '') { + $map['status'] = intval($status); + } + + $field = 'create_time, update_time'; + $promoteGameRatios = D(self::MODEL_NAME)->field($field, true) + ->where($map) + ->page($page, $row) + ->order('update_time desc, id desc') + ->select(); + $count = D(self::MODEL_NAME)->where($map)->count(); + + $records = []; + if ($promoteGameRatios) { + $promoteIds = array_column($promoteGameRatios, 'promote_id'); + $gameIds = array_column($promoteGameRatios, 'game_id'); + $promoteFiled = 'id, account, mobile_phone, create_time, status, ver_status'; + $gameFiled = 'id, game_name, ratio'; + $promotes = M('promote', 'tab_')->where(array('id' => ['in', $promoteIds]))->getField($promoteFiled, true); + $games = M('game', 'tab_')->where(array('id' => ['in', $gameIds]))->getField($gameFiled, true); + + foreach ($promoteGameRatios as $promoteGameRatio) { + $thisPromoteId = $promoteGameRatio['promote_id']; + $thisGameId = $promoteGameRatio['game_id']; + $issetPromote = isset($promotes[$thisPromoteId]); + $issetGame = isset($games[$thisGameId]); + $thisPromoteAccount = '未知'; + $thisPromoteMobilePhone = '未知'; + $thisPromoteCreateTime = '未知'; + $thisPromoteStatus = '未知'; + $thisPromoteVerStatus = '未知'; + $thisGameName = '未知'; + $thisGameRatio = '0.00'; + $thisApplicant = getPromoteAccount($promoteGameRatio['applicant_id']); + $thisReviewer = $promoteGameRatio['reviewer_id'] ? getPromoteAccount($promoteGameRatio['reviewer_id']) : '待确认'; + if ($promoteGameRatio['ratio'] > 0) { + $thisBeninTime = date('Y/m/d', $promoteGameRatio['begin_time']); + $thisEndTime = date('Y/m/d', $promoteGameRatio['end_time']); + } else { + $thisBeninTime = date('Y/m/d', $this->getPromoteApplyCreateTime($thisPromoteId, $thisGameId)); + $thisEndTime = '永久'; + } + $validDate = $thisBeninTime . ' - ' . $thisEndTime; + if ($issetPromote) { + $thisPromoteAccount = $promotes[$thisPromoteId]['account']; + $thisPromoteMobilePhone = $promotes[$thisPromoteId]['mobile_phone']; + $thisPromoteCreateTime = date('Y-m-d H:i:s', $promotes[$thisPromoteId]['create_time']); + $thisPromoteStatus = get_status_title($promotes[$thisPromoteId]['status']); + $thisPromoteStatus = $thisPromoteStatus ?? '未知'; + $thisPromoteVerStatus = getPromoteVerStatus($promotes[$thisPromoteId]['status'], 2); + } + if ($issetGame) { + $thisGameName = $games[$thisGameId]['game_name']; + $thisGameRatio = $games[$thisGameId]['ratio']; + $thisGameRatio = $thisGameRatio ?? '0.00'; + } + + $records[] = [ + 'id' => $promoteGameRatio['id'], + 'promote_id' => $promoteGameRatio['promote_id'], + 'promote_account' => $thisPromoteAccount, + 'promote_mobile_phone' => $thisPromoteMobilePhone, + 'promote_create_time' => $thisPromoteCreateTime, + 'promote_status_text' => $thisPromoteStatus, + 'promote_ver_status_text' => $thisPromoteVerStatus, + 'game_name' => $thisGameName, + 'game_ratio' => $thisGameRatio . '%', + 'ratio' => $promoteGameRatio['ratio'] . '%', + 'valid_date' => $validDate, + 'remark' => $promoteGameRatio['remark'], + 'status_text' => self::$statusList[$promoteGameRatio['status']], + 'applicant' => $thisApplicant ?? '未知', + 'reviewer' => $thisReviewer ?? '未知', + ]; + } + } + + $this->assign('records', $records); + $this->assign('count', $count); + $this->assign('gameList', getAllGameList()); + $this->assign('promoteList', getPromoteByLevel(1)); + $this->meta_title = '公会分成管理'; + $this->display(); + } + + private function getPromoteApplyCreateTime($promoteId, $gameId) + { + $map['promote_id'] = $promoteId; + $map['game_id'] = $gameId; + $createTime = $apply = M('apply', 'tab_')->where($map)->getField('apply_time'); + return $createTime; } } \ No newline at end of file diff --git a/Application/Admin/Controller/StatisticsController.class.php b/Application/Admin/Controller/StatisticsController.class.php index 4dd30404b..31040e7d4 100644 --- a/Application/Admin/Controller/StatisticsController.class.php +++ b/Application/Admin/Controller/StatisticsController.class.php @@ -954,43 +954,146 @@ if ($payids) { * @param integer $p 当前页 * @author 鹿文学 */ - public function ltv($p=1) { + // public function ltv($p=1) { - $page = intval($p); + // $page = intval($p); - $page = $page ? $page : 1; //默认显示第一页数据 + // $page = $page ? $page : 1; //默认显示第一页数据 - if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;} + // if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;} - $start = $_GET['start']= I('start',date('Y-m-d',strtotime('-30 day'))); + // $start = $_GET['start']= I('start',date('Y-m-d',strtotime('-30 day'))); - $end = I('end',date('Y-m-d',strtotime('-1 day'))); + // $end = I('end',date('Y-m-d',strtotime('-1 day'))); - $end = strtotime($end)>=strtotime(date('Y-m-d'))?date('Y-m-d',strtotime('-1 day')):$end; + // $end = strtotime($end)>=strtotime(date('Y-m-d'))?date('Y-m-d',strtotime('-1 day')):$end; - $_GET['end'] = $end; + // $_GET['end'] = $end; - $list = D('user')->ltv(strtotime($start),strtotime($end)); + // $list = D('user')->ltv(strtotime($start),strtotime($end)); - $count = count($list); + // $count = count($list); - $data = array_slice($list,($page-1)*$row,$row,true); + // $data = array_slice($list,($page-1)*$row,$row,true); - file_put_contents(dirname(__FILE__).'/access_data_ltv.txt',json_encode($list)); + // file_put_contents(dirname(__FILE__).'/access_data_ltv.txt',json_encode($list)); - $page = set_pagination($count,$row); - if($page) {$this->assign('_page', $page);} + // $page = set_pagination($count,$row); + // if($page) {$this->assign('_page', $page);} + + + // $this->meta_title = 'LTV统计'; + + // $this->assign('data',$data); + // $this->display(); + // } + + public function ltv($p=1, $row=10) + { + $start = I('start',date('Y-m-d',strtotime('-30 day'))); + $end = I('end',date('Y-m-d',strtotime('-1 day'))); + $start = strtotime($start); + $end = strtotime($end) + 86400; + $start_time = strtotime("+".(($p-1)*$row)." day", $start); + $end_time = strtotime("+".($p*$row+1)." day", $start); + $end_time = $end_time > $end ? $end : $end_time; + + $map = " 1=1 "; + if (isset($_REQUEST['game_name'])) { + $map .= " AND game_id in (" . implode(',', array_column(getGameByName($_REQUEST['game_name'], $_REQUEST['game_type']), 'id')) . ")"; + } + if (isset($_REQUEST['server_name'])) { + $map .= " AND server_name = '{$_REQUEST['server_name']}' "; + } + // 获取包含的用户id + $users = M()->query(" + SELECT + count(*) as total_count, + GROUP_CONCAT(u.id) as ids, + FROM_UNIXTIME(u.register_time, '%Y-%m-%d') as reg_date + FROM + tab_user u + WHERE + u.register_time BETWEEN {$start_time} + AND {$end_time} + GROUP BY reg_date + ORDER BY reg_date asc + "); + $result = []; + foreach ($users as $index => $item) { + $ltv_start = strtotime($item['reg_date']); + $ltv_end = strtotime($item['reg_date']) + 30 * 86400; + $ltv = M()->query(" + SELECT + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 1).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_1, + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 2).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_2, + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 3).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_3, + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 4).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_4, + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 5).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_5, + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 6).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_6, + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 7).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_7, + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 14).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_14, + ROUND(SUM(if (pay_time BETWEEN {$ltv_start} and ".($ltv_start+86400 * 30).", pay_amount, 0))/{$item['total_count']}, 2) as ltv_30, + SUM(pay_amount) as total_amt + FROM + tab_spend + WHERE + {$map} + AND pay_time BETWEEN {$ltv_start} + AND {$ltv_end} + AND user_id IN ({$item['ids']}) AND pay_status = 1 + "); + $result[] = [ + 'date'=>$item['reg_date'], + 'total_amt'=>$ltv[0]['total_amt'] ?: 0, + 'user_count'=>$item['total_count'] ?: 0, + 'ltv_1'=>$ltv[0]['ltv_1'] ?: 0, + 'ltv_2'=>$ltv[0]['ltv_2'] ?: 0, + 'ltv_3'=>$ltv[0]['ltv_3'] ?: 0, + 'ltv_4'=>$ltv[0]['ltv_4'] ?: 0, + 'ltv_5'=>$ltv[0]['ltv_5'] ?: 0, + 'ltv_6'=>$ltv[0]['ltv_6'] ?: 0, + 'ltv_7'=>$ltv[0]['ltv_7'] ?: 0, + 'ltv_14'=>$ltv[0]['ltv_14'] ?: 0, + 'ltv_30'=>$ltv[0]['ltv_30'] ?: 0 + ]; + unset($user[$index]); + } + $data = []; + $k = 0; + for($i=$start_time; $i<$end_time; $i+=86400) { + if (($result[$k]['date'] == date("Y-m-d", $i))) { + $data[] = $result[$k]; + $k += 1; + } else { + $data[] = [ + 'date'=>date("Y-m-d", $i), + 'total_amt'=> 0, + 'user_count'=> 0, + 'ltv_1'=> 0, + 'ltv_2'=> 0, + 'ltv_3'=> 0, + 'ltv_4'=> 0, + 'ltv_5'=> 0, + 'ltv_6'=> 0, + 'ltv_7'=> 0, + 'ltv_14'=> 0, + 'ltv_30'=> 0 + ]; + } + } + $count = ($end-$start)/86400; + $page = set_pagination($count,$row); + if($page) {$this->assign('_page', $page);} + $this->meta_title = 'LTV统计'; $this->assign('data',$data); - $this->display(); - + $this->display('ltv'); } - - } diff --git a/Application/Admin/Controller/access_data_foldline.txt b/Application/Admin/Controller/access_data_foldline.txt index 18f7fceb5..89c4789df 100644 --- a/Application/Admin/Controller/access_data_foldline.txt +++ b/Application/Admin/Controller/access_data_foldline.txt @@ -1 +1 @@ -{"news":[{"time":"0:00","count":6},{"time":"1:00","count":9},{"time":"2:00","count":7},{"time":"3:00","count":11},{"time":"4:00","count":16},{"time":"5:00","count":7},{"time":"6:00","count":9},{"time":"7:00","count":11},{"time":"8:00","count":14},{"time":"9:00","count":40},{"time":"10:00","count":58},{"time":"11:00","count":86},{"time":"12:00","count":41},{"time":"13:00","count":55},{"time":"14:00","count":194},{"time":"15:00","count":180},{"time":"16:00","count":121},{"time":"17:00","count":98},{"time":"18:00","count":120},{"time":"19:00","count":147},{"time":"20:00","count":146},{"time":"21:00","count":124},{"time":"22:00","count":93},{"time":"23:00","count":56}],"sum":{"news":1649,"active":8210,"player":1715,"money":226618},"active":[{"time":"0:00","count":967},{"time":"1:00","count":343},{"time":"2:00","count":176},{"time":"3:00","count":135},{"time":"4:00","count":118},{"time":"5:00","count":177},{"time":"6:00","count":465},{"time":"7:00","count":661},{"time":"8:00","count":622},{"time":"9:00","count":547},{"time":"10:00","count":480},{"time":"11:00","count":414},{"time":"12:00","count":326},{"time":"13:00","count":237},{"time":"14:00","count":354},{"time":"15:00","count":328},{"time":"16:00","count":215},{"time":"17:00","count":219},{"time":"18:00","count":256},{"time":"19:00","count":335},{"time":"20:00","count":274},{"time":"21:00","count":244},{"time":"22:00","count":197},{"time":"23:00","count":120}],"player":[{"time":"0:00","count":211},{"time":"1:00","count":84},{"time":"2:00","count":29},{"time":"3:00","count":25},{"time":"4:00","count":16},{"time":"5:00","count":24},{"time":"6:00","count":32},{"time":"7:00","count":56},{"time":"8:00","count":71},{"time":"9:00","count":66},{"time":"10:00","count":63},{"time":"11:00","count":69},{"time":"12:00","count":58},{"time":"13:00","count":62},{"time":"14:00","count":50},{"time":"15:00","count":99},{"time":"16:00","count":68},{"time":"17:00","count":61},{"time":"18:00","count":77},{"time":"19:00","count":157},{"time":"20:00","count":107},{"time":"21:00","count":101},{"time":"22:00","count":74},{"time":"23:00","count":55}],"money":[{"time":"0:00","count":"31554.00"},{"time":"1:00","count":"4117.00"},{"time":"2:00","count":"1839.00"},{"time":"3:00","count":"4513.00"},{"time":"4:00","count":"1008.00"},{"time":"5:00","count":"1981.00"},{"time":"6:00","count":"1270.00"},{"time":"7:00","count":"1906.00"},{"time":"8:00","count":"6683.00"},{"time":"9:00","count":"6119.00"},{"time":"10:00","count":"8974.00"},{"time":"11:00","count":"14147.00"},{"time":"12:00","count":"9775.00"},{"time":"13:00","count":"11908.00"},{"time":"14:00","count":"6781.00"},{"time":"15:00","count":"12626.00"},{"time":"16:00","count":"6742.00"},{"time":"17:00","count":"8303.00"},{"time":"18:00","count":"8804.00"},{"time":"19:00","count":"23476.00"},{"time":"20:00","count":"17464.00"},{"time":"21:00","count":"16899.00"},{"time":"22:00","count":"13143.00"},{"time":"23:00","count":"6586.00"}]} \ No newline at end of file +{"news":[{"time":"0:00","count":0},{"time":"1:00","count":0},{"time":"2:00","count":0},{"time":"3:00","count":0},{"time":"4:00","count":0},{"time":"5:00","count":0},{"time":"6:00","count":0},{"time":"7:00","count":0},{"time":"8:00","count":0},{"time":"9:00","count":1},{"time":"10:00","count":0},{"time":"11:00","count":0},{"time":"12:00","count":0},{"time":"13:00","count":0},{"time":"14:00","count":0},{"time":"15:00","count":0},{"time":"16:00","count":0},{"time":"17:00","count":0},{"time":"18:00","count":0},{"time":"19:00","count":1},{"time":"20:00","count":0},{"time":"21:00","count":0},{"time":"22:00","count":0},{"time":"23:00","count":0}],"sum":{"news":2,"active":13,"player":5,"money":1330.05},"active":[{"time":"0:00","count":0},{"time":"1:00","count":0},{"time":"2:00","count":0},{"time":"3:00","count":0},{"time":"4:00","count":0},{"time":"5:00","count":0},{"time":"6:00","count":0},{"time":"7:00","count":0},{"time":"8:00","count":0},{"time":"9:00","count":3},{"time":"10:00","count":2},{"time":"11:00","count":2},{"time":"12:00","count":0},{"time":"13:00","count":0},{"time":"14:00","count":1},{"time":"15:00","count":1},{"time":"16:00","count":0},{"time":"17:00","count":1},{"time":"18:00","count":0},{"time":"19:00","count":2},{"time":"20:00","count":0},{"time":"21:00","count":1},{"time":"22:00","count":0},{"time":"23:00","count":0}],"player":[{"time":"0:00","count":0},{"time":"1:00","count":0},{"time":"2:00","count":0},{"time":"3:00","count":0},{"time":"4:00","count":0},{"time":"5:00","count":0},{"time":"6:00","count":0},{"time":"7:00","count":0},{"time":"8:00","count":0},{"time":"9:00","count":0},{"time":"10:00","count":0},{"time":"11:00","count":1},{"time":"12:00","count":0},{"time":"13:00","count":0},{"time":"14:00","count":1},{"time":"15:00","count":1},{"time":"16:00","count":2},{"time":"17:00","count":0},{"time":"18:00","count":0},{"time":"19:00","count":0},{"time":"20:00","count":0},{"time":"21:00","count":0},{"time":"22:00","count":0},{"time":"23:00","count":0}],"money":[{"time":"0:00","count":0},{"time":"1:00","count":0},{"time":"2:00","count":0},{"time":"3:00","count":0},{"time":"4:00","count":0},{"time":"5:00","count":0},{"time":"6:00","count":0},{"time":"7:00","count":0},{"time":"8:00","count":0},{"time":"9:00","count":0},{"time":"10:00","count":0},{"time":"11:00","count":"962.00"},{"time":"12:00","count":0},{"time":"13:00","count":0},{"time":"14:00","count":"356.00"},{"time":"15:00","count":"0.03"},{"time":"16:00","count":"12.02"},{"time":"17:00","count":0},{"time":"18:00","count":0},{"time":"19:00","count":0},{"time":"20:00","count":0},{"time":"21:00","count":0},{"time":"22:00","count":0},{"time":"23:00","count":0}]} \ No newline at end of file diff --git a/Application/Admin/Model/PromoteGameRatioModel.class.php b/Application/Admin/Model/PromoteGameRatioModel.class.php index 715ec4169..b6715ba2d 100644 --- a/Application/Admin/Model/PromoteGameRatioModel.class.php +++ b/Application/Admin/Model/PromoteGameRatioModel.class.php @@ -2,7 +2,10 @@ namespace Admin\Model; -class PromoteGameRatioModel -{ +use Think\Model; +class PromoteGameRatioModel extends Model +{ + // 数据表前缀 + protected $tablePrefix = 'tab_'; } \ No newline at end of file diff --git a/Application/Admin/View/PromoteGameRatio/lists.html b/Application/Admin/View/PromoteGameRatio/lists.html new file mode 100644 index 000000000..b00ab7fc0 --- /dev/null +++ b/Application/Admin/View/PromoteGameRatio/lists.html @@ -0,0 +1,415 @@ + + + + + + + + + + + + + +
+ + +
+
+ +
+
+ +
+
+ +
+
+ 搜索 +
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 会长ID会长账号手机号码注册时间状态身份状态已申请游戏原分成比例当前分成比例开始时间备注分成比例审核申请人确认人操作
aOh! 暂时还没有内容!
{$record.promote_id}{$record.promote_account}{$record.promote_mobile_phone}{$record.promote_create_time}{$record.promote_status_text}{$record.promote_ver_status_text}{$record.game_name}{$record.game_ratio}{$record.ratio}{$record.valid_date}{$record.remark}{$record.status_text}{$record.applicant}{$record.reviewer} + 修改 +
+
+ +
+
+ 导出 + {$_page|default=''} +
+ + + +
+ + + + + + diff --git a/Application/Admin/View/Statistics/ltv.html b/Application/Admin/View/Statistics/ltv.html index 0022914fa..518d3000b 100644 --- a/Application/Admin/View/Statistics/ltv.html +++ b/Application/Admin/View/Statistics/ltv.html @@ -6,7 +6,7 @@
@@ -20,7 +20,26 @@  - 
- +
+ +
+
+ +
+
+ +
搜索 @@ -56,18 +75,18 @@ - {$vo.time} - {$vo.amount} - {$vo.active} - {$vo.ltv1} - {$vo.ltv2} - {$vo.ltv3} - {$vo.ltv4} - {$vo.ltv5} - {$vo.ltv6} - {$vo.ltv7} - {$vo.ltv14} - {$vo.ltv30} + {$vo.date} + {$vo.total_amt} + {$vo.user_count} + {$vo.ltv_1} + {$vo.ltv_2} + {$vo.ltv_3} + {$vo.ltv_4} + {$vo.ltv_5} + {$vo.ltv_6} + {$vo.ltv_7} + {$vo.ltv_14} + {$vo.ltv_30} @@ -172,10 +191,33 @@ $(function(){ autoclose:1,endDate:new Date(new Date().getTime()-24*60*60*1000), pickerPosition:'bottom-right' }); - - - + var game_server = "{:I('server_name')}"; + $("#game_type").change(function(){ + console.log({sdk_version:$("#game_type option:selected").val(), game_name:$("#game_name option:selected").val()}) + $.ajax({ + url:"{:U('Ajax/getGmeServer')}", + type:"post", + data:{sdk_version:$("#game_type option:selected").val(), game_name:$("#game_name option:selected").val()}, + dataType:'json', + success:function(data){ + console.log(data) + str = ""; + for (var i in data){ + str += "" + } + $("#server_name").empty(); + $("#server_name").append(str); + $("#server_name").select2(); + } + }) + }); + + $("#game_name").change(function(){ + $("#game_type").change(); + }); + + $("#game_name").change(); }) diff --git a/Application/Admin/View/Support/lists.html b/Application/Admin/View/Support/lists.html index 8c82c84d7..296f0c202 100644 --- a/Application/Admin/View/Support/lists.html +++ b/Application/Admin/View/Support/lists.html @@ -32,7 +32,7 @@
-

扶持发放

+

资源发放

说明:记录所有扶持发放的数据

@@ -74,11 +74,11 @@
- +
@@ -111,7 +111,7 @@ 区服 角色名 申请额度 - 扶持类型 + 资源类型 备注 申请时间 可用额度 @@ -134,7 +134,7 @@ {$data['server_name']} {$data['role_name']} {$data['apply_resource']} - 新增扶持后续扶持 + 新增资源后续资源 {$data['apply_remark']} {:date('Y-m-d H:i:s',$data['create_time'])} @@ -170,7 +170,7 @@
- 导出 + 导出 {$_page|default=''}
diff --git a/Application/Admin/View/TestResource/supportNumberList.html b/Application/Admin/View/TestResource/supportNumberList.html index f996a2501..c95054689 100644 --- a/Application/Admin/View/TestResource/supportNumberList.html +++ b/Application/Admin/View/TestResource/supportNumberList.html @@ -33,11 +33,11 @@