game2006api/webapp/controller/OutAppCircuitController.class.php
hujiabin 9780c16ff8 1
2024-09-20 18:22:46 +08:00

64 lines
2.3 KiB
PHP

<?php
use phpcommon\SqlHelper;
require_once('services/ServerSwitchService.php');
require_once('mt/Parameter.php');
require_once('mt/CircuitTime.php');
require_once('mt/CircuitReward.php');
require_once('models/CircuitReward.php');
require_once('models/Circuit.php');
require_once('models/User.php');
use services\ServerSwitchService;
use models\CircuitReward;
use models\Circuit;
use models\User;
class OutAppCircuitController extends BaseController {
public function circuitSettlement(){
$currentStageMeta = \mt\CircuitTime::getCurrentStage();
$prevStageMeta = \mt\CircuitTime::getPrevStage();
if (!$currentStageMeta && $prevStageMeta && !CircuitReward::_verifySettlement($prevStageMeta['circuit_season'],$prevStageMeta['circuit_phase'])){
$rows = Circuit::getRankingList($prevStageMeta['circuit_season']);
if (count($rows) > 0){
$totalWeight = 0;
$rate = \mt\Parameter::getVal('circuit_reward_rate','');
$count = floor(count($rows) * $rate) ;
foreach ($rows as $k=>$value){
$ranking = $k+1;
$rewardWeight = \mt\CircuitReward::getRewardWeight($ranking);
if ($ranking <= $count){
$totalWeight += $rewardWeight;
}
}
$cecPool = $prevStageMeta['cec_pool'];
foreach ($rows as $k=>$value){
$cec = 0;
$ranking = $k+1;
$rewardWeight = \mt\CircuitReward::getRewardWeight($ranking);
if ($ranking <= $count){
$cec = ($rewardWeight / $totalWeight) * $cecPool;
}
$user = User::find($value['account_id']);
CircuitReward::add(
$user['account_id'],
$user['address'],
$prevStageMeta['circuit_season'],
$prevStageMeta['circuit_phase'],
$ranking,
$cec
);
}
}
$this->_rspOk();
return;
}
$this->_rspErr(1,'未满足结算条件');
}
}