= $level->MinRecharge && $userRecharge < $level->Recharge) { $vipLevel = $level->VIP; break; // 因为已按MinRecharge升序排列,可以提前退出 } } return intval($vipLevel); } catch (\Exception $e) { Log::error('VIP等级计算失败', [ 'user_id' => $userId, 'error' => $e->getMessage() ]); return 0; } } /** * 获取VIP等级配置(带缓存) * * @return \Illuminate\Support\Collection */ public static function getVipLevelConfig() { $cacheKey = 'vip_level_config'; // 尝试从Redis获取 if (Redis::exists($cacheKey)) { $data = Redis::get($cacheKey); return collect(json_decode($data)); } // 从数据库查询(按MinRecharge升序排列) $levels = DB::table('QPAccountsDB.dbo.ProtectLevel') ->orderBy('MinRecharge', 'asc') ->select('ID', 'VIP', 'MinRecharge', 'Recharge', 'WithdrawLimit', 'DailyWithdraws', 'GrantNum', 'LevelUpBonus') ->get(); // 缓存10分钟 Redis::setex($cacheKey, 600, json_encode($levels)); return $levels; } }