You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1343 lines
54 KiB
PHP
1343 lines
54 KiB
PHP
<?php
|
|
|
|
|
|
namespace Admin\Controller;
|
|
|
|
use OSS\Core\OssException;
|
|
|
|
|
|
class FinanceController extends ThinkController
|
|
{
|
|
|
|
function index($p = 1) {
|
|
//总流水查询
|
|
$page = intval($p);
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
$row=10;
|
|
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
|
|
|
|
// var_dump($row);die();
|
|
|
|
$map = [];
|
|
if(!empty(I('count_date'))){
|
|
$map['count_date']=I('count_date');
|
|
}
|
|
|
|
// if (!empty(I('game_id'))) {
|
|
// $map['game_id']=I('game_id');
|
|
// }
|
|
// if (!empty(I('partner_id'))) {
|
|
// $map['partner_id']=I('collaborate_id');
|
|
// }
|
|
|
|
// $data = M("spend_count","tab_")
|
|
// ->field("count_date,cash_count,balance_coin_count,inside_cash_count,all_cash_count")
|
|
// ->where($map)
|
|
// ->page($page,$row)
|
|
// ->group("count_date")
|
|
// ->select();
|
|
// if (empty(I('game_id'))) {
|
|
// $field = "count_date,sum(cash_count) as cash_count,sum(balance_coin_count) as balance_coin_count,
|
|
// sum(inside_cash_count) as inside_cash_count,sum(cash_count+balance_coin_count) as all_cash_count";
|
|
// $InsideField = "inside_cash_count";
|
|
// $map['inside_cash_count'] = ['neq',0];
|
|
// $insideData = D("spend_count")->getSpendCountData($map,"count_date,inside_cash_count as count","promote_id,count_date");
|
|
// unset($map['inside_cash_count']);
|
|
// } else {
|
|
// $field = "count_date,sum(cash_count) as cash_count,sum(balance_coin_count) as balance_coin_count,
|
|
// sum(bind_coin_count) as inside_cash_count,sum(cash_count+balance_coin_count) as all_cash_count";
|
|
// $InsideField = "bind_coin_count";
|
|
// $map['bind_coin_count'] = ['neq',0];
|
|
// $insideData = D("spend_count")->getSpendCountData($map,"count_date,bind_coin_count as count","promote_id,count_date,game_id");
|
|
// unset($map['bind_coin_count']);
|
|
// }
|
|
// //内充流水与绑定流水数据
|
|
// $insideDataSum = [];
|
|
// foreach ($insideData as $key => $value) {
|
|
// if (isset($insideDataSum[$value['count_date']])) {
|
|
// $insideDataSum[$value['count_date']] = $insideDataSum[$value['count_date']] + $value['count'];
|
|
// } else {
|
|
// $insideDataSum[$value['count_date']] = $value['count'];
|
|
// }
|
|
// }
|
|
// var_dump($insideDataSum);
|
|
// var_dump(array_sum($insideDataSum));
|
|
// echo D("spend_count")->_sql();
|
|
// var_dump($insideData);die();
|
|
|
|
// $group = "count_date";
|
|
// $order = "id DESC";
|
|
// $data = D("spend_count")->getSpendCountData($map,$field,$group,$order,$page,$row);
|
|
//
|
|
// foreach ($data as $key => $value) {
|
|
// $data[$key]['all_cash_count'] = $value['all_cash_count'] + $insideDataSum[$value['count_date']];
|
|
// $data[$key]['inside_cash_count'] = $insideDataSum[$value['count_date']];
|
|
// }
|
|
//
|
|
// $sumCash = D("spend_count")->sumSpendCountField($map,"cash_count");
|
|
// $sumBalance = D("spend_count")->sumSpendCountField($map,"balance_coin_count");
|
|
// $sumInside = array_sum($insideDataSum);
|
|
// $allField = "cash_count+balance_coin_count";
|
|
// $sumAll = D("spend_count")->sumSpendCountField($map,$allField)+array_sum($insideDataSum);
|
|
//
|
|
// $count = D("spend_count")->getSpendCountData($map,$field,$group,'');
|
|
|
|
|
|
$order = "id DESC";
|
|
$data = M('spend_month_count','tab_')
|
|
->field("cash_count,balance_coin_count,inside_cash_count,all_count,count_date,balance_coin_deposit,bind_coin_count")
|
|
->where($map)
|
|
->page($page,$row)
|
|
->order($order)
|
|
->select();
|
|
|
|
$count = M('spend_month_count','tab_')
|
|
->field("cash_count,balance_coin_count,inside_cash_count,all_count,count_date")
|
|
->where($map)
|
|
->order($order)
|
|
->select();
|
|
|
|
$sumData = M('spend_month_count','tab_')
|
|
->field("sum(cash_count) as cash_count,sum(balance_coin_count) as balance_coin_count,sum(inside_cash_count) as inside_cash_count,sum(all_count) as all_count,count_date,sum(balance_coin_deposit) as balance_coin_deposit,sum(bind_coin_count) as bind_coin_count")
|
|
->where($map)
|
|
->order($order)
|
|
->find();
|
|
|
|
|
|
|
|
// echo D("spend_count")->_sql();die();
|
|
$count = count($count);
|
|
$page = set_pagination($count,$row);
|
|
// var_dump($page);die();
|
|
if($page) {$this->assign('_page', $page);}
|
|
|
|
$this->meta_title = '月结统计';
|
|
|
|
// $this->assign('sumCash',$sumCash);
|
|
// $this->assign('sumBalance',$sumBalance);
|
|
// $this->assign('sumInside',$sumInside);
|
|
// $this->assign('sumAll',$sumAll);
|
|
|
|
$this->assign('sumData',$sumData);
|
|
|
|
$this->assign('data',$data);
|
|
|
|
$this->display();
|
|
}
|
|
|
|
function gameFinance($p = 1) {
|
|
$page = intval($p);
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
$row=10;
|
|
if(isset($_REQUEST['row'])) {
|
|
$row = $_REQUEST['row'];
|
|
}else{
|
|
$row = 10;
|
|
}
|
|
|
|
$map = [];
|
|
if(!empty(I('count_date'))){
|
|
$map['count_date']=I('count_date');
|
|
}
|
|
|
|
if (!empty(I('root_name'))) {
|
|
$map['promote_account'] = array('like','%'.I("root_name").'%');
|
|
}
|
|
$game_ids = array_column(getGameByName(I("game_name"), I("sdk_type")), 'id');
|
|
if ($game_ids) {
|
|
$map['game_id'] = ['in', $game_ids];
|
|
}
|
|
|
|
if(!empty(I('root_id'))||I('root_id')=='0') {
|
|
$root_id = I('root_id');
|
|
if ($root_id == '0') {
|
|
$map['_string'] = "promote_id = {$root_id}";
|
|
} else if($root_id){
|
|
$map['_string'] = "promote_id = {$root_id} or chain like '%/{$root_id}/%'";
|
|
// $map['_string'] = "promote_id = {$root_id} or parent_id = {$root_id} or root_id = {$root_id}";
|
|
}
|
|
}
|
|
|
|
if (!empty(I('partner_id'))) {
|
|
$map['partner_id']=I('partner_id');
|
|
}
|
|
|
|
|
|
|
|
if (I('sign') == 2&&empty(I('root_id'))) {
|
|
|
|
$map['_string'] = "parent_id >0 or root_id>0";
|
|
}
|
|
|
|
if (I('sign') == 3&&empty(I('root_id'))) {
|
|
$map['_string'] = "parent_id >0 and root_id>0";
|
|
}
|
|
// var_dump($map);die();
|
|
|
|
if(!empty(I('parent_id'))) {
|
|
$parent_id = I('parent_id');
|
|
$map['_string'] = "promote_id = {$parent_id} or chain like '%/{$parent_id}/%'";
|
|
}
|
|
|
|
if (!empty(I('promote_id'))) {
|
|
$promote_id = I('promote_id');
|
|
$map['_string'] = "promote_id = {$promote_id}";
|
|
}
|
|
|
|
$map['inside_cash_count'] = ['neq',0];
|
|
$insideData = D("spend_count")->getSpendCountData($map,"game_id,inside_cash_count as count","promote_id,count_date");
|
|
unset($map['inside_cash_count']);
|
|
//内充流水与绑定流水数据
|
|
$insideDataSum = [];
|
|
foreach ($insideData as $key => $value) {
|
|
if (isset($insideDataSum[$value['game_id']])) {
|
|
$insideDataSum[$value['game_id']] = $insideDataSum[$value['game_id']] + $value['count'];
|
|
} else {
|
|
$insideDataSum[$value['game_id']] = $value['count'];
|
|
}
|
|
}
|
|
// var_dump($insideDataSum);die();
|
|
|
|
$field = "count_date,sum(cash_count) as cash_count,sum(balance_coin_count) as balance_coin_count,
|
|
sum(inside_cash_count) as inside_cash_count,sum(cash_count+balance_coin_count) as all_cash_count,game_name,game_id,partner_name";
|
|
|
|
$group = "game_id";
|
|
$order = "id DESC";
|
|
$data = D("spend_count")->getSpendCountData($map,$field,$group,$order,$page,$row);
|
|
|
|
foreach ($data as $key => $value) {
|
|
$data[$key]['inside_cash_count'] = number_format($insideDataSum[$value['game_id']],2,'.','');
|
|
$data[$key]['all_cash_count'] = number_format($insideDataSum[$value['game_id']]+$data[$key]['all_cash_count'],2,'.','');
|
|
}
|
|
|
|
$sumCash = D("spend_count")->sumSpendCountField($map,"cash_count");
|
|
$sumBalance = D("spend_count")->sumSpendCountField($map,"balance_coin_count");
|
|
$sumInside = number_format(array_sum($insideDataSum),2,'.','');
|
|
$sumAll = D("spend_count")->sumSpendCountField($map,"cash_count+balance_coin_count") + array_sum($insideDataSum);
|
|
|
|
$count = D("spend_count")->getSpendCountData($map,$field,$group,$order);
|
|
|
|
$count = count($count);
|
|
$page = set_pagination($count,$row);
|
|
if($page) {$this->assign('_page', $page);}
|
|
|
|
$this->meta_title = '每月情况查看详情';
|
|
|
|
$this->assign('from',I('from'));
|
|
$this->assign('sumCash',$sumCash);
|
|
$this->assign('sumBalance',$sumBalance);
|
|
$this->assign('sumInside',$sumInside);
|
|
$this->assign('sumAll',$sumAll);
|
|
|
|
$this->assign('data',$data);
|
|
|
|
$this->display();
|
|
|
|
}
|
|
|
|
function gameFinanceDetail($p = 1) {
|
|
|
|
set_time_limit(0);
|
|
if (!empty(I("promote_id"))) {
|
|
$promote_id[] = I("promote_id");
|
|
}
|
|
|
|
if (!empty(I("root_id"))) {
|
|
$root_id = I("root_id");
|
|
$promote_id = $this->getPromoteList($root_id);
|
|
array_push($promote_id,$root_id);
|
|
}
|
|
|
|
if ($_REQUEST['root_id']=='0') {
|
|
$map['promote_id'] = $_REQUEST['root_id'];
|
|
}
|
|
|
|
if (!empty(I("parent_id"))) {
|
|
$parent_id = I("parent_id");
|
|
$promote_id = $this->getPromoteList($parent_id);
|
|
array_push($promote_id,$parent_id);
|
|
}
|
|
|
|
$promote_id = implode(',',$promote_id);
|
|
if ($promote_id) {
|
|
$map['promote_id'] = ['in',$promote_id];
|
|
}
|
|
|
|
if (!empty(I('partner_id'))&&empty(I("game_id"))) {
|
|
$wherePartner = I('partner_id');
|
|
$gameId = M("game","tab_")->field("id")->where("partner_id={$wherePartner}")->select();
|
|
$gameId = implode(',',array_column($gameId,'id'));
|
|
$map['game_id'] = ['in',$gameId];
|
|
}
|
|
// var_dump($map);die();
|
|
$page = intval($p);
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
$row=10;
|
|
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
|
|
|
|
if (!empty(I("count_date"))) {
|
|
$month = I("count_date");
|
|
$tarry = explode('-',$month);
|
|
$startTime=mktime(0,0,0,$tarry[1],1,$tarry[0]);
|
|
$endTime =mktime(0,0,0,$tarry[1]-0+1,1,$tarry[0])-1;
|
|
$map['pay_time'] = array('between',array($startTime,$endTime));
|
|
}
|
|
|
|
$map['pay_status'] = 1;
|
|
if (!empty(I("game_id"))) {
|
|
$map['game_id'] = I("game_id");
|
|
}
|
|
if (!empty(I('user_account'))) {
|
|
$map['user_account'] = array('like','%'.I("user_account").'%');
|
|
}
|
|
if (!empty(I('user_nickname'))) {
|
|
$map['game_player_name'] = array('like',I("user_nickname").'%');
|
|
}
|
|
// var_dump($map);die();
|
|
$field = "pay_order_number,FROM_UNIXTIME(pay_time) as pay_time,user_account,user_nickname,game_name,promote_account,spend_ip,server_name,game_player_name,pay_amount,cost,pay_way";
|
|
$group = "";
|
|
$order = "pay_time DESC";
|
|
$data = D('spend')->getSpendData($map,$field,$group,$order,$page,$row);
|
|
// echo D("spend")->_sql();die();
|
|
|
|
foreach($data as $key => $value) {
|
|
$data[$key]['pay_way'] = getPayType($value['pay_way']);
|
|
}
|
|
|
|
$sum = D('spend')->sumSpend($map,'pay_amount');
|
|
|
|
$count = D("spend")->getSpendData($map,$field,$group,$order);
|
|
|
|
$count = count($count);
|
|
$page = set_pagination($count,$row);
|
|
if($page) {$this->assign('_page', $page);}
|
|
$this->meta_title = '游戏充值流水';
|
|
|
|
$this->assign('data',$data);
|
|
$this->assign('sum_amount',$sum);
|
|
|
|
$this->display();
|
|
|
|
}
|
|
|
|
//按月份获取会长统计
|
|
public function getRootUser($p = 1)
|
|
{
|
|
|
|
$page = intval($p);
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
$row=10;
|
|
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
|
|
|
|
//获取所有数据
|
|
if (!empty(I("count_date"))) {
|
|
$map['count_date'] = I("count_date");
|
|
}
|
|
|
|
if (!empty(I("root_name"))) {
|
|
$map['promote_account']=['like','%'.I("root_name").'%'];
|
|
}
|
|
|
|
// $map['chain'] = "/";
|
|
$map['level'] = ['elt',1];
|
|
$subQueryAll = M('spend_user_count','tab_')
|
|
->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count')
|
|
->where($map)
|
|
->group('promote_id')
|
|
->page($page,$row)
|
|
->select();
|
|
|
|
$sumData = M('spend_user_count','tab_')
|
|
->field('sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count')
|
|
->where($map)
|
|
->find();
|
|
|
|
$count = M('spend_user_count','tab_')
|
|
->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count')
|
|
->where($map)
|
|
->group('promote_id')
|
|
->select();
|
|
|
|
$count = count($count);
|
|
$page = set_pagination($count,$row);
|
|
if($page) {$this->assign('_page', $page);}
|
|
$this->meta_title = '会长流水';
|
|
|
|
$this->assign('sumData',$sumData);
|
|
$this->assign('data',$subQueryAll);
|
|
$this->display();
|
|
}
|
|
|
|
public function getMiniterUser($p = 1) {
|
|
$page = intval($p);
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
$row=10;
|
|
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
|
|
|
|
if (!empty(I("count_date")) ) {
|
|
$month = I("count_date");
|
|
$map['count_date'] =$month;
|
|
|
|
}
|
|
|
|
$parentData = [];
|
|
|
|
if (!empty(I("root_id"))) {
|
|
$root_id = I("root_id");
|
|
if ($page == 1) {
|
|
$parentData = $this->getParentSpendData($root_id,$month,2);
|
|
}
|
|
$map['chain'] =['like','%/'.$root_id.'/%'];
|
|
$map['level'] = 2;
|
|
} else if(!empty(I("sign"))){
|
|
$map['parent_id'] = ['neq',0];
|
|
$map['root_id'] = ['eq',0];
|
|
|
|
} else {
|
|
if (I("root_id") == 0) {
|
|
$root_id = I("root_id");
|
|
$map['promote_id'] = $root_id;
|
|
}
|
|
}
|
|
|
|
if (!empty(I("root_name"))) {
|
|
$rootname = I("root_name");
|
|
$map['promote_account'] =['like','%'.$rootname.'%'];
|
|
}
|
|
|
|
|
|
$subQueryAll = M('spend_user_count','tab_')
|
|
->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count')
|
|
->where($map)
|
|
->group('promote_id')
|
|
->page($page,$row)
|
|
->select();
|
|
if (empty(I("root_name"))) {
|
|
$subQueryAll = array_merge($parentData,$subQueryAll);
|
|
}
|
|
|
|
$sumData = M('spend_user_count','tab_')
|
|
->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count')
|
|
->where($map)
|
|
->find();
|
|
if (empty(I("root_name"))) {
|
|
$sumData['cash_count'] = number_format($sumData['cash_count'] + $parentData[0]['cash_count'], 2, '.', '');
|
|
$sumData['balance_coin_count'] = number_format($sumData['balance_coin_count'] + $parentData[0]['balance_coin_count'], 2, '.', '');
|
|
$sumData['inside_cash_count'] = number_format($sumData['inside_cash_count'] + $parentData[0]['inside_cash_count'], 2, '.', '');
|
|
$sumData['all_count'] = number_format($sumData['all_count'] + $parentData[0]['all_count'], 2, '.', '');
|
|
$sumData['bind_coin_count'] = number_format($sumData['bind_coin_count'] + $parentData[0]['bind_coin_count'], 2, '.', '');
|
|
}
|
|
|
|
$count = M('spend_user_count','tab_')
|
|
->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count')
|
|
->where($map)
|
|
->group('promote_id')
|
|
->select();
|
|
|
|
$count = count($count);
|
|
$page = set_pagination($count,$row);
|
|
if($page) {$this->assign('_page', $page);}
|
|
$this->meta_title = '组长流水';
|
|
|
|
$this->assign('sumData',$sumData);
|
|
$this->assign('data',$subQueryAll);
|
|
$this->display();
|
|
}
|
|
|
|
public function getParentUser($p = 1)
|
|
{
|
|
|
|
$page = intval($p);
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
$row=10;
|
|
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
|
|
|
|
if (!empty(I("count_date")) ) {
|
|
$month = I("count_date");
|
|
$map['count_date'] =$month;
|
|
|
|
}
|
|
|
|
$parentData = [];
|
|
|
|
if (!empty(I("parent_id"))) {
|
|
$root_id = I("parent_id");
|
|
if ($page == 1) {
|
|
$parentData = $this->getParentSpendData($root_id,$month,3);
|
|
}
|
|
$map['chain'] =['like','%/'.$root_id.'/%'];
|
|
$map['level'] = 3;
|
|
|
|
} else if(!empty(I("sign"))){
|
|
$map['parent_id'] = ['neq',0];
|
|
$map['root_id'] = ['eq',0];
|
|
|
|
} else {
|
|
if (I("parent_id") == 0) {
|
|
$root_id = I("parent_id");
|
|
$map['promote_id'] = $root_id;
|
|
}
|
|
}
|
|
|
|
if (!empty(I("root_name"))) {
|
|
$rootname = I("root_name");
|
|
$map['promote_account'] =['like','%'.$rootname.'%'];
|
|
}
|
|
|
|
|
|
$subQueryAll = M('spend_user_count','tab_')
|
|
->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count')
|
|
->where($map)
|
|
->group('promote_id')
|
|
->page($page,$row)
|
|
->select();
|
|
if (empty(I("root_name"))) {
|
|
$subQueryAll = array_merge($parentData,$subQueryAll);
|
|
}
|
|
|
|
$sumData = M('spend_user_count','tab_')
|
|
->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count')
|
|
->where($map)
|
|
->find();
|
|
if (empty(I("root_name"))) {
|
|
$sumData['cash_count'] = number_format($sumData['cash_count'] + $parentData[0]['cash_count'], 2, '.', '');
|
|
$sumData['balance_coin_count'] = number_format($sumData['balance_coin_count'] + $parentData[0]['balance_coin_count'], 2, '.', '');
|
|
$sumData['inside_cash_count'] = number_format($sumData['inside_cash_count'] + $parentData[0]['inside_cash_count'], 2, '.', '');
|
|
$sumData['all_count'] = number_format($sumData['all_count'] + $parentData[0]['all_count'], 2, '.', '');
|
|
$sumData['bind_coin_count'] = number_format($sumData['bind_coin_count'] + $parentData[0]['bind_coin_count'], 2, '.', '');
|
|
}
|
|
|
|
$count = M('spend_user_count','tab_')
|
|
->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count')
|
|
->where($map)
|
|
->group('promote_id')
|
|
->select();
|
|
|
|
$count = count($count);
|
|
$page = set_pagination($count,$row);
|
|
if($page) {$this->assign('_page', $page);}
|
|
$this->meta_title = '组长流水';
|
|
|
|
$this->assign('sumData',$sumData);
|
|
$this->assign('data',$subQueryAll);
|
|
$this->display();
|
|
|
|
}
|
|
|
|
public function getPromoteUser($p = 1)
|
|
{
|
|
$page = intval($p);
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
$row=10;
|
|
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
|
|
|
|
if (!empty(I("count_date"))) {
|
|
$month = I("count_date");
|
|
$map['count_date'] =$month;
|
|
}
|
|
|
|
$parentData = [];
|
|
if (!empty(I("parent_id"))) {
|
|
$parent_id = I("parent_id");
|
|
|
|
if ($page == 1) {
|
|
$parentData = $this->getParentSpendData($parent_id,$month,4);
|
|
}
|
|
|
|
$map['chain'] =['like','%/'.$parent_id.'/%'];
|
|
$map['level'] = 4;
|
|
}
|
|
|
|
if (!empty(I('sign'))) {
|
|
$map['parent_id'] = ['neq',0];
|
|
if (!empty(I('root_id'))) {
|
|
$map['root_id'] = I('root_id');
|
|
} else {
|
|
$map['root_id'] = ['neq',0];
|
|
}
|
|
}
|
|
// var_dump($map);die();
|
|
|
|
// var_dump($map);die();
|
|
$subQueryAll = M('spend_user_count','tab_')
|
|
->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count')
|
|
->where($map)
|
|
->group('promote_id')
|
|
->page($page,$row)
|
|
->select();
|
|
|
|
$subQueryAll = array_merge($parentData,$subQueryAll);
|
|
|
|
$sumData = M('spend_user_count','tab_')
|
|
->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count')
|
|
->where($map)
|
|
->find();
|
|
$sumData['cash_count'] = number_format($sumData['cash_count']+$parentData[0]['cash_count'],2,'.','');
|
|
$sumData['balance_coin_count'] = number_format($sumData['balance_coin_count']+$parentData[0]['balance_coin_count'],2,'.','');
|
|
$sumData['inside_cash_count'] = number_format($sumData['inside_cash_count']+$parentData[0]['inside_cash_count'],2,'.','');
|
|
$sumData['all_count'] = number_format($sumData['all_count']+$parentData[0]['all_count'],2,'.','');
|
|
$sumData['bind_coin_count'] = number_format($sumData['bind_coin_count']+$parentData[0]['bind_coin_count'],2,'.','');
|
|
|
|
$count = M('spend_user_count','tab_')
|
|
->field('promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count, sum(all_count) as all_count')
|
|
->where($map)
|
|
->group('promote_id')
|
|
->select();
|
|
|
|
$count = count($count);
|
|
$page = set_pagination($count,$row);
|
|
if($page) {$this->assign('_page', $page);}
|
|
|
|
$this->meta_title = '推广员流水';
|
|
|
|
$sum = array_sum($sumData);
|
|
|
|
$this->assign('sumData',$sumData);
|
|
$this->assign('data',$subQueryAll);
|
|
$this->display();
|
|
# code...
|
|
}
|
|
|
|
function getPromoteList($root_id = 0) {
|
|
|
|
$data = M('promote','tab_')
|
|
->field("id")
|
|
->where("chain like '%/{$root_id}/%'")
|
|
->select();
|
|
|
|
$handleData = [];
|
|
foreach ($data as $key => $value) {
|
|
array_push($handleData,$data[$key]['id']);
|
|
}
|
|
|
|
return $handleData;
|
|
|
|
}
|
|
|
|
function getGameList() {
|
|
|
|
if (I('partner_id')) {
|
|
$map['partner_id'] = I('partner_id');
|
|
}
|
|
if (I('sdk_type')) {
|
|
$map['sdk_version'] = I('sdk_type');
|
|
}
|
|
$data = M('game','tab_')->field("relation_game_name as game_name")->where($map)->group("relation_game_name")->select();
|
|
|
|
$this->ajaxReturn($data,'json');
|
|
}
|
|
|
|
function getParentSpendData($root_id,$date,$level=2) {
|
|
|
|
$data = [];
|
|
if (!$root_id) {
|
|
$this->error('数据错误');
|
|
} else {
|
|
$map = [];
|
|
if ($root_id) {
|
|
$map['promote_id'] = $root_id;
|
|
}
|
|
if ($date) {
|
|
$map['count_date'] = $date;
|
|
}
|
|
|
|
$data = M('spend_user_count','tab_')
|
|
->field('promote_id,promote_account, sum(cash_count) as cash_count,sum(balance_coin_count) as balance_coin_count,sum(inside_cash_count) as inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count')
|
|
->where($map)->select();
|
|
// dump($data);
|
|
$map1['chain'] = ['like','%/'.$data[0]['promote_id'].'/%'];
|
|
$map1['count_date'] = $date;
|
|
$map1['level'] = $level;
|
|
$sunData = M('spend_user_count','tab_')
|
|
->field('promote_id,promote_account, sum(cash_count) as cash_count,sum(balance_coin_count) as balance_coin_count,sum(inside_cash_count) as inside_cash_count, sum(all_count) as all_count, sum(bind_coin_count) as bind_coin_count')
|
|
->where($map1)->find();
|
|
// echo M('spend_user_count','tab_')->_sql();
|
|
// dump($sunData);
|
|
//die();
|
|
$data[0]['cash_count'] = number_format($data[0]['cash_count']-$sunData['cash_count'],2,'.','');
|
|
$data[0]['balance_coin_count'] = number_format($data[0]['balance_coin_count']-$sunData['balance_coin_count'],2,'.','');
|
|
$data[0]['inside_cash_count'] = number_format($data[0]['inside_cash_count']-$sunData['inside_cash_count'],2,'.','');
|
|
$data[0]['all_count'] = number_format($data[0]['all_count']-$sunData['all_count'],2,'.','');
|
|
$data[0]['bind_coin_count'] = number_format($data[0]['bind_coin_count']-$sunData['bind_coin_count'],2,'.','');
|
|
|
|
// $map['inside_cash_count'] = ['neq',0];
|
|
// $insideData = D("spend_count")->getSpendCountData($map,"promote_id,inside_cash_count as count","promote_id,count_date");
|
|
// unset($map['bind_coin_count']);
|
|
// //内充流水与绑定流水数据
|
|
// $insideDataSum = 0;
|
|
// foreach ($insideData as $key => $value) {
|
|
// if (isset($insideDataSum)) {
|
|
// $insideDataSum = $insideDataSum + $value['count'];
|
|
// } else {
|
|
// $insideDataSum = $value['count'];
|
|
// }
|
|
// }
|
|
|
|
}
|
|
|
|
|
|
// if (!$data[0]['cash_count']&&!$data[0]['balance_coin_count']&&!$data[0]['inside_cash_count']&&!$data[0]['all_count']) {
|
|
// $promoteData = M('promote','tab_')->field('account as promote_account')->where("id={$root_id}")->find();
|
|
//
|
|
// $data[0]['promote_id'] = $root_id;
|
|
// $data[0]['promote_account'] = $promoteData['promote_account'];
|
|
// $data[0]['cash_count'] = number_format(0.00,2,'.','');
|
|
// $data[0]['balance_coin_count'] = number_format(0.00,2,'.','');
|
|
// $data[0]['inside_cash_count'] = number_format(0.00,2,'.','');
|
|
// $data[0]['all_count'] = number_format(0.00,2,'.','');
|
|
// }
|
|
// $data[0]['inside_cash_count'] = number_format($insideDataSum,2,'.','');
|
|
// $data[0]['all_count'] = number_format($insideDataSum+$data[0]['all_count'],2,'.','');
|
|
// var_dump($data);die();
|
|
return $data;
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
*游戏统计
|
|
*/
|
|
public function gameStatistics($p = 1) {
|
|
if(!array_key_exists("timestart",$_REQUEST)){
|
|
$this->redirect(ACTION_NAME, array('timestart' => date('Y-m-d',strtotime('-30 day')),"timeend"=>date('Y-m-d')));
|
|
}
|
|
$page = intval($p);
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
$row = $_REQUEST['row'] ?? 10;
|
|
|
|
$map = [];
|
|
|
|
$game_ids = array_column(getGameByName(I("game_name"), I("sdk_type")), 'id');
|
|
if ($game_ids) {
|
|
$map['s.game_id'] = ['in', $game_ids];
|
|
}
|
|
|
|
if (!empty(I('partner_id'))) {
|
|
$map['g.partner_id'] = I('partner_id');
|
|
}
|
|
|
|
if (!empty(I('timestart'))) {
|
|
$timestart = strtotime(I('timestart'));
|
|
$map['_string'] = "s.pay_time >= {$timestart}";
|
|
}
|
|
|
|
if (!empty(I('timeend'))) {
|
|
$timeend = strtotime(I('timeend') . ' 23:59:59');
|
|
if (!empty($map['_string'])) {
|
|
$map['_string'] .= " and ";
|
|
}
|
|
$map['_string'] .= " s.pay_time < {$timeend}";
|
|
}
|
|
|
|
if (!empty(I('game_type_id'))) {
|
|
$map['g.game_type_id'] = I('game_type_id');
|
|
}
|
|
$startTime = time();
|
|
//游戏统计列表
|
|
$data = D("spend")->gameStatistics($map, $row, $p);
|
|
$endTime = time();
|
|
|
|
foreach ($data as $key => $value) {
|
|
$data[$key]['all_cash_count'] = $value['cash_count'] + $value['balance_coin_count'] + $value['inside_cash_count'];
|
|
}
|
|
|
|
$count = D("spend")->gameStatisticsCount($map);//列表总数
|
|
// $allData = D("spend")->gameStatistics($map);//列表总数
|
|
// $count = count($allData);
|
|
$page = set_pagination($count, $row);
|
|
if ($page) {
|
|
$this->assign('_page', $page);//分页
|
|
}
|
|
|
|
//统计合计
|
|
$totalData = D("spend")->totalGameStatistics($map);
|
|
|
|
$sumCash = $totalData['cash_count'];
|
|
$sumBalance = $totalData['balance_coin_count'];
|
|
$sumInside = $totalData['inside_cash_count'];
|
|
$sumAll = $sumCash + $sumBalance + $sumInside;
|
|
|
|
$game_types = M("game_type", 'tab_')->field('id, type_name')->select();
|
|
$this->assign('game_types', $game_types);
|
|
$this->assign('sumCash', $sumCash);
|
|
$this->assign('sumBalance', $sumBalance);
|
|
$this->assign('sumInside', $sumInside);
|
|
$this->assign('sumAll', $sumAll);
|
|
$this->assign('data',$data);
|
|
|
|
$this->display();
|
|
}
|
|
|
|
public function gameStatisticsDetail($p = 1) {
|
|
|
|
|
|
if (isset($_REQUEST['pay_way'])) {
|
|
$map['pay_way'] = $_REQUEST['pay_way'];
|
|
}
|
|
|
|
if (!empty($_REQUEST['pay_order_number'])) {
|
|
$map['pay_order_number'] = $_REQUEST['pay_order_number'];
|
|
}
|
|
|
|
if (!empty(I('partner_id'))&&empty(I("game_id"))) {
|
|
$wherePartner = I('partner_id');
|
|
$gameId = M("game","tab_")->field("id")->where("partner_id={$wherePartner}")->select();
|
|
$gameId = implode(',',array_column($gameId,'id'));
|
|
$map['game_id'] = ['in',$gameId];
|
|
}
|
|
|
|
if (!empty(I('timestart'))) {
|
|
$timestart = strtotime(I('timestart'));
|
|
$map['_string'] = "pay_time >= {$timestart}";
|
|
}
|
|
|
|
if (!empty(I('timeend'))) {
|
|
$timeend = strtotime(I('timeend') . ' 23:59:59');
|
|
if (!empty($map['_string'])) {
|
|
$map['_string'] .= " and ";
|
|
}
|
|
$map['_string'] .= " pay_time < {$timeend}";
|
|
}
|
|
|
|
if (!empty(I("promote_id"))) {
|
|
$promote_id[] = I("promote_id");
|
|
}
|
|
|
|
if (!empty(I("root_id"))) {
|
|
$root_id = I("root_id");
|
|
$promote_id = $this->getPromoteList($root_id);
|
|
array_push($promote_id, $root_id);
|
|
}
|
|
|
|
if ($_REQUEST['root_id']=='0') {
|
|
$map['promote_id'] = $_REQUEST['root_id'];
|
|
}
|
|
|
|
$promote_id = implode(',',$promote_id);
|
|
if ($promote_id) {
|
|
$map['promote_id'] = ['in',$promote_id];
|
|
}
|
|
|
|
$page = intval($p);
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
if (isset($_REQUEST['row'])) {
|
|
$row = $_REQUEST['row'];
|
|
} else {
|
|
$row = 10;
|
|
}
|
|
$map['pay_game_status'] = 1;
|
|
if (!empty(I("game_id"))) {
|
|
$map['game_id'] = I("game_id");
|
|
}
|
|
if (!empty(I('user_account'))) {
|
|
$map['user_account'] = array('like','%'.I("user_account").'%');
|
|
}
|
|
if (!empty(I('user_nickname'))) {
|
|
$map['game_player_name'] = array('like',I("user_nickname").'%');
|
|
}
|
|
// var_dump($map);die();
|
|
$field = "pay_order_number,FROM_UNIXTIME(pay_time) as pay_time,user_account,user_nickname,game_name,promote_account,spend_ip,server_name,game_player_name,pay_amount,cost,pay_way";
|
|
$group = "";
|
|
$order = "pay_time DESC";
|
|
|
|
$data = D('spend')->getSpendData($map,$field,$group,$order,$page,$row);
|
|
|
|
foreach($data as $key => $value) {
|
|
$data[$key]['pay_way'] = getPayType($value['pay_way']);
|
|
}
|
|
|
|
$totalData = D('spend')->totalGameStatistics($map, false);
|
|
|
|
$sumCash = $totalData['cash_count'] ?? 0;
|
|
$sumBalance = $totalData['balance_coin_count'] ?? 0;
|
|
$sumInside = $totalData['inside_cash_count'] ?? 0;
|
|
$sumAll = $sumCash + $sumBalance + $sumInside;
|
|
|
|
$this->assign('sumCash', $sumCash);
|
|
$this->assign('sumBalance', $sumBalance);
|
|
$this->assign('sumInside', $sumInside);
|
|
$this->assign('sumAll', null_to_0($sumAll));
|
|
|
|
$count = D("spend")->getSpendData($map,'count(*) as count',$group,$order);
|
|
|
|
$count = $count[0]['count'];
|
|
$page = set_pagination($count,$row);
|
|
if($page) {$this->assign('_page', $page);}
|
|
$this->meta_title = '游戏订单查看';
|
|
|
|
$this->assign('data',$data);
|
|
$this->display();
|
|
}
|
|
|
|
public function coinDetail($p = 1) {
|
|
|
|
set_time_limit(0);
|
|
|
|
if (isset($_REQUEST['pay_way'])) {
|
|
$map['pay_way'] = $_REQUEST['pay_way'];
|
|
$this->assign('pay_way', $map['pay_way']);
|
|
}
|
|
|
|
if (!empty($_REQUEST['pay_order_number'])) {
|
|
$map['pay_order_number'] = $_REQUEST['pay_order_number'];
|
|
}
|
|
|
|
if (!empty(I('partner_id'))&&empty(I("game_id"))) {
|
|
$wherePartner = I('partner_id');
|
|
$gameId = M("game","tab_")->field("id")->where("partner_id={$wherePartner}")->select();
|
|
$gameId = implode(',',array_column($gameId,'id'));
|
|
$map['tab_spend.game_id'] = ['in',$gameId];
|
|
}
|
|
|
|
if (!empty(I('timestart'))) {
|
|
$timestart = strtotime(I('timestart'));
|
|
$map['_string'] = "pay_time > {$timestart}";
|
|
}
|
|
|
|
if (!empty(I('timeend'))) {
|
|
$timeend = strtotime(I('timeend'));
|
|
$map['_string'] .= " and pay_time < {$timeend}";
|
|
}
|
|
|
|
if (!empty(I("promote_id"))) {
|
|
$promote_id[] = I("promote_id");
|
|
}
|
|
|
|
if (!empty(I("root_id"))) {
|
|
$root_id = I("root_id");
|
|
$promote_id = $this->getPromoteList($root_id);
|
|
array_push($promote_id, $root_id);
|
|
}
|
|
|
|
if ($_REQUEST['root_id']=='0') {
|
|
$map['tab_spend.promote_id'] = $_REQUEST['root_id'];
|
|
}
|
|
|
|
$promote_id = implode(',',$promote_id);
|
|
if ($promote_id) {
|
|
$map['tab_spend.promote_id'] = ['in',$promote_id];
|
|
}
|
|
|
|
$page = intval($p);
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
if (isset($_REQUEST['row'])) {
|
|
$row = $_REQUEST['row'];
|
|
} else {
|
|
$row = 10;
|
|
}
|
|
$map['pay_game_status'] = 1;
|
|
if (!empty(I("game_id"))) {
|
|
$map['tab_spend.game_id'] = I("game_id");
|
|
}
|
|
if (!empty(I('user_account'))) {
|
|
$map['tab_spend.user_account'] = array('like','%'.I("user_account").'%');
|
|
}
|
|
if (!empty(I('user_nickname'))) {
|
|
$map['tab_spend.game_player_name'] = array('like',I("user_nickname").'%');
|
|
}
|
|
// var_dump($map);die();
|
|
$field = "pay_order_number,FROM_UNIXTIME(pay_time) as pay_time,tab_spend.user_account,
|
|
tab_spend.user_nickname,tab_spend.game_name,tab_spend.promote_account,spend_ip,tab_spend.server_name,
|
|
game_player_name,pay_amount,cost,pay_way";
|
|
$group = "";
|
|
$order = "pay_time DESC";
|
|
$join = false;
|
|
if ($map['pay_way'] ==-1) {//绑定币
|
|
$field2 = $field . ',bind_balance';
|
|
$join = 'left join tab_user_play as p on p.user_id = tab_spend.user_id and tab_spend.game_id=p.game_id';
|
|
} elseif ($map['pay_way'] ==0) {//平台币
|
|
$field2 = $field . ',balance';
|
|
$join = 'left join tab_user as u on u.id = tab_spend.user_id';
|
|
}
|
|
|
|
$data = D('spend')->getSpendData($map, $field2, $group, $order, $page, $row, $join);
|
|
|
|
foreach($data as $key => $value) {
|
|
$data[$key]['pay_way'] = getPayType($value['pay_way']);
|
|
}
|
|
|
|
$count = D("spend")->getSpendData($map,$field,$group,$order);
|
|
$count = count($count);
|
|
$page = set_pagination($count,$row);
|
|
|
|
|
|
$total_cost = D('spend')->sumSpend($map, 'cost');//订单金额合计
|
|
$total_pay_amount = D('spend')->sumSpend($map, 'pay_amount');//实付金额合计
|
|
|
|
$this->assign('total_cost', $total_cost);
|
|
$this->assign('total_pay_amount', $total_pay_amount);
|
|
|
|
if($page) {$this->assign('_page', $page);}
|
|
$this->meta_title = '游戏订单查看';
|
|
|
|
$this->assign('data',$data);
|
|
$this->display();
|
|
}
|
|
|
|
/**
|
|
*获取合作公司
|
|
*/
|
|
public function getPartnetList()
|
|
{
|
|
$game_ids = array_column(getGameByName(I("game_name"), I("sdk_type")), 'id');
|
|
if ($game_ids) {
|
|
$map['g.id'] = ['in', $game_ids];
|
|
}
|
|
if (I('sdk_type')) {
|
|
$map['sdk_version'] = I('sdk_type');
|
|
}
|
|
$data = M('partner','tab_')->alias('p')
|
|
->join('left join tab_game as g on g.partner_id = p.id')
|
|
->field("partner, p.id")
|
|
->where($map)
|
|
->group('p.id')
|
|
->select();
|
|
$this->ajaxReturn($data,'json');
|
|
}
|
|
|
|
|
|
/**
|
|
*充值方式统计
|
|
*/
|
|
public function payTypeStatistics()
|
|
{
|
|
$time = array('egt', 0);;
|
|
|
|
if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
|
|
$time = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]);
|
|
} elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) {
|
|
$time = array('between', [strtotime($_REQUEST['timestart']), time()]);
|
|
} elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
|
|
$time = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
|
|
}
|
|
// setPowerPromoteIds($map);
|
|
|
|
//获取现金充值
|
|
$cashStatistics = M('spend', 'tab_')
|
|
->field('pay_way,"" as pay_type,SUM(pay_amount) AS pay_amount')
|
|
->where(['pay_status' => 1,'pay_way'=>['egt',1],'pay_time'=>$time])
|
|
->group('pay_way')
|
|
->select();
|
|
foreach ($cashStatistics as $key => $value) {
|
|
$cashStatistics[$key]['pay_type'] = getPayType($value['pay_way']);
|
|
$cashStatistics[$key]['balance'] = '0.00';
|
|
}
|
|
$cashStatistics = array_column($cashStatistics, null, 'pay_way');
|
|
// dd($cashStatistics);
|
|
//获取平台币充值
|
|
$deposit = M('deposit', 'tab_')->where([
|
|
'pay_source' => 2,
|
|
'tab_deposit.pay_status' => 1,
|
|
'tab_deposit.pay_way' => ['gt', 0],
|
|
'tab_deposit.create_time'=>$time,
|
|
])->field('tab_deposit.pay_way,"" as pay_type, SUM(tab_deposit.pay_amount) AS balance')
|
|
->group('tab_deposit.pay_way')
|
|
->select();
|
|
foreach ($deposit as $key => $value) {
|
|
if (!array_key_exists($value['pay_way'], $cashStatistics)) {
|
|
$cashStatistics[$value['pay_way']] = $value;
|
|
$cashStatistics[$value['pay_way']]['pay_type'] = getPayType($value['pay_way']);//充值方式文字影视
|
|
$cashStatistics[$value['pay_way']]['pay_amount'] = '0.00';
|
|
}
|
|
$cashStatistics[$value['pay_way']]['balance'] = $value['balance'];//别表的平台币充值
|
|
}
|
|
|
|
//超级签数据
|
|
$superSignData = M('game_supersign','tab_')
|
|
->field("pay_way,'' as pay_type,sum(pay_price) as pay_amount")
|
|
->where([
|
|
'pay_status' => 1,
|
|
'pay_way' => ['gt', 0],
|
|
'pay_time'=>$time
|
|
])
|
|
->group('pay_way')
|
|
->select();
|
|
foreach ($superSignData as $key => $value) {
|
|
if (!array_key_exists($value['pay_way'], $cashStatistics)) {
|
|
$cashStatistics[$value['pay_way']] = $value;
|
|
$cashStatistics[$value['pay_way']]['pay_type'] = getPayType($value['pay_way']);//充值方式文字影视
|
|
$cashStatistics[$value['pay_way']]['pay_amount'] = '0.00';
|
|
$cashStatistics[$value['pay_way']]['balance'] = 0;//别表的平台币充值
|
|
}
|
|
$cashStatistics[$value['pay_way']]['pay_amount'] += $value['pay_amount'];//别表的平台币充值
|
|
}
|
|
//绑定币数据
|
|
$bindRechargeData = M('bind_recharge','tab_')
|
|
->field('pay_way,"" as pay_type,sum(real_amount) as pay_amount')
|
|
->where([
|
|
'pay_status' => 1,
|
|
'pay_way' => ['gt', 0],
|
|
'create_time'=>$time
|
|
])
|
|
->group('pay_way')
|
|
->select();
|
|
|
|
foreach ($bindRechargeData as $key => $value) {
|
|
|
|
if ($value['pay_way'] == NULL&&$value['pay_amount'] == NULL) {
|
|
continue;
|
|
}
|
|
|
|
if (!array_key_exists($value['pay_way'], $cashStatistics)) {
|
|
$cashStatistics[$value['pay_way']] = $value;
|
|
$cashStatistics[$value['pay_way']]['pay_type'] = getPayType($value['pay_way']);//充值方式文字影视
|
|
$cashStatistics[$value['pay_way']]['pay_amount'] = '0.00';
|
|
$cashStatistics[$value['pay_way']]['balance'] = 0;//别表的平台币充值
|
|
}
|
|
$cashStatistics[$value['pay_way']]['balance'] += $value['pay_amount'];//别表的平台币充值
|
|
}
|
|
|
|
//推广后台
|
|
$spreadData = M("coin_pay_order","tab_")
|
|
->field("pay_way,'' as pay_type,sum(pay_amount) as pay_amount")
|
|
->where([
|
|
'order_status'=>['egt',1],
|
|
'pay_way'=>['egt',1],'pay_time'=>$time
|
|
])
|
|
->group('pay_way')
|
|
->select();
|
|
|
|
foreach ($spreadData as $key => $value) {
|
|
|
|
if ($value['pay_way'] == NULL&&$value['pay_amount'] == NULL) {
|
|
continue;
|
|
}
|
|
|
|
if (!array_key_exists($value['pay_way'], $cashStatistics)) {
|
|
$cashStatistics[$value['pay_way']] = $value;
|
|
$cashStatistics[$value['pay_way']]['pay_type'] = getPayType($value['pay_way']);//充值方式文字影视
|
|
$cashStatistics[$value['pay_way']]['pay_amount'] = '0.00';
|
|
$cashStatistics[$value['pay_way']]['balance'] = 0;//别表的平台币充值
|
|
}
|
|
$cashStatistics[$value['pay_way']]['balance'] += $value['pay_amount'];//别表的平台币充值
|
|
}
|
|
//官网充值
|
|
$offcialmap['pay_status'] = 1;
|
|
$offcialmap['pay_way'] = array('egt',1);
|
|
$offcialmap['pay_source'] = 0;
|
|
|
|
$offcialData = M('deposit','tab_')
|
|
->field("pay_way,'' as pay_type,sum(pay_amount) as pay_amount")
|
|
->where([
|
|
'pay_status'=>1,
|
|
'pay_way'=>['egt',1],
|
|
'pay_source'=>0,
|
|
'create_time'=>$time
|
|
])
|
|
->group('pay_way')
|
|
->select();
|
|
|
|
foreach ($offcialData as $key => $value) {
|
|
|
|
if ($value['pay_way'] == NULL&&$value['pay_amount'] == NULL) {
|
|
continue;
|
|
}
|
|
|
|
if (!array_key_exists($value['pay_way'], $cashStatistics)) {
|
|
$cashStatistics[$value['pay_way']] = $value;
|
|
$cashStatistics[$value['pay_way']]['pay_type'] = getPayType($value['pay_way']);//充值方式文字影视
|
|
$cashStatistics[$value['pay_way']]['pay_amount'] = '0.00';
|
|
$cashStatistics[$value['pay_way']]['balance'] = 0;//别表的平台币充值
|
|
}
|
|
$cashStatistics[$value['pay_way']]['balance'] += $value['pay_amount'];//别表的平台币充值
|
|
}
|
|
|
|
foreach ($cashStatistics as $key => $value) {
|
|
$cashStatistics[$key]['total'] = $value['pay_amount'] + $value['balance'];//添加列表合计
|
|
}
|
|
|
|
|
|
|
|
// var_dump($cashStatistics);die();
|
|
//底部总计
|
|
$all_pay_amount = array_sum(array_column($cashStatistics, 'pay_amount'));//现金充值总计
|
|
$all_balance = array_sum(array_column($cashStatistics, 'balance'));//平台币充值总计
|
|
$all_total = array_sum(array_column($cashStatistics, 'total'));//合计总计
|
|
|
|
$this->meta_title = "平台统计";
|
|
if($_REQUEST['export']) {
|
|
|
|
foreach($cashStatistics as $key =>$value) {
|
|
unset($cashStatistics[$key]['pay_way']);
|
|
}
|
|
|
|
db2csv(array_merge($cashStatistics,
|
|
[0=>['pay_type'=>'总计','pay_amount'=>$all_pay_amount,'balance'=>$all_balance,'total'=>$all_total]]),'平台统计'
|
|
,['支付方式','现金充值','平台币充值','合计']);
|
|
}
|
|
|
|
$this->assign('all_pay_amount', $all_pay_amount);
|
|
$this->assign('all_balance', $all_balance);
|
|
$this->assign('all_total', $all_total);
|
|
$this->assign('data', $cashStatistics);
|
|
$this->display();
|
|
}
|
|
|
|
public function valueDetail($p = 1) {
|
|
$page = intval($p);
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
$row=10;
|
|
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
|
|
$map = [];
|
|
$mapBanlance = [];
|
|
$mapSpend['pay_status'] = 1;
|
|
$mapSpend['pay_way'] = 0;
|
|
$mapDeposit['pay_status'] = 1;
|
|
$mapPromoteCoin['type'] = 2;
|
|
$mapPromoteCoin['sub_type'] = 4;
|
|
$nowTime = date('Y-m-d');
|
|
$initBegTime = date('Y-m-d', strtotime('-6 day', strtotime($nowTime)));
|
|
$initEndTime = date('Y-m-d', time());
|
|
if(!empty(I('user_account'))){
|
|
$userInfo = M('user', 'tab_')->where(['account'=>I('user_account')])->getField('id');
|
|
$map['user_account']=I('user_account');
|
|
$mapBanlance['user_account'] = I('user_account');
|
|
$mapSpend['user_account'] = I('user_account');
|
|
$mapDeposit['user_account'] = I('user_account');
|
|
$mapPromoteCoin['target_id'] = $userInfo;
|
|
$mapValue['user_id'] = $userInfo;
|
|
}
|
|
$mapValue['pay_type'] = ['gt', 0];
|
|
if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
|
|
$map['create_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]);
|
|
$mapPromoteCoin['create_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]);
|
|
$mapDeposit['create_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]);
|
|
$mapSpend['pay_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]);
|
|
$mapValue['create_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]);
|
|
} elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) {
|
|
$map['create_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]);
|
|
$mapPromoteCoin['create_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]);
|
|
$mapDeposit['create_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]);
|
|
$mapSpend['pay_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]);
|
|
$mapValue['create_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]);
|
|
} elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
|
|
$map['create_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
|
|
$mapPromoteCoin['create_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
|
|
$mapDeposit['create_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
|
|
$mapSpend['pay_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
|
|
$mapValue['create_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
|
|
}elseif (empty($_REQUEST['timestart']) && empty($_REQUEST['timeend']) && empty(I('user_account'))) {
|
|
$map['create_time'] = array('between', [strtotime($initBegTime), strtotime($initEndTime) + 86399]);
|
|
$mapPromoteCoin['create_time'] = array('between', [strtotime($initBegTime), strtotime($initEndTime) + 86399]);
|
|
$mapDeposit['create_time'] = array('between', [strtotime($initBegTime), strtotime($initEndTime) + 86399]);
|
|
$mapSpend['pay_time'] = array('between', [strtotime($initBegTime), strtotime($initEndTime) + 86399]);
|
|
$mapValue['create_time'] = array('between', [strtotime($initBegTime), strtotime($initEndTime) + 86399]);
|
|
}
|
|
|
|
$datas = M('user_play','tab_')
|
|
->group('user_id')
|
|
->field("id,user_id,user_account,bind_balance")
|
|
->where($map)
|
|
->page($page,$row)
|
|
->select();
|
|
$count = M('user_play','tab_')
|
|
->field("id,user_id,user_account,bind_balance")
|
|
->where($map)
|
|
->count('DISTINCT user_id');
|
|
$total = M('deposit', 'tab_')->where($mapDeposit)->sum('pay_amount');
|
|
$totalSpend = M('spend', 'tab_')->where($mapSpend)->sum('pay_amount');
|
|
|
|
// $total_bind_balance = M('user_play', 'tab_')->where($mapBanlance)->sum('bind_balance');
|
|
$totalValueInit = M('value_detail_log', 'tab_')->where(['pay_type'=>0])->sum('after_value');
|
|
$totalValueDetail = M('value_detail_log', 'tab_')->where($mapValue)->group('user_id')->order('desc create_time')->sum('after_value');
|
|
$total_bind_balance = $totalValueInit + $totalValueDetail;
|
|
$totalPromoteCoin = M('promote_coin_record', 'tab_')->where($mapPromoteCoin)->sum('coin');
|
|
$total = empty($total) ? '0.00' : $total;
|
|
$totalSpend = empty($totalSpend) ? '0.00' : $totalSpend;
|
|
$total_bind_balance = empty($total_bind_balance) ? '0.00' : $total_bind_balance;
|
|
$totalPromoteCoin = empty($totalPromoteCoin) ? '0.00' : $totalPromoteCoin;
|
|
foreach ($datas as $key => $data) {
|
|
$user_id = $data['user_id'];
|
|
$mapSpend['user_id'] = $user_id;
|
|
$mapDeposit['user_id'] = $user_id;
|
|
$mapPromoteCoin['target_id'] = $user_id;
|
|
$bind_balance = M('user_play', 'tab_')->where(['user_id' => $user_id])->sum('bind_balance');
|
|
$spend = M('spend', 'tab_')->where($mapSpend)->sum('pay_amount');
|
|
if (empty($spend)) {
|
|
$spend = '0.00';
|
|
}
|
|
$deposit = M('deposit', 'tab_')->where($mapDeposit)->sum('pay_amount');
|
|
if (empty($deposit)) {
|
|
$deposit = '0.00';
|
|
}
|
|
$promoteCoin = M('promote_coin_record', 'tab_')->where($mapPromoteCoin)->sum('coin');
|
|
if (empty($promoteCoin)) {
|
|
$promoteCoin = '0.00';
|
|
}
|
|
$datas[$key]['bind_balance'] = $bind_balance;
|
|
$datas[$key]['spend_amount'] = $spend;
|
|
$datas[$key]['deposit_amount'] = $deposit;
|
|
$datas[$key]['coin_amount'] = $promoteCoin;
|
|
}
|
|
$page = set_pagination($count,$row);
|
|
// var_dump($page);die();
|
|
if($page) {$this->assign('_page', $page);}
|
|
if(empty($_REQUEST['timestart']) && empty($_REQUEST['timeend']) && empty(I('user_account'))) {
|
|
$this->assign('starttime', $initBegTime);
|
|
$this->assign('endtime', $initEndTime);
|
|
}else {
|
|
$this->assign('starttime', $_REQUEST['timestart']);
|
|
$this->assign('endtime', $_REQUEST['endtime']);
|
|
}
|
|
$this->assign('totalPromoteCoin', $totalPromoteCoin);
|
|
$this->assign('total_bind_balance', $total_bind_balance);
|
|
$this->assign('totalSpend', $totalSpend);
|
|
$this->assign('total', $total);
|
|
$this->assign('data', $datas);
|
|
$this->display();
|
|
}
|
|
|
|
public function definiteDetaile() {
|
|
$page = intval($p);
|
|
$page = $page ? $page : 1; //默认显示第一页数据
|
|
$row=10;
|
|
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
|
|
$user_id = I('user_id');
|
|
$orderNumber = I('order_number');
|
|
$map = [];
|
|
if($orderNumber) {
|
|
$map['order_number'] = $orderNumber;
|
|
}
|
|
$map['user_id'] = $user_id;
|
|
if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
|
|
$map['create_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]);
|
|
} elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) {
|
|
$map['create_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]);
|
|
} elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
|
|
$map['create_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
|
|
}
|
|
$total = 0;
|
|
$valueDetailDatas = M('value_detail_log', 'tab_')->field('order_number, user_id, before_value, value, after_value, create_time, type, remark, pay_type')
|
|
->where($map)
|
|
->page($page,$row)
|
|
->select();
|
|
$counts = M('value_detail_log', 'tab_')->field('id')
|
|
->where($map)
|
|
->count();
|
|
foreach ($valueDetailDatas as $key => $valueDetailData) {
|
|
$vlaueDetailDatas[$key]['create_time'] = date('Y-m-d H:i:s', $valueDetailData['create_time']);
|
|
$vlaueDetailDatas[$key]['value'] = $valueDetailData['value'];
|
|
$vlaueDetailDatas[$key]['after_value'] = $valueDetailData['after_value'];
|
|
$vlaueDetailDatas[$key]['order_number'] = $valueDetailData['order_number'];
|
|
$vlaueDetailDatas[$key]['pay_type'] = $valueDetailData['pay_type'];
|
|
if($valueDetailData['pay_type'] == 1) {
|
|
$vlaueDetailDatas[$key]['type'] = "消费";
|
|
$total -= $valueDetailData['value'];
|
|
}
|
|
if($valueDetailData['pay_type'] == 2) {
|
|
$vlaueDetailDatas[$key]['type'] = "充值";
|
|
$total += $valueDetailData['value'];
|
|
}
|
|
if ($valueDetailData['pay_type'] == 3) {
|
|
$vlaueDetailDatas[$key]['type'] = "平台发放";
|
|
$total += $valueDetailData['value'];
|
|
}
|
|
}
|
|
$page = set_pagination($counts,$row);
|
|
if($page) {$this->assign('_page', $page);}
|
|
$this->assign('total', $total);
|
|
$this->assign('listdata', $vlaueDetailDatas);
|
|
$this->display();
|
|
}
|
|
|
|
} |