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, '排名'],
|
['ranked', 0, '排名'],
|
||||||
['user', UserSimple(), '用户信息'],
|
['user', UserSimple(), '用户信息'],
|
||||||
['value', 0, '存活时间 击杀数'],
|
['value', 0, '存活时间 击杀数'],
|
||||||
|
['rewardNum', 0, '奖励'],
|
||||||
|
['extraRewardNum', 0, '额外奖励'],
|
||||||
]
|
]
|
||||||
|
|
||||||
class RankingListEx(object):
|
class RankingListEx(object):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.fields = [
|
self.fields = [
|
||||||
['type', 0, '排行榜类型 1:存活时间 2:击杀数'],
|
['type', 0, '排行榜类型 1:击杀榜 2:吃鸡榜 3:场次榜 4:工会榜'],
|
||||||
|
['pages', 0, '总页数 0表示无需分页'],
|
||||||
['!rows', [RankingItemEx()], '排行榜'],
|
['!rows', [RankingItemEx()], '排行榜'],
|
||||||
['my_ranked', RankingItemEx(), '我的排名(如果ranked<1则表示自己未上榜)'],
|
['my_ranked', RankingItemEx(), '我的排名(如果ranked<1则表示自己未上榜)'],
|
||||||
]
|
]
|
||||||
@ -974,3 +977,14 @@ class NftTransaction(object):
|
|||||||
['time', 0, '时间'],
|
['time', 0, '时间'],
|
||||||
['status', 0, '1:已完成 2:等待中'],
|
['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',
|
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
|
||||||
`account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id',
|
`account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id',
|
||||||
`channel` int(11) NOT NULL DEFAULT '0' COMMENT 'channel',
|
`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',
|
`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 '创建时间',
|
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
|
||||||
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
|
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
|
||||||
PRIMARY KEY (`idx`),
|
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 `channel` (`channel`),
|
||||||
KEY `type` (`type`),
|
KEY `type` (`type`),
|
||||||
|
KEY `guild_id` (`guild_id`),
|
||||||
KEY `value` (`value`)
|
KEY `value` (`value`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!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()
|
private function updatePvpData()
|
||||||
{
|
{
|
||||||
|
|
||||||
error_log('updateBattleData1');
|
|
||||||
$this->rankActivityService->updateBattleData();
|
|
||||||
error_log('updateBattleData2');
|
error_log('updateBattleData2');
|
||||||
$hisBattleData = Battle::getMyBattleData();
|
$hisBattleData = Battle::getMyBattleData();
|
||||||
if (!isset($hisBattleData)) {
|
if (!isset($hisBattleData)) {
|
||||||
@ -850,16 +849,15 @@ class BattleDataService extends BaseService {
|
|||||||
'new_weaponPvpCeg2' => $weaponPvpCeg2,
|
'new_weaponPvpCeg2' => $weaponPvpCeg2,
|
||||||
)));
|
)));
|
||||||
$gold = $heroPvpCeg + $weaponPvpCeg1 + $weaponPvpCeg2;
|
$gold = $heroPvpCeg + $weaponPvpCeg1 + $weaponPvpCeg2;
|
||||||
|
error_log('updateBattleData1');
|
||||||
|
$this->rankActivityService->updateBattleData($gold);
|
||||||
if ($heroPvpCeg>0){
|
if ($heroPvpCeg>0){
|
||||||
// $this->_addNftActive($this->heroDto,1);
|
|
||||||
NftService::addNftActive($this->heroDto,1);
|
NftService::addNftActive($this->heroDto,1);
|
||||||
}
|
}
|
||||||
if ($weaponPvpCeg1>0){
|
if ($weaponPvpCeg1>0){
|
||||||
// $this->_addNftActive($this->weapon1Dto,2);
|
|
||||||
NftService::addNftActive($this->weapon1Dto,2);
|
NftService::addNftActive($this->weapon1Dto,2);
|
||||||
}
|
}
|
||||||
if ($weaponPvpCeg2>0){
|
if ($weaponPvpCeg2>0){
|
||||||
// $this->_addNftActive($this->weapon2Dto,2);
|
|
||||||
NftService::addNftActive($this->weapon2Dto,2);
|
NftService::addNftActive($this->weapon2Dto,2);
|
||||||
}
|
}
|
||||||
if ($gold > 0) {
|
if ($gold > 0) {
|
||||||
@ -1018,16 +1016,15 @@ class BattleDataService extends BaseService {
|
|||||||
'new_weaponPveCeg2' => $weaponPveCeg2,
|
'new_weaponPveCeg2' => $weaponPveCeg2,
|
||||||
)));
|
)));
|
||||||
$gold = $heroPveCeg + $weaponPveCeg1 + $weaponPveCeg2;
|
$gold = $heroPveCeg + $weaponPveCeg1 + $weaponPveCeg2;
|
||||||
|
error_log('updateBattleData1');
|
||||||
|
$this->rankActivityService->updateBattleData($gold);
|
||||||
if ($heroPveCeg>0){
|
if ($heroPveCeg>0){
|
||||||
// $this->_addNftActive($this->heroDto,1);
|
|
||||||
NftService::addNftActive($this->heroDto,1);
|
NftService::addNftActive($this->heroDto,1);
|
||||||
}
|
}
|
||||||
if ($weaponPveCeg1>0){
|
if ($weaponPveCeg1>0){
|
||||||
// $this->_addNftActive($this->weapon1Dto,2);
|
|
||||||
NftService::addNftActive($this->weapon1Dto,2);
|
NftService::addNftActive($this->weapon1Dto,2);
|
||||||
}
|
}
|
||||||
if ($weaponPveCeg2>0){
|
if ($weaponPveCeg2>0){
|
||||||
// $this->_addNftActive($this->weapon2Dto,2);
|
|
||||||
NftService::addNftActive($this->weapon2Dto,2);
|
NftService::addNftActive($this->weapon2Dto,2);
|
||||||
}
|
}
|
||||||
if ($gold > 0) {
|
if ($gold > 0) {
|
||||||
|
@ -12,6 +12,7 @@ require_once('mt/Parameter.php');
|
|||||||
require_once('mt/HeroQuality.php');
|
require_once('mt/HeroQuality.php');
|
||||||
require_once('mt/AttrHelper.php');
|
require_once('mt/AttrHelper.php');
|
||||||
require_once('mt/RankActivity.php');
|
require_once('mt/RankActivity.php');
|
||||||
|
require_once('mt/EventRanking.php');
|
||||||
|
|
||||||
require_once('models/Season.php');
|
require_once('models/Season.php');
|
||||||
require_once('models/Battle.php');
|
require_once('models/Battle.php');
|
||||||
@ -30,81 +31,159 @@ use models\Gun;
|
|||||||
|
|
||||||
class RankActivityService extends BaseService {
|
class RankActivityService extends BaseService {
|
||||||
|
|
||||||
const ALIVE_TYPE = 1;
|
const KILLS_TYPE = 1; //击杀榜
|
||||||
const KILLS_TYPE = 2;
|
const WINS_TYPE = 2; //吃鸡榜
|
||||||
const HERO_UPGRADE_LEVEL_TYPE = 3;
|
const BATTLES_TYPE = 3; //场次榜
|
||||||
const HERO_UPGRADE_QUALITY_TYPE = 4;
|
const GUILD_TYPE = 4; //工会榜
|
||||||
|
|
||||||
const OP_SUM = 1;
|
const OP_SUM = 1;
|
||||||
const OP_GREATEST = 2;
|
const OP_GREATEST = 2;
|
||||||
|
|
||||||
public function updateBattleData()
|
public function updateBattleData($gold)
|
||||||
{
|
{
|
||||||
$this->internalUpdateRankActivity(
|
if (SERVER_ENV != _ONLINE && myself()->_getChannel() == TAPTAP_CHANNEL) {
|
||||||
self::ALIVE_TYPE,
|
error_log('————————————游客无法参与排行活动——————————————');
|
||||||
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)) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
$userDb = myself()->_getOrmUserInfo();
|
||||||
if ($val > $meta['limit']) {
|
$currentRankingMeta = mt\EventRanking::getCurrentRanking();
|
||||||
$val = $meta['limit'];
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
// $this->internalUpdateRankActivity(
|
||||||
SqlHelper::upsert
|
// self::ALIVE_TYPE,
|
||||||
(myself()->_getSelfMysql(),
|
// getReqVal('alive_time', 0) / 1000,
|
||||||
't_rank_activity',
|
// self::OP_SUM);
|
||||||
array(
|
// $this->internalUpdateRankActivity(
|
||||||
'account_id' => myself()->_getAccountId(),
|
// self::KILLS_TYPE,
|
||||||
'type' => $type
|
// getReqVal('kills', 0),
|
||||||
),
|
// self::OP_SUM);
|
||||||
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()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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