diff --git a/Application/Admin/Controller/FinancePromoteController.class.php b/Application/Admin/Controller/FinancePromoteController.class.php
index 3a746b30d..fccc2fd1f 100644
--- a/Application/Admin/Controller/FinancePromoteController.class.php
+++ b/Application/Admin/Controller/FinancePromoteController.class.php
@@ -321,13 +321,199 @@ class FinancePromoteController extends AdminController
}
# code...
}
- private function data_total($data)
+ /**
+ *游戏统计
+ */
+ public function gameStatistics($p = 1) {
+ $page = intval($p);
+ $page = $page ? $page : 1; //默认显示第一页数据
+ $row = $_REQUEST['row'] ?? 10;
+
+ $map = [];
+ if (isset($_REQUEST['game_name']) || isset($_REQUEST['game_type'])) {
+ $map["s.game_id"] = array("in",implode(',', array_column(getGameByName($_REQUEST['game_name'], $_REQUEST['game_type']), 'id')) );
+ }
+ if (!empty(I('partner_id'))) {
+ $map['g.partner_id'] = I('partner_id');
+ }
+
+ if (isset($_REQUEST['time_start']) && isset($_REQUEST['time_end'])) {
+ $map['s.pay_time'] = ['between', [strtotime($_REQUEST['time_start']), strtotime($_REQUEST['time_end']) + 86399]];
+ } elseif (isset($_REQUEST['time_start'])) {
+ $map['s.pay_time'] = ['GT', strtotime($_REQUEST['time_start'])];
+ } elseif (isset($_REQUEST['time_end'])) {
+ $map['s.pay_time'] = ['LT', strtotime($_REQUEST['time_end']) + 86399];
+ }
+ //判断是否有推广员
+ if ($_REQUEST['promote_id'] != '') {
+ if ($_REQUEST['promote_id'] == 0 || $_REQUEST['promote_type'] == 2) {
+ $map['s.promote_id'] = $_REQUEST['promote_id'];
+ } else {
+ $promoter_ids = D("Promote")->where("chain like '%/{$_REQUEST['promote_id']}/%' or id={$_REQUEST['promote_id']}")->field('id')->select();
+ if ($promoter_ids) {
+ $map['s.promote_id'] = ['in', implode(',', array_column($promoter_ids, 'id'))];
+ }
+ }
+ }
+
+ //游戏统计列表
+ $data =self::gameStatisticsData($map, $row, $p);
+ foreach ($data as $key => $value) {
+ $data[$key]['all_cash_count'] = $value['cash_count'] + $value['balance_coin_count'] + $value['inside_cash_count'];
+ }
+
+ $allData = self::gameStatisticsData($map);//列表总数
+ $count = count($allData);
+ $page = set_pagination($count, $row);
+ if ($page) {
+ $this->assign('_page', $page);//分页
+ }
+
+ //统计合计
+ $totalData = self::totalGameStatisticsData($map);
+
+ $sumCash = $totalData['cash_count'];
+ $sumBalance = $totalData['balance_coin_count'];
+ $sumInside = $totalData['inside_cash_count'];
+ $sumAll = $sumCash + $sumBalance + $sumInside;
+
+ $this->assign('sumCash', $sumCash);
+ $this->assign('sumBalance', $sumBalance);
+ $this->assign('sumInside', $sumInside);
+ $this->assign('sumAll', $sumAll);
+ $this->assign('data',$data);
+
+ $this->display();
+ }
+ //游戏订单详情
+ public function gameStatisticsDetail($p = 1) {
+ set_time_limit(0);
+
+ if (isset($_REQUEST['pay_way'])) {
+ $map['pay_way'] = $_REQUEST['pay_way'];
+ }
+
+ if (!empty($_REQUEST['pay_order_number'])) {
+ $map['pay_order_number'] = $_REQUEST['pay_order_number'];
+ }
+
+ if (!empty(I('partner_id'))&&empty(I("game_id"))) {
+ $wherePartner = I('partner_id');
+ $gameId = M("game","tab_")->field("id")->where("partner_id={$wherePartner}")->select();
+ $gameId = implode(',',array_column($gameId,'id'));
+ $map['game_id'] = ['in',$gameId];
+ }
+
+ if (!empty(I('timestart'))) {
+ $timestart = strtotime(I('timestart'));
+ $map['_string'] = "pay_time > {$timestart}";
+ }
+
+ if (!empty(I('timeend'))) {
+ $timeend = strtotime(I('timeend'));
+ $map['_string'] .= " and pay_time < {$timeend}";
+ }
+
+ if (!empty(I("promote_id"))) {
+ $promote_id[] = I("promote_id");
+ }
+
+ if (!empty(I("root_id"))) {
+ $root_id = I("root_id");
+ $promote_id = $this->getPromoteList($root_id);
+ array_push($promote_id, $root_id);
+ }
+
+ if ($_REQUEST['root_id']=='0') {
+ $map['promote_id'] = $_REQUEST['root_id'];
+ }
+
+ $promote_id = implode(',',$promote_id);
+ if ($promote_id) {
+ $map['promote_id'] = ['in',$promote_id];
+ }
+
+ $page = intval($p);
+ $page = $page ? $page : 1; //默认显示第一页数据
+ if (isset($_REQUEST['row'])) {
+ $row = $_REQUEST['row'];
+ } else {
+ $row = 10;
+ }
+ $map['pay_status'] = 1;
+ if (!empty(I("game_id"))) {
+ $map['game_id'] = I("game_id");
+ }
+ if (!empty(I('user_account'))) {
+ $map['user_account'] = array('like','%'.I("user_account").'%');
+ }
+ if (!empty(I('user_nickname'))) {
+ $map['game_player_name'] = array('like',I("user_nickname").'%');
+ }
+// var_dump($map);die();
+ $field = "pay_order_number,FROM_UNIXTIME(pay_time) as pay_time,user_account,user_nickname,game_name,promote_account,spend_ip,server_name,game_player_name,pay_amount,cost,pay_way";
+ $group = "";
+ $order = "pay_time DESC";
+ $data = D('spend')->getSpendData($map,$field,$group,$order,$page,$row);
+ foreach($data as $key => $value) {
+ $data[$key]['pay_way'] = getPayType($value['pay_way']);
+ }
+
+ $totalData = D('spend')->totalGameStatistics($map, false);
+ $sumCash = $totalData['cash_count'] ?? 0;
+ $sumBalance = $totalData['balance_coin_count'] ?? 0;
+ $sumInside = $totalData['inside_cash_count'] ?? 0;
+ $sumAll = $sumCash + $sumBalance + $sumInside;
+
+ $this->assign('sumCash', $sumCash);
+ $this->assign('sumBalance', $sumBalance);
+ $this->assign('sumInside', $sumInside);
+ $this->assign('sumAll', null_to_0($sumAll));
+
+ $count = D("spend")->getSpendData($map,$field,$group,$order);
+
+ $count = count($count);
+ $page = set_pagination($count,$row);
+ if($page) {$this->assign('_page', $page);}
+ $this->meta_title = '游戏订单查看';
+
+ $this->assign('data',$data);
+ $from = I('from', '');
+ $this->display($from);
+ }
+
+ private function gameStatisticsData($map, $row = 0, $page = 1)
{
- $total['sum_count'] = array_sum(array_column($data, '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;
+ $map['s.pay_status']=1;
+ $query = M("spend","tab_")->alias("s")
+ ->field("s.game_id,s.game_name,p.partner as partner_name,
+ SUM(CASE WHEN pay_way > 0 THEN pay_amount ELSE 0 END) as cash_count,
+ SUM(CASE WHEN pay_way = 0 THEN pay_amount ELSE 0 END) as balance_coin_count,
+ SUM(CASE WHEN pay_way = -1 THEN pay_amount ELSE 0 END) as inside_cash_count")
+ ->join('LEFT JOIN tab_game as g ON s.game_id=g.id')
+ ->join('LEFT JOIN tab_partner as p ON g.partner_id=p.id')
+ ->where($map)
+ ->group('s.game_id');
+ if ($row) {
+ $query = $query->page($page,$row);
+ }
+ $data = $query->select();
+ return $data;
+ }
+ private function totalGameStatisticsData($map, $join = true)
+ {
+ $query = M("spend","tab_")->alias("s")
+ ->field("SUM(CASE WHEN pay_way > 0 THEN pay_amount ELSE 0 END) as cash_count,
+ SUM(CASE WHEN pay_way = 0 THEN pay_amount ELSE 0 END) as balance_coin_count,
+ SUM(CASE WHEN pay_way = -1 THEN pay_amount ELSE 0 END) as inside_cash_count");
+ if ($join) {
+ $query = $query->join('LEFT JOIN tab_game as g ON s.game_id=g.id')
+ ->join('LEFT JOIN tab_partner as p ON g.partner_id=p.id');
+ }
+ $data = $query->where(['s.pay_status' => 1, 'pay_game_status' => 1])
+ ->where($map)
+ ->find();
+ return $data;
}
}
\ No newline at end of file
diff --git a/Application/Admin/View/FinancePromote/gameStatistics.html b/Application/Admin/View/FinancePromote/gameStatistics.html
new file mode 100644
index 000000000..96df32883
--- /dev/null
+++ b/Application/Admin/View/FinancePromote/gameStatistics.html
@@ -0,0 +1,448 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [{:get_promote_name(I('promote_id'))}]
+
+ 游戏统计
+
+
+
+
+ 统计推广员及其下属推广员的游戏相关统计
+
+ 仅统计推广员自己 不含其下属推广员的游戏相关统计
+
+
+ 游戏相关统计
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 合作公司 |
+
+ 游戏 |
+
+ 游戏现金金额第三方支付(微信,支付宝,快捷)。 |
+
+ 平台币直充支出平台币购买游戏道具所产生的金额 |
+
+ 内充支出玩家用绑币购买游戏道具所产生的金额 |
+
+ 游戏内充值合计游戏现金金额+平台币直充支出+平台币内充支出 |
+
+ 操作 |
+
+
+
+
+
+
+
+ aOh! 暂时还没有内容! |
+
+
+
+
+
+ {$data.partner_name}无 |
+ {$data.game_name}无 |
+ {$data.cash_count}0 |
+
+ {$data.balance_coin_count}0 |
+ {$data.inside_cash_count}0 |
+ {$data.all_cash_count}0 |
+
+ 查看
+ |
+
+
+
+ 总计 |
+ {$sumCash}0 |
+ {$sumBalance}0 |
+ {$sumInside}0 |
+ {$sumAll}0 |
+
+ 查看
+ |
+
+
+
+
+
+
+
+
+
+ {$_page|default=''}
+
+
+
+
+
+
+
+ if(C('COLOR_STYLE')=='blue_color') echo '';
+
+
+
+
+
+
diff --git a/Application/Admin/View/FinancePromote/gameStatisticsDetail.html b/Application/Admin/View/FinancePromote/gameStatisticsDetail.html
new file mode 100644
index 000000000..e214d9453
--- /dev/null
+++ b/Application/Admin/View/FinancePromote/gameStatisticsDetail.html
@@ -0,0 +1,327 @@
+
+
+
+
+
+
+
+
+
+
+
+
{$_REQUEST['game_name']}游戏订单查看
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 支付订单号 |
+
+ 充值时间 |
+
+ 玩家账号 |
+
+ 游戏名称 |
+
+ 所属推广员 |
+
+ 充值ip |
+
+ 游戏区服 |
+
+ 角色名称 |
+
+ 订单金额 |
+
+ 实付金额 |
+
+ 充值方式 |
+
+
+
+
+
+
+
+ aOh! 暂时还没有内容! |
+
+
+
+
+
+ {$data.pay_order_number} |
+ {$data.pay_time} |
+ {$data.user_account} |
+ {$data.game_name} |
+ {$data.promote_account} |
+ {$data.spend_ip} |
+ {$data.server_name} |
+ {$data.game_player_name} |
+ {$data.cost} |
+ {$data.pay_amount} |
+ {$data.pay_way} |
+
+
+
+ 总计 |
+ 累计充值:{$sumAll}0
+ (现金金额:{$sumCash} 平台币:{$sumBalance} 绑币:{$sumInside})
+ |
+
+
+
+
+
+
+
+
+
+ {$_page|default=''}
+
+
+
+
+
+
+
+ if(C('COLOR_STYLE')=='blue_color') echo '';
+
+
+
+
+
+
diff --git a/Application/Admin/View/FinancePromote/index.html b/Application/Admin/View/FinancePromote/index.html
index 9855286e4..fe9982182 100644
--- a/Application/Admin/View/FinancePromote/index.html
+++ b/Application/Admin/View/FinancePromote/index.html
@@ -212,8 +212,7 @@
- 游戏查看
+ 游戏查看
渠道查看
|
@@ -227,7 +226,7 @@
{$all_count['inside_cash_count']} |
{$all_count['all_count']} |
- 游戏查看
+ 游戏查看
渠道查看
|
diff --git a/Application/Admin/View/FinancePromote/promoteUser.html b/Application/Admin/View/FinancePromote/promoteUser.html
index 18b848aaf..b97665383 100644
--- a/Application/Admin/View/FinancePromote/promoteUser.html
+++ b/Application/Admin/View/FinancePromote/promoteUser.html
@@ -212,11 +212,7 @@
- 游戏查看
- 渠道查看
+ 游戏查看
|
@@ -229,9 +225,8 @@
{$all_count['inside_cash_count']} |
{$all_count['all_count']} |
- 游戏查看
- 渠道查看
- |
+
+