Browse Source

add get_new_book_test_type

zhoulj 4 năm trước cách đây
mục cha
commit
8d05b9e4ee
1 tập tin đã thay đổi với 89 bổ sung0 xóa
  1. 89 0
      app/Console/Commands/Temp/NewBookTestType.php

+ 89 - 0
app/Console/Commands/Temp/NewBookTestType.php

@@ -0,0 +1,89 @@
+<?php
+
+namespace App\Console\Commands\Temp;
+
+use Log;
+use Illuminate\Console\Command;
+use App\Modules\Book\Services\NewBookTestService;
+use App\Modules\Book\Services\BookService;
+use DB;
+
+class NewBookTestType extends Command
+{
+    /**
+     * 执行命令   php artisan get_new_book_test_type
+     *
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'get_new_book_test_type';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = '判断新书测试类型';
+
+    /**
+     * Execute the console command.
+     *
+     * @return mixed
+     */
+    public function handle()
+    {
+        $book_tests = DB::table('new_book_tests')
+            ->where('status',2 )
+//            ->where('test_end_time','>',date('Y-m-d H:i:s',strtotime('-1 days')) )//24小时后不再重置状态
+            ->get();
+        $test_books = BookService::getBookStatisticsNew($book_tests);
+        foreach ($test_books as $key=>&$item){
+
+            if($item->sex == 2){
+                $retention_rate_30 = $item->first_chapter_uv ? $item->thirtieth_chapter_uv / $item->first_chapter_uv : 0;
+                $retention_rate_50 = $item->first_chapter_uv ? $item->fiftieth_chapter_uv / $item->first_chapter_uv : 0;
+                $arpu_24h = round(($item->uv_in_one_day ? ($item->sub_amount_in_one_day / $item->uv_in_one_day) / 100 : 0), 2);
+                //类型:优质书,爆款书,不达标
+                //优质书筛选标准:24小时订阅UV比>0.65,30章留存率>5.32%,50章留存率>3.24%
+                if ($arpu_24h < 0.65  ||  round($retention_rate_30 * 100, 2) < 5.32 || round($retention_rate_50 * 100, 2) < 3.24) {
+                    $type = 1;//不达标
+                }
+                //爆款书标准:24小时订阅UV比>0.98,30章留存率>6.15%,50章留存率>4.36%
+                elseif ($arpu_24h >= 0.98  &&  round($retention_rate_30 * 100, 2) >= 6.15 && round($retention_rate_50 * 100, 2) >= 4.36) {
+                    $type = 3;//爆款书
+                } else {
+                    $type = 2;//优质书
+                }
+                DB::table('new_book_tests')->where('id',$item->id)->update(['type'=>$type]);
+            }
+            //男频
+            if($item->sex == 1){
+                $retention_rate_30 = $item->first_chapter_uv ? $item->thirtieth_chapter_uv / $item->first_chapter_uv : 0;
+                $retention_rate_50 = $item->first_chapter_uv ? $item->fiftieth_chapter_uv / $item->first_chapter_uv : 0;
+                $retention_rate_110 = $item->first_chapter_uv ? $item->chapter_uv_110 / $item->first_chapter_uv : 0;
+                //即新书测试30章留存率大于1.91%且50章留存率大于1.35%且110章留存率大于0.89%且30-50章流失率小于38%的书,为男频优质书,否则视为不达标
+                $u50_div_uv30 = $item->fiftieth_chapter_uv? $item->fiftieth_chapter_uv / $item->thirtieth_chapter_uv : 0;
+                $lost_rate_50_30 = 1 - $u50_div_uv30;
+                if($retention_rate_30 >= 1.91/100 && $retention_rate_50 >= 1.35/100 &&  $retention_rate_110 >= 0.89/100 && $lost_rate_50_30 <= 38/100){
+                    $type = 2;//优质书
+                }else{
+                    $type = 1;//不达标
+                }
+                DB::table('new_book_tests')->where('id',$item->id)->update(['type'=>$type]);
+            }
+            DB::table('new_book_test_stats')->updateOrInsert(['test_id'=>$item->id]
+                ,[
+                    'type'=>$type,
+                    'bid'=>$item->bid,
+                    'sex'=>$item->sex,
+                    'first_chapter_uv'=>$item->first_chapter_uv,
+                    'thirtieth_chapter_uv'=>$item->thirtieth_chapter_uv,
+                    'fiftieth_chapter_uv'=>$item->fiftieth_chapter_uv,
+                    'chapter_uv_110'=>$item->chapter_uv_110,
+                    'created_at'=>date('Y-m-d H:i:s'),
+                    'updated_at'=>date('Y-m-d H:i:s'),
+                ]);
+        }
+    }
+}