运营活动结算

This commit is contained in:
hujiabin 2022-11-23 15:35:05 +08:00
parent 12d51341f2
commit 741b4327f7
5 changed files with 140 additions and 107 deletions

View File

@ -36,5 +36,18 @@ class EventRanking(object):
['ranking_list', _common.RankingListEx(), '排行榜数据'] ['ranking_list', _common.RankingListEx(), '排行榜数据']
] ]
}, },
{
'name': 'settlementRankingAward',
'desc': '活动结算',
'group': 'EventRanking',
'url': 'webapp/index.php?c=EventRanking&a=settlementRankingAward',
'params': [
_common.ReqHead(),
],
'response': [
_common.RspHead(),
]
},
] ]

View File

@ -175,16 +175,16 @@ class EventRankingController extends BaseAuthedController
'rows' => $rankingList, 'rows' => $rankingList,
'my_ranked' => $this->myRanked 'my_ranked' => $this->myRanked
); );
error_log(json_encode( // error_log(json_encode(
array( // array(
'account_id'=>$userInfo['account_id'], // 'account_id'=>$userInfo['account_id'],
'guild_id'=>$userInfo['guild_id'], // 'guild_id'=>$userInfo['guild_id'],
'type' => $type, // 'type' => $type,
'pages' => $pages, // 'pages' => $pages,
'rows' => $rankingList, // 'rows' => $rankingList,
'my_ranked' => $this->myRanked // 'my_ranked' => $this->myRanked
) // )
)); // ));
return $rankingData; return $rankingData;
} }
@ -252,12 +252,7 @@ class EventRankingController extends BaseAuthedController
public function settlementRankingAward(){ public function settlementRankingAward(){
$currentRankingMeta = mt\EventRanking::getCurrentRanking(); $currentRankingMeta = mt\EventRanking::getCurrentRanking();
$userInfo = $this->_getOrmUserInfo(); $awardList = array();
$myAward = array(
'ranked' => -1,
'rewardNum' => 0,
'extraRewardNum' => 0
);
if ($currentRankingMeta){ if ($currentRankingMeta){
$lastRankingMeta = mt\EventRanking::find($currentRankingMeta['id']-1); $lastRankingMeta = mt\EventRanking::find($currentRankingMeta['id']-1);
if ($lastRankingMeta){ if ($lastRankingMeta){
@ -273,25 +268,26 @@ class EventRankingController extends BaseAuthedController
':type' => $lastRankingMeta['themeType'] ':type' => $lastRankingMeta['themeType']
) )
); );
$ranked = 0; $ranked = 0;
foreach ($rows as $row){ foreach ($rows as $row){
$ranked+=1; $ranked+=1;
if ($row['account_id'] == myself()->_getAccountId()) { array_push($awardList,array(
$myAward['ranked'] = $ranked; 'ranked'=>$ranked,
$myAward['rewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['rewardNum']; 'account_id'=>$row['account_id'],
$myAward['extraRewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['extraRewardNum']; '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奖励 //记录此活动的CEG奖励
$cegNum = $myAward['rewardNum']+$myAward['extraRewardNum']; foreach ($awardList as $value){
EventRanking::setV($lastRankingMeta['wave'],$lastRankingMeta['themeType'],$cegNum); $cegNum = $value['rewardNum']+$value['extraRewardNum'];
EventRanking::setV($value['account_id'],$lastRankingMeta['wave'],$lastRankingMeta['themeType'],$cegNum);
}
} }
error_log(json_encode(array( error_log('********** KILL RANKING SETTLEMENT SUCCESS ***********');
'myAward' => $myAward,
'ranking' => 'KillRanking',
'number'=>$myAward['rewardNum']+$myAward['extraRewardNum']
)));
$this->_rspOk(); $this->_rspOk();
};break; };break;
case \services\RankActivityService::WINS_TYPE : { case \services\RankActivityService::WINS_TYPE : {
@ -305,25 +301,25 @@ class EventRankingController extends BaseAuthedController
':type' => $lastRankingMeta['themeType'] ':type' => $lastRankingMeta['themeType']
) )
); );
$ranked = 0; $ranked = 0;
foreach ($rows as $row) { foreach ($rows as $row) {
$ranked += 1; $ranked += 1;
if ($row['account_id'] == myself()->_getAccountId()) { array_push($awardList,array(
$myAward['ranked'] = $ranked; 'ranked'=>$ranked,
$myAward['rewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['rewardNum']; 'account_id'=>$row['account_id'],
$myAward['extraRewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['extraRewardNum']; '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){ error_log('********** WIN RANKING SETTLEMENT SUCCESS ***********');
//记录此活动的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']
)));
$this->_rspOk(); $this->_rspOk();
};break; };break;
case \services\RankActivityService::BATTLES_TYPE : { case \services\RankActivityService::BATTLES_TYPE : {
@ -340,22 +336,21 @@ class EventRankingController extends BaseAuthedController
$ranked = 0; $ranked = 0;
foreach ($rows as $row){ foreach ($rows as $row){
$ranked+=1; $ranked+=1;
if ($row['account_id'] == myself()->_getAccountId()) { array_push($awardList,array(
$myAward['ranked'] = $ranked; 'ranked'=>$ranked,
$myAward['rewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['rewardNum']; 'account_id'=>$row['account_id'],
$myAward['extraRewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['extraRewardNum']; '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){ error_log('********** BATTLE RANKING SETTLEMENT SUCCESS ***********');
//记录此活动的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']
)));
$this->_rspOk(); $this->_rspOk();
};break; };break;
case \services\RankActivityService::GUILD_TYPE : { case \services\RankActivityService::GUILD_TYPE : {
@ -371,56 +366,69 @@ class EventRankingController extends BaseAuthedController
) )
); );
$ranked = 0; $ranked = 0;
$guildAward = array(
'ranked' => -1,
'rewardNum' => 0,
'extraRewardNum' => 0
);
foreach ($rows as $row) { foreach ($rows as $row) {
$ranked += 1; $ranked += 1;
if($userInfo['guild_id'] && $userInfo['guild_id'] == $row['guild_id']){ array_push($awardList,array(
$myAward['ranked'] = $ranked; 'ranked'=>$ranked,
$guildAward['ranked'] = $ranked; 'guild_id'=>$row['guild_id'],
$guildAward['rewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['rewardNum']; 'rewardNum'=>$this->celAward($row['wave'],$row['type'],$ranked)['rewardNum'],
$guildAward['extraRewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['extraRewardNum']; 'extraRewardNum'=>$this->celAward($row['wave'],$row['type'],$ranked)['extraRewardNum'],
} ));
} }
if ($myAward['ranked'] > 0){ if ($awardList) {
//记录此活动的CEG奖励 //记录此活动的CEG奖励
$myValue = myself()->_getSelfMysql()->execQuery( foreach ($awardList as $value) {
'SELECT * FROM t_rank_activity ' . $usersDb = User::getListByGuildId($value['guild_id']);
'WHERE wave=:wave AND type=:type AND account_id=:account_id', $guildDb = Guild::find($value['guild_id']);
array( if (!$guildDb) {
':wave' => $lastRankingMeta['wave'], error_log('The Guild Does Not Exist : ' . $value['guild_id']);
':type' => $lastRankingMeta['themeType'], continue;
':account_id' => myself()->_getAccountId() }
) if ($usersDb) {
); foreach ($usersDb as $user) {
$sumValue = myself()->_getSelfMysql()->execQuery( $thisValue = myself()->_getSelfMysql()->execQuery(
'SELECT guild_id,SUM(value) AS value FROM t_rank_activity ' . 'SELECT * FROM t_rank_activity ' .
'WHERE wave=:wave AND type=:type AND guild_id=:guild_id ' . 'WHERE wave=:wave AND type=:type AND account_id=:account_id',
'GROUP BY guild_id limit 1', array(
array( ':wave' => $lastRankingMeta['wave'],
':wave' => $lastRankingMeta['wave'], ':type' => $lastRankingMeta['themeType'],
':type' => $lastRankingMeta['themeType'], ':account_id' => $user['account_id']
':guild_id'=>$userInfo['guild_id'] )
) );
); $sumValue = myself()->_getSelfMysql()->execQuery(
if ($myValue && $sumValue ){ 'SELECT guild_id,SUM(value) AS value FROM t_rank_activity ' .
$myAward['rewardNum'] = $myValue[0]['value']/$sumValue[0]['value']*$guildAward['rewardNum']; '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( error_log('********** GUILD RANKING SETTLEMENT SUCCESS ***********');
'myAward' => $myAward,
'ranking' => 'BattleRanking',
'number'=>$myAward['rewardNum']+$myAward['extraRewardNum']
)));
$this->_rspOk(); $this->_rspOk();
};break; };break;
default : { default : {

View File

@ -52,10 +52,10 @@ class EventRanking extends BaseModel
return $valData['value']; return $valData['value'];
} }
public static function setV($x, $y, $defVal) public static function setV($accountId,$x, $y, $defVal)
{ {
$key = self::calcKey($x, $y); $key = self::calcKey($x, $y);
self::internalSetV($x, $y, $defVal); self::internalSetV($accountId,$x, $y, $defVal);
} }
public static function calcKey($x, $y) public static function calcKey($x, $y)
@ -66,7 +66,7 @@ class EventRanking extends BaseModel
return $key; return $key;
} }
private static function internalSetV($x, $y, $val) private static function internalSetV($accountId,$x, $y, $val)
{ {
if (!is_int($x) || !is_int($y)) { if (!is_int($x) || !is_int($y)) {
die('internalSet type error'); die('internalSet type error');
@ -85,7 +85,7 @@ class EventRanking extends BaseModel
(myself()->_getSelfMysql(), (myself()->_getSelfMysql(),
't_event_ranking', 't_event_ranking',
array( array(
'account_id' => myself()->_getAccountId(), 'account_id' => $accountId,
'wave' => $x, 'wave' => $x,
'type' => $y 'type' => $y
), ),
@ -94,7 +94,7 @@ class EventRanking extends BaseModel
'modifytime' => myself()->_getNowTime() 'modifytime' => myself()->_getNowTime()
), ),
array( array(
'account_id' => myself()->_getAccountId(), 'account_id' => $accountId,
'wave' => $x, 'wave' => $x,
'type' => $y, 'type' => $y,
'value' => $val, 'value' => $val,

View File

@ -26,7 +26,7 @@ class Guild extends BaseModel
'guild_id' => $row['guild_id'], 'guild_id' => $row['guild_id'],
'guild_name' => $row['guild_name'], 'guild_name' => $row['guild_name'],
'guild_badge' => $row['guild_badge'], 'guild_badge' => $row['guild_badge'],
'owner_id' => $row['guild_badge'], 'owner_id' => $row['owner_id'],
'owner_name' => $row['owner_name'], 'owner_name' => $row['owner_name'],
); );
} }

View File

@ -24,6 +24,18 @@ class User extends BaseModel {
return $row ? $row : null; 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) public static function show($row)
{ {
return array( return array(