瀏覽代碼

用户分群 ,路由

liuzejian 1 年之前
父節點
當前提交
4f8e721dbd

+ 28 - 21
modules/Audience/Http/Controllers/UserGroupController.php

@@ -35,22 +35,26 @@ class UserGroupController extends CatchController
      */
     public function detail(Request $request) {
         $this->validate($request, ['id' => 'required']);
+        $uid = $this->getLoginUserId();
         $obj = DB::table('user_groups')
             ->where([
-                'uid' => $this->getLoginUserId(), 'is_enabled' => 1,
+                'uid' => $uid, 'is_enabled' => 1,
                 'id' => $request->input('id')
             ])->first();
         if($obj) {
             // ToDo:完善
             $obj->user_num = '-1';
             $obj->tags_arr = \json_decode($obj->tags, true);
-            $obj->gzh_nams = DB::table('gzh_ug_maps as a')
-                            ->leftJoin('wechat_authorization_infos as b', function($query) {
+            $obj->gzh_names = DB::table('gzh_ug_maps as a')
+                            ->join('wechat_authorization_infos as b', function($query) use ($uid) {
                                 $query->on('a.gzh_id', '=', 'b.id')
-                                    ->where('b.is_enabled', 1);
+                                    ->where([
+                                        'b.is_enabled' => 1,
+                                        'b.user_id' => $uid
+                                    ]);
                             })->where([
-                                'ug_id' => $request->input('id')
-                ])->select('b.name')->get()->pluck('name')->toArray();
+                                'a.ug_id' => $request->input('id')
+                ])->select('b.nick_name')->get()->pluck('nick_name')->toArray();
         }
 
         return $obj;
@@ -85,29 +89,32 @@ class UserGroupController extends CatchController
     }
 
     /**
-     * 删除
+     * 批量删除
      * @param Request $request
      * @return string
      * @throws \Illuminate\Validation\ValidationException
      */
     public function delete(Request $request) {
-        $this->validate($request, ['id' => 'required']);
+        $this->validate($request, ['ids' => 'required|array']);
 
-        $model = UserGroupModel::where([
-            'uid' => $this->getLoginUserId(), 'id' => $request->input('id'),
-            'is_enabled' => 1,
-        ])->first();
-        if($model) {
-            $model->is_enabled = 0;
-            $model->save();
-            GzhUgMapModel::where([
-                'ug_id' => $model->id,
-                'is_enabled' => 1
-            ])->update([
-                'is_enabled' => 0
-            ]);
+        foreach ($request->input('ids') as $id) {
+            $model = UserGroupModel::where([
+                'uid' => $this->getLoginUserId(), 'id' => $id,
+                'is_enabled' => 1,
+            ])->first();
+            if($model) {
+                $model->is_enabled = 0;
+                $model->save();
+                GzhUgMapModel::where([
+                    'ug_id' => $model->id,
+                    'is_enabled' => 1
+                ])->update([
+                    'is_enabled' => 0
+                ]);
+            }
         }
 
+
         return 'ok';
     }
 }

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

@@ -2,6 +2,7 @@
 
 use Illuminate\Support\Facades\Route;
 use Modules\Audience\Http\Controllers\AudienceController;
+use Modules\Audience\Http\Controllers\UserGroupController;
 use Modules\Video\Http\Controllers\EpisodeController;
 use Modules\Video\Http\Controllers\VideoCategoryController;
 use Modules\Video\Http\Controllers\VideoController;
@@ -12,5 +13,12 @@ Route::prefix('audienceManage')->group(function () {
     Route::prefix('audience')->group(function(){
         Route::get('detail', [AudienceController::class, 'detail'])->middleware('roleCheck:optimizer');
     });
+
+    Route::prefix('userGroup')->middleware('roleCheck:optimizer')->group(function(){
+        Route::get('list', [UserGroupController::class, 'list']);
+        Route::get('detail', [UserGroupController::class, 'detail']);
+        Route::post('add', [UserGroupController::class, 'add']);
+        Route::post('delete', [UserGroupController::class, 'delete']);
+    });
 });
 

+ 56 - 0
tests/Audience/Http/Controllers/UserGroupControllerTest.php

@@ -0,0 +1,56 @@
+<?php
+
+namespace Tests\Audience\Http\Controllers;
+
+use Modules\Audience\Http\Controllers\UserGroupController;
+use PHPUnit\Framework\TestCase;
+use Tests\UsedTestCase;
+
+class UserGroupControllerTest extends UsedTestCase
+{
+
+    public function testAdd()
+    {
+        $res = $this->withHeaders([
+            'Authorization' => 'Bearer '. $this->token,
+        ])->json('post','http://localhost/api/audienceManage/userGroup/add', [
+            'name' => uniqid('liuzj-test-'),
+            'gzh_ids' => [6,8],
+            'tags' => [
+                'attention_hour' => '0-6',
+                'in_48_hour' => 1,
+                'interact_hour' => '0-6',
+            ],
+            'remark' => uniqid('', true)
+        ]);
+        $this->dumpJson($res);
+    }
+    public function testDetail()
+    {
+        $res = $this->withHeaders([
+            'Authorization' => 'Bearer '. $this->token,
+        ])->json('get','http://localhost/api/audienceManage/userGroup/detail', [
+            'id' => 1
+        ]);
+        $this->dumpJson($res);
+    }
+    public function testlist()
+    {
+        $res = $this->withHeaders([
+            'Authorization' => 'Bearer '. $this->token,
+        ])->json('get','http://localhost/api/audienceManage/userGroup/list', [
+            'name' => '207'
+        ]);
+        $this->dumpJson($res);
+    }
+    public function testDelete()
+    {
+        $res = $this->withHeaders([
+            'Authorization' => 'Bearer '. $this->token,
+        ])->json('get','http://localhost/api/audienceManage/userGroup/delete', [
+            'id' => 1
+        ]);
+        $this->dumpJson($res);
+    }
+
+}