优化财务聚合接口

master
chenzhi 5 years ago
parent f44a11a915
commit 58c405e914

@ -23,6 +23,7 @@ class SpendCountSetController extends \Think\Controller
$this->model =M("spend_count",'tab_'); $this->model =M("spend_count",'tab_');
$this->usermodel =M("spend_user_count",'tab_'); $this->usermodel =M("spend_user_count",'tab_');
$this->monthmodel =M("spend_month_count",'tab_'); $this->monthmodel =M("spend_month_count",'tab_');
$this->gamemodel =M("spend_count",'tab_');
} }
/** /**
@ -101,147 +102,89 @@ class SpendCountSetController extends \Think\Controller
$this->getRoot(); $this->getRoot();
# code... # code...
} }
//获取游戏现金流水 //获取游戏现金流水
protected function getCashData() protected function getCashData()
{ {
if(!$this->continue){ $this->createGameCount("cash_count");
die("api error"); }
} //获取平台币聚合
$map = array( protected function getBalanceData()
"pay_time"=> array('BETWEEN',array($this->beginThismonth, $this->endThismonth)), {
"spend.pay_status"=>1, $this->createGameCount("balance_coin_count");
"pay_way"=>array("GT",0) }
); //获取绑定币充值
$field = "IFNULL(game.partner_id,0) partner_id,partner.partner partner_name, protected function getInsideData()
spend.promote_id,spend.promote_account,spend.game_id,spend.game_name, {
IFNULL(promote.parent_id,0) parent_id,promote.parent_name,sum(pay_amount) cash_count, $this->createGameCount("inside_cash_count");
'{$this->date}' as count_date,'{$this->nowdata}' as create_time";
//获取现金 }
$cashRes = M() protected function createGameCount($type)
->table("tab_spend spend") {
->field($field) $map = array(
->where($map) "pay_time"=> array('BETWEEN',array($this->beginThismonth, $this->endThismonth)),
->join("tab_promote promote ON spend.promote_id = promote.id","left") "spend.pay_status"=>1
->join("tab_game game ON spend.game_id = game.id","left") );
->join("tab_partner partner ON partner.id = game.partner_id","left")
->group('spend.promote_id,spend.game_id') if($type == "cash_count"){
->select(); //现金统计
if(!empty($cashRes)){ $map['pay_way'] = array("GT",0);
$dbres = $this->model->addAll($cashRes); }elseif($type == "balance_coin_count"){
if(!$dbres){ $map['pay_way']= array("EQ",0);
$this->model->rollback(); }elseif($type == "inside_cash_count"){
die("error"); $map['pay_way']= array("LT",0);
} }
} $field = "IFNULL(game.partner_id,0) partner_id,partner.partner partner_name,
# code... spend.promote_id,spend.promote_account,spend.game_id,spend.game_name,sum(pay_amount) {$type},
} IFNULL(promote.parent_id,0) parent_id,promote.parent_name,
//获取平台币聚合 '{$this->date}' as count_date,'{$this->nowdata}' as create_time";
protected function getBalanceData() $spendRes = M()
{ ->table("tab_spend spend")
if(!$this->continue){ ->field($field)
die("api error"); ->where($map)
} ->join("tab_promote promote ON spend.promote_id = promote.id","left")
$map = array( ->join("tab_game game ON spend.game_id = game.id","left")
"pay_time"=> array('BETWEEN',array($this->beginThismonth, $this->endThismonth)), ->join("tab_partner partner ON partner.id = game.partner_id","left")
"spend.pay_status"=>1, ->group('spend.promote_id,spend.game_id')
"pay_way"=> array("EQ",0) ->select();
); if(empty($spendRes)){
$field = "IFNULL(game.partner_id,0) partner_id,partner.partner partner_name, return ;
spend.promote_id,spend.promote_account,spend.game_id,spend.game_name, }
IFNULL(promote.parent_id,0) parent_id,promote.parent_name,sum(pay_amount) balance_coin_count, //集中两个表
'{$this->date}' as count_date,'{$this->nowdata}' as create_time"; if($type == "cash_count"){
$balanceRes = M() $dbres = $this->gamemodel->addAll($spendRes);
->table("tab_spend spend") if(!$dbres){
->field($field) $this->model->rollback();
->where($map) die("error");
->join("tab_promote promote ON spend.promote_id = promote.id","left") }
->join("tab_game game ON spend.game_id = game.id","left") }else{
->join("tab_partner partner ON partner.id = game.partner_id","left") for ($i=0; $i < count($spendRes); $i++) {
->group('spend.promote_id,spend.game_id') $spendRes[$i][$type] || $spendRes[$i][$type]=0;
->select(); # code...
//集中两个表 $tempmap = array(
if(!empty($balanceRes)){ "game_id"=>$spendRes[$i]['game_id'],
"promote_id"=>$spendRes[$i]['promote_id'],
for ($i=0; $i < count($balanceRes); $i++) { "count_date"=>$this->date
# code... );
$tempmap = array( $dbres = $this->gamemodel->where($tempmap)->find();
"game_id"=>$balanceRes[$i]['game_id'], if(!$dbres){
"promote_id"=>$balanceRes[$i]['promote_id'], //不存在
"count_date"=>$this->date $tempdbres = $this->gamemodel->add($spendRes[$i]);
); if(!$tempdbres){
$dbres = $this->model->where($tempmap)->find(); $this->model->rollback();
if(!$dbres){ die("error");
//不存在 }
$tempdbres = $this->model->add($balanceRes[$i]); }else{
if(!$tempdbres){ $dbres[$type] = $dbres[$type]-0+$spendRes[$i][$type];
$this->model->rollback(); $tempdbres = $this->gamemodel->save($dbres);
die("error"); if($tempdbres === false){
} $this->model->rollback();
}else{ die("error");
$dbres["balance_coin_count"] = $balanceRes[$i]['balance_coin_count']; }
$tempdbres = $this->model->save($dbres); }
if(!$tempdbres){ }
$this->model->rollback(); }
die("error"); # code...
} }
}
}
}
# code...
}
//获取绑定币充值
protected function getInsideData()
{
if(!$this->continue){
die("api error");
}
$map = array(
"pay_time"=> array('BETWEEN',array($this->beginThismonth, $this->endThismonth)),
"spend.pay_status"=>1,
"pay_way"=> array("LT",0)
);
$field = "IFNULL(game.partner_id,0) partner_id,partner.partner partner_name,
spend.promote_id,spend.promote_account,spend.game_id,spend.game_name,
IFNULL(promote.parent_id,0) parent_id,promote.parent_name,sum(pay_amount) inside_cash_count,
'{$this->date}' as count_date,'{$this->nowdata}' as create_time";
$balanceRes = M()
->table("tab_spend spend")
->field($field)
->where($map)
->join("tab_promote promote ON spend.promote_id = promote.id","left")
->join("tab_game game ON spend.game_id = game.id","left")
->join("tab_partner partner ON partner.id = game.partner_id","left")
->group('spend.promote_id,spend.game_id')
->select();
//集中两个表
if(!empty($balanceRes)){
for ($i=0; $i < count($balanceRes); $i++) {
# code...
$tempmap = array(
"game_id"=>$balanceRes[$i]['game_id'],
"promote_id"=>$balanceRes[$i]['promote_id'],
"count_date"=>$this->date
);
$dbres = $this->model->where($tempmap)->find();
if(!$dbres){
//不存在
$tempdbres = $this->model->add($balanceRes[$i]);
if(!$tempdbres){
$this->model->rollback();
die("error");
}
}else{
$dbres["inside_cash_count"] = $balanceRes[$i]['inside_cash_count'];
$tempdbres = $this->model->save($dbres);
if(!$tempdbres){
$this->model->rollback();
die("error");
}
}
}
}
}
protected function getRoot() protected function getRoot()
{ {
@ -252,7 +195,7 @@ class SpendCountSetController extends \Think\Controller
"parent_id"=>array("GT",0), "parent_id"=>array("GT",0),
"count_date"=>$this->date "count_date"=>$this->date
); );
$user = $this->model->field("parent_id,promote_id")->where($map)->group("promote_id")->select(); $user = $this->gamemodel->field("parent_id,promote_id")->where($map)->group("promote_id")->select();
$Promote=M("promote","tab_"); $Promote=M("promote","tab_");
for ($i=0; $i < count($user); $i++) { for ($i=0; $i < count($user); $i++) {
# code... # code...
@ -267,7 +210,7 @@ class SpendCountSetController extends \Think\Controller
"promote_id"=>$user[$i]['promote_id'], "promote_id"=>$user[$i]['promote_id'],
"count_date"=>$this->date "count_date"=>$this->date
); );
$tempdbres = $this->model->where($where)->save($root); $tempdbres = $this->gamemodel->where($where)->save($root);
if(!$tempdbres){ if(!$tempdbres){
$this->model->rollback(); $this->model->rollback();
die("setRoot error"); die("setRoot error");

Loading…
Cancel
Save