Quellcode durchsuchen

split content 1

zz vor 6 Jahren
Ursprung
Commit
b3c95dd7ee

+ 2 - 0
app/Console/Commands/BookUpdateOne.php

@@ -31,6 +31,8 @@ class BookUpdateOne extends Command
      */
     protected $description = '更新图书章节内容';
 
+    private $client;
+
     /**
      * Create a new command instance.
      *

+ 43 - 9
app/Modules/Book/Services/ChapterService.php

@@ -289,6 +289,31 @@ class ChapterService
         return null;
     }
 
+    public static function splitContentAll($bid){
+        $chapters = Chapter::where('bid',$bid)->where('size','>=',4000)->select('id','sequence')->orderBy('sequence')->get();
+        $i = 0;
+        $count = 0;
+        $end_sequence = 0;
+        $start_sequence = 0;
+        foreach ($chapters as $k=>$chapter){
+            if($k == 0){
+                $start_sequence = $chapter->sequence;
+            }
+            $content = self::splitContent($chapter->id);
+            if(!$content) continue;
+            //\Log::info($chapter);
+            $count += self::createSplitContent($chapter->id,$content,false);
+            $end_sequence = $chapter->sequence;
+            $i++;
+        }
+        //\Log::info('$start_sequence is: '.$start_sequence);
+        //\Log::info('$end_sequence is: '.($end_sequence+$i+$count));
+        self::adjustSequent($bid,$start_sequence,$end_sequence+$i+$count);
+
+        return $count;
+    }
+
+
     public static function splitContent($chapter_id)
     {
         $chapter = self::getChapterById($chapter_id);
@@ -329,21 +354,26 @@ class ChapterService
         return $data;
     }
 
-    public static function createSplitContent($chapter_id,$data)
+    public static function createSplitContent($chapter_id,$data,$is_adjust = true)
     {
-        if(count($data) == 1){
+        if(count($data) <= 1){
             return ;
         }
         Chapter::where('bid',$data[0]['bid'])->where('sequence','>=',$data[0]['sequence']+1)->increment('sequence',count($data)-1);
         Chapter::where('id',$chapter_id)->update([
             'content'=>$data[0]['content'],
-            'size'=>$data[0]['size']
+            'size'=>$data[0]['size'],
+            'name'=>$data[0]['name']
         ]);
+        $i = 0;
         foreach ($data as $kye=>$item){
             if($kye == 0) continue;
+            $i++;
             self::createChapter($item);
         }
-        self::adjustSequent($data[0]['bid'],$data[0]['sequence'],$data[0]['sequence']+count($data));
+        if($is_adjust){
+            self::adjustSequent($data[0]['bid'],$data[0]['sequence'],$data[0]['sequence']+count($data)+5);
+        }
 
         if(self::getChapterFromOss($data[0]['bid'],$chapter_id)){
             $oss = self::ossObject();
@@ -353,7 +383,10 @@ class ChapterService
         }
         $key = sprintf('book_chapter_%s_%s', $data[0]['bid'], $chapter_id);
         //Redis::connection('chapter')
-        Redis::connection('chapter')->delete($key);
+        try{
+            Redis::connection('chapter')->delete($key);
+        }catch (\Exception $e){}
+
 
         $last = Chapter::where('bid',$data[0]['bid'])
             ->select('id','bid','name','sequence')
@@ -362,20 +395,21 @@ class ChapterService
             ->first();
         Book::where('id',$data[0]['bid'])->update([
             'chapter_count'=>$last->sequence,
-            'last_chapter'=>$last->last_chapter,
+            'last_chapter'=>$last->name,
             'last_cid'=>$last->id,
         ]);
+        return $i;
     }
 
     public static function adjustSequent($bid,$start_sequence,$end_sequence){
         $chapter_list = Chapter::where('bid',$bid);
         if($start_sequence){
-            $chapter_list->where('sequence','>=',$start_sequence);
+            $chapter_list = $chapter_list->where('sequence','>=',$start_sequence);
         }
         if($end_sequence){
-            $chapter_list->where('sequence','<=',$end_sequence);
+            $chapter_list = $chapter_list->where('sequence','<=',$end_sequence);
         }
-        $chapter_list->orderBy('sequence')->select('id')->get();
+        $chapter_list = $chapter_list->orderBy('sequence')->select('id')->get();
         $prev = 0;
 
         foreach ($chapter_list as $chapter){