Przeglądaj źródła

Merge branch 'kuaiyingyong' of iqiyoo:zhuishuyun_wap into zhucj

zhuchengjie 2 lat temu
rodzic
commit
0e6eca5f3b

+ 24 - 11
app/Http/Controllers/QuickApp/Book/BookController.php

@@ -571,9 +571,11 @@ class BookController extends BaseController
         $user =  (new QappUserService)->getGolableUser();
         if(isset($user->uid) && !empty($user->uid) && $user->send_order_id >  0){
             $orderRecord = ChapterOrderService::hasUserRecord($user->uid);
-            if($orderRecord){
-                $data = config('home.yueai');
-                $books = $data['task_banner'];
+            $data = config('home.yueai');
+            $books = $data['task_banner'];
+            $bids = BookConfigService::getAvailableBIdsbyBids(array_column($books,'bid'),$this->distribution_channel_id,false);
+
+            if($orderRecord && !empty($bids)){
                 foreach ($books as  &$value){
                     $value['bid'] =Hashids::encode($value['bid']);
                     $value['redirect_url '] = empty($value['cid']) ? "views/Detail" :  "views/Reader";
@@ -740,17 +742,23 @@ class BookController extends BaseController
         }
         $user =  (new QappUserService)->getGolableUser();
         if(isset($user->uid) && !empty($user->uid) && $user->send_order_id >  0){
-            $orderRecord = ChapterOrderService::hasUserRecord($user->uid);
-            if($orderRecord){
-                $bid =  [58238,60534,63220,14500,13254,63221,63548,14022,59334,58888,63417,61701];
+            $bid =  BookConfigService::getAvailableBIdsbyBids([58238,60534,63220,14500,13254,63221,63548,14022,59334,58888,63417,61701],$this->distribution_channel_id,false);
+            if (!empty($bid)){
                 $bid = array_random($bid,4);
-                $books = BookConfigService::getBooksByIds($bid,[],false);
+            }
+            $orderRecord = ChapterOrderService::hasUserRecord($user->uid);
+
+            if($orderRecord && count($bid) >=  4){
+                $where = ['is_on_shelf' => [1,2],'bids' => $bid];
+                // $books = BookConfigService::getBooksByIds($bid,[],false);
+                $books = BookConfigService::getBookLists($where,[],false);
                 return response()->collection(new BookTransformer(), $books);
             }
         }
         return response()->success([]);
         $where = ['is_on_shelf' => [2]];
         $where['channel_id'] = ($package === 'com.beidao.kuaiying.zsy') ? 7477 : 0;
+
         $books = BookConfigService::getBooks($where, [], 4);
         return response()->collection(new BookTransformer(), $books);
     }
@@ -764,13 +772,18 @@ class BookController extends BaseController
         if (empty($package) || $package != 'com.beidao.kuaiying.yueai') {
             return response()->success([]);
         }
+        return response()->success([]);
         $user =  (new QappUserService)->getGolableUser();
         if(isset($user->uid) && !empty($user->uid) && $user->send_order_id  >  0){
-            $orderRecord = ChapterOrderService::hasUserRecord($user->uid);
-            if($orderRecord){
-                $bid =  [58238,60534,63220,14500,13254,63221,63548,14022,59334,58888,63417,61701];
+            $bid =  BookConfigService::getAvailableBIdsbyBids([58238,60534,63220,14500,13254,63221,63548,14022,59334,58888,63417,61701],$this->distribution_channel_id,false);
+            if (!empty($bid)){
                 $bid = array_random($bid,4);
-                $books = BookConfigService::getBooksByIds($bid,[],false);
+            }
+            $orderRecord = ChapterOrderService::hasUserRecord($user->uid);
+            if($orderRecord && count($bid) >  1){
+                $where = ['is_on_shelf' => [1,2],'bids' => $bid];
+                // $books = BookConfigService::getBooksByIds($bid,[],false);
+                $books = BookConfigService::getBookLists($where,[],false);
                 return response()->collection(new BookTransformer(), $books);
             }
         }

+ 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;
+    }
 }

+ 30 - 0
app/Modules/Book/Services/BookConfigService.php

@@ -17,6 +17,7 @@ use App\Modules\Book\Models\BookKeyword;
 use App\Modules\Book\Models\FreeBook;
 use App\Modules\Book\Models\FreeBookConfig;
 use App\Modules\Book\Models\QappUserSearchBookLog;
+use phpDocumentor\Reflection\Types\This;
 use Redis;
 use DB;
 use Vinkla\Hashids\Facades\Hashids;
@@ -241,4 +242,33 @@ class BookConfigService
         whereIn('bid',$bids)->select($field)->get();
     }
 
+    /**
+     * 根据书籍bid去除无用bid
+     * name: getAvailableBIdsbyBids
+     * @param $bids
+     * @param mixed $channel_id
+     * @param mixed $is_external_shelf
+     * @return array
+     * date 2022/09/20 10:39
+     */
+    public static function  getAvailableBIdsbyBids($bids,$channel_id=0,$is_external_shelf=true)
+    {
+        if (empty($bids)){
+            return [];
+        }
+        $res = BookConfig::whereIn('bid',$bids);
+        if($channel_id == config('qapp_public_package_channel')){
+            $res->whereNotIn('cp_source',getHiddenCp());
+        }else{
+            $res->whereNotIn('cp_source',array_merge(getHiddenCp(),['lianshang']));
+        }
+        if ($is_external_shelf){
+            $res->where('is_on_shelf',2);
+        }else{
+            $res->whereIn('is_on_shelf',[1,2]);
+        }
+
+        return $res->pluck("bid")->toArray();
+    }
+
 }

+ 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)

+ 13 - 12
config/home.php

@@ -133,18 +133,19 @@ return [
                     'banner_url'   => 'https://zhuishuyun.oss-cn-hangzhou.aliyuncs.com/app/banner/202208121702.jpeg',
                     'bid'          => '95b7L6pwB84Aklkm44R0Y3rV1PqNOvjx', // 63482
                     'cid'          => 0
-                ],[
-                    'redirect_url' => 'views/Detail',
-                    'banner_url'   => 'https://zhuishuyun.oss-cn-hangzhou.aliyuncs.com/app/banner/202208121709.jpeg',
-                    'bid'          => '5Z30ezoGbVxwMgw8ybRvYEWPjkOr61dJ', // 63547
-                    'cid'          => 0
-                ],
-                [
-                    'redirect_url' => 'views/Detail',
-                    'banner_url'   => 'https://zhuishuyun.oss-cn-hangzhou.aliyuncs.com/app/banner/202208121707.jpeg',
-                    'bid'          => '9GLjdB1wEYPA3Kd0mAKXx0NDzrWqJpOk', // 60028
-                    'cid'          => 0
-                ],
+                ]
+                // ,[
+                //     'redirect_url' => 'views/Detail',
+                //     'banner_url'   => 'https://zhuishuyun.oss-cn-hangzhou.aliyuncs.com/app/banner/202208121709.jpeg',
+                //     'bid'          => '5Z30ezoGbVxwMgw8ybRvYEWPjkOr61dJ', // 63547
+                //     'cid'          => 0
+                // ],
+                // [
+                //     'redirect_url' => 'views/Detail',
+                //     'banner_url'   => 'https://zhuishuyun.oss-cn-hangzhou.aliyuncs.com/app/banner/202208121707.jpeg',
+                //     'bid'          => '9GLjdB1wEYPA3Kd0mAKXx0NDzrWqJpOk', // 60028
+                //     'cid'          => 0
+                // ],
             ],
             'female' => [
                 [