|
|
@@ -129,7 +129,12 @@ class WebRouteController extends Controller
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- $user['vip'] = 0;
|
|
|
+ // 计算VIP等级
|
|
|
+ $user['vip'] = $this->calculateVipLevel($user['UserID'] ?? 0);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
//LoginController::CheckTimeBonus($user);
|
|
|
|
|
|
@@ -160,7 +165,7 @@ class WebRouteController extends Controller
|
|
|
|
|
|
$registerBonus = SystemStatusInfo::OnlyGetCacheValue('GrantScoreCountNew') ?? 1000;
|
|
|
|
|
|
- $recommendGame = '/game/pgsoft/lunch?gid=68';
|
|
|
+ $recommendGame = '/game/931';
|
|
|
|
|
|
$data['conf']=[
|
|
|
'bb'=>$bb,
|
|
|
@@ -331,6 +336,80 @@ class WebRouteController extends Controller
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 计算用户VIP等级
|
|
|
+ *
|
|
|
+ * @param int $userId 用户ID
|
|
|
+ * @return int VIP等级
|
|
|
+ */
|
|
|
+ private function calculateVipLevel($userId)
|
|
|
+ {
|
|
|
+ if (!$userId) {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 获取用户累计充值金额(从 YN_VIPAccount 表)
|
|
|
+ $userRecharge = DB::table('QPAccountsDB.dbo.YN_VIPAccount')
|
|
|
+ ->where('UserID', $userId)
|
|
|
+ ->value('Recharge') ?? 0;
|
|
|
+
|
|
|
+ // 如果没有充值记录,返回VIP 0
|
|
|
+ if ($userRecharge <= 0) {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取VIP等级配置(从 ProtectLevel 表)
|
|
|
+ $vipLevels = $this->getVipLevelConfig();
|
|
|
+
|
|
|
+ // 根据充值金额查找对应的VIP等级
|
|
|
+ // 规则:找到 MinRecharge <= userRecharge 的最高等级
|
|
|
+ $vipLevel = 0;
|
|
|
+ foreach ($vipLevels as $level) {
|
|
|
+ if ($userRecharge >= $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
|
|
|
+ */
|
|
|
+ private 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;
|
|
|
+ }
|
|
|
+
|
|
|
public function testScoreChange(Request $request)
|
|
|
{
|
|
|
$user=$request->user();
|