Tree 2 viikkoa sitten
vanhempi
sitoutus
abc4e21e0b

+ 10 - 4
app/Http/Controllers/Api/ApkController.php

@@ -263,7 +263,7 @@ class ApkController extends Controller
 
         if(isset($UserID)&&!empty($UserID)) {
             //直接代userid直接存
-            ApkService::saveCookie($UserID,$data,$ff);
+            ApkService::saveCookie($UserID,$data,'',$ff);
         }else {
             $key = "apktmp_{$url_sign}_$ip";
             $datas = [];
@@ -295,12 +295,18 @@ class ApkController extends Controller
     public function load_data_new(Request $request){
         $url_sign=$request->get('us')??"tf";
         $UserID=$request->get('UserID')??"";
+        $fpid=$request->get('bfp')??"";
         $ff=$request->get('ff')??"";
         $ip=IpLocation::getRealIp();
         $agent=$request->userAgent();
         $package=$request->get('package')??"";
 
         $agent=explode('AppleWebKit',$agent)[0];
+        //截取到最后一个分号Mozilla/5.0 (Linux; Android 16; SM-S936U Build/BP2A.250605.031.A3; wv) 去掉了wv和后面
+        $lastSemicolon = strrpos($agent, ';');
+        if ($lastSemicolon !== false) {
+            $agent = substr($agent, 0, $lastSemicolon);
+        }
 
         //如果存在100以上的自建key,使用appkey作为url_sign
         if(!empty($package)){
@@ -338,7 +344,7 @@ class ApkController extends Controller
             //规则1,只有一个数据,直接归1
             if(count($datas)==1){
                 Redis::del($key);
-                ApkService::saveCookie($UserID,$datas[0]);
+                ApkService::saveCookie($UserID,$datas[0],$fpid,$ff);
                 Util::writeLog("apkload", "onlyone:::".json_encode($datas[0]));
                 return apiReturnSuc($datas[0]);
             }
@@ -348,7 +354,7 @@ class ApkController extends Controller
                     array_splice($datas,$k,1);
                     Redis::set($key,json_encode($datas));
                     Redis::expire($key,7200);
-                    ApkService::saveCookie($UserID,$v,$ff);
+                    ApkService::saveCookie($UserID,$v,$fpid,$ff);
                     return apiReturnSuc($v);
                 }
             }
@@ -357,7 +363,7 @@ class ApkController extends Controller
         $recents=ApkService::getRecentsNew($url_sign);
         foreach ($recents as $k=>$v){
             if(strstr($v['agent'],$agent)||$ff==$v['ff']){
-                ApkService::saveCookie($UserID,$v,$ff);
+                ApkService::saveCookie($UserID,$v,$fpid,$ff);
                 array_splice($recents,$k,1);
                 ApkService::setRecentsNew($recents,$url_sign);
                 return apiReturnSuc($v);

+ 59 - 22
app/Http/Controllers/Game/ActivityController.php

@@ -69,7 +69,9 @@ class ActivityController extends Controller
     {
         $user = $request->user();
         if (!$user) {
-            return apiReturnFail('请先登录');
+//            return apiReturnFail('请先登录');
+            return apiReturnFail(['web.activity.login_required', __('messages.web.activity.login_required')]); // 请先登录
+
         }
 
         $service = new HolidayWheelService();
@@ -538,7 +540,9 @@ class ActivityController extends Controller
             ->value('Recharge') ?: 0;
 
         if ($user_recharge <= 0 &&!$request->input('is_test', 0)) {
-            return apiReturnFail('请先充值后再查看任务-'.$userId);
+//            return apiReturnFail('请先充值后再查看任务-'.$userId);
+            return apiReturnFail(['web.vip_task.recharge_first', __('messages.web.vip_task.recharge_first')]); // 请先充值后再查看任务
+
         }
 
         // 获取用户任务数据
@@ -585,8 +589,10 @@ class ActivityController extends Controller
                 'type' => $taskCfg['type'],
                 'completed' => $completed,
                 'status' => $completed ? 1 : 0,
-                'status_text' => $completed ? '已完成' : '未完成',
-                'progress' => min($taskData[$progressKey] ?? 0,$taskCfg['target']),
+//                'status_text' => $completed ? '已完成' : '未完成',
+                'status_text' => $completed ? __('messages.web.vip_task.completed') : __('messages.web.vip_task.not_completed'), // 已完成 : 未完成
+
+                'progress' => intval(min($taskData[$progressKey] ?? 0,$taskCfg['target'])),
                 'target' => $taskCfg['target']
             ];
         }
@@ -595,22 +601,30 @@ class ActivityController extends Controller
         $tasks = [
             'stage1' => [
                 'stage' => 1,
-                'title' => '阶段任务1',
+//                'title' => '阶段任务1',
+                'title' => __('messages.web.vip_task.stage1_title'), // 阶段任务1
+
                 'reward' => $taskConfig['stage1']['reward'],
                 'completed' => $taskData['stage1_completed'],
                 'reward_status' => $stage1_reward_status,
-                'reward_status_text' => ['不能领取', '待领取', '已领取'][$stage1_reward_status],
+//                'reward_status_text' => ['不能领取', '待领取', '已领取'][$stage1_reward_status],
+                'reward_status_text' => [__('messages.web.vip_task.cannot_claim'), __('messages.web.vip_task.can_claim'), __('messages.web.vip_task.claimed')][$stage1_reward_status], // 不能领取, 待领取, 已领取
+
                 'can_claim' => $stage1_reward_status === 1,
                 'tasks' => $stage1Tasks
             ],
             'stage2' => [
                 'stage' => 2,
-                'title' => '阶段任务2',
+//                'title' => '阶段任务2',
+                'title' => __('messages.web.vip_task.stage2_title'), // 阶段任务2
+
                 'reward' => $taskConfig['stage2']['reward'],
                 'unlocked' => $taskData['stage1_completed'],
                 'completed' => $taskData['stage2_completed'],
                 'reward_status' => $stage2_reward_status,
-                'reward_status_text' => ['不能领取', '待领取', '已领取'][$stage2_reward_status],
+//                'reward_status_text' => ['不能领取', '待领取', '已领取'][$stage2_reward_status],
+                'reward_status_text' => [__('messages.web.vip_task.cannot_claim'), __('messages.web.vip_task.can_claim'), __('messages.web.vip_task.claimed')][$stage2_reward_status], // 不能领取, 待领取, 已领取
+
                 'can_claim' => $stage2_reward_status === 1,
                 'tasks' => array_map(function($taskCfg) use ($taskData) {
                     $taskKey = $taskCfg['id'];
@@ -623,15 +637,18 @@ class ActivityController extends Controller
                         'type' => $taskCfg['type'],
                         'completed' => $completed,
                         'status' => $completed ? 1 : 0,
-                        'status_text' => $completed ? '已完成' : '未完成',
-                        'progress' => min($taskData[$progressKey] ?? 0,$taskCfg['target']),
+//                        'status_text' => $completed ? '已完成' : '未完成',
+                        'status_text' => $completed ? __('messages.web.vip_task.completed') : __('messages.web.vip_task.not_completed'), // 已完成 : 未完成
+                        'progress' => intval(min($taskData[$progressKey] ?? 0,$taskCfg['target'])),
                         'target' => $taskCfg['target']
                     ];
                 }, $taskConfig['stage2']['tasks'])
             ],
             'stage3' => [
                 'stage' => 3,
-                'title' => '阶段任务3(循环任务)',
+//                'title' => '阶段任务3(循环任务)',
+                'title' => __('messages.web.vip_task.stage3_title'), // 阶段任务3(循环任务)
+
                 'unlocked' => $taskData['stage2_completed'],
                 'is_loop' => true,
                 'current_loop' => $taskData['stage3_loop_count'],
@@ -648,9 +665,11 @@ class ActivityController extends Controller
                         'reward' => $taskCfg['reward'],
                         'completed' => $completed,
                         'reward_status' => $rewardStatus,
-                        'reward_status_text' => ['不能领取', '待领取', '可重复领取'][$rewardStatus],
+//                        'reward_status_text' => ['不能领取', '待领取', '可重复领取'][$rewardStatus],
+                        'reward_status_text' => [__('messages.web.vip_task.cannot_claim'), __('messages.web.vip_task.can_claim'), __('messages.web.vip_task.repeatable')][$rewardStatus], // 不能领取, 待领取, 可重复领取
+
                         'can_claim' => $rewardStatus === 1,
-                        'progress' => min($taskData[$progressKey] ?? 0,$taskCfg['target']),
+                        'progress' => intval(min($taskData[$progressKey] ?? 0,$taskCfg['target'])),
                         'target' => $taskCfg['target']
                     ];
                 }, $taskConfig['stage3']['tasks'])
@@ -672,7 +691,9 @@ class ActivityController extends Controller
 
         $redisLockKey = "vip_withdraw_claim_{$userId}";
         if (!Redis::set($redisLockKey, 1, 'EX', 10, 'NX')) {
-            return apiReturnFail('操作太频繁,请稍后再试');
+//            return apiReturnFail('操作太频繁,请稍后再试');
+            return apiReturnFail(['web.vip_task.operation_frequent', __('messages.web.vip_task.operation_frequent')]); //'操作太频繁,请稍后再试'
+
         }
 
         try {
@@ -684,11 +705,15 @@ class ActivityController extends Controller
             if ($stage === 1) {
                 if (!$taskData['stage1_completed']) {
                     Redis::del($redisLockKey);
-                    return apiReturnFail('任务未完成');
+//                    return apiReturnFail('任务未完成');
+                    return apiReturnFail(['web.vip_task.task_not_completed', __('messages.web.vip_task.task_not_completed')]); // 任务未完成
+
                 }
                 if ($taskData['stage1_withdrawn']) {
                     Redis::del($redisLockKey);
-                    return apiReturnFail('奖励已领取');
+                    return apiReturnFail(['web.vip_task.reward_claimed', __('messages.web.vip_task.reward_claimed')]); // 奖励已领取
+
+//                    return apiReturnFail('奖励已领取');
                 }
                 $rewardAmount = 10;
                 $this->updateTaskProgress($userId, 'stage1_withdrawn', 1);
@@ -697,11 +722,15 @@ class ActivityController extends Controller
             elseif ($stage === 2) {
                 if (!$taskData['stage2_completed']) {
                     Redis::del($redisLockKey);
-                    return apiReturnFail('任务未完成');
+//                    return apiReturnFail('任务未完成');
+                    return apiReturnFail(['web.vip_task.task_not_completed', __('messages.web.vip_task.task_not_completed')]); // 任务未完成
+
                 }
                 if ($taskData['stage2_withdrawn']) {
                     Redis::del($redisLockKey);
-                    return apiReturnFail('奖励已领取');
+                    return apiReturnFail(['web.vip_task.reward_claimed', __('messages.web.vip_task.reward_claimed')]); // 奖励已领取
+
+//                    return apiReturnFail('奖励已领取');
                 }
                 $rewardAmount = 10;
                 $this->updateTaskProgress($userId, 'stage2_withdrawn', 1);
@@ -721,14 +750,18 @@ class ActivityController extends Controller
                     // 每满1200可领取40,领取后扣除1200下注进度
                     if (($taskData['stage3_current_bet'] ?? 0) < 12000) {
                         Redis::del($redisLockKey);
-                        return apiReturnFail('任务未完成');
+                        return apiReturnFail(['web.vip_task.task_not_completed', __('messages.web.vip_task.task_not_completed')]); // 任务未完成
+
+//                        return apiReturnFail('任务未完成');
                     }
                     $rewardAmount = 40;
                     $this->updateTaskProgress($userId, 'stage3_current_bet', max(0, ($taskData['stage3_current_bet'] - 12000)));
                 }
             } else {
                 Redis::del($redisLockKey);
-                return apiReturnFail('无效的阶段');
+                return apiReturnFail(['web.vip_task.invalid_stage', __('messages.web.vip_task.invalid_stage')]); // 无效的阶段
+
+//                return apiReturnFail('无效的阶段');
             }
 
             // 添加提现额度到用户账户
@@ -793,7 +826,9 @@ class ActivityController extends Controller
             Redis::del($redisLockKey);
             return apiReturnSuc([
                 'amount' => $rewardAmount,
-                'message' => "成功领取 {$rewardAmount} 提现额度"
+//                'message' => "成功领取 {$rewardAmount} 提现额度"
+                'message' => __('messages.web.vip_task.claim_success', ['amount' => $rewardAmount]) // "成功领取 {$rewardAmount} 提现额度"
+
             ]);
 
         } catch (\Exception $e) {
@@ -802,7 +837,9 @@ class ActivityController extends Controller
                 'user_id' => $userId,
                 'error' => $e->getMessage()
             ]);
-            return apiReturnFail('领取失败:' . $e->getMessage());
+            return apiReturnFail(['web.vip_task.claim_failed', __('messages.web.vip_task.claim_failed', ['error' => $e->getMessage()])]); // 领取失败:
+
+//            return apiReturnFail('领取失败:' . $e->getMessage());
         }
     }
 

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

@@ -142,6 +142,8 @@ class WebRouteController extends Controller
         // 默认推荐游戏
         $defaultGameId = 931;
         $recommendGame = '/game/' . $defaultGameId;
+        $ChannelPackageName = DB::table('QPPlatformDB.dbo.ChannelPackageName')->where('Channel',$config->Channel??100)
+            ->first();
         $data['conf']=[
             'hall'=>env("CONFIG_24680_HALL")??GameBasicConfig::$HallServer,
             'DOLLAR'=>env("CONFIG_24680_DOLLAR")??GameBasicConfig::$DOLLAR,
@@ -149,6 +151,8 @@ class WebRouteController extends Controller
             'promoteInstall'=>$disablePromote?0:($inApp?1:((RouteService::isTestOrLocalSite()||$isDesktop)?0:25)),
             'showInstall'=>$disablePromote?0:($inApp?1:((RouteService::isTestOrLocalSite()||$isDesktop)?0:25)),
             'guest'=>$guestOpen?1:0,
+            'AdjustToken' => $ChannelPackageName?$ChannelPackageName->AdjustToken:null,
+            'AdjustConfig' => $ChannelPackageName?$ChannelPackageName->AdjustConfig:null,
             'upgradeBonus'=>$upgradeBonus,
 
             'registerBonus' =>$registerBonus,
@@ -181,11 +185,53 @@ class WebRouteController extends Controller
     }
 
 
+    public function getRegisterGold(Request $request)
+    {
+        try {
+            $user = $request->user();
+            $UserID = $user->UserID;
+
+            if ($user->Registed == 1) {
+                return apiReturnFail('Fail');
+            }
+
+            // 添加金币(10金币)
+            $addResult = OuroGameService::AddScore($UserID, 10 * NumConfig::NUM_VALUE, null, false);
+
+            // 更新 webgame.GlobalUserInfo 的 Registed 字段
+            DB::connection('mysql')->table('webgame.GlobalUserInfo')
+                ->where('UserID', $UserID)
+                ->update(['Registed' => 1]);
+
+            // 更新 QPAccountsDB.dbo.AccountsInfo 的 Registed 字段
+            DB::connection('write')->table('QPAccountsDB.dbo.AccountsInfo')
+                ->where('UserID', $UserID)
+                ->update(['Registed' => 1]);
+
+
+            return apiReturnSuc([
+                'user' => [
+                    'InsureScore' => 10,
+                    'Registed'    => 1,
+                    'message'     => 'Success'
+                ]
+
+            ]);
+
+        } catch (\Exception $e) {
+            \Log::error('注册送金币失败:' . $e->getMessage(), [
+                'UserID' => $UserID ?? 0,
+                'trace'  => $e->getTraceAsString()
+            ]);
+            return apiReturnFail('领取失败:' . $e->getMessage());
+        }
+    }
+
     public function checkApkInstall(Request $request)
     {
         $user = $request->user();
 
-        $FPID = $request->input("ff", "");
+        $FPID = $request->input("bfp", "");
         $ff=$request->input('ff', '');
         $url_sign = $request->get('us') ?? "tf";
 
@@ -207,9 +253,14 @@ class WebRouteController extends Controller
         ]);
 
         $agent=explode('AppleWebKit',$agent)[0];
+        //截取到最后一个分号Mozilla/5.0 (Linux; Android 16; SM-S936U Build/BP2A.250605.031.A3; wv) 去掉了wv和后面
+        $lastSemicolon = strrpos($agent, ';');
+        if ($lastSemicolon !== false) {
+            $agent = substr($agent, 0, $lastSemicolon);
+        }
 
         if (isset($UserID) && !empty($UserID)) {
-            $cookieExist = ApkService::loadCookie($UserID);
+            $cookieExist = ApkService::loadCookie($UserID,$FPID,$ff);
             if ($cookieExist && is_array($cookieExist)) {
                 $data = [];
                 $data['cookie'] = $cookieExist['Cookie'] ?? "";
@@ -229,7 +280,7 @@ class WebRouteController extends Controller
             //规则1,只有一个数据,直接归1
             if (count($datas) == 1) {
                 Redis::del($key);
-                ApkService::saveCookie($UserID, $datas[0], $FPID);
+                ApkService::saveCookie($UserID, $datas[0], $FPID,$ff);
                 Util::writeLog("apkload", "onlyone:::".json_encode($datas[0]));
                 return apiReturnSuc($datas[0]);
             }
@@ -240,7 +291,7 @@ class WebRouteController extends Controller
                     array_splice($datas, $k, 1);
                     Redis::set($key, json_encode($datas));
                     Redis::expire($key, 7200);
-                    ApkService::saveCookie($UserID, $v, $FPID);
+                    ApkService::saveCookie($UserID, $v, $FPID,$ff);
                     Util::writeLog("apkload", "sameagent:::".json_encode($v));
                     return apiReturnSuc($v);
                 }
@@ -250,7 +301,7 @@ class WebRouteController extends Controller
         $recents = ApkService::getRecentsNew($url_sign);
         foreach ($recents as $v) {
             if(strstr($v['agent'],$agent)||$ff==$v['ff']){
-                ApkService::saveCookie($UserID, $v, $FPID);
+                ApkService::saveCookie($UserID, $v, $FPID,$ff);
                 Util::writeLog("apkload", "recent:::".json_encode($v));
                 return apiReturnSuc($v);
             }
@@ -258,6 +309,7 @@ class WebRouteController extends Controller
         return apiReturnFail("");
 
     }
+
     public function SaveRoutes(Request $request)
     {
 
@@ -269,20 +321,21 @@ class WebRouteController extends Controller
         }
     }
 
-    function insertRoute($routeData, $parentId = null) {
+    function insertRoute($routeData, $parentId = null)
+    {
         $route = new RouteModel([
             'parent_id' => $parentId,
-            'path' => $routeData['path'],
-            'type' => $routeData['type'],
-            'side' => $routeData['side'],
-            'block' => $routeData['block'],
-            'title' => $routeData['title'],
-            'icon' => $routeData['icon'],
-            'fill' => $routeData['fill'],
+            'path'      => $routeData['path'],
+            'type'      => $routeData['type'],
+            'side'      => $routeData['side'],
+            'block'     => $routeData['block'],
+            'title'     => $routeData['title'],
+            'icon'      => $routeData['icon'],
+            'fill'      => $routeData['fill'],
             'component' => $routeData['component'],
-            'query' => $routeData['query'],
-            'login' => $routeData['login'],
-            'lpath' => $routeData['lpath']
+            'query'     => $routeData['query'],
+            'login'     => $routeData['login'],
+            'lpath'     => $routeData['lpath']
         ]);
         $route->save();
 
@@ -292,16 +345,16 @@ class WebRouteController extends Controller
     }
 
 
-
     public function testScoreChange(Request $request)
     {
-        $user=$request->user();
-        $nowGolds=$request->input("nowGolds",4000);
-        $AddNum=$request->input("AddNum",1000);
+        $user = $request->user();
+        $nowGolds = $request->input("nowGolds", 4000);
+        $AddNum = $request->input("AddNum", 1000);
 //        notifyWebHall($UserID,"",'pay_finish',["Golds"=>$NowScore,"PayNum"=>$GiftScore]);
-        OuroGameService::notifyWebHall($user->UserID,"",'call_client',["Golds"=>$nowGolds,"AddNum"=>$AddNum,"type"=>"start_change"]);
+        OuroGameService::notifyWebHall($user->UserID, "", 'call_client', ["Golds" => $nowGolds, "AddNum" => $AddNum, "type" => "start_change"]);
 //        ($user_id,$GlobalUID,'call_client',["type"=>"refresh_mail"]);
         return apiReturnSuc("");
     }
 
+
 }

+ 56 - 20
app/Services/ApkService.php

@@ -23,16 +23,31 @@ class ApkService
         Redis::expire($key,36000);
     }
     //'ip','agent','cookie','type','url_sign','time'
-    public static function saveCookie($UserID, $data,$FPID='')
+    public static function saveCookie($UserID, $data,$FPID='',$FF='')
     {
         $agent = $_SERVER['HTTP_USER_AGENT'];
-        $key = "AccountCookie_$UserID";
-        if(empty($UserID)&&!empty($FPID))$key="AccountCookie_$FPID";
-        if (Redis::exists($key)) {
-            return;
+//        $key = "AccountCookie_$UserID";
+//        if(empty($UserID)&&!empty($FPID))$key="AccountCookie_$FPID";
+//        if (Redis::exists($key)) {
+//            return;
+//        }
+        $checkKey="";$checkValue="";
+        if(!empty($UserID)){
+            $checkKey='UserID';
+            $checkValue=$UserID;
+        }else if(!empty($FPID)){
+            $checkKey='FPID';
+            $checkValue=$FPID;
+        }else if(!empty($FF)){
+            $checkKey='FF';
+            $checkValue=$FF;
         }
 
-        if (!DB::table(TableName::QPAccountsDB() . "AccountCookie")->where('UserID', $UserID)->exists()) {
+        if(empty($checkKey))return;
+
+        $userExist=DB::table(TableName::QPAccountsDB() . "AccountCookie")->where($checkKey, $checkValue)->exists();
+
+        if (!$userExist) {
 
 //            if(DB::table(TableName::QPAccountsDB() . "AccountCookie")->where('Params', $data['params'])->exists()){
 //                $data['params']='';
@@ -43,6 +58,7 @@ class ApkService
             $arr = [
                 'UserID'    => $UserID,
                 'FPID'      => $FPID,
+                'FF'        => $FF,
                 'Cookie'    => $data['cookie'],
                 'Params'    => $data['params'],
                 'UrlSign'   => $data['url_sign'],
@@ -56,11 +72,13 @@ class ApkService
                 'IP'=>IpLocation::getIP(),
             ];
             DB::table(TableName::QPAccountsDB() . 'AccountCookie')->insert($arr);
-            Redis::set($key, json_encode($arr));
-            Redis::expire($key,36000);
+//            Redis::set($key, json_encode($arr));
+//            Redis::expire($key,36000);
 
-            if(strstr($arr['Params'],'gclid')||strstr($arr['Params'],'fbclid')) {
-                (new AccountsSource())->notExistsInsert($UserID, "APK_AD(" . $arr['Platform'] . ")");
+            if(!empty($UserID)) {
+                if (strstr($arr['Params'], 'gclid') || strstr($arr['Params'], 'fbclid')) {
+                    (new AccountsSource())->notExistsInsert($UserID, "APK_AD(" . $arr['Platform'] . ")");
+                }
             }
             //kwai手打点
 
@@ -76,18 +94,36 @@ class ApkService
         }
     }
 
-    public static function loadCookie($UserID)
+    public static function loadCookie($UserID,$FPID='',$FF='')
     {
-        $key = "AccountCookie_$UserID";
-        if (Redis::exists($key)) {
-            return json_decode(Redis::get($key), true);
-        }
-        if (DB::table(TableName::QPAccountsDB() . "AccountCookie")->where('UserID', $UserID)->exists()) {
-            $ac = DB::table(TableName::QPAccountsDB() . "AccountCookie")->where('UserID', $UserID)->first();
+//        $key = "AccountCookie_$UserID";
+//        if (Redis::exists($key)) {
+//            return json_decode(Redis::get($key), true);
+//        }
+        if(!empty($UserID)){
+            $ac=DB::table(TableName::QPAccountsDB() . "AccountCookie")->where('UserID', $UserID)->first();
+            if(!$ac&&(!empty($FPID)||!empty($FF))){
+                //查找FPID和FF
+                $ac=DB::table(TableName::QPAccountsDB() . "AccountCookie")->where('FPID', $FPID)->orwhere('FF', $FF)->first();
+                if($ac){
+                    $updateArr=[
+                        'UserID'=>$UserID
+                    ];
+                    if(!empty($FPID))$updateArr['FPID']=$FPID;
+                    if(!empty($FF))$updateArr['FF']=$FF;
+                    if($ac->FPID==$FPID){
+                        DB::table(TableName::QPAccountsDB() . 'AccountCookie')->where('FPID', $FPID)->update($updateArr);
+                    }else{
+                        DB::table(TableName::QPAccountsDB() . 'AccountCookie')->where('FF', $FF)->update($updateArr);
 
-            $ac = (array)$ac;
-            Redis::set($key, json_encode($ac));
-            Redis::expire($key, 36000);
+                    }
+                }
+            }
+        }
+        if ($ac) {
+            $ac = $ac->toArray();
+//            Redis::set($key, json_encode($ac));
+//            Redis::expire($key, 36000);
             return $ac;
         }
         return null;

+ 50 - 0
resources/lang/en/messages.php

@@ -238,5 +238,55 @@ return [
         "other" => [
             "empty_response" => "Empty response"
         ]
+    ],
+
+    // Web frontend messages
+    "web" => [
+        "activity" => [
+            "login_required" => "Please log in first",
+            "redpack_not_available" => "There is no RedPack available",
+            "redpack_no_recharge" => "You need to deposit first!"
+        ],
+        "protect" => [
+            "score_limit" => "Score limit reached",
+            "times_limit" => "Protect times limit reached"
+        ],
+        "checkin" => [
+            "user_signin_error" => "Failed to get user sign-in information",
+            "user_already_signed_in" => "You have already signed in today",
+            "signin_event_ended" => "The sign-in activity has ended",
+            "signin_data_error" => "Failed to read sign-in data",
+            "recharge_required" => "Recharge is required to sign in",
+            "unknown_error" => "Unknown error",
+            "exception_occurred" => "An error occurred while processing your request"
+        ],
+        "withdraw" => [
+            "try_again_later" => "Unknown error",
+            "no_withdraw_value" => "The withdrawable amount is not enough",
+            "too_low" => "Lower than the minimum withdrawal amount",
+            "too_high" => "Higher than the maximum withdrawal amount",
+            "day_max" => "Exceeded the daily withdrawal limit",
+            "no_enouth_score" => "Not enough money on hand",
+            "in_game" => "Sorry, You're in game for now",
+            "no_deposit" => "You need deposit first!"
+        ],
+        "vip_task" => [
+            "recharge_first" => "Please deposit first before viewing tasks - :userId",
+            "completed" => "Completed",
+            "not_completed" => "Not Completed",
+            "cannot_claim" => "Cannot Claim",
+            "can_claim" => "Can Claim",
+            "claimed" => "Claimed",
+            "repeatable" => "Repeatable",
+            "stage1_title" => "Stage 1 Tasks",
+            "stage2_title" => "Stage 2 Tasks",
+            "stage3_title" => "Stage 3 Tasks (Loop)",
+            "operation_frequent" => "Operation too frequent, please try again later",
+            "task_not_completed" => "Task not completed",
+            "reward_claimed" => "Reward has been claimed",
+            "invalid_stage" => "Invalid stage",
+            "claim_success" => "Successfully claimed :amount withdrawal quota",
+            "claim_failed" => "Claim failed: :error"
+        ]
     ]
 ];

+ 50 - 0
resources/lang/es/messages.php

@@ -222,5 +222,55 @@ return [
         "other" => [
             "empty_response" => "Respuesta vacía"
         ]
+    ],
+
+    // Mensajes del frontend web
+    "web" => [
+        "activity" => [
+            "login_required" => "Por favor, inicia sesión primero",
+            "redpack_not_available" => "No hay RedPack disponible",
+            "redpack_no_recharge" => "¡Necesitas depositar primero!"
+        ],
+        "protect" => [
+            "score_limit" => "Límite de puntuación alcanzado",
+            "times_limit" => "Límite de veces de protección alcanzado"
+        ],
+        "checkin" => [
+            "user_signin_error" => "Error al obtener información de inicio de sesión del usuario",
+            "user_already_signed_in" => "Ya has iniciado sesión hoy",
+            "signin_event_ended" => "La actividad de inicio de sesión ha terminado",
+            "signin_data_error" => "Error al leer datos de inicio de sesión",
+            "recharge_required" => "Se requiere recarga para iniciar sesión",
+            "unknown_error" => "Error desconocido",
+            "exception_occurred" => "Ocurrió un error al procesar tu solicitud"
+        ],
+        "withdraw" => [
+            "try_again_later" => "Error desconocido",
+            "no_withdraw_value" => "El monto retirable no es suficiente",
+            "too_low" => "Inferior al monto mínimo de retiro",
+            "too_high" => "Superior al monto máximo de retiro",
+            "day_max" => "Se excedió el límite diario de retiros",
+            "no_enouth_score" => "No hay suficiente dinero en mano",
+            "in_game" => "Lo siento, estás en el juego ahora",
+            "no_deposit" => "¡Necesitas depositar primero!"
+        ],
+        "vip_task" => [
+            "recharge_first" => "Por favor, deposita primero antes de ver las tareas - :userId",
+            "completed" => "Completado",
+            "not_completed" => "No Completado",
+            "cannot_claim" => "No se puede reclamar",
+            "can_claim" => "Puede reclamar",
+            "claimed" => "Reclamado",
+            "repeatable" => "Repetible",
+            "stage1_title" => "Tareas de Etapa 1",
+            "stage2_title" => "Tareas de Etapa 2",
+            "stage3_title" => "Tareas de Etapa 3 (Ciclo)",
+            "operation_frequent" => "Operación muy frecuente, inténtalo de nuevo más tarde",
+            "task_not_completed" => "Tarea no completada",
+            "reward_claimed" => "La recompensa ha sido reclamada",
+            "invalid_stage" => "Etapa inválida",
+            "claim_success" => "Has reclamado con éxito :amount cuota de retiro",
+            "claim_failed" => "Error al reclamar: :error"
+        ]
     ]
 ];

+ 50 - 0
resources/lang/pt/messages.php

@@ -243,5 +243,55 @@ return [
         "other" => [
             "empty_response" => "Resposta vazia"
         ]
+    ],
+
+    // Mensagens do frontend web
+    "web" => [
+        "activity" => [
+            "login_required" => "Por favor, faça login primeiro",
+            "redpack_not_available" => "Não há RedPack disponível",
+            "redpack_no_recharge" => "Você precisa depositar primeiro!"
+        ],
+        "protect" => [
+            "score_limit" => "Limite de pontuação atingido",
+            "times_limit" => "Limite de vezes de proteção atingido"
+        ],
+        "checkin" => [
+            "user_signin_error" => "Falha ao obter informações de check-in do usuário",
+            "user_already_signed_in" => "Você já fez check-in hoje",
+            "signin_event_ended" => "A atividade de check-in foi encerrada",
+            "signin_data_error" => "Falha ao ler dados de check-in",
+            "recharge_required" => "Recarga é necessária para fazer check-in",
+            "unknown_error" => "Erro desconhecido",
+            "exception_occurred" => "Ocorreu um erro ao processar sua solicitação"
+        ],
+        "withdraw" => [
+            "try_again_later" => "Erro desconhecido",
+            "no_withdraw_value" => "O valor de saque não é suficiente",
+            "too_low" => "Abaixo do valor mínimo de saque",
+            "too_high" => "Acima do valor máximo de saque",
+            "day_max" => "Excedeu o limite diário de saques",
+            "no_enouth_score" => "Não há dinheiro suficiente na mão",
+            "in_game" => "Desculpe, você está no jogo agora",
+            "no_deposit" => "Você precisa depositar primeiro!"
+        ],
+        "vip_task" => [
+            "recharge_first" => "Por favor, deposite primeiro antes de visualizar as tarefas - :userId",
+            "completed" => "Concluído",
+            "not_completed" => "Não Concluído",
+            "cannot_claim" => "Não pode reivindicar",
+            "can_claim" => "Pode reivindicar",
+            "claimed" => "Reivindicado",
+            "repeatable" => "Repetível",
+            "stage1_title" => "Tarefas da Etapa 1",
+            "stage2_title" => "Tarefas da Etapa 2",
+            "stage3_title" => "Tarefas da Etapa 3 (Ciclo)",
+            "operation_frequent" => "Operação muito frequente, tente novamente mais tarde",
+            "task_not_completed" => "Tarefa não concluída",
+            "reward_claimed" => "A recompensa foi reivindicada",
+            "invalid_stage" => "Etapa inválida",
+            "claim_success" => "Você reivindicou com sucesso :amount cota de saque",
+            "claim_failed" => "Falha ao reivindicar: :error"
+        ]
     ]
 ];

+ 50 - 0
resources/lang/zh/messages.php

@@ -238,5 +238,55 @@ return [
         "other" => [
             "empty_response" => "空响应"
         ]
+    ],
+
+    // Web前端消息
+    "web" => [
+        "activity" => [
+            "login_required" => "请先登录",
+            "redpack_not_available" => "没有可用的红包",
+            "redpack_no_recharge" => "您需要先充值!"
+        ],
+        "protect" => [
+            "score_limit" => "积分已达上限",
+            "times_limit" => "保护次数已达上限"
+        ],
+        "checkin" => [
+            "user_signin_error" => "获取用户签到信息失败",
+            "user_already_signed_in" => "您今天已经签到过了",
+            "signin_event_ended" => "签到活动已结束",
+            "signin_data_error" => "读取签到数据失败",
+            "recharge_required" => "需要充值才能签到",
+            "unknown_error" => "未知错误",
+            "exception_occurred" => "处理您的请求时发生错误"
+        ],
+        "withdraw" => [
+            "try_again_later" => "未知错误",
+            "no_withdraw_value" => "可提现金额不足",
+            "too_low" => "低于最低提现金额",
+            "too_high" => "高于最高提现金额",
+            "day_max" => "超过每日提现次数上限",
+            "no_enouth_score" => "余额不足",
+            "in_game" => "抱歉,您正在游戏中",
+            "no_deposit" => "您需要先充值!"
+        ],
+        "vip_task" => [
+            "recharge_first" => "请先充值后再查看任务 - :userId",
+            "completed" => "已完成",
+            "not_completed" => "未完成",
+            "cannot_claim" => "不能领取",
+            "can_claim" => "待领取",
+            "claimed" => "已领取",
+            "repeatable" => "可重复领取",
+            "stage1_title" => "阶段任务1",
+            "stage2_title" => "阶段任务2",
+            "stage3_title" => "阶段任务3(循环任务)",
+            "operation_frequent" => "操作太频繁,请稍后再试",
+            "task_not_completed" => "任务未完成",
+            "reward_claimed" => "奖励已领取",
+            "invalid_stage" => "无效的阶段",
+            "claim_success" => "成功领取 :amount 提现额度",
+            "claim_failed" => "领取失败::error"
+        ]
     ]
 ];