Преглед изворни кода

Merge branch 'stable' into liuzj-1000979-dev

liuzejian пре 1 година
родитељ
комит
6691c9a1bb

+ 8 - 8
modules/Channel/Http/Controllers/PayTemplateController.php

@@ -3,14 +3,14 @@
 namespace Modules\Channel\Http\Controllers;
 namespace Modules\Channel\Http\Controllers;
 
 
 use Carbon\Carbon;
 use Carbon\Carbon;
-use Catch\Base\CatchController;
 use Illuminate\Http\Request;
 use Illuminate\Http\Request;
-use Modules\Channel\Exceptions\ChannelBusinessException;
+use Catch\Base\CatchController;
+use Modules\Common\Errors\Errors;
 use Modules\Channel\Models\PayProduct;
 use Modules\Channel\Models\PayProduct;
 use Modules\Channel\Models\PayTemplate;
 use Modules\Channel\Models\PayTemplate;
 use Modules\Channel\Models\PayTemplateItem;
 use Modules\Channel\Models\PayTemplateItem;
+use Modules\Channel\Exceptions\ChannelBusinessException;
 use Modules\Channel\Services\User\UserService;
 use Modules\Channel\Services\User\UserService;
-use Modules\Common\Errors\Errors;
 
 
 class PayTemplateController extends CatchController
 class PayTemplateController extends CatchController
 {
 {
@@ -144,11 +144,11 @@ class PayTemplateController extends CatchController
         }
         }
 
 
         $pay_template_item = $this->payTemplateItem->join('pay_products','pay_products.id','=','pay_template_items.pay_product_id')
         $pay_template_item = $this->payTemplateItem->join('pay_products','pay_products.id','=','pay_template_items.pay_product_id')
-        ->where('pay_template_id',$id)
-        ->select('pay_products.price','pay_products.type','pay_products.given','pay_template_id','pay_product_id','is_first_pay','is_default','sequence','pay_template_items.id as pay_template_item_id')
-        ->where('pay_template_items.status',1)
-        ->orderBy('pay_template_items.sequence')
-        ->get();
+            ->where('pay_template_id',$id)
+            ->select('pay_products.price','pay_products.type','pay_products.given','pay_template_id','pay_product_id','is_first_pay','is_default','sequence','pay_template_items.id as pay_template_item_id')
+            ->where('pay_template_items.status',1)
+            ->orderBy('pay_template_items.sequence')
+            ->get();
         $type_list = collect($this->optionTypeList());
         $type_list = collect($this->optionTypeList());
         foreach($pay_template_item as $item){
         foreach($pay_template_item as $item){
 
 

+ 4 - 2
modules/Channel/Services/Order/OrderService.php

@@ -26,7 +26,7 @@ class OrderService
      */
      */
     public static function getOrderList(array $param, $isAll = false)
     public static function getOrderList(array $param, $isAll = false)
     {
     {
-        $list = self::getOrderQuerySql($param)->select("orders.*", 'pay_merchants.name as pay_merchant_name', 'pay_merchants.payee_name', 'pay_merchants.pay_appid', 'miniprogram.play_name', "miniprogram.name as xcx_name", 'promotions.name as promotion_title')->orderBy("orders.id", 'desc');
+        $list = self::getOrderQuerySql($param)->select("orders.*",'orders_refund_verify.id as refund_id', 'pay_merchants.name as pay_merchant_name', 'pay_merchants.payee_name', 'pay_merchants.pay_appid', 'miniprogram.play_name', "miniprogram.name as xcx_name", 'promotions.name as promotion_title')->orderBy("orders.id", 'desc');
 
 
         if ($isAll) {
         if ($isAll) {
             $list = $list->get();
             $list = $list->get();
@@ -56,7 +56,9 @@ class OrderService
                 $val->promotion_title = $val->promotion_title ?: '-';
                 $val->promotion_title = $val->promotion_title ?: '-';
                 $val->tip_text = $types[$val->order_type]['name'] ?? "-";
                 $val->tip_text = $types[$val->order_type]['name'] ?? "-";
                 $val->status_txt = $status[$val->status]['name'] ?? "-";
                 $val->status_txt = $status[$val->status]['name'] ?? "-";
+                $val->can_apply = $val->refund_id < 1 && $val->status == 'PAID';
                 $val->pay_name = '微信支付';
                 $val->pay_name = '微信支付';
+                unset($val->refund_id);
             }
             }
         }
         }
 
 
@@ -98,7 +100,7 @@ class OrderService
 
 
     private static function getOrderQuerySql(array $param)
     private static function getOrderQuerySql(array $param)
     {
     {
-        $sql = DB::table('orders')->leftJoin('miniprogram', 'miniprogram.id', '=', 'orders.miniprogram_id')->leftJoin('promotions', 'promotions.id', '=', 'orders.promotion_id')->leftJoin('pay_merchants', 'pay_merchants.id', '=', 'orders.pay_merchant_id');
+        $sql = DB::table('orders')->leftJoin('orders_refund_verify','orders.id','=','orders_refund_verify.order_id')->leftJoin('miniprogram', 'miniprogram.id', '=', 'orders.miniprogram_id')->leftJoin('promotions', 'promotions.id', '=', 'orders.promotion_id')->leftJoin('pay_merchants', 'pay_merchants.id', '=', 'orders.pay_merchant_id');
         // 优化师查询
         // 优化师查询
         if (!empty(getProp($param, 'user_id'))) {
         if (!empty(getProp($param, 'user_id'))) {
             $sql->where('orders.user_id', $param['user_id']);
             $sql->where('orders.user_id', $param['user_id']);

+ 9 - 6
modules/Channel/routes/route.php

@@ -19,13 +19,16 @@ Route::prefix('channel')->group(function () {
     Route::prefix('paytemplate')->group(function(){
     Route::prefix('paytemplate')->group(function(){
         Route::get('optionTypeList',[PayTemplateController::class,'optionTypeListOutPut'])->withoutMiddleware(config('catch.route.middlewares'));
         Route::get('optionTypeList',[PayTemplateController::class,'optionTypeListOutPut'])->withoutMiddleware(config('catch.route.middlewares'));
         Route::get('optionSequence',[PayTemplateController::class,'optionSequence'])->withoutMiddleware(config('catch.route.middlewares'));
         Route::get('optionSequence',[PayTemplateController::class,'optionSequence'])->withoutMiddleware(config('catch.route.middlewares'));
-        Route::get('list',[PayTemplateController::class,'index']);
-        Route::get('show/{id}',[PayTemplateController::class,'show']);
-        Route::post('store',[PayTemplateController::class,'store']);
-        Route::post('update/{id}',[PayTemplateController::class,'update']);
+        Route::get('list',[PayTemplateController::class,'index'])->middleware(['roleCheck:administrator,optimizer']);
+        Route::get('show/{id}',[PayTemplateController::class,'show'])->middleware(['roleCheck:administrator,optimizer']);
+        Route::post('store',[PayTemplateController::class,'store'])->middleware(['roleCheck:administrator,optimizer']);
+        Route::post('update/{id}',[PayTemplateController::class,'update'])->middleware(['roleCheck:administrator,optimizer']);
+        /**
+         * @deprecated
+         */
         Route::post('updateStatus/{id}',[PayTemplateController::class,'updateStatus']);//->withoutMiddleware(config('catch.route.middlewares'));;
         Route::post('updateStatus/{id}',[PayTemplateController::class,'updateStatus']);//->withoutMiddleware(config('catch.route.middlewares'));;
-        Route::post('updatePayTemplateItem/{id}',[PayTemplateController::class,'updatePayTemplateItem']);
-        Route::get('deleteOneItem/{id}',[PayTemplateController::class,'deleteOneItem']);
+        Route::post('updatePayTemplateItem/{id}',[PayTemplateController::class,'updatePayTemplateItem'])->middleware(['roleCheck:administrator,optimizer']);
+        Route::get('deleteOneItem/{id}',[PayTemplateController::class,'deleteOneItem'])->middleware(['roleCheck:administrator,optimizer']);
     });
     });
     Route::prefix('wechat_min_user')->group(function (){
     Route::prefix('wechat_min_user')->group(function (){
         // 微信小程用户信息
         // 微信小程用户信息

+ 1 - 0
modules/Common/Errors/Errors.php

@@ -16,6 +16,7 @@ class Errors
     public const  PAY_TEMPLATE_NOT_EXISTS_ERROR= [500008, '充值模板不存在'];
     public const  PAY_TEMPLATE_NOT_EXISTS_ERROR= [500008, '充值模板不存在'];
     public const  PAY_TEMPLATE_CONFLICT= [500008, '该档位已存在'];
     public const  PAY_TEMPLATE_CONFLICT= [500008, '该档位已存在'];
     public const  PAY_TEMPLATE_OPTIONS_ERROR= [500009, '类型不存在'];
     public const  PAY_TEMPLATE_OPTIONS_ERROR= [500009, '类型不存在'];
+    public const  SERIES_NAME_NOT_OK= [500010, '剧集命名不合规'];
     public const  UPLOAD_IMAGE_ERROR= [500006, '上传图片不成功'];
     public const  UPLOAD_IMAGE_ERROR= [500006, '上传图片不成功'];
     public const  JULIANG_ACCOUNT_EXISTS= [500101, '巨量广告账户已经存在'];
     public const  JULIANG_ACCOUNT_EXISTS= [500101, '巨量广告账户已经存在'];
     public const  CALLBACK_RATE_TIME_RANGE_ERROR= [500102, '回传比例时间区间不合法'];
     public const  CALLBACK_RATE_TIME_RANGE_ERROR= [500102, '回传比例时间区间不合法'];

+ 1 - 1
modules/Common/Http/Controllers/Qiniu/CallbackController.php

@@ -20,7 +20,7 @@ class CallbackController
             'callbackBody' => '{"hash":"$(etag)","key":"$(key)", "fname":"$(fname)", "fprefix":"$(fprefix)" ,"duration":"$(avinfo.video.duration)"}',
             'callbackBody' => '{"hash":"$(etag)","key":"$(key)", "fname":"$(fname)", "fprefix":"$(fprefix)" ,"duration":"$(avinfo.video.duration)"}',
             'callbackBodyType' => 'application/json',
             'callbackBodyType' => 'application/json',
             'forceSaveKey' => true,
             'forceSaveKey' => true,
-            'saveKey' => 'duanju/'.$videoEnv.'/$(x:video_id)/$(etag)$(ext)',
+            'saveKey' => 'duanju/'.$videoEnv.'/$(x:video_id)/$(etag)-'.uniqid().'$(ext)',
         ];
         ];
         $upToken = $auth->uploadToken($qiniuConfig['bucket'], null, $expires, $policy, true);
         $upToken = $auth->uploadToken($qiniuConfig['bucket'], null, $expires, $policy, true);
         return $upToken;
         return $upToken;

+ 1 - 1
modules/OrderRefund/Services/RefundOrderService.php

@@ -301,7 +301,7 @@ class RefundOrderService extends BaseServices
                 'pay_op_user' => $option,
                 'pay_op_user' => $option,
             ];
             ];
             OrdersRefundVerify::where('id', $refundId)->update($param);
             OrdersRefundVerify::where('id', $refundId)->update($param);
-            DB::table('orders')->where('id', $info->order_id)->update(['status', "REFUND"]);
+            DB::table('orders')->where('id', $info->order_id)->update(['status'=> "REFUND"]);
             DB::commit();
             DB::commit();
             return "操作成功";
             return "操作成功";
         } catch (\Exception $exception) {
         } catch (\Exception $exception) {

+ 1 - 1
modules/Tuiguang/Http/Controllers/PromotionController.php

@@ -53,7 +53,7 @@ class PromotionController extends CatchController
                 return $query->where('promotions.created_at', '<=', $endTime . ' 23:59:59');
                 return $query->where('promotions.created_at', '<=', $endTime . ' 23:59:59');
             })->orderBy('created_at', 'desc')
             })->orderBy('created_at', 'desc')
             ->select('promotions.id', 'promotions.name', 'promotions.created_at',
             ->select('promotions.id', 'promotions.name', 'promotions.created_at',
-            'videos.name as video_name', 'promotions.series_sequence', 'promotions.callback_type',
+                'videos.name as video_name', 'promotions.series_sequence', 'promotions.callback_type',
                 'promotions.callback_config_id', 'promotions.video_id', 'promotions.remark', 'promotions.status')
                 'promotions.callback_config_id', 'promotions.video_id', 'promotions.remark', 'promotions.status')
             ->paginate($request->input('limit', 15));
             ->paginate($request->input('limit', 15));
         foreach ($result as $item) {
         foreach ($result as $item) {

+ 27 - 8
modules/Video/Http/Controllers/EpisodeController.php

@@ -6,6 +6,7 @@ use Catch\Base\CatchController;
 use Illuminate\Foundation\Validation\ValidatesRequests;
 use Illuminate\Foundation\Validation\ValidatesRequests;
 use Illuminate\Http\Request;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\DB;
+use Modules\Common\Errors\Errors;
 use Modules\Common\Exceptions\CommonBusinessException;
 use Modules\Common\Exceptions\CommonBusinessException;
 use Modules\Common\Services\Qiniu\QiniuTokenService;
 use Modules\Common\Services\Qiniu\QiniuTokenService;
 use Modules\User\Http\Controllers\UserTrait;
 use Modules\User\Http\Controllers\UserTrait;
@@ -47,6 +48,13 @@ class EpisodeController extends CatchController
     public function downloadList(Request $request) {
     public function downloadList(Request $request) {
         return $this->list($request);
         return $this->list($request);
     }
     }
+
+    /**
+     * 添加短剧剧集, 允许覆盖已经存在的播放地址
+     * @param Request $request
+     * @return int
+     * @throws \Illuminate\Validation\ValidationException
+     */
     public function add(Request $request) {
     public function add(Request $request) {
         $this->validate($request, [
         $this->validate($request, [
             'video_id' => 'required',
             'video_id' => 'required',
@@ -60,11 +68,15 @@ class EpisodeController extends CatchController
         $data = [];
         $data = [];
         $now = date('Y-m-d H:i:s');
         $now = date('Y-m-d H:i:s');
         foreach ($videos as $item) {
         foreach ($videos as $item) {
-            $data[] = [
+            $sequence = intval(explode('_', $item['name'])[0]);
+            if($sequence <=0 ) {
+                CommonBusinessException::throwError(Errors::SERIES_NAME_NOT_OK);
+            }
+            $data[$sequence] = [
                 'video_id' => $request->input('video_id'),
                 'video_id' => $request->input('video_id'),
                 'video_key' => $item['key'],
                 'video_key' => $item['key'],
                 'series_name' => $item['name'],
                 'series_name' => $item['name'],
-                'series_sequence' => intval(explode('_', $item['name'])[0]),
+                'series_sequence' => $sequence,
                 'duration' => $item['duration'],
                 'duration' => $item['duration'],
                 'created_at' => $now,
                 'created_at' => $now,
                 'updated_at' => $now,
                 'updated_at' => $now,
@@ -73,14 +85,21 @@ class EpisodeController extends CatchController
 
 
         $allSequence = DB::table('video_series')->where(['video_id' => $request->input('video_id')])
         $allSequence = DB::table('video_series')->where(['video_id' => $request->input('video_id')])
             ->select('series_sequence')->get()->pluck('series_sequence');
             ->select('series_sequence')->get()->pluck('series_sequence');
-        $alreadySeries = collect($data)->pluck('series_sequence')->intersect($allSequence)->map(function ($item) use ($data) {
-            return collect($data)->keyBy('series_sequence')->get($item)['series_name'];
-        });
-        if($alreadySeries->isNotEmpty()) {
-            CommonBusinessException::throwError([-2333, $alreadySeries->join(', ')]);
+
+        foreach ($data as $key=>$item) {
+            if($allSequence->contains($key)) {
+                DB::table('video_series')->where([
+                    'video_id' => $item['video_id'],
+                    'series_sequence' => $item['series_sequence']
+                ])->update([
+                    'video_key' => $item['video_key'], 'series_name' => $item['series_name'],
+                    'duration' => $item['duration'], 'updated_at' => $item['updated_at'],
+                ]);
+            } else {
+                DB::table('video_series')->insert($item);
+            }
         }
         }
 
 
-        DB::table('video_series')->insert($data);
         DB::table('videos')
         DB::table('videos')
             ->where(['id' => $request->input('video_id')])
             ->where(['id' => $request->input('video_id')])
             ->update(['updated_episode_num' => DB::table('video_series')
             ->update(['updated_episode_num' => DB::table('video_series')

+ 21 - 0
tests/Channel/Http/Controllers/PayTemplateControllerTest.php

@@ -0,0 +1,21 @@
+<?php
+
+namespace Tests\Channel\Http\Controllers;
+
+use Modules\Channel\Http\Controllers\PayTemplateController;
+use PHPUnit\Framework\TestCase;
+use Tests\UsedTestCase;
+
+class PayTemplateControllerTest extends UsedTestCase
+{
+
+    public function testIndex()
+    {
+        $res = $this->withHeaders([
+            'Authorization' => 'Bearer '. $this->token,
+        ])->json('get','http://localhost/api/channel/paytemplate/list', [
+
+        ]);
+        $res->dump();
+    }
+}

+ 2 - 2
tests/UsedTestCase.php

@@ -13,11 +13,11 @@ abstract class UsedTestCase extends BaseTestCase
     {
     {
         parent::setUp(); // TODO: Change the autogenerated stub
         parent::setUp(); // TODO: Change the autogenerated stub
         $tokenInfo = $this->post('http://localhost/api/login', [
         $tokenInfo = $this->post('http://localhost/api/login', [
-//            'email' => 'catch@admin.com',
+            'email' => 'catch@admin.com',
             'remember' => false,
             'remember' => false,
 //            'email' => 'xiaoli@qq.com',
 //            'email' => 'xiaoli@qq.com',
             'password' => 'catchadmin',
             'password' => 'catchadmin',
-            'email' => 'aa4@test.com',
+//            'email' => 'aa4@test.com',
         ])->json();
         ])->json();
         $this->token = $tokenInfo['data']['token'];
         $this->token = $tokenInfo['data']['token'];
     }
     }

+ 4 - 4
tests/Video/Http/Controllers/EpisodeControllerTest.php

@@ -27,10 +27,10 @@ class EpisodeControllerTest extends UsedTestCase
         ])->json('post','http://localhost/api/videoStock/episode/add', [
         ])->json('post','http://localhost/api/videoStock/episode/add', [
             'video_id' => 3,
             'video_id' => 3,
             'videos' => [
             'videos' => [
-                ['name' => '01_xxx', 'duration' => 12342, 'key' => 'url1'],
-                ['name' => '02_xxx', 'duration' => 1222, 'key' => 'url2'],
-                ['name' => '03_xxx', 'duration' => 3342, 'key' => 'url3'],
-                ['name' => '04_xxx', 'duration' => 3342, 'key' => 'url3'],
+                ['name' => '01_xxx', 'duration' => 12342, 'key' => 'url1234'],
+                ['name' => '02_xxx', 'duration' => 1222, 'key' => 'url244'],
+                ['name' => '03_xxx', 'duration' => 3342, 'key' => 'url344'],
+                ['name' => '04_xxx', 'duration' => 3342, 'key' => 'url344'],
             ]
             ]
         ]);
         ]);
 //        $this->dumpJson($res);
 //        $this->dumpJson($res);