xielin 5 年之前
父节点
当前提交
949d2b1eff

+ 23 - 2
app/Http/Controllers/V1/CircleController.php

@@ -9,9 +9,11 @@
 namespace App\Http\Controllers\V1;
 
 use App\Repositories\Circle\CircleArticleRepository;
+use App\Repositories\Circle\CircleMemberRepository;
 use App\Repositories\Circle\CircleRepository;
 use App\Traits\UserTrait;
 use App\Transformers\Circle\ArticleListTransformer;
+use App\Transformers\Circle\CircleMemberTransformer;
 use App\Transformers\Circle\DetailTransformer;
 use App\Transformers\Circle\QuestionTransformer;
 use Illuminate\Http\Request;
@@ -29,10 +31,12 @@ class CircleController extends Controller
     use UserTrait;
 
     public function __construct(CircleRepository $circleRepository,
-                                CircleArticleRepository $circleArticleRepository)
+                                CircleArticleRepository $circleArticleRepository,
+                                CircleMemberRepository $circleMemberRepository)
     {
         $this->circleRepository = $circleRepository;
         $this->circleArticleRepository = $circleArticleRepository;
+        $this->circleMemberRepository = $circleMemberRepository;
     }
 
     /**
@@ -149,7 +153,7 @@ class CircleController extends Controller
         if ($userInfo) {
             $uid = $userInfo['uid'];
             $inviteCode = $userInfo['invite_code'];
-        }else{
+        } else {
             $uid = 0;
             $inviteCode = '';
         }
@@ -167,4 +171,21 @@ class CircleController extends Controller
 
         return jsonSuccess($data);
     }
+
+    public function memberList(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'id' => 'required|exists:interest_circles'
+        ]);
+        if ($validator->fails()) {
+            return $this->jsonError($validator->errors()->first());
+        }
+        $list = $this->circleMemberRepository->lists($request->all());
+        $fractal = new Manager();
+        $resource = new Collection($list, new CircleMemberTransformer());
+        $resource->setPaginator(new IlluminatePaginatorAdapter($list));
+        $data = $fractal->createData($resource)->toArray();
+
+        return jsonSuccess($data);
+    }
 }

+ 51 - 0
app/Repositories/Circle/CircleMemberRepository.php

@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019/6/5
+ * Time: 16:03
+ */
+
+namespace App\Repositories\Circle;
+
+use App\Models\InterestCircle;
+use App\Models\InterestCircleArticle;
+use App\Models\InterestCircleUser;
+use App\Models\Post;
+use Illuminate\Database\QueryException;
+use Dingo\Api\Http\Response;
+use Illuminate\Support\Carbon;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Log;
+use Illuminate\Support\Facades\Redis;
+
+class CircleMemberRepository
+{
+
+    public function __construct(InterestCircle $interestCircle,
+                                InterestCircleUser $interestCircleUser
+    )
+    {
+        $this->interestCircle = $interestCircle;
+        $this->interestCircleUser = $interestCircleUser;
+    }
+
+    /**
+     * 成员列表
+     */
+    public function lists($request)
+    {
+        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
+
+        $where[] = ['is_black', 0];
+
+        $where[] = ['circle_id', $request['id']];
+
+        $userModel = $this->interestCircleUser;
+        return $userModel
+            ->where($where)
+            ->orderBy('id', 'desc')
+            ->paginate($perPage);
+    }
+}

+ 29 - 0
app/Transformers/Circle/CircleMemberTransformer.php

@@ -0,0 +1,29 @@
+<?php
+
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 2019/6/6
+ * Time: 14:08
+ */
+namespace App\Transformers\Circle;
+
+use App\Models\InterestCircleUser;
+use App\Models\Post;
+use App\Traits\PostTrait;
+use App\Traits\UserTrait;
+use Illuminate\Support\Carbon;
+use League\Fractal\TransformerAbstract;
+
+class CircleMemberTransformer extends TransformerAbstract
+{
+    use UserTrait;
+    public function transform(InterestCircleUser $interestCircleUser)
+    {
+        $user = $this->userInfo($interestCircleUser['uid']);
+        return [
+            'user' => $user?$user:new \stdClass(),
+            'created_at' => Carbon::parse($interestCircleUser['created_at'])->toDateTimeString()
+        ];
+    }
+}

+ 2 - 0
routes/api.php

@@ -124,6 +124,8 @@ $api->version('v1', [
         $api->post('circle/join', 'CircleController@joinCircle');
         //退出圈子
         $api->delete('circle/join', 'CircleController@exitCircle');
+        //圈子成员
+        $api->get('circle/members', 'CircleController@memberList');
     });