diff --git a/Application/Admin/Controller/CompanyStatementSetController.class.php b/Application/Admin/Controller/CompanyStatementSetController.class.php index 3773c5c1c..ddd0b5e3b 100644 --- a/Application/Admin/Controller/CompanyStatementSetController.class.php +++ b/Application/Admin/Controller/CompanyStatementSetController.class.php @@ -644,7 +644,7 @@ class CompanyStatementSetController extends Controller { $tratio =$this->getTurnoverRatio($game_all_payment,$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']); $tratio += $company_ratio; }elseif($type == 0){ - $tratio = $t_game_ratio['ratio']; + $tratio = $tmp_game_ratio['ratio']; }else{ //补点 $tratio1 =$this->getTurnoverRatio($game_all_payment,$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']); @@ -878,6 +878,8 @@ class CompanyStatementSetController extends Controller { $game[$v['relation_game_id']]['pay_amount'] = $v['pay_amount']; } } + $pcList[$company_id]['game_ids'] = implode(",",array_keys($game)); + foreach($list as $k=>$v){ try { $res[$company_id]["pay_amount"] += $v['pay_amount']; @@ -1075,40 +1077,88 @@ class CompanyStatementSetController extends Controller { $v['statement_money'] -= $v['server_fee']; } } - + $promoteCompanyGameRatio = D("CompanyGameRatio")->getPromoteCompanyGameRatio($v['id'],$v['game_ids'],$begintime,$endtime,$company_belong); foreach($v['list'] as $ke=>$va){ $templist = $va['game_list']; $va['game_list'] = []; foreach($templist as $p_id => $p_info){ - // dd($p_info); - if($type == 1){ - $tratio = getGamePromoteCompanyRadio($v['id'],$p_info['relation_game_id'],$endtime,$p_info['all_pay_amount'],true,$company_belong); - $tratio += $company_ratio; - }elseif($type == 0){ - $tratio = getGamePromoteCompanyRadio($v['id'],$p_info['relation_game_id'],$endtime,$p_info['all_pay_amount'],false,$company_belong); - }else{ - //补点 - $tratio1 = getGamePromoteCompanyRadio($v['id'],$p_info['relation_game_id'],$endtime,$p_info['all_pay_amount'],true,$company_belong);; - $tratio2 = getGamePromoteCompanyRadio($v['id'],$p_info['relation_game_id'],$endtime,$p_info['all_pay_amount'],false,$company_belong); - $tratio = $tratio1-$tratio2+$company_ratio; - if($tratio <= 0){ - continue; + + $ratioCount = count($promoteCompanyGameRatio[$p_info['relation_game_id']]); + $isMoreRatio = $ratioCount > 1 ? true : false; + + if(!$isMoreRatio){ + $tmp_game_ratio = $promoteCompanyGameRatio[$p_info['relation_game_id']][0]; + if($type == 1){ + $tratio =$this->getTurnoverRatio($p_info['all_pay_amount'],$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']); + $tratio += $company_ratio; + }elseif($type == 0){ + $tratio = $tmp_game_ratio['ratio']; + }else{ + //补点 + $tratio1 =$this->getTurnoverRatio($p_info['all_pay_amount'],$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']); + $tratio2 =$tmp_game_ratio['ratio']; + $tratio = $tratio1-$tratio2+$company_ratio; + if($tratio <= 0){ continue;} } - } - if($type == 2){ - $p_info['increment_ratio']=$tratio; + $tratio -= 0; + if($type == 2){ + $p_info['increment_ratio']=$tratio; + }else{ + $p_info['ratio']=$tratio; + } + + $v['platform_amount'] += $p_info['pay_amount']; + $p_info['sum_money']=round($p_info['pay_amount']*$tratio/100,2); //个人等于 结算金额*比例 + $v['pay_amount'] += $p_info['sum_money']; + $v['statement_money'] += $p_info['sum_money']; + $p_info['fax_ratio']=$fax_ratio; + $p_info['statement_begin_time']=$statement_begin_time; + $p_info['statement_end_time']=$statement_end_time; + $p_info['statement_type']=0; + $va['game_list'][] = $p_info; }else{ - $p_info['ratio']=$tratio; + for ($i=0; $i < $ratioCount; $i++) { + $temp_game = []; + $tmp_game_ratio = $promoteCompanyGameRatio[$p_info['relation_game_id']][$i]; + if($type == 1){ + $tratio =$this->getTurnoverRatio($p_info['all_pay_amount'],$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']); + $tratio += $company_ratio; + }elseif($type == 0){ + $tratio = $tmp_game_ratio['ratio']; + }else{ + //补点 + $tratio1 =$this->getTurnoverRatio($p_info['all_pay_amount'],$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']); + $tratio2 =$tmp_game_ratio['ratio']; + $tratio = $tratio1-$tratio2+$company_ratio; + if($tratio <= 0){ continue;} + } + $tratio -= 0; + if($type == 2){ + $temp_game['increment_ratio']=$tratio; + }else{ + $temp_game['ratio']=$tratio; + } + $temp_game['pay_amount'] = $this->getRelationGameIdPromoteSpend($p_info["p_id"],$p_info['relation_game_id'],$tmp_game_ratio['begintime'],$tmp_game_ratio['endtime']); + $temp_game['pay_amount'] -=0; + + $v['platform_amount'] += $temp_game['pay_amount']; + $temp_game['sum_money']=round($temp_game['pay_amount']*$tratio/100,2); //个人等于 结算金额*比例 + $v['pay_amount'] += $temp_game['sum_money']; + $v['statement_money'] += $temp_game['sum_money']; + + $temp_game['fax_ratio']=$fax_ratio-0; + $temp_game['statement_begin_time']=date("Y.m.d",$tmp_game_ratio['begintime']); + $temp_game['statement_end_time']=date("Y.m.d",$tmp_game_ratio['endtime']); + $temp_game['statement_type']=0; + + $temp_game['relation_game_id']=$p_info["relation_game_id"]; + $temp_game['game_name']=$p_info["game_name"]; + $temp_game['game_type_name']=$p_info["game_type_name"]; + $temp_game['all_pay_amount']=$p_info["all_pay_amount"]; + + $va['game_list'][] = $temp_game; + } } - $v['platform_amount'] += $p_info['pay_amount']; - $p_info['sum_money']=round($p_info['pay_amount']*$tratio/100,2); //个人等于 结算金额*比例 - $v['pay_amount'] += $p_info['sum_money']; - $v['statement_money'] += $p_info['sum_money']; - $p_info['fax_ratio']=$fax_ratio; - $p_info['statement_begin_time']=$statement_begin_time; - $p_info['statement_end_time']=$statement_end_time; - $p_info['statement_type']=0; - $va['game_list'][] = $p_info; } $v['statement_info'][] = $va; } @@ -1383,6 +1433,35 @@ class CompanyStatementSetController extends Controller { $pay_amount = $Spend->alias('s')->field('sum(s.pay_amount) pay_amount')->where($spenMap)->find(); return $pay_amount['pay_amount'] ?? 0; } + + protected function getRelationGameIdPromoteSpend($promote_id,$relation_game_id,$begintime,$endtime) + { + $res = []; + //获取推广员 + $Promote = M("Promote","tab_"); + $Spend = M("Spend","tab_"); + $spenMap = [ + "s.pay_status"=>1, + "s.payed_time"=>['between', [$begintime,$endtime]], + ]; + + $Pmap = [ + "chain"=>["LIKE","%/{$promote_id}/%"], + "_logic"=>"OR", + "id"=>$promote_id + ]; + $pres = $Promote->field("group_concat(id) ids,count(id) count")->where($Pmap)->group("company_id")->find(); + if($pres['count'] ==0 ){return 0;} + $spenMap['s.promote_id']=["in",$pres['ids']]; + //游戏 + + $game_id = D("Game")->changeRelationGameidToGameid($relation_game_id); + // dd($game_id); + $spenMap['s.game_id'] =['in',$game_id]; + //获取支付记录 + $pay_amount = $Spend->alias('s')->field('sum(s.pay_amount) pay_amount')->where($spenMap)->find(); + return $pay_amount['pay_amount'] ?? 0; + } /** * 重算接口