zhaoyang 1 rok temu
rodzic
commit
86e724ee70

+ 81 - 0
modules/Statistic/Http/Controllers/VideoStatController.php

@@ -0,0 +1,81 @@
+<?php
+
+namespace Modules\Statistic\Http\Controllers;
+
+use Carbon\Carbon;
+use Catch\Base\CatchController;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+use Modules\User\Http\Controllers\UserTrait;
+use Modules\Statistic\Models\VideoStatByCompany;
+
+/**
+ * 短剧统计
+ */
+class VideoStatController extends CatchController
+{
+
+    use UserTrait;
+    public function __construct(protected readonly VideoStatByCompany $videoStatByCompany)
+    {
+        
+    }
+
+    public function index(Request $request)
+    {
+        
+        if(!$this->isCompanyManager()){
+            return [];
+        }
+        //$default_end_time = Carbon::now()->subDay();
+        $default_end_time = Carbon::now();
+        $user_id = $this->getLoginUser()->id;
+        $video_name = $request->get('video_name');
+        $start_date = $request->get('start_date');
+        $end_date = $request->get('end_date');
+        $limit = $request->get('limit',15);
+
+        if(!$end_date){
+            $end_date = $default_end_time;
+        }else{
+            $end_date = Carbon::createFromTimeString($end_date.' 00:00:00');
+        }
+
+        if($start_date){
+            $start_date = Carbon::createFromTimeString($start_date.' 00:00:00');
+        }else{
+            $start_date = $end_date->clone()->subDays(7);
+        }
+
+        $where = [
+            ['user_id','=',$user_id],
+            ['is_delete','=',0],
+            ['day','>=',$start_date->format('Y-m-d')],
+            ['day','<=',$end_date->format('Y-m-d')]
+        ];
+        
+        if(trim($video_name)){
+            $where[] = ['video_name','like','%'.trim($video_name).'%'];
+        }
+
+        $stats = $this->videoStatByCompany->where($where)->select(DB::raw('sum(amount) as amount,sum(charge_count) as charge_count,sum(charge_user_num) as charge_user_num'))->first();
+        $result = $this->videoStatByCompany->where($where)->select('day','video_name','video_id','amount','charge_count','charge_user_num','play_count')->paginate($limit);
+        if($stats){
+            $stats_obj = [
+                'amount'=>$stats->amount,
+                'charge_count'=>$stats->charge_count,
+                'charge_user_num'=>$stats->charge_user_num
+            ];
+        }else{
+            $stats_obj = [
+                'amount'=>0,
+                'charge_count'=>0,
+                'charge_user_num'=>0
+            ];
+        }
+        
+        return ['result'=>$result,'stats'=>$stats_obj];
+    }
+
+ 
+}

+ 16 - 0
modules/Statistic/Models/VideoStatByCompany.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace Modules\Statistic\Models;
+
+use Modules\Channel\Models\BaseModel;
+
+
+class VideoStatByCompany extends BaseModel
+{
+    protected $table = 'video_stat_by_company';
+
+    protected $fillable = [
+        'id', 'day', 'user_id', 'video_name', 'video_id', 'amount', 'charge_count', 'charge_user_num', 'play_count', 'is_delete', 'created_at', 'updated_at', 
+    ];
+
+}

+ 16 - 0
modules/Statistic/Models/VideoStatByUser.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace Modules\Statistic\Models;
+
+use Modules\Channel\Models\BaseModel;
+
+
+class VideoStatByUser extends BaseModel
+{
+    protected $table = 'video_stat_by_user';
+
+    protected $fillable = [
+        'id', 'day', 'user_id', 'puser_id', 'video_name', 'video_id', 'amount', 'charge_count', 'charge_user_num', 'play_count', 'created_at', 'updated_at', 
+    ];
+
+}

+ 6 - 0
modules/Statistic/routes/route.php

@@ -2,6 +2,7 @@
 
 
 use Illuminate\Support\Facades\Route;
 use Illuminate\Support\Facades\Route;
 use Modules\Statistic\Http\Controllers\UserStatisticsController;
 use Modules\Statistic\Http\Controllers\UserStatisticsController;
+use Modules\Statistic\Http\Controllers\VideoStatController;
 
 
 Route::prefix('statistic')->group(function(){
 Route::prefix('statistic')->group(function(){
     //next
     //next
@@ -9,4 +10,9 @@ Route::prefix('statistic')->group(function(){
     Route::prefix('users')->group(function (){
     Route::prefix('users')->group(function (){
         Route::any('today',[UserStatisticsController::class,'todayData']);
         Route::any('today',[UserStatisticsController::class,'todayData']);
     });
     });
+
+    // 短剧统计
+    Route::prefix('video')->group(function (){
+        Route::get('list',[VideoStatController::class,'index']);//->withoutMiddleware(config('catch.route.middlewares'));
+    });
 });
 });

+ 1 - 1
tests/Feature/MiniprogramTest.php

@@ -54,7 +54,7 @@ class MiniprogramTest extends TestCase
     }
     }
 
 
 
 
-    public function test_index(): void
+    public function ttest_index(): void
     {
     {
         $name = '亿';
         $name = '亿';
         //$response = $this->getJson('/api/channel/paytemplate/optionSequence');
         //$response = $this->getJson('/api/channel/paytemplate/optionSequence');

+ 20 - 0
tests/Feature/VideoStatTest.php

@@ -0,0 +1,20 @@
+<?php
+
+namespace Tests\Feature;
+
+use Illuminate\Foundation\Testing\RefreshDatabase;
+use Illuminate\Foundation\Testing\WithFaker;
+use Tests\TestCase;
+
+class VideoStatTest extends TestCase
+{
+    /**
+     * A basic feature test example.
+     */
+    public function test_example(): void
+    {
+        $response = $this->get('/api/statistic/video/list');
+        echo $response->getContent();
+        $response->assertStatus(200);
+    }
+}

+ 0 - 19
tests/Unit/ExampleTest.php

@@ -1,19 +0,0 @@
-<?php
-
-namespace Tests\Unit;
-
-
-use Tests\TestCase;
-
-class ExampleTest extends TestCase
-{
-    /**
-     * A basic test example.
-     *
-     * @return void
-     */
-    public function test_that_true_is_true()
-    {
-        $this->assertTrue(true);
-    }
-}