Bladeren bron

Merge branch 'liuzj-permission-dev' into test

# Conflicts:
#	tests/UsedTestCase.php
liuzejian 1 jaar geleden
bovenliggende
commit
970d6fd113

+ 4 - 0
modules/Common/Http/Controllers/Qiniu/CallbackController.php

@@ -24,6 +24,10 @@ class CallbackController
         return $upToken;
     }
 
+    public function downloadUrl(Request $request) {
+
+    }
+
     public function callback(Request $request) {
         myLog('qiniu-log', $request->all());
         return 1;

+ 25 - 0
modules/Common/Services/Qiniu/QiniuTokenService.php

@@ -0,0 +1,25 @@
+<?php
+
+namespace Modules\Common\Services\Qiniu;
+
+use Qiniu\Auth;
+
+class QiniuTokenService
+{
+    /**
+     * 获取私有资源的公开访问链接
+     * ----说明-----
+     * 如果将一个资源,例如一张图片存在七牛云的私有空间中,是没有办法直接通过公网访问的.
+     * 将一个域名绑定到这个私有空间后,那么空间中的资源便有了对应的私有资源链接,但此时还是需要通过生成token
+     * 追加到私有资源链接后面的形式才可以对私有资源进行有限制时间的访问
+     * @param $url 私有资源链接
+     * @param int $expires 公开访问链接有效时间
+     * @return string 公开访问链接
+     */
+    public static function getPrivateSourceDownloadUrl($url, $expires = 3600) {
+        $qiniuConfig = config('common.qiniu');
+        $auth = new Auth($qiniuConfig['accessKey'], $qiniuConfig['secretKey']);
+        $url = $auth->privateDownloadUrl($url, $expires);
+        return $url;
+    }
+}

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

@@ -31,6 +31,7 @@ Route::get('modules/listApp', [ModuleController::class, 'listApp']);
 
 Route::prefix('qiniu')->group(function() {
     Route::get('upload/token', [CallbackController::class, 'uploadToken']);
+    Route::get('downloadUrl', [CallbackController::class, 'downloadUrl']);
     Route::post('upload/callback', [CallbackController::class, 'callback'])->withoutMiddleware(config('catch.route.middlewares'));
     Route::post('upload/image', [ImageUploadController::class, 'uploadImage']);
 });

+ 2 - 0
modules/Video/Http/Controllers/EpisodeController.php

@@ -8,6 +8,7 @@ use Illuminate\Http\Request;
 use Illuminate\Support\Facades\DB;
 use Modules\Common\Errors\Errors;
 use Modules\Common\Exceptions\CommonBusinessException;
+use Modules\Common\Services\Qiniu\QiniuTokenService;
 use Modules\User\Http\Controllers\UserTrait;
 use Modules\User\Models\User;
 use Modules\Video\Services\VideoService;
@@ -37,6 +38,7 @@ class EpisodeController extends CatchController
             $series->series_name = sprintf('第%s集', $series->series_sequence);
             $series->is_charge = $series->series_sequence >= $video->charge_sequence;
             $series->duration_str = gmdate('H:i:s', $series->duration);
+            $series->public_video_url = QiniuTokenService::getPrivateSourceDownloadUrl($series->video_url);
         }
 
         return $videoSeries;

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

@@ -60,7 +60,7 @@ class VideoController extends CatchController
     public function setChargeConfig(Request $request) {
         $this->validate($request, [
             'id' => 'required',
-            'chargeCoin' => 'required|integer|min:50|max:100',
+            'chargeCoin' => 'required|integer|min:50|max:250',
             'chargeType' => 'required|integer|in:1',
             'chargeSequence' => 'required|integer|min:1|max:30'
         ]);

+ 8 - 0
tests/Common/Http/Controllers/Qiniu/CallbackControllerTest.php

@@ -16,4 +16,12 @@ class CallbackControllerTest extends UsedTestCase
         ])->json('get','http://localhost/api/qiniu/upload/token');
         $res->dump();
     }
+
+    public function testdownloadUrl() {
+        $res = $this->withHeaders([
+            'Authorization' => 'Bearer '. $this->token,
+        ])->json('get','http://localhost/api/qiniu/downloadUrl');
+        $res->dump();
+    }
+
 }

+ 4 - 3
tests/UsedTestCase.php

@@ -16,10 +16,11 @@ abstract class UsedTestCase extends BaseTestCase
 //            'email' => 'catch@admin.com',
 //            'password' => 'catchadmin',
             'remember' => false,
-//            'email' => 'xiaoli@qq.com',
-//            'password' => 'Qaz123',
-        'email' => 'aa4@test.com',
             'password' => '123',
+            'email' => 'xiaoli@qq.com',
+            'password' => 'Qaz123',
+//        'email' => 'aa4@test.com',
+//            'password' => '123',
         ])->json();
         $this->token = $tokenInfo['data']['token'];
     }