liuzejian 2 år sedan
förälder
incheckning
9f9af009cd

+ 13 - 4
modules/Channel/Http/Controllers/AdvertiserController.php

@@ -108,12 +108,21 @@ class AdvertiserController extends CatchController
             'status' => 'required',
             'remark' => 'string|max:140',
         ]);
-
-        $this->user->updateBy($request->input('id'), $request->all());
+        $uid = $request->input('id');
+        $user = DB::table('users')
+            ->where([
+                'deleted_at' => 0,
+                'id' => $uid
+            ])->select('id','email', 'username', 'status', 'remark')
+            ->first();
+        if(!$user) {
+            ChannelBusinessException::throwError(Errors::USER_NOT_FOUND);
+        }
+        $this->user->updateBy($uid, $request->only(['remark', 'status', 'username']));
         $now = date('Y-m-d H:i:s');
         DB::table('user_has_miniprograms')
             ->where([
-                'uid' => $this->user->id,
+                'uid' => $uid,
                 'is_enabled' => 1
             ])->update([
                 'is_enabled' => 0,
@@ -122,7 +131,7 @@ class AdvertiserController extends CatchController
         $insertData = [];
         foreach ($request->input('miniProgramIds') as $miniProgramId) {
             $insertData[] = [
-                'uid' => $this->user->id,
+                'uid' => $uid,
                 'miniprogram_id' => $miniProgramId,
                 'created_at' => $now,
                 'updated_at' => $now,

+ 2 - 0
modules/Channel/routes/route.php

@@ -7,6 +7,8 @@ use Modules\System\Http\Controllers\NoticeTypesController;
 
 Route::prefix('channel')->group(function () {
     Route::post('advertiser/add', [AdvertiserController::class, 'addAdvertiser']);
+    Route::post('advertiser/updateAdvertiser', [AdvertiserController::class, 'updateAdvertiser']);
+
     Route::get('advertiser/listAdvertiser', [AdvertiserController::class, 'listAdvertiser']);
     Route::get('advertiser/getAdvertiser', [AdvertiserController::class, 'getAdvertiser']);
 });

+ 2 - 2
modules/User/Models/Traits/UserRelations.php

@@ -64,13 +64,13 @@ trait UserRelations
         } else {
             $permissions = Collection::make();
             $roleIds = $this->roles()->pluck('role_id')->toArray();
-            app($this->getRolesModel())->where(['id' => $roleIds])->with(['permissions' => function($query){
+            app($this->getRolesModel())->whereIn('id', $roleIds)->with(['permissions' => function($query){
                 return $query->where('hidden',1)->orderByDesc('sort');
             }])->get()
                 ->each(function ($role) use (&$permissions) {
                     $permissions = $permissions->concat($role->permissions);
                 });
-            $permissions = $permissions->unique();
+            $permissions = $permissions->unique('id');
         }
 
         $this->setAttribute('permissions', $permissions->each(fn ($permission) => $permission->setAttribute('hidden', $permission->isHidden())));

+ 14 - 1
tests/Channel/Http/Controllers/AdvertiserControllerTest.php

@@ -42,8 +42,21 @@ class AdvertiserControllerTest extends UsedTestCase
         ])->json('get','http://localhost/api/channel/advertiser/getAdvertiser?'.http_build_query([
 //                'email' => 'aa1@test.com',
 //                'miniProgramId' => 3,
-                'username' => 'aa'
+                'id' => 6
             ]));
         $res->dump();
     }
+
+    public function testupdateAdvertiser() {
+        $res = $this->withHeaders([
+            'Authorization' => 'Bearer '. $this->token,
+        ])->json('post','http://localhost/api/channel/advertiser/updateAdvertiser', [
+            'id' => 6,
+            'username' => 'change@aa@test',
+            'miniProgramIds' => [1,5,6,7],
+            'status' => 0,
+            'remark' => 'first change'
+        ]);
+        $res->dump();
+    }
 }