<?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;}
$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);
$count = count($count);
$page = set_pagination($count,$row);
if($page) {$this->assign('_page', $page);}
$this->assign('sumCash',$sumCash);
$this->assign('sumBalance',$sumBalance);
$this->assign('sumInside',$sumInside);
$this->assign('sumAll',$sumAll);
$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('game_id'))) {
// $map['game_id']=I('game_id');
// }
// if (!empty(I('collaborate_id'))) {
// $map['collaborate_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("game_id")
// ->select();
$map['bind_coin_count'] = ['neq',0];
$insideData = D("spend_count")->getSpendCountData($map,"game_id,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['game_id']])) {
$insideDataSum[$value['game_id']] = $insideDataSum[$value['game_id']] + $value['count'];
} else {
$insideDataSum[$value['game_id']] = $value['count'];
}
}
// var_dump($insideData);
// var_dump($insideDataSum);die();
$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+bind_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'] = $insideDataSum[$value['game_id']];
}
$sumCash = D("spend_count")->sumSpendCountField($map,"cash_count");
$sumBalance = D("spend_count")->sumSpendCountField($map,"balance_coin_count");
$sumInside = D("spend_count")->sumSpendCountField($map,"bind_coin_count");
$sumAll = D("spend_count")->sumSpendCountField($map,"cash_count+balance_coin_count+bind_coin_count");
$count = D("spend_count")->getSpendCountData($map,$field,$group,$order);
$count = count($count);
$page = set_pagination($count,$row);
if($page) {$this->assign('_page', $page);}
$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) {
$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");
} else {
$this->error('月份不能为空');
}
$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['user_nickname'] = array('like',I("user_nickname").'%');
}
$field = "pay_order_number,FROM_UNIXTIME(pay_time) as pay_time,user_account,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']);
}
$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->assign('data',$data);
$this->assign('sum_amount',$sum);
$this->display();
}
//按月份获取会长统计
public function getRootUser()
{
//获取所有数据
if (!empty(I("count_date"))) {
$month = I("count_date");
} else {
$this->error('月份不能为空');
}
$from = "
(
SELECT root_id,root_name,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,inside_cash_count FROM tab_spend_count WHERE root_id > 0 and count_date='{$month}' group by root_id
UNION
SELECT promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,inside_cash_count FROM tab_spend_count WHERE parent_id = 0 and count_date='{$month}' group by promote_id
UNION
SELECT parent_id,parent_name,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,inside_cash_count FROM tab_spend_count WHERE parent_id > 0 and root_id = 0 and count_date='{$month}' group by parent_id
)
";
$subQueryAll = M()->table($from." a")
->field('root_id,root_name,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count')
// ->limit(1)
->group("a.root_id")
->select();
dump($subQueryAll);
}
//按月份获取组长统计
public function getParentUser()
{
if (!empty(I("count_date")) & & !empty(I("root_id"))) {
$month = I("count_date");
$root_id = I("root_id");
} else {
$this->error('参数错误');
}
//获取数据
$from = "
(
SELECT parent_id,parent_name,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,inside_cash_count FROM tab_spend_count WHERE root_id = '{$root_id}' and count_date='{$month}' group by parent_id
UNION
SELECT promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,inside_cash_count FROM tab_spend_count WHERE parent_id = '{$root_id}' and count_date='{$month}' group by promote_id
)
";
$subQueryAll = M()->table($from." a")
->field('parent_id,parent_name,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,sum(inside_cash_count) inside_cash_count')
// ->limit(1)
->group("a.parent_id")
->select();
dump($subQueryAll);
# code...
}
public function getPromoteUser()
{
if (!empty(I("count_date")) & & !empty(I("parent_id"))) {
$month = I("count_date");
$parent_id = I("parent_id");
} else {
$this->error('参数错误');
}
//获取数据
$from = "
(
SELECT promote_id,promote_account,sum(cash_count) cash_count,sum(balance_coin_count) balance_coin_count,inside_cash_count FROM tab_spend_count WHERE parent_id = '{$parent_id}' and count_date='{$month}' group by promote_id
)
";
$subQueryAll = M()->table($from." a")
->field('promote_id,promote_account,cash_count,balance_coin_count,inside_cash_count')
// ->limit(1)
->group("a.promote_id")
->select();
dump($subQueryAll);
# code...
}
function presidentFinance($p = 1) {
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
$row=10;
if(isset($_REQUEST['row'])) {$row = $_REQUEST['row'];}else{$row = 10;}
$map1['_string'] = '';
$map = [];
if (!empty(I('promote_account'))) {
$map['promote_account'] = I('promote_account');
}
if (!empty(I("count_date"))) {
$map['count_date'] = I('count_date');
$map1['_string'] = "count_date = {$map['count_date']} and ";
}
$map['parent_id'] = 0;
$field = "parent_id,root_id,promote_id,promote_account,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";
$group = "promote_id";
$order = "id DESC";
// $data = D("spend_count")->getSpendCountData($map,$field,$group,$order,$page,$row);
$data =
$data = M("spend_count","tab_")
->field($field)
->where($map)
->page($page,$row)
->group($group)->order($order)->select();
$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['inside_cash_count']);
$insideDataSum = [];
foreach ($insideData as $key => $value) {
if (isset($insideDataSum[$value['promote_id']])) {
$insideDataSum[$value['promote_id']] = $insideDataSum[$value['promote_id']] + $value['count'];
} else {
$insideDataSum[$value['promote_id']] = $value['count'];
}
}
// echo D("spend_count")->_sql();
// dump($insideDataSum);die();
$promote_array = [];
foreach ($data as $key => $value) {
if ($value['promote_id']!=0) {
array_push($promote_array,$value['promote_id']);
}
}
$promote_id = implode(',',$promote_array);
if ($promote_id) {
$map1['_string'] = "(parent_id IN({$promote_id}) or root_id IN({$promote_id}))";
$sunData = D("spend_count")->getSpendCountData($map1,$field,$group,$order);
$map1['inside_cash_count'] = ['neq',0];
$sunInsideData = D("spend_count")->getSpendCountData($map1,"promote_id,inside_cash_count as count","promote_id,count_date");
foreach($sunInsideData as $key => $value) {
if (in_array($value['parent_id'],$promote_array)) {
$insideDataSum[$value['parent_id']] = $insideDataSum[$value['parent_id']] + $value['count'];
}else if (in_array($value['root_id'],$promote_array)) {
$insideDataSum[$value['root_id']] = $insideDataSum[$value['root_id']] + $value['count'];
}
}
} else {
$sunData = [];
}
dump($promote_id);die();
$handleData = [];
foreach ($sunData as $key =>$value) {
if (in_array($value['parent_id'],$promote_array)) {
$handleData[$value['parent_id']]['cash_count'] = $handleData[$value['parent_id']]['cash_count']+$value['cash_count'];
$handleData[$value['parent_id']]['balance_coin_count'] = $handleData[$value['parent_id']]['balance_coin_count']+$value['balance_coin_count'];
$handleData[$value['parent_id']]['inside_cash_count'] = $handleData[$value['parent_id']]['inside_cash_count']+$value['inside_cash_count'];
}
if (in_array($value['root_id'],$promote_array)) {
$handleData[$value['root_id']]['cash_count'] = $handleData[$value['root_id']]['cash_count'] + $value['cash_count'];
$handleData[$value['root_id']]['balance_coin_count'] = $handleData[$value['root_id']]['balance_coin_count'] + $value['balance_coin_count'];
$handleData[$value['root_id']]['inside_cash_count'] = $handleData[$value['root_id']]['inside_cash_count']+ $value['inside_cash_count'];
}
}
foreach($data as $key => $value) {
$data[$key]['cash_count'] = $value['cash_count'] + $handleData[$value['promote_id']]['cash_count'];
$data[$key]['balance_coin_count'] = $value['balance_coin_count'] + $handleData[$value['promote_id']]['balance_coin_count'];
$data[$key]['inside_cash_count'] = $value['inside_cash_count'] + $handleData[$value['promote_id']]['inside_cash_count'];
}
$this->assign('data',$data);
$this->display();
}
}