zqwang 2 years ago
parent
commit
91deb37679

File diff suppressed because it is too large
+ 407 - 373
app/Http/Controllers/QuickApp/Book/BookController.php


+ 9 - 6
app/Modules/Book/Services/BookAuditService.php

@@ -16,7 +16,7 @@ class BookAuditService
      * @param $package
      * @return array[]
      */
-    public static function getHomeBooksData($sex, $package,$is_auth): array
+    public static function getHomeBooksData($sex, $package,$is_auth,$package_id): array
     {
         // 基本配置数据
         $home = config('home.default');
@@ -39,13 +39,13 @@ class BookAuditService
 
         // 模块
         [$hot, $live, $recom, $new] = [$home['hot'], $home['zhibo'], $home['recom'], $home['new_recom']];
-        [$hotBids, $liveBids, $recomBids, $newBids] = [BookConfigService::getCheckBooks($hot[$sex],$channel,$package,$is_auth),BookConfigService::getCheckBooks($live[$sex],$channel,$package,$is_auth) , BookConfigService::getCheckBooks($recom[$sex],$channel,$package,$is_auth),  BookConfigService::getCheckBooks($new[$sex],$channel,$package,$is_auth)];
+        [$hotBids, $liveBids, $recomBids, $newBids] = BookConfigService::HomePageRecomBookCheck($hot, $live, $recom, $new,$package_id, $package,$channel);
 
         // 一次性获取书籍列表
         $bids  = array_merge($hotBids, $liveBids, $recomBids, $newBids);
+
         $channel_id = is_public_package($package) ? get_default_public_channel_id() : 0;
         $books = BookConfigService::getBookLists(compact('bids','channel_id'));
-
         return [
             [
                 'type'  => 'reco_banner',
@@ -75,7 +75,7 @@ class BookAuditService
         ];
     }
 
-    public static function getYueaiHomeBooksData($sex, $package,$is_auth,$channel): array
+    public static function getYueaiHomeBooksData($sex, $package,$is_auth,$channel,$package_id): array
     {
         $home = config('home.yueai');
         if (!$is_auth){
@@ -86,8 +86,11 @@ class BookAuditService
 
         // 模块
         [$hot, $live, $recom, $new] = [$home['hot'], $home['zhibo'], $home['recom'], $home['new_recom']];
-        [$hotBids, $liveBids, $recomBids, $newBids] = [$hot[$sex], $live[$sex], $recom[$sex], $new[$sex]];
-
+        [$hotBids, $liveBids, $recomBids, $newBids] =  BookConfigService::HomePageRecomBookCheck($hot, $live, $recom, $new,$package_id, $package,$channel,false);
+        echo "<pre><hr>";
+        var_export([$hotBids, $liveBids, $recomBids, $newBids] );
+        echo  "<hr>";
+        die();
         return [
             [
                 'type'  => 'reco_banner',

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

@@ -456,4 +456,32 @@ class BookConfigService
             ->pluck('from_bid')
             ->all();
     }
+
+    public static function bookReplenish($bidArr, $replenishArr,$count = 6)
+    {
+        if(count($bidArr) == $count){
+            return [$bidArr,$replenishArr];
+        }
+        $bidArr = array_merge($bidArr,array_splice($replenishArr,0,$count-count($bidArr)));
+
+        return [$bidArr,$replenishArr];
+    }
+
+    public static function HomePageRecomBookCheck($hotBids, $liveBids, $recomBids, $newBids,$package_id, $package,$channel, $is_external_shelf = true){
+        $data = BookConfigService::getRecommendBids($package, $channel, [], 30);
+        $bids = BookConfigService::getAvailableBIdsbyBids(array_merge($hotBids, $liveBids, $recomBids, $newBids), $package_id,$is_external_shelf);
+        if (count($bids) < 1) {
+            $data = array_chunk($data, 6);
+            $hotBids = array_shift($data);
+            $liveBids = array_shift($data);
+            $recomBids = array_shift($data);
+            $newBids = array_shift($data);
+        } else {
+            [$hotBids, $data] = self::bookReplenish(array_intersect($bids, $hotBids), $data);
+            [$liveBids, $data] = self::bookReplenish(array_intersect($bids, $liveBids), $data);
+            [$recomBids, $data] = self::bookReplenish(array_intersect($bids, $recomBids), $data);
+            [$newBids, $data] = self::bookReplenish(array_intersect($bids, $newBids), $data);
+        }
+        return [$hotBids,$liveBids,$recomBids,$newBids];
+    }
 }