运营活动结算
This commit is contained in:
parent
12d51341f2
commit
741b4327f7
@ -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(),
|
||||
]
|
||||
},
|
||||
|
||||
|
||||
]
|
||||
|
@ -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 ($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' => '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 ($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' => 'BattleRanking',
|
||||
'number'=>$myAward['rewardNum']+$myAward['extraRewardNum']
|
||||
)));
|
||||
}
|
||||
error_log('********** BATTLE RANKING SETTLEMENT SUCCESS ***********');
|
||||
$this->_rspOk();
|
||||
};break;
|
||||
case \services\RankActivityService::GUILD_TYPE : {
|
||||
@ -371,29 +366,33 @@ 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(
|
||||
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' => myself()->_getAccountId()
|
||||
':account_id' => $user['account_id']
|
||||
)
|
||||
);
|
||||
$sumValue = myself()->_getSelfMysql()->execQuery(
|
||||
@ -403,24 +402,33 @@ class EventRankingController extends BaseAuthedController
|
||||
array(
|
||||
':wave' => $lastRankingMeta['wave'],
|
||||
':type' => $lastRankingMeta['themeType'],
|
||||
':guild_id'=>$userInfo['guild_id']
|
||||
':guild_id' => $value['guild_id']
|
||||
)
|
||||
);
|
||||
if ($myValue && $sumValue ){
|
||||
$myAward['rewardNum'] = $myValue[0]['value']/$sumValue[0]['value']*$guildAward['rewardNum'];
|
||||
if (!$thisValue || !$sumValue) {
|
||||
error_log('该用户无贡献 : ' . $user['account_id'] . ' | 工会总收益有问题 : ' . $value['guild_id'] );
|
||||
continue;
|
||||
}
|
||||
$guildDb = Guild::find($userInfo['guild_id']);
|
||||
if ($guildDb && $guildDb['owner_id'] == myself()->_getAccountId() ){
|
||||
$myAward['extraRewardNum'] = $guildAward['extraRewardNum'];
|
||||
$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
|
||||
)
|
||||
));
|
||||
}
|
||||
$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 : {
|
||||
|
@ -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,
|
||||
|
@ -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'],
|
||||
);
|
||||
}
|
||||
|
@ -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(
|
||||
|
Loading…
x
Reference in New Issue
Block a user