运营活动结算

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(), '排行榜数据']
]
},
{
'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,
'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 : {

View File

@ -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,

View File

@ -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'],
);
}

View File

@ -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(