Tree преди 1 месец
родител
ревизия
28b130e6ac

+ 12 - 12
app/Http/Controllers/Game/ExtensionsController.php

@@ -288,14 +288,14 @@ class ExtensionsController
         }
 
         if($activity->TotalKan == 0){
-            $result = rand(9400,9600);
+            $result = rand(3400,3600);
             $type = 2;
         }else{
             if($newTimes){
-                if($money<=9600){
+                if($money<=3600){
                     $type=2;
                     $result = rand(150,200);
-                }elseif ($money>=9601 && $money<=9800){
+                }elseif ($money>=3601 && $money<=3800){
                     if(rand(0,100)>=50){
                         $type=2;
                         $result = rand(20,100);
@@ -303,7 +303,7 @@ class ExtensionsController
                         $type=4;
                         $result = 100;
                     }
-                }elseif ($money>=9801 && $money<=9950){
+                }elseif ($money>=3801 && $money<=3950){
                     if(rand(0,100)>=0){
                         $type=2;
                         $result = rand(2,12);
@@ -311,20 +311,20 @@ class ExtensionsController
                         $type=1;
                         $result = 0;
                     }
-                }elseif ($money>=9951 && $money<=9999){
+                }elseif ($money>=3951 && $money<=3999){
                     if(rand(0,100)>=0){
                         $type=2;
-                        $result = min(rand(1,2),10000-$money);
+                        $result = min(rand(1,2),4000-$money);
                     }else{
                         $type=1;
                         $result = 0;
                     }
                 }
             }else{
-                if($money<=9600){
+                if($money<=3600){
                     $type=2;
                     $result = rand(150,200);
-                }elseif ($money>=9601 && $money<=9800){
+                }elseif ($money>=3601 && $money<=3800){
                     if(rand(0,100)>=50){
                         $type=2;
                         $result = rand(10,50);
@@ -332,7 +332,7 @@ class ExtensionsController
                         $type=1;
                         $result = 0;
                     }
-                }elseif ($money>=9801 && $money<=9950){
+                }elseif ($money>=3801 && $money<=3950){
                     if(rand(0,100)>=60){
                         $type=2;
                         $result = rand(1,2);
@@ -340,7 +340,7 @@ class ExtensionsController
                         $type=1;
                         $result = 0;
                     }
-                }elseif ($money>=9951 && $money<=9999){
+                }elseif ($money>=3951 && $money<=3999){
                     $type=1;
                     $result = 0;
                 }
@@ -348,7 +348,7 @@ class ExtensionsController
 
         }
 
-        DB::connection('write')->table('agent.dbo.ActivityTurnplate')->where('UserID', $UserID)->update(['NewTimes'=> $newTimes?$activity->NewTimes-1:$activity->NewTimes,'OldTimes'=> (!$newTimes)?$activity->OldTimes-1:$activity->OldTimes,'Amount' => $money+$result,'State' =>$money+$result>=10000?1:0,'TotalKan' => $activity->TotalKan+1 ]);
+        DB::connection('write')->table('agent.dbo.ActivityTurnplate')->where('UserID', $UserID)->update(['NewTimes'=> $newTimes?$activity->NewTimes-1:$activity->NewTimes,'OldTimes'=> (!$newTimes)?$activity->OldTimes-1:$activity->OldTimes,'Amount' => $money+$result,'State' =>$money+$result>=4000?1:0,'TotalKan' => $activity->TotalKan+1 ]);
         SetNXLock::release($redisKey);
         return apiReturnSuc(['type' => $type,'bonus' => $result,'times' => $oldTimes+$newTimes-1,'collect_amount' => intval($money+$result)]);
 
@@ -381,7 +381,7 @@ class ExtensionsController
         DB::connection('write')->table('agent.dbo.ActivityTurnplateHistory')->insert($insertData);
 
         //领钱
-        DB::connection('write')->table('QPTreasureDB.dbo.GameScoreInfo')->where('UserID', $UserID)->increment('Score', 10000);
+        DB::connection('write')->table('QPTreasureDB.dbo.GameScoreInfo')->where('UserID', $UserID)->increment('Score', 4000);
 
         SetNXLock::release($redisKey);
         return apiReturnSuc(['bonus' => 10000]);

+ 4 - 0
app/Http/Controllers/Game/LoginController.php

@@ -22,6 +22,7 @@ use App\Models\SystemStatusInfo;
 use App\Models\Treasure\GameScoreInfo;
 use App\Notification\TelegramBot;
 use App\Services\StoredProcedure;
+use App\Services\VipService;
 use App\Util;
 use App\Utility\SetNXLock;
 use Carbon\Carbon;
@@ -252,6 +253,9 @@ class LoginController extends Controller
         $user = $request->globalUser;
         $user = GlobalUserInfo::toWebData($user);
         self::CheckTimeBonus($user);
+        
+        // 计算VIP等级
+        $user['vip'] = VipService::calculateVipLevel($user['UserID'] ?? 0);
 
         return apiReturnSuc($user);
     }

+ 1 - 74
app/Http/Controllers/Game/WebRouteController.php

@@ -130,7 +130,7 @@ class WebRouteController extends Controller
 
         }
         // 计算VIP等级
-        $user['vip'] = $this->calculateVipLevel($user['UserID'] ?? 0);
+        $user['vip'] = \App\Services\VipService::calculateVipLevel($user['UserID'] ?? 0);
         
 
 
@@ -336,79 +336,6 @@ 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)
     {

+ 84 - 0
app/Services/VipService.php

@@ -0,0 +1,84 @@
+<?php
+
+namespace App\Services;
+
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Redis;
+use Illuminate\Support\Facades\Log;
+
+class VipService
+{
+    /**
+     * 计算用户VIP等级
+     * 
+     * @param int $userId 用户ID
+     * @return int VIP等级
+     */
+    public static 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 = self::getVipLevelConfig();
+
+            // 根据充值金额查找对应的VIP等级
+            // 规则:找到 MinRecharge <= userRecharge < Recharge 的等级
+            $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
+     */
+    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;
+    }
+}