优化排行榜:隐藏管理员 + 盖世神豪榜单位改为枚

- 所有榜单查询排除 user_level >= superLevel 的管理员
- 盖世神豪榜单位从'万'改为'枚'
- 缓存的查询也会过滤管理员(缓存到期后自动生效)
This commit is contained in:
2026-02-27 00:33:25 +08:00
parent a62eb3dd39
commit 8c05e0fb83
2 changed files with 12 additions and 5 deletions
+11 -4
View File
@@ -26,10 +26,14 @@ class LeaderboardController extends Controller
// 选用 remember 则在过期时自动执行闭包查询并重置缓存
$ttl = 60 * 15;
// 管理员等级阈值,排行榜中隐藏管理员
$superLevel = (int) \App\Models\Sysparam::getValue('superlevel', '100');
// 1. 境界榜 (以 user_level 为尊)
$topLevels = Cache::remember('leaderboard:top_levels', $ttl, function () {
$topLevels = Cache::remember('leaderboard:top_levels', $ttl, function () use ($superLevel) {
return User::select('id', 'username', 'usersf', 'user_level', 'sex')
->where('user_level', '>', 0)
->where('user_level', '<', $superLevel)
->orderByDesc('user_level')
->orderBy('id')
->limit(20)
@@ -37,9 +41,10 @@ class LeaderboardController extends Controller
});
// 2. 修为榜 (以 exp_num 为尊)
$topExp = Cache::remember('leaderboard:top_exp', $ttl, function () {
$topExp = Cache::remember('leaderboard:top_exp', $ttl, function () use ($superLevel) {
return User::select('id', 'username', 'usersf', 'exp_num', 'sex', 'user_level')
->where('exp_num', '>', 0)
->where('user_level', '<', $superLevel)
->orderByDesc('exp_num')
->orderBy('id')
->limit(20)
@@ -47,9 +52,10 @@ class LeaderboardController extends Controller
});
// 3. 财富榜 (以 jjb-交友币 为尊)
$topWealth = Cache::remember('leaderboard:top_wealth', $ttl, function () {
$topWealth = Cache::remember('leaderboard:top_wealth', $ttl, function () use ($superLevel) {
return User::select('id', 'username', 'usersf', 'jjb', 'sex', 'user_level')
->where('jjb', '>', 0)
->where('user_level', '<', $superLevel)
->orderByDesc('jjb')
->orderBy('id')
->limit(20)
@@ -57,9 +63,10 @@ class LeaderboardController extends Controller
});
// 4. 魅力榜 (以 meili 为尊)
$topCharm = Cache::remember('leaderboard:top_charm', $ttl, function () {
$topCharm = Cache::remember('leaderboard:top_charm', $ttl, function () use ($superLevel) {
return User::select('id', 'username', 'usersf', 'meili', 'sex', 'user_level')
->where('meili', '>', 0)
->where('user_level', '<', $superLevel)
->orderByDesc('meili')
->orderBy('id')
->limit(20)