Explorar o código

Merge branch 'qapp_verify_sendorderid' into zhucj

wangzq %!s(int64=2) %!d(string=hai) anos
pai
achega
bf4da98280

+ 8 - 2
app/Http/Middleware/QuickAppGetPackage.php

@@ -19,7 +19,7 @@ class QuickAppGetPackage extends BaseMiddleware
     {
         // 获取头部信息
         $package     = $request->header('x-package', '');
-        
+
         $origin_package = $package;
         //FIXME 海天包传成浩瀚了,特殊处理下,这个名字就给海天用
 //         if($package =='com.beidao.kuaiying.haohan'){
@@ -32,8 +32,14 @@ class QuickAppGetPackage extends BaseMiddleware
 //        }
 
         $package = get_real_package($package);
-
         $channel_id = QappPackageService::getChannelId($package);
+        $sendOrderId  = $request->header('send-order-id',0);
+        if($request->input('send_order_id',0)){
+            $sendOrderId = $request->input('send_order_id',0);
+        }
+        $sendOrderId = check_qapp_send_order_id($channel_id,$sendOrderId) ? $sendOrderId : 0;
+        $request->headers->set('send-order-id',$sendOrderId);
+        $request->merge(['send_order_id' => $sendOrderId,'distribution_channel_id' => $channel_id]);
         if($channel_id > 0){
             return $next($request);
         }else{

+ 1 - 1
app/Http/Routes/QuickApp/QuickAppRoutes.php

@@ -13,7 +13,7 @@ Route::group(['domain' => env('QUICKAPP_DOMAIN'), 'namespace' => 'App\Http\Contr
     // vivo推送回调
     Route::any('push/vivoback', 'Push\PushController@vivoCallback');
 
-    Route::group(['prefix' => 'api', 'middleware' => 'checkSign'], function () {
+    Route::group(['prefix' => 'api', 'middleware' =>['checkSign','getPackage']], function () {
         //登录
         Route::post('login', 'Oauth\UsersController@index');
     });

+ 32 - 0
app/Libs/Helpers.php

@@ -834,4 +834,36 @@ if (!function_exists("check_qapp_auth")){
         }
          return  false;
     }
+}
+
+/**
+ *
+ * name: check_qapp_send_order_id
+ *  判断派单id是否属于所访问的站点
+ * @param mixed  $channelId 站点id
+ * @param mixed $sendOrderId 派单id
+ * @return bool
+ * date 2022/09/09 10:50
+ */
+if (!function_exists("check_qapp_send_order_id)")){
+    function check_qapp_send_order_id($channelId = 0 ,$sendOrderId = 0){
+
+        if ($sendOrderId <  1  || $channelId < 1){
+            return false;
+        }
+        $sendOrderChannelId =  Redis::hGet("qapp:send_order:distribution_channel",$sendOrderId);
+        if ($sendOrderChannelId < 1 ){
+            $sendOrderChannelId = \DB::table('qapp_send_orders')->where('send_order_id','=',$sendOrderId)->value('distribution_channel_id');
+            if ($sendOrderChannelId > 0 ){
+                Redis::hSet("qapp:send_order:distribution_channel",$sendOrderId,$sendOrderChannelId);
+            }
+        }
+
+        if (trim($channelId) !== trim($sendOrderChannelId)){
+            myLog("QuickAppSendOrderError")->info("派单渠道和包名不匹配: send_order_id = {$sendOrderId};sned_order_id_channel_id= {$sendOrderChannelId};channel_id= {$channelId} ");
+            return  false;
+        }
+
+        return true;
+    }
 }

+ 24 - 19
app/Modules/User/Services/QappUserService.php

@@ -241,7 +241,7 @@ class QappUserService
             DB::commit();
             $this->syncHandle($user, $data);
             return $qapp_user;
-            
+
         } catch (Exception $e) {
             DB::rollback();
             myLog('create_user')->error($e->getMessage());
@@ -254,28 +254,33 @@ class QappUserService
     private function syncHandle(User $user, array $data)
     {
         // 队列处理回传业务
-        $tikTokRegisterRequest                = new QappTikTokUserRequest();
-        $tikTokRegisterRequest->ip            = $user->register_ip;
-        $tikTokRegisterRequest->device_no     = $data['device_no'];
-        $tikTokRegisterRequest->mac           = $data['mac'];
-        $tikTokRegisterRequest->channel_id    = $user->distribution_channel_id;
-        $tikTokRegisterRequest->uid           = $user->id;
-        $tikTokRegisterRequest->register_time = $user->created_at->format('Y-m-d H:i:s');
-        $tikTokRegisterRequest->send_order_id = $data['send_order_id'];
-        myLog('qapp_register')->info('', compact('tikTokRegisterRequest'));
+        try {
+            $tikTokRegisterRequest                = new QappTikTokUserRequest();
+            $tikTokRegisterRequest->ip            = $user->register_ip;
+            $tikTokRegisterRequest->device_no     = $data['device_no'];
+            $tikTokRegisterRequest->mac           = $data['mac'];
+            $tikTokRegisterRequest->channel_id    = $user->distribution_channel_id;
+            $tikTokRegisterRequest->uid           = $user->id;
+            $tikTokRegisterRequest->register_time = $user->created_at->format('Y-m-d H:i:s');
+            $tikTokRegisterRequest->send_order_id = $data['send_order_id'];
+            myLog('qapp_register')->info('', compact('tikTokRegisterRequest'));
 
-        // 回传业务
-        $job = new QappTikTokUser($tikTokRegisterRequest);
-        dispatch($job->onConnection('rabbitmq')->onQueue('qapp_tiktok_user_register_queue'));
+            // 回传业务
+            $job = new QappTikTokUser($tikTokRegisterRequest);
+            dispatch($job->onConnection('rabbitmq')->onQueue('qapp_tiktok_user_register_queue'));
 
-        UserTaskService::addUserTaskQueue($user->id, BaseTask::register, UserTaskService::add_trigger);
+            UserTaskService::addUserTaskQueue($user->id, BaseTask::register, UserTaskService::add_trigger);
 
-        $job = new NewUserPushMsgDelay($user->id);
-        dispatch($job->onConnection('rabbitmq')->onQueue('new_user_push_msg'));
+            $job = new NewUserPushMsgDelay($user->id);
+            dispatch($job->onConnection('rabbitmq')->onQueue('new_user_push_msg'));
 
-        // 同步数据
-        $user->channel_id = $user->distribution_channel_id;
-        ReportService::reportRegister($user);
+            // 同步数据
+            $user->channel_id = $user->distribution_channel_id;
+            ReportService::reportRegister($user);
+        }catch (Exception $exception){
+            \Log::info('login_fail_user_syncHandle_error_data:',$data);
+            \Log::info('login_fail_user_syncHandle_error_msg:'.$exception->getMessage());
+        }
     }
 
     private function findChannelId(string $package)