diff --git a/doc/EventRanking.py b/doc/EventRanking.py index e3a6da0e..7abf0c84 100644 --- a/doc/EventRanking.py +++ b/doc/EventRanking.py @@ -36,5 +36,18 @@ class EventRanking(object): ['ranking_list', _common.RankingListEx(), '排行榜数据'] ] }, + { + 'name': 'settlementRankingAward', + 'desc': '活动结算', + 'group': 'EventRanking', + 'url': 'webapp/index.php?c=EventRanking&a=settlementRankingAward', + 'params': [ + _common.ReqHead(), + ], + 'response': [ + _common.RspHead(), + ] + }, + ] diff --git a/webapp/controller/EventRankingController.class.php b/webapp/controller/EventRankingController.class.php index 463519c2..499f727c 100644 --- a/webapp/controller/EventRankingController.class.php +++ b/webapp/controller/EventRankingController.class.php @@ -175,16 +175,16 @@ class EventRankingController extends BaseAuthedController 'rows' => $rankingList, 'my_ranked' => $this->myRanked ); - error_log(json_encode( - array( - 'account_id'=>$userInfo['account_id'], - 'guild_id'=>$userInfo['guild_id'], - 'type' => $type, - 'pages' => $pages, - 'rows' => $rankingList, - 'my_ranked' => $this->myRanked - ) - )); +// error_log(json_encode( +// array( +// 'account_id'=>$userInfo['account_id'], +// 'guild_id'=>$userInfo['guild_id'], +// 'type' => $type, +// 'pages' => $pages, +// 'rows' => $rankingList, +// 'my_ranked' => $this->myRanked +// ) +// )); return $rankingData; } @@ -252,12 +252,7 @@ class EventRankingController extends BaseAuthedController public function settlementRankingAward(){ $currentRankingMeta = mt\EventRanking::getCurrentRanking(); - $userInfo = $this->_getOrmUserInfo(); - $myAward = array( - 'ranked' => -1, - 'rewardNum' => 0, - 'extraRewardNum' => 0 - ); + $awardList = array(); if ($currentRankingMeta){ $lastRankingMeta = mt\EventRanking::find($currentRankingMeta['id']-1); if ($lastRankingMeta){ @@ -273,25 +268,26 @@ class EventRankingController extends BaseAuthedController ':type' => $lastRankingMeta['themeType'] ) ); + $ranked = 0; foreach ($rows as $row){ $ranked+=1; - if ($row['account_id'] == myself()->_getAccountId()) { - $myAward['ranked'] = $ranked; - $myAward['rewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['rewardNum']; - $myAward['extraRewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['extraRewardNum']; - } + array_push($awardList,array( + 'ranked'=>$ranked, + 'account_id'=>$row['account_id'], + 'rewardNum'=>$this->celAward($row['wave'],$row['type'],$ranked)['rewardNum'], + 'extraRewardNum'=>$this->celAward($row['wave'],$row['type'],$ranked)['extraRewardNum'], + )); } - if ($myAward['ranked'] > 0){ + if ($awardList){ //记录此活动的CEG奖励 - $cegNum = $myAward['rewardNum']+$myAward['extraRewardNum']; - EventRanking::setV($lastRankingMeta['wave'],$lastRankingMeta['themeType'],$cegNum); + foreach ($awardList as $value){ + $cegNum = $value['rewardNum']+$value['extraRewardNum']; + EventRanking::setV($value['account_id'],$lastRankingMeta['wave'],$lastRankingMeta['themeType'],$cegNum); + } + } - error_log(json_encode(array( - 'myAward' => $myAward, - 'ranking' => 'KillRanking', - 'number'=>$myAward['rewardNum']+$myAward['extraRewardNum'] - ))); + error_log('********** KILL RANKING SETTLEMENT SUCCESS ***********'); $this->_rspOk(); };break; case \services\RankActivityService::WINS_TYPE : { @@ -305,25 +301,25 @@ class EventRankingController extends BaseAuthedController ':type' => $lastRankingMeta['themeType'] ) ); + $ranked = 0; foreach ($rows as $row) { $ranked += 1; - if ($row['account_id'] == myself()->_getAccountId()) { - $myAward['ranked'] = $ranked; - $myAward['rewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['rewardNum']; - $myAward['extraRewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['extraRewardNum']; + array_push($awardList,array( + 'ranked'=>$ranked, + 'account_id'=>$row['account_id'], + 'rewardNum'=>$this->celAward($row['wave'],$row['type'],$ranked)['rewardNum'], + 'extraRewardNum'=>$this->celAward($row['wave'],$row['type'],$ranked)['extraRewardNum'], + )); + } + if ($awardList){ + //记录此活动的CEG奖励 + foreach ($awardList as $value){ + $cegNum = $value['rewardNum']+$value['extraRewardNum']; + EventRanking::setV($value['account_id'],$lastRankingMeta['wave'],$lastRankingMeta['themeType'],$cegNum); } } - if ($myAward['ranked'] > 0){ - //记录此活动的CEG奖励 - $cegNum = $myAward['rewardNum']+$myAward['extraRewardNum']; - EventRanking::setV($lastRankingMeta['wave'],$lastRankingMeta['themeType'],$cegNum); - } - error_log(json_encode(array( - 'myAward' => $myAward, - 'ranking' => 'WinRanking', - 'number'=>$myAward['rewardNum']+$myAward['extraRewardNum'] - ))); + error_log('********** WIN RANKING SETTLEMENT SUCCESS ***********'); $this->_rspOk(); };break; case \services\RankActivityService::BATTLES_TYPE : { @@ -340,22 +336,21 @@ class EventRankingController extends BaseAuthedController $ranked = 0; foreach ($rows as $row){ $ranked+=1; - if ($row['account_id'] == myself()->_getAccountId()) { - $myAward['ranked'] = $ranked; - $myAward['rewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['rewardNum']; - $myAward['extraRewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['extraRewardNum']; + array_push($awardList,array( + 'ranked'=>$ranked, + 'account_id'=>$row['account_id'], + 'rewardNum'=>$this->celAward($row['wave'],$row['type'],$ranked)['rewardNum'], + 'extraRewardNum'=>$this->celAward($row['wave'],$row['type'],$ranked)['extraRewardNum'], + )); + } + if ($awardList){ + //记录此活动的CEG奖励 + foreach ($awardList as $value){ + $cegNum = $value['rewardNum']+$value['extraRewardNum']; + EventRanking::setV($value['account_id'],$lastRankingMeta['wave'],$lastRankingMeta['themeType'],$cegNum); } } - if ($myAward['ranked'] > 0){ - //记录此活动的CEG奖励 - $cegNum = $myAward['rewardNum']+$myAward['extraRewardNum']; - EventRanking::setV($lastRankingMeta['wave'],$lastRankingMeta['themeType'],$cegNum); - } - error_log(json_encode(array( - 'myAward' => $myAward, - 'ranking' => 'BattleRanking', - 'number'=>$myAward['rewardNum']+$myAward['extraRewardNum'] - ))); + error_log('********** BATTLE RANKING SETTLEMENT SUCCESS ***********'); $this->_rspOk(); };break; case \services\RankActivityService::GUILD_TYPE : { @@ -371,56 +366,69 @@ class EventRankingController extends BaseAuthedController ) ); $ranked = 0; - $guildAward = array( - 'ranked' => -1, - 'rewardNum' => 0, - 'extraRewardNum' => 0 - ); foreach ($rows as $row) { $ranked += 1; - if($userInfo['guild_id'] && $userInfo['guild_id'] == $row['guild_id']){ - $myAward['ranked'] = $ranked; - $guildAward['ranked'] = $ranked; - $guildAward['rewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['rewardNum']; - $guildAward['extraRewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['extraRewardNum']; - } + array_push($awardList,array( + 'ranked'=>$ranked, + 'guild_id'=>$row['guild_id'], + 'rewardNum'=>$this->celAward($row['wave'],$row['type'],$ranked)['rewardNum'], + 'extraRewardNum'=>$this->celAward($row['wave'],$row['type'],$ranked)['extraRewardNum'], + )); } - if ($myAward['ranked'] > 0){ + if ($awardList) { //记录此活动的CEG奖励 - $myValue = myself()->_getSelfMysql()->execQuery( - 'SELECT * FROM t_rank_activity ' . - 'WHERE wave=:wave AND type=:type AND account_id=:account_id', - array( - ':wave' => $lastRankingMeta['wave'], - ':type' => $lastRankingMeta['themeType'], - ':account_id' => myself()->_getAccountId() - ) - ); - $sumValue = myself()->_getSelfMysql()->execQuery( - 'SELECT guild_id,SUM(value) AS value FROM t_rank_activity ' . - 'WHERE wave=:wave AND type=:type AND guild_id=:guild_id ' . - 'GROUP BY guild_id limit 1', - array( - ':wave' => $lastRankingMeta['wave'], - ':type' => $lastRankingMeta['themeType'], - ':guild_id'=>$userInfo['guild_id'] - ) - ); - if ($myValue && $sumValue ){ - $myAward['rewardNum'] = $myValue[0]['value']/$sumValue[0]['value']*$guildAward['rewardNum']; + foreach ($awardList as $value) { + $usersDb = User::getListByGuildId($value['guild_id']); + $guildDb = Guild::find($value['guild_id']); + if (!$guildDb) { + error_log('The Guild Does Not Exist : ' . $value['guild_id']); + continue; + } + if ($usersDb) { + foreach ($usersDb as $user) { + $thisValue = myself()->_getSelfMysql()->execQuery( + 'SELECT * FROM t_rank_activity ' . + 'WHERE wave=:wave AND type=:type AND account_id=:account_id', + array( + ':wave' => $lastRankingMeta['wave'], + ':type' => $lastRankingMeta['themeType'], + ':account_id' => $user['account_id'] + ) + ); + $sumValue = myself()->_getSelfMysql()->execQuery( + 'SELECT guild_id,SUM(value) AS value FROM t_rank_activity ' . + 'WHERE wave=:wave AND type=:type AND guild_id=:guild_id ' . + 'GROUP BY guild_id limit 1', + array( + ':wave' => $lastRankingMeta['wave'], + ':type' => $lastRankingMeta['themeType'], + ':guild_id' => $value['guild_id'] + ) + ); + if (!$thisValue || !$sumValue) { + error_log('该用户无贡献 : ' . $user['account_id'] . ' | 工会总收益有问题 : ' . $value['guild_id'] ); + continue; + } + $rewardNum = $thisValue[0]['value'] / $sumValue[0]['value'] * $value['rewardNum']; + $extraRewardNum = $guildDb['owner_id'] == $user['account_id'] ? $value['extraRewardNum'] : 0; + $cegNum = $rewardNum + $extraRewardNum; + EventRanking::setV($user['account_id'], $lastRankingMeta['wave'], $lastRankingMeta['themeType'], $cegNum); + error_log(json_encode( + array( + 'account_id' => $user['account_id'], + 'guild_id' => $value['guild_id'], + 'value' => $thisValue[0]['value'], + 'sum_value' => $sumValue[0]['value'], + 'rewardNum' => $rewardNum, + 'extraRewardNum' => $extraRewardNum, + 'CEG' => $cegNum + ) + )); + } + } } - $guildDb = Guild::find($userInfo['guild_id']); - if ($guildDb && $guildDb['owner_id'] == myself()->_getAccountId() ){ - $myAward['extraRewardNum'] = $guildAward['extraRewardNum']; - } - $cegNum = $myAward['rewardNum']+$myAward['extraRewardNum']; - EventRanking::setV($lastRankingMeta['wave'],$lastRankingMeta['themeType'],$cegNum); } - error_log(json_encode(array( - 'myAward' => $myAward, - 'ranking' => 'BattleRanking', - 'number'=>$myAward['rewardNum']+$myAward['extraRewardNum'] - ))); + error_log('********** GUILD RANKING SETTLEMENT SUCCESS ***********'); $this->_rspOk(); };break; default : { diff --git a/webapp/models/EventRanking.php b/webapp/models/EventRanking.php index 7717c4e9..f9bc1063 100644 --- a/webapp/models/EventRanking.php +++ b/webapp/models/EventRanking.php @@ -52,10 +52,10 @@ class EventRanking extends BaseModel return $valData['value']; } - public static function setV($x, $y, $defVal) + public static function setV($accountId,$x, $y, $defVal) { $key = self::calcKey($x, $y); - self::internalSetV($x, $y, $defVal); + self::internalSetV($accountId,$x, $y, $defVal); } public static function calcKey($x, $y) @@ -66,7 +66,7 @@ class EventRanking extends BaseModel return $key; } - private static function internalSetV($x, $y, $val) + private static function internalSetV($accountId,$x, $y, $val) { if (!is_int($x) || !is_int($y)) { die('internalSet type error'); @@ -85,7 +85,7 @@ class EventRanking extends BaseModel (myself()->_getSelfMysql(), 't_event_ranking', array( - 'account_id' => myself()->_getAccountId(), + 'account_id' => $accountId, 'wave' => $x, 'type' => $y ), @@ -94,7 +94,7 @@ class EventRanking extends BaseModel 'modifytime' => myself()->_getNowTime() ), array( - 'account_id' => myself()->_getAccountId(), + 'account_id' => $accountId, 'wave' => $x, 'type' => $y, 'value' => $val, diff --git a/webapp/models/Guild.php b/webapp/models/Guild.php index e129b1d9..15d9d4ef 100644 --- a/webapp/models/Guild.php +++ b/webapp/models/Guild.php @@ -26,7 +26,7 @@ class Guild extends BaseModel 'guild_id' => $row['guild_id'], 'guild_name' => $row['guild_name'], 'guild_badge' => $row['guild_badge'], - 'owner_id' => $row['guild_badge'], + 'owner_id' => $row['owner_id'], 'owner_name' => $row['owner_name'], ); } diff --git a/webapp/models/User.php b/webapp/models/User.php index a2ba1256..1d9556ec 100644 --- a/webapp/models/User.php +++ b/webapp/models/User.php @@ -24,6 +24,18 @@ class User extends BaseModel { return $row ? $row : null; } + public static function getListByGuildId($guildId) + { + $rows = SqlHelper::ormSelect + (myself()->_getSelfMysql(), + 't_user', + array( + 'guild_id' => $guildId + ) + ); + return $rows ? $rows : null; + } + public static function show($row) { return array(