Explorar o código

Merge branch 'liuzj-weixin-tishen-dev' into test

# Conflicts:
#	modules/Video/Http/Controllers/VideoController.php
liuzejian hai 1 ano
pai
achega
e9808371f9

+ 32 - 0
app/Jobs/Video/WechatCheck.php

@@ -0,0 +1,32 @@
+<?php
+
+namespace App\Jobs\Video;
+
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldBeUnique;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Queue\SerializesModels;
+
+class WechatCheck implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+    private $info;
+    /**
+     * Create a new job instance.
+     */
+    public function __construct($info)
+    {
+        $this->info = $info;
+    }
+
+    /**
+     * Execute the job.
+     */
+    public function handle(): void
+    {
+        //
+    }
+}

+ 11 - 0
app/Libs/Helpers.php

@@ -3,6 +3,7 @@
 
 
 use Illuminate\Http\UploadedFile;
 use Illuminate\Http\UploadedFile;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\DB;
+use Modules\Common\Support\Trace\TraceContext;
 use Modules\Common\Support\Upload\Uploader;
 use Modules\Common\Support\Upload\Uploader;
 use PhpOffice\PhpSpreadsheet\IOFactory;
 use PhpOffice\PhpSpreadsheet\IOFactory;
 use PhpOffice\PhpSpreadsheet\Spreadsheet;
 use PhpOffice\PhpSpreadsheet\Spreadsheet;
@@ -404,3 +405,13 @@ if (!function_exists('print_sql')) {
         });
         });
     }
     }
 }
 }
+
+if(!function_exists('getTraceContext')) {
+
+    /**
+     * @return TraceContext
+     */
+    function getTraceContext() {
+        return app(TraceContext::class);
+    }
+}

+ 7 - 1
config/database.php

@@ -145,7 +145,13 @@ return [
             'port' => env('REDIS_PORT', '6379'),
             'port' => env('REDIS_PORT', '6379'),
             'database' => env('REDIS_CACHE_DB', '1'),
             'database' => env('REDIS_CACHE_DB', '1'),
         ],
         ],
-
+        // 普通redis队列
+        'queue-redis' => [
+            'host' => env('COMMON_QUEUE_REDIS_HOST', 'localhost'),
+            'password' => env('COMMON_QUEUE_REDIS_PASSWORD', null),
+            'port' => env('COMMON_QUEUE_REDIS_PORT', 6379),
+            'database' => 2,
+        ],
     ],
     ],
 
 
 ];
 ];

+ 7 - 0
config/queue.php

@@ -71,6 +71,13 @@ return [
             'after_commit' => false,
             'after_commit' => false,
         ],
         ],
 
 
+        'queue-redis' => [
+            'driver' => 'redis',
+            'connection' => 'queue-redis',
+            'queue' => 'default',
+            'expire' => 60,
+        ]
+
     ],
     ],
 
 
     /*
     /*

+ 2 - 1
modules/Common/routes/route.php

@@ -6,6 +6,7 @@ use Modules\Common\Http\Controllers\OptionController;
 use Modules\Common\Http\Controllers\Qiniu\CallbackController;
 use Modules\Common\Http\Controllers\Qiniu\CallbackController;
 use Modules\Common\Http\Controllers\Qiniu\ImageUploadController;
 use Modules\Common\Http\Controllers\Qiniu\ImageUploadController;
 use Modules\Common\Http\Controllers\UploadController;
 use Modules\Common\Http\Controllers\UploadController;
+use Modules\Permissions\Middlewares\PermissionGate;
 
 
 /*
 /*
 |--------------------------------------------------------------------------
 |--------------------------------------------------------------------------
@@ -33,7 +34,7 @@ Route::prefix('qiniu')->group(function() {
     Route::get('upload/token', [CallbackController::class, 'uploadToken']);
     Route::get('upload/token', [CallbackController::class, 'uploadToken']);
     Route::get('downloadUrl', [CallbackController::class, 'downloadUrl']);
     Route::get('downloadUrl', [CallbackController::class, 'downloadUrl']);
     Route::post('upload/callback', [CallbackController::class, 'callback'])->withoutMiddleware(config('catch.route.middlewares'));
     Route::post('upload/callback', [CallbackController::class, 'callback'])->withoutMiddleware(config('catch.route.middlewares'));
-    Route::post('upload/image', [ImageUploadController::class, 'uploadImage']);
+    Route::post('upload/image', [ImageUploadController::class, 'uploadImage'])->withoutMiddleware([PermissionGate::class]);
 });
 });
 
 
 
 

+ 2 - 2
modules/Video/Http/Controllers/VideoController.php

@@ -28,7 +28,7 @@ class VideoController extends CatchController
         $categoryId = $request->input('categoryId');
         $categoryId = $request->input('categoryId');
         $videoId = $request->input('videoId');
         $videoId = $request->input('videoId');
         $shelfType = $request->input('shelfType');
         $shelfType = $request->input('shelfType');
-        $wechatPass = $request->input('wechatPass', 0);
+        $wechatPass = $request->input('wechatPass');
 
 
         $videos = DB::table('videos')
         $videos = DB::table('videos')
             ->when($videoId, function ($query, $videoId){
             ->when($videoId, function ($query, $videoId){
@@ -42,7 +42,7 @@ class VideoController extends CatchController
                 return $query->where('update_type', $updateType);
                 return $query->where('update_type', $updateType);
             })->when($categoryId, function ($query, $categoryId){
             })->when($categoryId, function ($query, $categoryId){
                 return $query->where('category_id', $categoryId);
                 return $query->where('category_id', $categoryId);
-            })->when($wechatPass, function ($query, $wechatPass) {
+            })->when(!is_null($wechatPass), function ($query) use ($wechatPass) {
                 return $query->where('wechat_pass', $wechatPass);
                 return $query->where('wechat_pass', $wechatPass);
             })
             })
             ->orderBy('id', 'desc')
             ->orderBy('id', 'desc')

+ 119 - 0
modules/Video/Http/Controllers/WechatCheckController.php

@@ -0,0 +1,119 @@
+<?php
+
+namespace Modules\Video\Http\Controllers;
+
+use App\Jobs\Video\WechatCheck;
+use Catch\Base\CatchController;
+use Illuminate\Foundation\Validation\ValidatesRequests;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+
+/**
+ * 微信提审
+ */
+class WechatCheckController extends CatchController
+{
+    use ValidatesRequests;
+    /**
+     * 添加提审
+     * @param Request $request
+     */
+    public function add(Request $request) {
+        $this->validate($request, [
+            'video_id'=>'required',
+            'producer' => 'required|string|max:256',
+            'playwright' => 'required|string|max:256',
+            'production_license_img' => 'required|url',
+            'authorized_img' => 'required|url'
+        ]);
+
+        $data = $request->all();
+        $data['created_at'] = $data['updated_at'] = date('Y-m-d H:i:s');
+        DB::table('video_wechat_check')
+            ->insert($data);
+
+        return 'ok';
+    }
+
+    /**
+     * 修改
+     * @param Request $request
+     */
+    public function update(Request $request) {}
+
+    /**
+     * 删除
+     * @param Request $request
+     */
+    public function delete(Request $request) {
+        $this->validate($request, ['id' => 'required']);
+        DB::table('video_wechat_check')
+            ->where([
+                'id' => $request->input('id'),
+                'is_enabled' => 1,
+            ])->update([
+                'is_enabled' => 0,
+                'updated_at' => date('Y-m-d H:i:s')
+            ]);
+
+        return 'ok';
+    }
+    /**
+     * 提审记录列表
+     * @param Request $request
+     */
+    public function list(Request $request) {
+        $videoId = $request->input('video_id');
+        $producer = $request->input('producer');
+        $playwright = $request->input('playwright');
+        $status = $request->input('status',0);
+
+        return DB::table('video_wechat_check as check')
+            ->join('videos', 'videos.id', 'check.video_id')
+            ->where([
+                'check.status' => $status,
+                'check.is_enabled' => 1,
+            ])->when($videoId, function ($query, $videoId) {
+                return $query->where('check.video_id', $videoId);
+            })->when($producer, function ($query, $producer){
+                return $query->where('check.producer', 'like', '%'. $producer. '%');
+            })->when($playwright, function ($query, $playwright){
+                return $query->where('check.playwright', 'like', '%'. $playwright. '%');
+            })->select('check.id', 'videos.name', 'videos.note', 'videos.total_episode_num',
+                'videos.cover_image','check.status','check.producer',
+            'check.playwright', 'check.production_license_img', 'check.authorized_img', 'check.apply_at',
+            'check.check_at', 'check.check_reason')
+            ->orderBy('check.id','desc')
+            ->paginate($request->input('limit', 10));
+
+    }
+
+    /**
+     * 微信提审
+     * @param Request $request
+     */
+    public function wechatCheck(Request $request) {
+        $this->validate($request, [
+            'ids' => 'required|array'
+        ]);
+        $ids = $request->input('ids');
+        $now = date('Y-m-d H:i:s');
+        DB::table('video_wechat_check')
+            ->whereIn('id', $ids)
+            ->whereIn('status', [0, 4])
+            ->update([
+                'status' => 5,
+                'updated_at' => $now,
+                'apply_at' => $now,
+            ]);
+        $traceContext = getTraceContext();
+        foreach ($ids as  $id) {
+            WechatCheck::dispatch([
+                'id' => $id,
+                'traceInfo' => $traceContext->getTraceInfo()
+            ])->onQueue('{duanju_manage}.video.wechatCheck')->onConnection('queue-redis');
+        }
+
+        return 'ok';
+    }
+}

+ 7 - 0
modules/Video/routes/route.php

@@ -4,6 +4,7 @@ use Illuminate\Support\Facades\Route;
 use Modules\Video\Http\Controllers\EpisodeController;
 use Modules\Video\Http\Controllers\EpisodeController;
 use Modules\Video\Http\Controllers\VideoCategoryController;
 use Modules\Video\Http\Controllers\VideoCategoryController;
 use Modules\Video\Http\Controllers\VideoController;
 use Modules\Video\Http\Controllers\VideoController;
+use Modules\Video\Http\Controllers\WechatCheckController;
 
 
 Route::prefix('videoStock')->group(function () {
 Route::prefix('videoStock')->group(function () {
     Route::get('video/list', [VideoController::class, 'list']);
     Route::get('video/list', [VideoController::class, 'list']);
@@ -16,5 +17,11 @@ Route::prefix('videoStock')->group(function () {
     Route::post('video/add', [VideoController::class, 'add']);
     Route::post('video/add', [VideoController::class, 'add']);
     Route::post('video/setChargeConfig', [VideoController::class, 'setChargeConfig']);
     Route::post('video/setChargeConfig', [VideoController::class, 'setChargeConfig']);
     Route::post('episode/add', [EpisodeController::class, 'add']);
     Route::post('episode/add', [EpisodeController::class, 'add']);
+
+    Route::prefix('wechatCheck')->group(function(){
+        Route::post('add', [WechatCheckController::class, 'add']);
+        Route::get('list', [WechatCheckController::class, 'list']);
+        Route::post('delete', [WechatCheckController::class, 'delete']);
+    });
 });
 });
 
 

+ 1 - 0
tests/Video/Http/Controllers/VideoControllerTest.php

@@ -63,6 +63,7 @@ class VideoControllerTest extends UsedTestCase
 //        'updateType' => 2,
 //        'updateType' => 2,
 //        'categoryId' => 4,
 //        'categoryId' => 4,
 //            'operateUserId' =>10
 //            'operateUserId' =>10
+            'wechatPass' => ''
         ]);
         ]);
 //        $this->dumpJson($res);
 //        $this->dumpJson($res);
         $res->dump();
         $res->dump();

+ 37 - 0
tests/Video/Http/Controllers/WechatCheckControllerTest.php

@@ -0,0 +1,37 @@
+<?php
+
+namespace Tests\Video\Http\Controllers;
+
+use Modules\Video\Http\Controllers\WechatCheckController;
+use PHPUnit\Framework\TestCase;
+use Tests\UsedTestCase;
+
+class WechatCheckControllerTest extends UsedTestCase
+{
+
+    public function testAdd()
+    {
+        $res = $this->withHeaders([
+            'Authorization' => 'Bearer '. $this->token,
+        ])->json('post','http://localhost/api/videoStock/wechatCheck/add', [
+            'video_id' => 12,
+            'producer' => 'zzz',
+            'playwright' =>  'xxxx',
+            'production_license_img' => 'https://minifile-cdn.zvyhjkx.com/uploads/images/20230531/9NUcrj2Dfz1685513143.png',
+            'authorized_img' => 'https://minifile-cdn.zvyhjkx.com/uploads/images/20230531/9NUcrj2Dfz1685513143.png'
+        ]);
+        $res->dump();
+    }
+
+    public function testList()
+    {
+        $res = $this->withHeaders([
+            'Authorization' => 'Bearer '. $this->token,
+        ])->json('get','http://localhost/api/videoStock/wechatCheck/list', [
+            'video_id' => 12,
+            'producer' => 'zzz',
+            'playwright' =>  'xxxx',
+        ]);
+        $res->dump();
+    }
+}