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 @@
+ 说明:此功能可设置所有公会对应的游戏分成比例。{$meta_title}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 会长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}
+
+ 修改
+
+
+
+
说明:计算用户生命周期价值的相关数据(充值金额统计用户在平台内/游戏内进行现金充值的数据汇总,游戏内通过平台币/绑币进行消费的不计算在内 )
+说明:计算用户生命周期价值的相关数据(充值金额统计用户在平台内/游戏内进行现金充值的数据汇总,游戏内通过平台币/绑币进行消费的计算在内 )
说明:记录所有扶持发放的数据
@@ -74,11 +74,11 @@说明:此功能是扶持号管理<的功能
+说明:此功能是资源管理的功能
说明:此功是查看并管理混服申请的功能
+ 本应用尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息。但本应用将以高度的勤勉、审慎义务对待这些信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下,本应用不会将这些信息对外披露或向第三方提供。本应用会不时更新本隐私权政策。 您在同意本应用服务使用协议之时,即视为您已经同意本隐私权政策全部内容。本隐私权政策属于本应用服务使用协议不可分割的一部分。 +
+