fix(tongji): 恢复游戏进度并完善周榜
This commit is contained in:
@@ -44,7 +44,10 @@ class TcmController extends BaseApiController
|
||||
/** 获取当前登录用户的控糖消消乐每周7人同行榜。 */
|
||||
public function gameWeeklyLeaderboard()
|
||||
{
|
||||
$result = GamePlatformLogic::leaderboard((int) $this->userId);
|
||||
$result = GamePlatformLogic::leaderboard(
|
||||
(int) $this->userId,
|
||||
(string) $this->request->get('session_key', '')
|
||||
);
|
||||
if ($result === false) {
|
||||
return $this->fail(GamePlatformLogic::getError());
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ class GamePlatformLogic
|
||||
/**
|
||||
* 获取当前用户所在的真实周榜;首次进入会分配到当周同性别7人组。
|
||||
*/
|
||||
public static function leaderboard(int $userId): array|false
|
||||
public static function leaderboard(int $userId, string $sessionKey = ''): array|false
|
||||
{
|
||||
self::$error = '';
|
||||
if ($userId <= 0) {
|
||||
@@ -43,7 +43,16 @@ class GamePlatformLogic
|
||||
$score = self::ensureWeeklyScore($userId, self::weekStart());
|
||||
$inviteCode = self::ensureShareInvite($userId, self::weekStart());
|
||||
Db::commit();
|
||||
return self::buildLeaderboard((int) $score['group_id'], $userId, $inviteCode);
|
||||
$result = self::buildLeaderboard((int) $score['group_id'], $userId, $inviteCode);
|
||||
$sessionKey = trim($sessionKey);
|
||||
if (preg_match('/^[A-Za-z0-9_-]{16,64}$/', $sessionKey)) {
|
||||
$confirmed = Db::name('tcm_game_session')
|
||||
->where('session_key', $sessionKey)
|
||||
->where('user_id', $userId)
|
||||
->value('learned_count');
|
||||
$result['confirmed_session_learned'] = max(0, (int) $confirmed);
|
||||
}
|
||||
return $result;
|
||||
} catch (\Throwable $e) {
|
||||
Db::rollback();
|
||||
self::logException('leaderboard', $e);
|
||||
|
||||
Reference in New Issue
Block a user