Tree il y a 1 mois
Parent
commit
f939cc1a21
2 fichiers modifiés avec 82 ajouts et 3 suppressions
  1. 81 2
      app/Http/Controllers/Game/WebRouteController.php
  2. 1 1
      app/Models/PrivateMail.php

+ 81 - 2
app/Http/Controllers/Game/WebRouteController.php

@@ -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();

+ 1 - 1
app/Models/PrivateMail.php

@@ -42,7 +42,7 @@ class PrivateMail extends Model
                 ->first();
             if ($OrderWithDraw && $OrderWithDraw->score_type == 1) {
                 $amount = 0;
-                $bonus = '';
+                $BonusString = '';
                 $params['amount'] = 0;
                 $params['bonus'] = '';
                 Log::info("private mail order_sn amount", $params);