Prechádzať zdrojové kódy

Merge branch 'liuzj-1000976-dev' into test

liuzejian 1 rok pred
rodič
commit
6be6f22fd5

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

@@ -0,0 +1,58 @@
+<?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'),
+        ];
+
+        return array_merge($result, WechatMinprogramUserService::getLevelText($uid));
+    }
+}

+ 8 - 8
modules/Audience/Installer.php

@@ -1,9 +1,9 @@
 <?php
 
-namespace Modules\Video;
+namespace Modules\Audience;
 
 use Catch\Support\Module\Installer as ModuleInstaller;
-use Modules\Video\Providers\VideoServiceProvider;
+use Modules\Audience\Providers\AudienceServiceProvider;
 
 class Installer extends ModuleInstaller
 {
@@ -11,12 +11,12 @@ class Installer extends ModuleInstaller
     {
         // TODO: Implement info() method.
         return [
-            'title' => '视频管理',
-            'name' => 'video',
-            'path' => 'video',
-            'keywords' => '视频管理',
-            'description' => '视频管理模块',
-            'provider' => VideoServiceProvider::class
+            'title' => '观众管理',
+            'name' => 'audience',
+            'path' => 'audience',
+            'keywords' => '观众管理',
+            'description' => '观众管理',
+            'provider' => AudienceServiceProvider::class
         ];
     }
 

+ 4 - 2
modules/Audience/routes/route.php

@@ -1,6 +1,7 @@
 <?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;
@@ -8,7 +9,8 @@ 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');
+    });
 });
 

+ 1 - 1
modules/Channel/Services/WechatMinprogram/WechatMinprogramUserService.php

@@ -58,7 +58,7 @@ class WechatMinprogramUserService
      * @return array
      * date 2023/05/26 15:41
      */
-    private static function getLevelText($uid)
+    public static function getLevelText($uid)
     {
         $record = self::userVipRecord($uid);
         if ($record && Carbon::now()->lt(Carbon::createFromTimestamp(strtotime($record->end_time)))) {

+ 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);
+    }
+}