Ver código fonte

update from new yunqi

zz 6 anos atrás
pai
commit
dd6fb1cd72
2 arquivos alterados com 161 adições e 1 exclusões
  1. 159 0
      app/Console/Commands/updateFromNewYunqi.php
  2. 2 1
      app/Console/Kernel.php

+ 159 - 0
app/Console/Commands/updateFromNewYunqi.php

@@ -0,0 +1,159 @@
+<?php
+
+namespace App\Console\Commands;
+
+use Illuminate\Console\Command;
+use App\Modules\Book\Models\Chapter;
+use App\Modules\Book\Models\Book;
+use DB;
+use Log;
+
+class updateFromNewYunqi extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'updateyunqi {--bid=}';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'Command description';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return mixed
+     */
+    public function handle()
+    {
+        $bid = $this->option('bid');
+        if($bid){
+            $book = $this->getAllBid($bid);
+        }else{
+            $book = $this->getAllBid();
+        }
+        if($book){
+            Log::info($book);
+            foreach ($book as $item){
+                $this->updateOne($item->id,$item->chapter_count,$item->yq_bid,$item->name);
+            }
+        }
+    }
+
+    private function getAllBid($bid=0){
+        if($bid){
+            return DB::table('book_yunqi')->join('books','book_yunqi.bid','=','books.id')
+                ->where('book_yunqi.type','NEW_YUNQI')
+                ->where('books.status',0)
+                ->where('books.id',$bid)
+                ->select('books.id','books.name','book_yunqi.yq_bid','books.chapter_count','books.last_cid')
+                ->get();
+        }
+        return DB::table('book_yunqi')->join('books','book_yunqi.bid','=','books.id')
+            ->where('book_yunqi.type','NEW_YUNQI')
+            ->where('books.status',0)
+            ->select('books.id','books.name','book_yunqi.yq_bid','books.chapter_count','books.last_cid')
+            ->get();
+    }
+
+    private function updateOne($zsy_bid,$zsy_count,$yq_bid,$name)
+    {
+        $yunqi_book_info = $this->yQbookInfo($yq_bid);
+        Log::info($yunqi_book_info);
+        if($yunqi_book_info->chapter_count <=$zsy_count) return ;
+        $update_count = 0;
+        $update_size = 0;
+        for ($i = $zsy_count+1;$i<=$yunqi_book_info->chapter_count;$i++){
+            $temp = DB::connection('new_yunqi')->table('chapters')->where('bid',$yq_bid)->where('sequence',$i)->select('name','content','is_vip','size')->first();
+            if($temp){
+                $update_count++;
+                $update_size += $temp->size;
+                Chapter::create([
+                    'bid'=>$zsy_bid,
+                    'name'=>$temp->name,
+                    'sequence'=>$i,
+                    'is_vip'=>$temp->is_vip,
+                    'size'=>$temp->size,
+                    'prev_cid'=>0,
+                    'next_cid'=>0,
+                    'recent_update_at'=>date('Y-m-d H:i:s'),
+                    'content'=>$temp->content,
+                    'ly_chapter_id'=>0
+                ]);
+            }
+        }
+
+        if($update_count >0){
+            $this->recordUpdateInfo($zsy_bid,[
+                'book_name' => $name,
+                'channel_name' =>'女频',
+                'update_chapter_count' => $update_count,
+                'update_words' => $update_size,
+            ]);
+            \Artisan::call('book:adjustone',['bid'=>$zsy_bid]);
+            $info = Chapter::join('books','books.id','=','chapters.bid')
+                ->where('books.id',$zsy_bid)
+                ->select('chapters.id','chapters.name','chapters.sequence','books.size')
+                ->orderBy('chapters.sequence','desc')
+                ->first();
+
+            Book::where('id',$zsy_bid)->update([
+                'status'=>$yunqi_book_info->status,
+                'last_chapter'=>$info->name,
+                'size'=>$info->size+$update_size,
+                'last_cid'=>$info->id,
+                'chapter_count'=>$info->sequence
+            ]);
+        }
+    }
+
+    private function yQbookInfo($bid){
+        $new_yunqi_book = DB::connection('new_yunqi')
+            ->table('books')
+            ->join('book_configs','books.id','=','book_configs.bid')
+            ->select(
+                'books.id','books.author','books.author','books.intro','books.category_name','books.keyword',
+                'books.status','books.chapter_count','books.size','books.last_chapter','book_configs.book_name as name',
+                'book_configs.cover','book_configs.force_subscribe_chapter_seq','book_configs.charge_type','book_configs.roles'
+            )
+            ->where('books.id',$bid)
+            ->first();
+        if(!$new_yunqi_book){
+            return false;
+        }
+        return $new_yunqi_book;
+    }
+
+
+    private function recordUpdateInfo($bid, $data)
+    {
+        // 2 book_updates 的更新记录
+        DB::table('book_updates')->insert([
+            'bid' => $bid,
+            'book_name' => $data['book_name'],
+            'channel_name' => $data['channel_name'],
+            'update_date' => date('Y-m-d'),
+            'update_chapter_count' => $data['update_chapter_count'],
+            'update_words' => $data['update_words'],
+            'update_type' => $data['update_type'],
+            'created_at' => date('Y-m-d H:i:s'),
+            'updated_at' => date('Y-m-d H:i:s')
+        ]);
+    }
+
+}

+ 2 - 1
app/Console/Kernel.php

@@ -22,7 +22,8 @@ class Kernel extends ConsoleKernel
         Commands\BookAfterSpider::class,
         Commands\BookAttr::class,
         Commands\YqBook::class,
-        Commands\channelCpcCode::class
+        Commands\channelCpcCode::class,
+        Commands\updateFromNewYunqi::class
     ];
 
     /**