6
0
Fork 0

添加粉丝列表接口

release
vine_liutk 2021-12-28 19:27:53 +08:00
parent 8629c94c2c
commit 9e0bfa86bd
4 changed files with 70 additions and 0 deletions

View File

@ -0,0 +1,34 @@
<?php
namespace App\Endpoint\Api\Http\Controllers\Account;
use App\Endpoint\Api\Http\Controllers\Controller;
use App\Endpoint\Api\Http\Resources\FansResource;
use App\Helpers\Paginator as PaginatorHelper;
use Illuminate\Http\Request;
class FansController extends Controller
{
/**
* 统计当前信息
*
* @param Request $request
*
*/
public function statistics(Request $request)
{
return response()->json([
'fans_num'=>$request->user()->fans()->count(),
]);
}
public function index(Request $request)
{
$perPage = PaginatorHelper::resolvePerPage('per_page', 20, 50);
$fans = $request->user()->fans()
->with('userInfo')
->latest('id')
->simplePaginate($perPage);
return FansResource::collection($fans);
}
}

View File

@ -0,0 +1,23 @@
<?php
namespace App\Endpoint\Api\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class FansResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
return [
'phone' => $this->phone,
'nickname' => (string) $this->whenLoaded('userInfo', $this->userInfo->nickname, ''),
'avatar' => (string) $this->whenLoaded('userInfo', $this->userInfo->avatar, ''),
];
}
}

View File

@ -1,6 +1,7 @@
<?php
use App\Endpoint\Api\Http\Controllers\Account\ChangePasswordController;
use App\Endpoint\Api\Http\Controllers\Account\FansController;
use App\Endpoint\Api\Http\Controllers\Account\UserController;
use App\Endpoint\Api\Http\Controllers\Account\WalletController;
use App\Endpoint\Api\Http\Controllers\Account\WalletPasswordController;
@ -150,6 +151,8 @@ Route::group([
//分享
Route::get('share-bgs', [ShareBgController::class, 'index']);
Route::post('user-qr-code', [ShareBgController::class, 'userQrCode']);
Route::get('fans/statistics', [FansController::class, 'statistics']);
Route::get('fans', [FansController::class, 'index']);
//OSS上传凭证
Route::post('oss-sts', [AliOssController::class, 'sts']);

View File

@ -228,6 +228,16 @@ class User extends Model implements AuthorizableContract, AuthenticatableContrac
return $this->hasMany(DistributionPreIncome::class, 'user_id');
}
/**
* 用户的粉丝
*
* @return void
*/
public function fans()
{
return $this->belongsToMany(User::class, 'user_infos', 'inviter_id', 'user_id');
}
/**
* 禁用用户
*