ADD rangkingActivity
This commit is contained in:
parent
134ab6aeeb
commit
ed2c029e8d
23
doc/EventRanking.py
Normal file
23
doc/EventRanking.py
Normal file
@ -0,0 +1,23 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import _common
|
||||
|
||||
class EventRanking(object):
|
||||
|
||||
def __init__(self):
|
||||
self.apis = [
|
||||
{
|
||||
'name': 'eventRankingList',
|
||||
'desc': '排行活动列表',
|
||||
'group': 'History',
|
||||
'url': 'webapp/index.php?c=Battle&a=eventRankingList',
|
||||
'params': [
|
||||
_common.ReqHead(),
|
||||
],
|
||||
'response': [
|
||||
_common.RspHead(),
|
||||
['!list', [_common.EventRankingList()], '活动列表'],
|
||||
]
|
||||
},
|
||||
|
||||
]
|
@ -587,13 +587,16 @@ class RankingItemEx(object):
|
||||
['ranked', 0, '排名'],
|
||||
['user', UserSimple(), '用户信息'],
|
||||
['value', 0, '存活时间 击杀数'],
|
||||
['rewardNum', 0, '奖励'],
|
||||
['extraRewardNum', 0, '额外奖励'],
|
||||
]
|
||||
|
||||
class RankingListEx(object):
|
||||
|
||||
def __init__(self):
|
||||
self.fields = [
|
||||
['type', 0, '排行榜类型 1:存活时间 2:击杀数'],
|
||||
['type', 0, '排行榜类型 1:击杀榜 2:吃鸡榜 3:场次榜 4:工会榜'],
|
||||
['pages', 0, '总页数 0表示无需分页'],
|
||||
['!rows', [RankingItemEx()], '排行榜'],
|
||||
['my_ranked', RankingItemEx(), '我的排名(如果ranked<1则表示自己未上榜)'],
|
||||
]
|
||||
@ -974,3 +977,14 @@ class NftTransaction(object):
|
||||
['time', 0, '时间'],
|
||||
['status', 0, '1:已完成 2:等待中'],
|
||||
]
|
||||
|
||||
class EventRankingList(object):
|
||||
|
||||
def __init__(self):
|
||||
self.fields = [
|
||||
['id', 0, 'id'],
|
||||
['wave', 0, '活动轮数'],
|
||||
['themeType', 0, '1 击杀榜,2 吃鸡榜,3 场次榜,4 工会榜'],
|
||||
['themeName', '', '活动名称'],
|
||||
['status', 0, '0:已结束 1:进行中 2:等待中'],
|
||||
]
|
||||
|
@ -549,14 +549,17 @@ CREATE TABLE `t_rank_activity` (
|
||||
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
|
||||
`account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id',
|
||||
`channel` int(11) NOT NULL DEFAULT '0' COMMENT 'channel',
|
||||
`guild_id` varchar(60) NOT NULL DEFAULT '' COMMENT '工会id',
|
||||
`wave` int(11) NOT NULL DEFAULT '0' COMMENT 'wave',
|
||||
`type` int(11) NOT NULL DEFAULT '0' COMMENT 'type',
|
||||
`value` bigint NOT NULL DEFAULT '0' COMMENT 'value',
|
||||
`value` double NOT NULL DEFAULT '0' COMMENT 'value',
|
||||
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
|
||||
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
|
||||
PRIMARY KEY (`idx`),
|
||||
UNIQUE KEY `account_id_type` (`account_id`, `type`),
|
||||
UNIQUE KEY `account_id_wave_type` (`account_id`, `wave`, `type`),
|
||||
KEY `channel` (`channel`),
|
||||
KEY `type` (`type`),
|
||||
KEY `guild_id` (`guild_id`),
|
||||
KEY `value` (`value`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
264
webapp/controller/EventRankingController.class.php
Normal file
264
webapp/controller/EventRankingController.class.php
Normal file
@ -0,0 +1,264 @@
|
||||
<?php
|
||||
require_once('models/User.php');
|
||||
|
||||
require_once('mt/EventRanking.php');
|
||||
|
||||
require_once('services/RankActivityService.php');
|
||||
|
||||
use models\User;
|
||||
class EventRankingController extends BaseAuthedController
|
||||
{
|
||||
public function eventRankingList(){
|
||||
$this->_rspData(array(
|
||||
'list' => mt\EventRanking::getEventRankingList()
|
||||
));
|
||||
}
|
||||
|
||||
public function activityRankingList()
|
||||
{
|
||||
$wave = getReqVal('wave', 0);
|
||||
$type = getReqVal('type', 0);
|
||||
if (!$wave || !$type){
|
||||
$this->_rspErr(1, "error param");
|
||||
return;
|
||||
}
|
||||
|
||||
$rankingData = $this->internalGetActivityRankData($wave,$type);
|
||||
$this->_rspData(
|
||||
array(
|
||||
'ranking_list'=>$rankingData
|
||||
)
|
||||
);
|
||||
}
|
||||
private $myRanked = array();
|
||||
private function internalGetActivityRankData($wave,$type){
|
||||
$page = getReqVal('page', 1);
|
||||
$size = getReqVal('size', 100);
|
||||
$userInfo = $this->_getOrmUserInfo();
|
||||
$this->myRanked = array(
|
||||
'ranked' => -1,
|
||||
'user' => User::toSimple($userInfo),
|
||||
'value' => 0,
|
||||
'rewardNum'=>0,
|
||||
'extraRewardNum'=>0,
|
||||
'modifytime' => 0,
|
||||
);
|
||||
$rankingList = array();
|
||||
$pages = 0;
|
||||
switch ($type){
|
||||
case 1:{
|
||||
$rows = myself()->_getSelfMysql()->execQuery(
|
||||
// 'SELECT t1.*,@rownum := @rownum + 1 AS ranked FROM ' .
|
||||
// '(SELECT * FROM t_rank_activity WHERE wave=:wave AND type=:type ORDER BY value DESC LIMIT 1200) t1,'.
|
||||
// '( SELECT @rownum := 0 ) t2',
|
||||
'SELECT * FROM t_rank_activity ' .
|
||||
'WHERE wave=:wave AND type=:type ' .
|
||||
'ORDER BY value DESC ' .
|
||||
"LIMIT 1200",
|
||||
array(
|
||||
':wave' => $wave,
|
||||
':type' => $type
|
||||
)
|
||||
);
|
||||
$data = $this->paginate($rows,$page,$size);
|
||||
$pages = $data['pages'];
|
||||
$rankingList = $data['lists'];
|
||||
// $pages = ceil(count($rows)/$size)>1?ceil(count($rows)/$size):0;
|
||||
// $offset=($page-1)*$size;
|
||||
// $ranked = 0;
|
||||
// foreach ($rows as $row){
|
||||
// $ranked+=1;
|
||||
// if ($row['account_id'] == $myRanked['user']['account_id']) {
|
||||
// $myRanked['ranked'] = $ranked;
|
||||
// $myRanked['value'] = $row['value'];
|
||||
// $myRanked['modifytime'] = $row['modifytime'];
|
||||
// }
|
||||
// if ($offset<$ranked && $ranked<=$offset+$size){
|
||||
// array_push($rankingList, array(
|
||||
// 'ranked' => $ranked,
|
||||
// 'user' => User::toSimple(User::find($row['account_id'])),
|
||||
// 'value' => $row['value'],
|
||||
// 'modifytime' => $row['modifytime'],
|
||||
// ));
|
||||
// }
|
||||
// }
|
||||
} break;
|
||||
case 2:{
|
||||
$rows = myself()->_getSelfMysql()->execQuery(
|
||||
'SELECT * FROM t_rank_activity ' .
|
||||
'WHERE wave=:wave AND type=:type ' .
|
||||
'ORDER BY value DESC ' .
|
||||
"LIMIT 10",
|
||||
array(
|
||||
':wave' => $wave,
|
||||
':type' => $type
|
||||
)
|
||||
);
|
||||
$ranked = 0;
|
||||
foreach ($rows as $row) {
|
||||
$ranked += 1;
|
||||
if ($row['account_id'] == myself()->_getAccountId()) {
|
||||
$this->myRanked['ranked'] = $ranked;
|
||||
$this->myRanked['value'] = $row['value'];
|
||||
$this->myRanked['rewardNum'] = $this->celAward($wave,$type,$ranked)['rewardNum'];
|
||||
$this->myRanked['extraRewardNum'] = $this->celAward($wave,$type,$ranked)['extraRewardNum'];
|
||||
$this->myRanked['modifytime'] = $row['modifytime'];
|
||||
}
|
||||
array_push($rankingList, array(
|
||||
'ranked' => $ranked,
|
||||
'user' => User::toSimple(User::find($row['account_id'])),
|
||||
'value' => $row['value'],
|
||||
'rewardNum' => $this->celAward($row['wave'],$row['type'],$ranked)['rewardNum'],
|
||||
'extraRewardNum' => $this->celAward($row['wave'],$row['type'],$ranked)['extraRewardNum'],
|
||||
'modifytime' => $row['modifytime'],
|
||||
));
|
||||
}
|
||||
} break;
|
||||
case 3:{
|
||||
$rows = myself()->_getSelfMysql()->execQuery(
|
||||
'SELECT * FROM t_rank_activity ' .
|
||||
'WHERE wave=:wave AND type=:type ' .
|
||||
'ORDER BY value DESC ' .
|
||||
"LIMIT 1800",
|
||||
array(
|
||||
':wave' => $wave,
|
||||
':type' => $type
|
||||
)
|
||||
);
|
||||
$data = $this->paginate($rows,$page,$size);
|
||||
$pages = $data['pages'];
|
||||
$rankingList = $data['lists'];
|
||||
// $pages = ceil(count($rows)/$size)>1?ceil(count($rows)/$size):0;
|
||||
// $offset=($page-1)*$size;
|
||||
// $ranked = 0;
|
||||
// foreach ($rows as $row){
|
||||
// $ranked+=1;
|
||||
// if ($row['account_id'] == $myRanked['user']['account_id']) {
|
||||
// $myRanked['ranked'] = $ranked;
|
||||
// $myRanked['value'] = $row['value'];
|
||||
// $myRanked['modifytime'] = $row['modifytime'];
|
||||
// }
|
||||
// if ($offset<$ranked && $ranked<=$offset+$size){
|
||||
// array_push($rankingList, array(
|
||||
// 'ranked' => $ranked,
|
||||
// 'user' => User::toSimple(User::find($row['account_id'])),
|
||||
// 'value' => $row['value'],
|
||||
// 'modifytime' => $row['modifytime'],
|
||||
// ));
|
||||
// }
|
||||
// }
|
||||
} break;
|
||||
case 4:{
|
||||
$rows = myself()->_getSelfMysql()->execQuery(
|
||||
'SELECT guild_id,SUM(value) AS value FROM t_rank_activity ' .
|
||||
'WHERE wave=:wave AND type=:type ' .
|
||||
'GROUP BY guild_id '.
|
||||
'ORDER BY value DESC ' .
|
||||
"LIMIT 10",
|
||||
array(
|
||||
':wave' => $wave,
|
||||
':type' => $type
|
||||
)
|
||||
);
|
||||
$ranked = 0;
|
||||
// print_r($userInfo);die;
|
||||
foreach ($rows as $row) {
|
||||
$ranked += 1;
|
||||
if (!$userInfo['guild_id']){
|
||||
$this->myRanked = array();
|
||||
}else if($userInfo['guild_id'] && $userInfo['guild_id'] == $row['guild_id']){
|
||||
$this->myRanked['ranked'] = $ranked;
|
||||
$this->myRanked['user'] = $row['guild_id'];
|
||||
$this->myRanked['value'] = $row['value'];
|
||||
$this->myRanked['rewardNum'] = $this->celAward($wave,$type,$ranked)['rewardNum'];
|
||||
$this->myRanked['extraRewardNum'] = $this->celAward($wave,$type,$ranked)['extraRewardNum'];
|
||||
$this->myRanked['modifytime'] = $row['modifytime'];
|
||||
}else{
|
||||
// $this->myRanked['value'] = $row['value'];
|
||||
// $this->myRanked['user'] = $row['guild_id'];
|
||||
}
|
||||
array_push($rankingList, array(
|
||||
'ranked' => $ranked,
|
||||
'user' => $row['guild_id'],
|
||||
'value' => $row['value'],
|
||||
'rewardNum' => $this->celAward($wave,$type,$ranked)['rewardNum'],
|
||||
'extraRewardNum' => $this->celAward($wave,$type,$ranked)['extraRewardNum'],
|
||||
'modifytime' => $row['modifytime'],
|
||||
));
|
||||
}
|
||||
} break;
|
||||
}
|
||||
$rankingData = array(
|
||||
'type' => $type,
|
||||
'pages' => $pages,
|
||||
'rows' => $rankingList,
|
||||
'my_ranked' => $this->myRanked
|
||||
);
|
||||
return $rankingData;
|
||||
// print_r($rankingData);die;
|
||||
}
|
||||
|
||||
private function paginate($rows,$page,$size){
|
||||
$rankingList = array();
|
||||
$pages = ceil(count($rows)/$size)>1?ceil(count($rows)/$size):0;
|
||||
$offset=($page-1)*$size;
|
||||
$ranked = 0;
|
||||
foreach ($rows as $row){
|
||||
$ranked+=1;
|
||||
if ($row['account_id'] == myself()->_getAccountId()) {
|
||||
$this->myRanked['ranked'] = $ranked;
|
||||
$this->myRanked['value'] = $row['value'];
|
||||
$this->myRanked['rewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['rewardNum'];
|
||||
$this->myRanked['extraRewardNum'] = $this->celAward($row['wave'],$row['type'],$ranked)['extraRewardNum'];
|
||||
$this->myRanked['modifytime'] = $row['modifytime'];
|
||||
}
|
||||
if ($offset<$ranked && $ranked<=$offset+$size){
|
||||
array_push($rankingList, array(
|
||||
'ranked' => $ranked,
|
||||
'user' => User::toSimple(User::find($row['account_id'])),
|
||||
'value' => $row['value'],
|
||||
'rewardNum' => $this->celAward($row['wave'],$row['type'],$ranked)['rewardNum'],
|
||||
'extraRewardNum' => $this->celAward($row['wave'],$row['type'],$ranked)['extraRewardNum'],
|
||||
'modifytime' => $row['modifytime'],
|
||||
));
|
||||
}
|
||||
}
|
||||
return array(
|
||||
'pages' => $pages,
|
||||
'lists' => $rankingList
|
||||
);
|
||||
}
|
||||
|
||||
private function celAward($wave,$type,$ranked){
|
||||
$rankingMeta = \mt\EventRanking::findByWaveOrType($wave,$type);
|
||||
$rewardNum = 0;
|
||||
$extraRewardNum = 0;
|
||||
if ($rankingMeta){
|
||||
$rewardArr = explode('|',$rankingMeta['reward']);
|
||||
$extraRewardArr = explode('|',$rankingMeta['extraReward']);
|
||||
if($rewardArr){
|
||||
foreach ($rewardArr as $value){
|
||||
$temp = explode(',',$value);
|
||||
if ($ranked<=$temp[0]){
|
||||
$rewardNum+=$temp[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if($extraRewardArr){
|
||||
foreach ($extraRewardArr as $val){
|
||||
$temp = explode(',',$val);
|
||||
if ($ranked == $temp[0]){
|
||||
$extraRewardNum+=$temp[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return array(
|
||||
'rewardNum' => $rewardNum,
|
||||
'extraRewardNum' => $extraRewardNum
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
68
webapp/mt/EventRanking.php
Normal file
68
webapp/mt/EventRanking.php
Normal file
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace mt;
|
||||
|
||||
|
||||
class EventRanking
|
||||
{
|
||||
public static function findByWaveOrType($wave,$type){
|
||||
$arr = array();
|
||||
foreach (self::getMetaList() as $meta) {
|
||||
if ($meta['wave'] == $wave && $meta['themeType'] == $type ){
|
||||
$arr = $meta;
|
||||
}
|
||||
}
|
||||
return $arr;
|
||||
}
|
||||
|
||||
public static function getEventRankingList(){
|
||||
$currentMeta = self::getCurrentRanking();
|
||||
$wave = $currentMeta?$currentMeta['wave']:1;
|
||||
$list = array();
|
||||
foreach (self::getMetaList() as $meta) {
|
||||
if ($meta['wave'] == $wave){
|
||||
array_push($list,self::setState($meta));
|
||||
}
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
|
||||
public static function getCurrentRanking()
|
||||
{
|
||||
foreach (self::getMetaList() as $meta) {
|
||||
if (myself()->_getNowTime() >= strtotime($meta['startTime']) &&
|
||||
myself()->_getNowTime() <= strtotime($meta['endTime'])) {
|
||||
return $meta;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected static function setState($meta){
|
||||
$row = array(
|
||||
'id' => $meta['id'],
|
||||
'wave' => $meta['wave'],
|
||||
'themeType' => $meta['themeType'],
|
||||
'themeName' => $meta['themeName'],
|
||||
);
|
||||
$now = myself()->_getNowTime();
|
||||
switch ($now){
|
||||
case $now < strtotime($meta['startTime'] ) : $row['status'] = 2;break;
|
||||
case $now >= strtotime($meta['startTime']) && $now <= strtotime($meta['endTime']) : $row['status'] = 1;break;
|
||||
case $now >= strtotime($meta['endTime']) : $row['status'] = 0;break;
|
||||
}
|
||||
return $row;
|
||||
}
|
||||
|
||||
protected static function getMetaList()
|
||||
{
|
||||
if (!self::$metaList) {
|
||||
self::$metaList = getMetaTable('eventRanking@EventRanking.php');
|
||||
}
|
||||
return self::$metaList;
|
||||
}
|
||||
|
||||
protected static $metaList;
|
||||
|
||||
}
|
@ -555,8 +555,7 @@ class BattleDataService extends BaseService {
|
||||
private function updatePvpData()
|
||||
{
|
||||
|
||||
error_log('updateBattleData1');
|
||||
$this->rankActivityService->updateBattleData();
|
||||
|
||||
error_log('updateBattleData2');
|
||||
$hisBattleData = Battle::getMyBattleData();
|
||||
if (!isset($hisBattleData)) {
|
||||
@ -850,16 +849,15 @@ class BattleDataService extends BaseService {
|
||||
'new_weaponPvpCeg2' => $weaponPvpCeg2,
|
||||
)));
|
||||
$gold = $heroPvpCeg + $weaponPvpCeg1 + $weaponPvpCeg2;
|
||||
error_log('updateBattleData1');
|
||||
$this->rankActivityService->updateBattleData($gold);
|
||||
if ($heroPvpCeg>0){
|
||||
// $this->_addNftActive($this->heroDto,1);
|
||||
NftService::addNftActive($this->heroDto,1);
|
||||
}
|
||||
if ($weaponPvpCeg1>0){
|
||||
// $this->_addNftActive($this->weapon1Dto,2);
|
||||
NftService::addNftActive($this->weapon1Dto,2);
|
||||
}
|
||||
if ($weaponPvpCeg2>0){
|
||||
// $this->_addNftActive($this->weapon2Dto,2);
|
||||
NftService::addNftActive($this->weapon2Dto,2);
|
||||
}
|
||||
if ($gold > 0) {
|
||||
@ -1018,16 +1016,15 @@ class BattleDataService extends BaseService {
|
||||
'new_weaponPveCeg2' => $weaponPveCeg2,
|
||||
)));
|
||||
$gold = $heroPveCeg + $weaponPveCeg1 + $weaponPveCeg2;
|
||||
error_log('updateBattleData1');
|
||||
$this->rankActivityService->updateBattleData($gold);
|
||||
if ($heroPveCeg>0){
|
||||
// $this->_addNftActive($this->heroDto,1);
|
||||
NftService::addNftActive($this->heroDto,1);
|
||||
}
|
||||
if ($weaponPveCeg1>0){
|
||||
// $this->_addNftActive($this->weapon1Dto,2);
|
||||
NftService::addNftActive($this->weapon1Dto,2);
|
||||
}
|
||||
if ($weaponPveCeg2>0){
|
||||
// $this->_addNftActive($this->weapon2Dto,2);
|
||||
NftService::addNftActive($this->weapon2Dto,2);
|
||||
}
|
||||
if ($gold > 0) {
|
||||
|
@ -12,6 +12,7 @@ require_once('mt/Parameter.php');
|
||||
require_once('mt/HeroQuality.php');
|
||||
require_once('mt/AttrHelper.php');
|
||||
require_once('mt/RankActivity.php');
|
||||
require_once('mt/EventRanking.php');
|
||||
|
||||
require_once('models/Season.php');
|
||||
require_once('models/Battle.php');
|
||||
@ -30,81 +31,159 @@ use models\Gun;
|
||||
|
||||
class RankActivityService extends BaseService {
|
||||
|
||||
const ALIVE_TYPE = 1;
|
||||
const KILLS_TYPE = 2;
|
||||
const HERO_UPGRADE_LEVEL_TYPE = 3;
|
||||
const HERO_UPGRADE_QUALITY_TYPE = 4;
|
||||
const KILLS_TYPE = 1; //击杀榜
|
||||
const WINS_TYPE = 2; //吃鸡榜
|
||||
const BATTLES_TYPE = 3; //场次榜
|
||||
const GUILD_TYPE = 4; //工会榜
|
||||
|
||||
const OP_SUM = 1;
|
||||
const OP_GREATEST = 2;
|
||||
|
||||
public function updateBattleData()
|
||||
public function updateBattleData($gold)
|
||||
{
|
||||
$this->internalUpdateRankActivity(
|
||||
self::ALIVE_TYPE,
|
||||
getReqVal('alive_time', 0) / 1000,
|
||||
self::OP_SUM);
|
||||
$this->internalUpdateRankActivity(
|
||||
self::KILLS_TYPE,
|
||||
getReqVal('kills', 0),
|
||||
self::OP_SUM);
|
||||
}
|
||||
|
||||
public function heroUpgradeQuality($quality)
|
||||
{
|
||||
$this->internalUpdateRankActivity(
|
||||
self::HERO_UPGRADE_QUALITY_TYPE,
|
||||
$quality,
|
||||
self::OP_GREATEST);
|
||||
}
|
||||
|
||||
public function heroUpgradeLevel($level)
|
||||
{
|
||||
$this->internalUpdateRankActivity(
|
||||
self::HERO_UPGRADE_LEVEL_TYPE,
|
||||
$level,
|
||||
self::OP_GREATEST);
|
||||
}
|
||||
|
||||
private function internalUpdateRankActivity($type, $val, $opt)
|
||||
{
|
||||
$meta = mt\RankActivity::get($type);
|
||||
if (!$meta || !mt\RankActivity::isActivityPeriod($meta)) {
|
||||
if (SERVER_ENV != _ONLINE && myself()->_getChannel() == TAPTAP_CHANNEL) {
|
||||
error_log('————————————游客无法参与排行活动——————————————');
|
||||
return;
|
||||
}
|
||||
|
||||
if ($val > $meta['limit']) {
|
||||
$val = $meta['limit'];
|
||||
$userDb = myself()->_getOrmUserInfo();
|
||||
$currentRankingMeta = mt\EventRanking::getCurrentRanking();
|
||||
if ($currentRankingMeta){
|
||||
switch ($currentRankingMeta['themeType']){
|
||||
case self::KILLS_TYPE :
|
||||
{
|
||||
$this->internalUpdateRankActivityNew(
|
||||
$currentRankingMeta,
|
||||
getReqVal('kills', 0),
|
||||
$userDb);
|
||||
}
|
||||
break;
|
||||
case self::WINS_TYPE :
|
||||
{
|
||||
$ranked = getReqVal('ranked', 0);
|
||||
if ($ranked == 1){
|
||||
$this->internalUpdateRankActivityNew(
|
||||
$currentRankingMeta,
|
||||
$ranked,
|
||||
$userDb);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case self::BATTLES_TYPE :
|
||||
{
|
||||
$this->internalUpdateRankActivityNew(
|
||||
$currentRankingMeta,
|
||||
1,
|
||||
$userDb);
|
||||
}
|
||||
break;
|
||||
case self::GUILD_TYPE :
|
||||
{
|
||||
if ($userDb['guild_id']){
|
||||
$this->internalUpdateRankActivityNew(
|
||||
$currentRankingMeta,
|
||||
$gold,
|
||||
$userDb);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SqlHelper::upsert
|
||||
(myself()->_getSelfMysql(),
|
||||
't_rank_activity',
|
||||
array(
|
||||
'account_id' => myself()->_getAccountId(),
|
||||
'type' => $type
|
||||
),
|
||||
array(
|
||||
'value' => function () use($val, $opt) {
|
||||
if ($opt == self::OP_SUM) {
|
||||
return "value + ${val}";
|
||||
} else if ($opt == self::OP_GREATEST) {
|
||||
return "GREATEST(value, ${val})";
|
||||
} else {
|
||||
return $val;
|
||||
}
|
||||
},
|
||||
'modifytime' => myself()->_getNowTime(),
|
||||
),
|
||||
array(
|
||||
'account_id' => myself()->_getAccountId(),
|
||||
'channel' => myself()->_getChannel(),
|
||||
'type' => $type,
|
||||
'value' => $val,
|
||||
'createtime' => myself()->_getNowTime(),
|
||||
'modifytime' => myself()->_getNowTime()
|
||||
)
|
||||
);
|
||||
// $this->internalUpdateRankActivity(
|
||||
// self::ALIVE_TYPE,
|
||||
// getReqVal('alive_time', 0) / 1000,
|
||||
// self::OP_SUM);
|
||||
// $this->internalUpdateRankActivity(
|
||||
// self::KILLS_TYPE,
|
||||
// getReqVal('kills', 0),
|
||||
// self::OP_SUM);
|
||||
}
|
||||
|
||||
private function internalUpdateRankActivityNew($meta, $val, $user){
|
||||
if (!$meta){
|
||||
return;
|
||||
}
|
||||
SqlHelper::upsert
|
||||
(myself()->_getSelfMysql(),
|
||||
't_rank_activity',
|
||||
array(
|
||||
'account_id' => myself()->_getAccountId(),
|
||||
'wave' => $meta['wave'],
|
||||
'type' => $meta['themeType'],
|
||||
),
|
||||
array(
|
||||
'value' => function () use($val) {
|
||||
return "value + ${val}";
|
||||
},
|
||||
'modifytime' => myself()->_getNowTime(),
|
||||
),
|
||||
array(
|
||||
'account_id' => myself()->_getAccountId(),
|
||||
'channel' => myself()->_getChannel(),
|
||||
'guild_id'=>$user['guild_id'],
|
||||
'wave' => $meta['wave'],
|
||||
'type' => $meta['themeType'],
|
||||
'value' => $val,
|
||||
'createtime' => myself()->_getNowTime(),
|
||||
'modifytime' => myself()->_getNowTime()
|
||||
)
|
||||
);
|
||||
}
|
||||
// public function heroUpgradeQuality($quality)
|
||||
// {
|
||||
// $this->internalUpdateRankActivity(
|
||||
// self::HERO_UPGRADE_QUALITY_TYPE,
|
||||
// $quality,
|
||||
// self::OP_GREATEST);
|
||||
// }
|
||||
//
|
||||
// public function heroUpgradeLevel($level)
|
||||
// {
|
||||
// $this->internalUpdateRankActivity(
|
||||
// self::HERO_UPGRADE_LEVEL_TYPE,
|
||||
// $level,
|
||||
// self::OP_GREATEST);
|
||||
// }
|
||||
|
||||
|
||||
// private function internalUpdateRankActivity($type, $val, $opt)
|
||||
// {
|
||||
// $meta = mt\RankActivity::get($type);
|
||||
// if (!$meta || !mt\RankActivity::isActivityPeriod($meta)) {
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// if ($val > $meta['limit']) {
|
||||
// $val = $meta['limit'];
|
||||
// }
|
||||
//
|
||||
// SqlHelper::upsert
|
||||
// (myself()->_getSelfMysql(),
|
||||
// 't_rank_activity',
|
||||
// array(
|
||||
// 'account_id' => myself()->_getAccountId(),
|
||||
// 'type' => $type
|
||||
// ),
|
||||
// array(
|
||||
// 'value' => function () use($val, $opt) {
|
||||
// if ($opt == self::OP_SUM) {
|
||||
// return "value + ${val}";
|
||||
// } else if ($opt == self::OP_GREATEST) {
|
||||
// return "GREATEST(value, ${val})";
|
||||
// } else {
|
||||
// return $val;
|
||||
// }
|
||||
// },
|
||||
// 'modifytime' => myself()->_getNowTime(),
|
||||
// ),
|
||||
// array(
|
||||
// 'account_id' => myself()->_getAccountId(),
|
||||
// 'channel' => myself()->_getChannel(),
|
||||
// 'type' => $type,
|
||||
// 'value' => $val,
|
||||
// 'createtime' => myself()->_getNowTime(),
|
||||
// 'modifytime' => myself()->_getNowTime()
|
||||
// )
|
||||
// );
|
||||
// }
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user