|
@@ -13,7 +13,7 @@ class RankProc {
|
|
|
|
|
|
/**
|
|
|
* 处理逻辑分发
|
|
|
- * 所有的Proc中必须有这样一个方法
|
|
|
+ * 所有的Proc中必须有这样一个方法
|
|
|
*/
|
|
|
static function procMain() {
|
|
|
switch (req()->cmd) {
|
|
@@ -42,21 +42,23 @@ class RankProc {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 查询指定榜单的top1
|
|
|
+ * 查询指定榜单的top1
|
|
|
* @param type $key
|
|
|
* @return type
|
|
|
*/
|
|
|
static function _RankGetTop1($key) {
|
|
|
$no1 = gMem()->zrevrange($key, 0, 0, true); # 取第一名信息
|
|
|
- foreach ($no1 as $uid => $score) { #
|
|
|
- $uinfo = UserProc::getUserInfo(req()->zoneid, $uid); # 读取玩家信息
|
|
|
- return array(# # 拼装玩家信息
|
|
|
- 'uid' => $uid,
|
|
|
- 'name' => my_null_default($uinfo->game->baseInfo->name, ""),
|
|
|
- 'level' => my_null_default($uinfo->game->baseInfo->level, 1),
|
|
|
- 'score' => my_null_default($score, 0),
|
|
|
- 'headImg' => my_null_default($uinfo->game->baseInfo->headImg, "")
|
|
|
- );
|
|
|
+ if (count($no1) > 0) {
|
|
|
+ foreach ($no1 as $uid => $score) { # 即使只有一行也用的遍历
|
|
|
+ $uinfo = UserProc::getUserInfo(req()->zoneid, $uid); # 读取玩家信息
|
|
|
+ return array(# # 拼装玩家信息
|
|
|
+ 'uid' => $uid,
|
|
|
+ 'name' => my_null_default($uinfo->game->baseInfo->name, ""),
|
|
|
+ 'level' => my_null_default($uinfo->game->baseInfo->level, 1),
|
|
|
+ 'score' => my_null_default($score, 0),
|
|
|
+ 'headImg' => my_null_default($uinfo->game->baseInfo->headImg, "")
|
|
|
+ );
|
|
|
+ }
|
|
|
}
|
|
|
return null; # 未找到
|
|
|
}
|
|
@@ -65,14 +67,18 @@ class RankProc {
|
|
|
// <editor-fold defaultstate="collapsed" desc=" 战斗力榜 ">
|
|
|
|
|
|
/**
|
|
|
- * [6607] 排行榜 - 查询战力榜突破记录
|
|
|
+ * [6607] 排行榜 - 查询战力榜突破记录
|
|
|
*/
|
|
|
static function GetFpowerBreachLog() {
|
|
|
$key = MemKey_GameRun::Game_Rank_FPowerBreakLog_hash(req()->zoneid); # redis key 战力榜突破记录
|
|
|
$kv = gMem()->hgetall($key);
|
|
|
$ret = array();
|
|
|
foreach ($kv as $condition => $uid) {
|
|
|
- $uinfo = UserProc::getUserInfo(req()->zoneid, $uid); # 读取玩家信息
|
|
|
+ $uinfo = UserProc::getUserInfo(req()->zoneid, $uid); # 读取玩家信息
|
|
|
+ if (empty($uinfo)) {
|
|
|
+ CLog::err("未找到战力突破榜玩家$uid");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
$ret[$condition] = array(# # 拼装玩家信息
|
|
|
'uid' => $uid,
|
|
|
'name' => my_null_default($uinfo->game->baseInfo->name, ""),
|
|
@@ -85,7 +91,7 @@ class RankProc {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * [6601]拉取战斗力榜单数据
|
|
|
+ * [6601]拉取战斗力榜单数据
|
|
|
*/
|
|
|
static function GetFpowerRank() {
|
|
|
$RowsPerPage = 10; # 常量:每页数据条数10条
|
|
@@ -95,13 +101,17 @@ class RankProc {
|
|
|
$key = MemKey_GameRun::Game_FightPowerRank_zset(req()->zoneid); # redis key
|
|
|
$startid = 0 + $RowsPerPage * ($pageId - 1); # 起始id
|
|
|
$endId = $startid + $RowsPerPage - 1; # 结束id
|
|
|
- if ($endId > $MaxRankId) { # 榜单长度
|
|
|
+ if ($endId > $MaxRankId) { # 榜单长度
|
|
|
$endId = $MaxRankId;
|
|
|
}
|
|
|
$uids = gMem()->zrevrange($key, $startid, $endId, true); # 取上榜玩家
|
|
|
$userInfos = array(); # 玩家信息
|
|
|
foreach ($uids as $uid => $score) {
|
|
|
- $uinfo = UserProc::getUserInfo(req()->zoneid, $uid); # 读取玩家信息
|
|
|
+ $uinfo = UserProc::getUserInfo(req()->zoneid, $uid); # 读取玩家信息
|
|
|
+ if (empty($uinfo)) {
|
|
|
+ CLog::err("未找到战力榜玩家$uid");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
$userInfos[] = array(# # 拼装玩家信息
|
|
|
'uid' => $uid,
|
|
|
'name' => my_null_default($uinfo->game->baseInfo->name, ""),
|
|
@@ -120,7 +130,7 @@ class RankProc {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * [6602]领取战斗力突破奖励
|
|
|
+ * [6602]领取战斗力突破奖励
|
|
|
*/
|
|
|
static function DrawFpowerBreakThrougReward() {
|
|
|
$rewardCondition = req()->paras[0]; # 领取奖励的档次条件(战斗力数值)
|
|
@@ -128,7 +138,7 @@ class RankProc {
|
|
|
$key = MemKey_GameRun::Game_FightPowerRank_zset(req()->zoneid); # redis key
|
|
|
$no1 = gMem()->zrevrange($key, 0, 0, true); # 取第一名信息
|
|
|
$_power = 0;
|
|
|
- foreach ($no1 as $uid => $power) { #
|
|
|
+ foreach ($no1 as $uid => $power) { #
|
|
|
$_power = $power; # 状元的站立值
|
|
|
break;
|
|
|
}
|
|
@@ -157,11 +167,11 @@ class RankProc {
|
|
|
'ranking' => $ranking + 1, # # 修正下排名(zset中是从零开始的)
|
|
|
'power' => intval($power)
|
|
|
);
|
|
|
- return Resp::ok($ret); # 返回
|
|
|
+ return Resp::ok($ret); # 返回
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * [6604] 排行榜查询战斗力最高值
|
|
|
+ * [6604] 排行榜查询战斗力最高值
|
|
|
*/
|
|
|
static function RankGetAllTop1() {
|
|
|
$key_fPower = MemKey_GameRun::Game_FightPowerRank_zset(req()->zoneid); # redis key 战力榜
|
|
@@ -203,7 +213,7 @@ class RankProc {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * [6606] 领取通关榜突破奖励
|
|
|
+ * [6606] 领取通关榜突破奖励
|
|
|
*/
|
|
|
static function DrawPassgateReward() {
|
|
|
$rewardCondition = req()->paras[0]; # 领取奖励的档次条件(战斗力数值)
|
|
@@ -212,7 +222,7 @@ class RankProc {
|
|
|
$key = MemKey_GameRun::Game_Rank_passgate_zset(req()->zoneid); # redis key
|
|
|
$no1 = gMem()->zrevrange($key, 0, 0, true); # 取第一名信息
|
|
|
$score = 0;
|
|
|
- foreach ($no1 as $uid => $_score) { #
|
|
|
+ foreach ($no1 as $uid => $_score) { #
|
|
|
$score = $_score; # 状元的通关记录
|
|
|
break;
|
|
|
}
|
|
@@ -242,7 +252,7 @@ class RankProc {
|
|
|
$key = MemKey_GameRun::Game_Rank_passgate_zset(req()->zoneid); # redis key
|
|
|
$startid = 0 + $RowsPerPage * ($pageId - 1); # 起始id
|
|
|
$endId = $startid + $RowsPerPage - 1; # 结束id
|
|
|
- if ($endId > $MaxRankId) { # 榜单长度
|
|
|
+ if ($endId > $MaxRankId) { # 榜单长度
|
|
|
$endId = $MaxRankId;
|
|
|
}
|
|
|
$uids = gMem()->zrevrange($key, $startid, $endId, true); # 取上榜玩家
|
|
@@ -279,11 +289,11 @@ class RankProc {
|
|
|
'ranking' => $ranking + 1, # # 修正下排名(zset中是从零开始的)
|
|
|
'power' => $power # # 通关记录
|
|
|
);
|
|
|
- return Resp::ok($ret); # 返回
|
|
|
+ return Resp::ok($ret); # 返回
|
|
|
}
|
|
|
|
|
|
// </editor-fold>
|
|
|
- //
|
|
|
+ //
|
|
|
// <editor-fold defaultstate="collapsed" desc=" 辅助方法 ">
|
|
|
|
|
|
/**
|