Quellcode durchsuchen

巨量广告账户级配置

liuzejian vor 1 Jahr
Ursprung
Commit
bc2c4a8849

+ 103 - 0
modules/Callback/Http/Controllers/JuliangAccountController.php

@@ -0,0 +1,103 @@
+<?php
+
+namespace Modules\Video\Http\Controllers;
+
+use Catch\Base\CatchController;
+use Illuminate\Foundation\Validation\ValidatesRequests;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+use Modules\Common\Errors\Errors;
+use Modules\Common\Exceptions\CommonBusinessException;
+use Modules\User\Http\Controllers\UserTrait;
+
+class JuliangAccountController extends CatchController
+{
+    use UserTrait;
+    use ValidatesRequests;
+
+    public function list(Request $request) {
+        $advAccountId = $request->input('account_id');
+        $advAccountName = $request->input('account_name');
+
+        return DB::table('juliang_account_callback_config')
+            ->where(['company_uid' => $this->getCompanyUid()])
+            ->when($advAccountId, function ($query, $advAccountId) {
+                return $query->where('adv_account_id' , $advAccountId);
+            })->when($advAccountName, function ($query, $advAccountName) {
+                return $query->where('adv_account_name', 'like', '%'. $advAccountName. '%');
+            })
+            ->paginate($request->input('limit', 30));
+    }
+
+    public function addAccount(Request $request) {
+        $this->validate($request, [
+            'account_id' => 'required|string|max:64',
+            'account_name' => 'required|string|max:64',
+            'callback_state' => 'required|integer|in:0,1',
+            'protect_num' => 'required|integer|min:0',
+            'callback_default_rate' => 'required|min:0|max:100',
+            'callback_rate_time_config' => 'nullable|array',
+            'callback_min_money' => 'required|min:0',
+            'callback_max_money' => 'required|min:0'
+        ]);
+
+        if(DB::table('juliang_account_callback_config')
+            ->where(['company_uid' => $this->getCompanyUid(), 'adv_account_id' => $request->input('account_id')])
+            ->exists()) {
+            CommonBusinessException::throwError(Errors::JULIANG_ACCOUNT_EXISTS);
+        }
+        $now = date('Y-m-d H:i:s');
+        DB::table('juliang_account_callback_config')
+            ->insert([
+                'adv_account_id' => $request->input('acccount_id'),
+                'adv_account_name' => $request->input('account_name'),
+                'callback_state' => $request->input('callback_state'),
+                'protect_num' => $request->input('protect_num'),
+                'callback_default_rate' => $request->input('callback_default_rate'),
+                'callback_rate_time_config' => \json_encode($request->input('callback_rate_time_config', '[]')),
+                'callback_min_money' => $request->input('callback_min_money'),
+                'callback_max_money' => $request->input('callback_max_money'),
+                'company_uid' => $this->getCompanyUid(),
+                'created_at' => $now,
+                'updated_at' => $now,
+            ]);
+        return 'ok';
+    }
+
+    public function updateCallbackConfig(Request $request) {
+        $this->validate($request, [
+            'ids' => 'required|array',
+            'callback_state' => 'required|integer|in:0,1',
+            'protect_num' => 'required|integer|min:0',
+            'callback_default_rate' => 'required|min:0|max:100',
+            'callback_rate_time_config' => 'nullable|array',
+            'callback_min_money' => 'required|min:0',
+            'callback_max_money' => 'required|min:0'
+        ]);
+        $now = date('Y-m-d H:i:s');
+        foreach ($request->input('ids') as $id) {
+            DB::table('juliang_account_callback_config')
+                ->where(['id' => $id, 'company_uid' => $this->getCompanyUid()])
+                ->update([
+                    'callback_state' => $request->input('callback_state'),
+                    'protect_num' => $request->input('protect_num'),
+                    'callback_default_rate' => $request->input('callback_default_rate'),
+                    'callback_rate_time_config' => \json_encode($request->input('callback_rate_time_config', '[]')),
+                    'callback_min_money' => $request->input('callback_min_money'),
+                    'callback_max_money' => $request->input('callback_max_money'),
+                    'updated_at' => $now,
+                ]);
+        }
+        $advAccountIds = DB::table('juliang_account_callback_config')
+            ->whereIn('id', $request->input('ids'))
+            ->where('company_uid', $this->getCompanyUid())
+            ->select('adv_account_id')->get()->pluck('adv_account_id');
+        if($advAccountIds->isNotEmpty()) {
+            DB::table('juliang_account_recharge_report_records')
+                ->whereIn('account_id', $advAccountIds)
+                ->update(['is_eanbled' => 0, 'updated_at' => $now]);
+        }
+
+        return 'ok';
+    }
+}

+ 32 - 0
modules/Callback/Installer.php

@@ -0,0 +1,32 @@
+<?php
+
+namespace Modules\ContentManage;
+
+use Catch\Support\Module\Installer as ModuleInstaller;
+use Modules\ContentManage\Providers\ContentManageServiceProvider;
+
+class Installer extends ModuleInstaller
+{
+    protected function info(): array
+    {
+        // TODO: Implement info() method.
+        return [
+            'title' => '内容中台',
+            'name' => 'contentManage',
+            'path' => 'contentManage',
+            'keywords' => '内容中台',
+            'description' => '内容中台管理模块',
+            'provider' => ContentManageServiceProvider::class
+        ];
+    }
+
+    protected function requirePackages(): void
+    {
+        // TODO: Implement requirePackages() method.
+    }
+
+    protected function removePackages(): void
+    {
+        // TODO: Implement removePackages() method.
+    }
+}

+ 31 - 0
modules/Callback/Providers/CallbackServiceProvider.php

@@ -0,0 +1,31 @@
+<?php
+
+namespace Modules\Video\Providers;
+
+use Catch\CatchAdmin;
+use Catch\Providers\CatchModuleServiceProvider;
+use Modules\ContentManage\Middlewares\ContentManageGate;
+
+class CallbackServiceProvider extends CatchModuleServiceProvider
+{
+    /**
+     * middlewares
+     *
+     * @return string[]
+     */
+    protected function middlewares(): array
+    {
+       return [];
+    }
+
+    /**
+     * route path
+     *
+     * @return string|array
+     */
+    public function moduleName(): string|array
+    {
+        // TODO: Implement path() method.
+        return 'callback';
+    }
+}

+ 10 - 0
modules/Callback/README.md

@@ -0,0 +1,10 @@
+#内容中台管理模块
+关于内容中台 相关的后台接口,对外api接口,都写在这里
+配置文件放在: config目录下,读取配置文件示例:config('contentManage.zhushuyunpublicapi.public_domain');
+config("模块名.配置文件名.配置项");
+
+数据库模型文件放在:Models 目录下面
+服务层文件放在:Services 目录下面
+控制器放在:modules/ContentManage/Http/Controllers 目录下面
+中间件放在:modules/ContentManage/Middlewares 目录下面
+路由只能现在 modules/ContentManage/rout/route.php 文件里

+ 17 - 0
modules/Callback/routes/route.php

@@ -0,0 +1,17 @@
+<?php
+
+use Illuminate\Support\Facades\Route;
+use Modules\System\Http\Controllers\NoticesController;
+use Modules\System\Http\Controllers\NoticeTypesController;
+use Modules\Video\Http\Controllers\EpisodeController;
+use Modules\Video\Http\Controllers\VideoCategoryController;
+use Modules\Video\Http\Controllers\JuliangAccountController;
+
+Route::prefix('callback')->group(function () {
+    Route::prefix('juliangAccount')->group(function(){
+        Route::get('list', [JuliangAccountController::class, 'list']);
+        Route::post('addAccount', [JuliangAccountController::class, 'addAccount']);
+        Route::post('updateCallbackConfig', [JuliangAccountController::class, 'updateCallbackConfig']);
+    });
+});
+

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

@@ -12,4 +12,5 @@ class Errors
     public const  VIDEO_NOT_EXISTS= [500008, '视频不存在'];
     public const  VIDEO_NOT_EXISTS= [500008, '视频不存在'];
     public const  MINIPROGRAM_STATUS_ERROR= [500005, '小程序未启用'];
     public const  MINIPROGRAM_STATUS_ERROR= [500005, '小程序未启用'];
     public const  UPLOAD_IMAGE_ERROR= [500006, '上传图片不成功'];
     public const  UPLOAD_IMAGE_ERROR= [500006, '上传图片不成功'];
+    public const  JULIANG_ACCOUNT_EXISTS= [500101, '巨量广告账户已经存在'];
 }
 }

+ 10 - 0
modules/User/Http/Controllers/UserTrait.php

@@ -78,4 +78,14 @@ trait UserTrait
         return compact('loginUser', 'loginUserRoles', 'operateUserRoles', 'operateUser');
         return compact('loginUser', 'loginUserRoles', 'operateUserRoles', 'operateUser');
     }
     }
 
 
+    public function getCompanyUid() {
+        $currentUserRoles = $this->listUserRoles();
+        if($currentUserRoles->contains('company')) {
+            return $this->getCurrentUser()->id;
+        }
+        if($currentUserRoles->contains('optimizer')) {
+            return $this->getCurrentUser()->pid;
+        }
+        return null;
+    }
 }
 }

+ 5 - 5
modules/Video/routes/route.php

@@ -5,18 +5,18 @@ use Modules\System\Http\Controllers\NoticesController;
 use Modules\System\Http\Controllers\NoticeTypesController;
 use Modules\System\Http\Controllers\NoticeTypesController;
 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\JuliangAccountController;
 
 
 Route::prefix('videoStock')->group(function () {
 Route::prefix('videoStock')->group(function () {
-    Route::get('video/list', [VideoController::class, 'list']);
+    Route::get('video/list', [JuliangAccountController::class, 'list']);
     Route::get('episode/list', [EpisodeController::class, 'list']);
     Route::get('episode/list', [EpisodeController::class, 'list']);
     Route::get('episode/downloadList', [EpisodeController::class, 'downloadList']);
     Route::get('episode/downloadList', [EpisodeController::class, 'downloadList']);
     Route::get('videoCategory/list', [VideoCategoryController::class, 'list']);
     Route::get('videoCategory/list', [VideoCategoryController::class, 'list']);
 
 
 
 
-    Route::post('video/update', [VideoController::class, 'update']);
-    Route::post('video/add', [VideoController::class, 'add']);
-    Route::post('video/setChargeConfig', [VideoController::class, 'setChargeConfig']);
+    Route::post('video/update', [JuliangAccountController::class, 'update']);
+    Route::post('video/add', [JuliangAccountController::class, 'add']);
+    Route::post('video/setChargeConfig', [JuliangAccountController::class, 'setChargeConfig']);
     Route::post('episode/add', [EpisodeController::class, 'add']);
     Route::post('episode/add', [EpisodeController::class, 'add']);
 });
 });
 
 

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

@@ -2,7 +2,7 @@
 
 
 namespace Tests\Video\Http\Controllers;
 namespace Tests\Video\Http\Controllers;
 
 
-use Modules\Video\Http\Controllers\VideoController;
+use Modules\Video\Http\Controllers\JuliangAccountController;
 use PHPUnit\Framework\TestCase;
 use PHPUnit\Framework\TestCase;
 use Tests\UsedTestCase;
 use Tests\UsedTestCase;