Ver código fonte

Merge branch 'liuzj-1000976-dev' into stable

liuzejian 1 ano atrás
pai
commit
c9f0629e5b

+ 60 - 0
modules/Audience/Http/Controllers/AudienceController.php

@@ -0,0 +1,60 @@
+<?php
+
+namespace Modules\Audience\Http\Controllers;
+
+use Catch\Base\CatchController;
+use Illuminate\Foundation\Validation\ValidatesRequests;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+use Modules\Channel\Services\WechatMinprogram\WechatMinprogramUserService;
+
+class AudienceController extends  CatchController
+{
+    use ValidatesRequests;
+    /**
+     * 用户详情
+     * @param Request $request
+     */
+    public function detail(Request $request) {
+        $this->validate($request, [
+            'uid' => 'required'
+        ]);
+        $uid = $request->input('uid');
+        $userInfo = DB::table(getMiniProgramTableName(1, 'users'))->where('id', $uid)->first();
+        if (!$userInfo) {
+            return null;
+        }
+        $ranseRecordTable = 'ranse_record_'.($uid % 8);
+        $ranseIds = DB::table('promotions')
+            ->where('uid', $this->getLoginUserId())
+            ->select('id')->pluck('id');
+        if($ranseIds->isEmpty()) {
+            return null;
+        }
+        $ranseRecord = DB::table($ranseRecordTable)->whereIn('ranse_id', $ranseIds)
+            ->orderBy('created_at', 'desc')
+            ->first();
+        if(!$ranseRecord) {
+            return null;
+        }
+
+        $totalChargeCount = DB::table('orders')
+            ->where('uid', $uid)
+            ->whereIn('promotion_id', $ranseIds)
+            ->where('status', '<>' ,'UNPAID')
+            ->count();
+
+        $result = [
+            'uid' => $userInfo->id,
+            'ranse_start_at' => $ranseRecord->created_at ?: "",
+            'charge_coin' => $userInfo->charge_coin,
+            'reward_coin' => $userInfo->reward_coin,
+            'total_charge_count' => $totalChargeCount,
+            'miniprogram_name' => DB::table('miniprogram')
+                ->where('id', $userInfo->miniprogram_id)->value('name'),
+            'user_created_at' => $userInfo->created_at,
+        ];
+
+        return array_merge($result, WechatMinprogramUserService::getLevelText($uid));
+    }
+}

+ 32 - 0
modules/Audience/Installer.php

@@ -0,0 +1,32 @@
+<?php
+
+namespace Modules\Audience;
+
+use Catch\Support\Module\Installer as ModuleInstaller;
+use Modules\Audience\Providers\AudienceServiceProvider;
+
+class Installer extends ModuleInstaller
+{
+    protected function info(): array
+    {
+        // TODO: Implement info() method.
+        return [
+            'title' => '观众管理',
+            'name' => 'audience',
+            'path' => 'audience',
+            'keywords' => '观众管理',
+            'description' => '观众管理',
+            'provider' => AudienceServiceProvider::class
+        ];
+    }
+
+    protected function requirePackages(): void
+    {
+        // TODO: Implement requirePackages() method.
+    }
+
+    protected function removePackages(): void
+    {
+        // TODO: Implement removePackages() method.
+    }
+}

+ 29 - 0
modules/Audience/Providers/AudienceServiceProvider.php

@@ -0,0 +1,29 @@
+<?php
+
+namespace Modules\Audience\Providers;
+
+use Catch\Providers\CatchModuleServiceProvider;
+
+class AudienceServiceProvider 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 'audience';
+    }
+}

+ 10 - 0
modules/Audience/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 文件里

+ 16 - 0
modules/Audience/routes/route.php

@@ -0,0 +1,16 @@
+<?php
+
+use Illuminate\Support\Facades\Route;
+use Modules\Audience\Http\Controllers\AudienceController;
+use Modules\Video\Http\Controllers\EpisodeController;
+use Modules\Video\Http\Controllers\VideoCategoryController;
+use Modules\Video\Http\Controllers\VideoController;
+use Modules\Video\Http\Controllers\VideoSeriesWechatCheckController;
+use Modules\Video\Http\Controllers\WechatCheckController;
+
+Route::prefix('audienceManage')->group(function () {
+    Route::prefix('audience')->group(function(){
+        Route::get('detail', [AudienceController::class, 'detail'])->middleware('roleCheck:optimizer');
+    });
+});
+

+ 22 - 0
tests/Audience/Http/Controllers/AudienceControllerTest.php

@@ -0,0 +1,22 @@
+<?php
+
+namespace Tests\Audience\Http\Controllers;
+
+use Modules\Audience\Http\Controllers\AudienceController;
+use PHPUnit\Framework\TestCase;
+use Tests\UsedTestCase;
+
+class AudienceControllerTest extends UsedTestCase
+{
+
+    public function testDetail()
+    {
+        $res = $this->withHeaders([
+            'Authorization' => 'Bearer '. $this->token,
+        ])->json('get','http://localhost/api/audienceManage/audience/detail', [
+            'uid' => 5
+        ]);
+        $res->dump();
+        $this->dumpJson($res);
+    }
+}