fulinqingjie/app/Traits/JsonResponse.php

57 lines
1.6 KiB
PHP

<?php
namespace App\Traits;
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
use Illuminate\Support\Facades\Auth;
trait JsonResponse
{
public function json($data, $code = 200, $message = '')
{
$meta = null;
if ($data instanceof AnonymousResourceCollection) {
$resource = $data->resource;
if ($resource instanceof LengthAwarePaginator) {
$meta = [
'current_page' => $resource->currentPage(),
'last_page' => $resource->lastPage(),
'per_page' => $resource->perPage(),
'total' => $resource->total(),
];
}
}
$result = ['data' => $data, 'code' => $code, 'message' => $message];
if ($meta) {
$result['meta'] = $meta;
}
return response()->json($result);
}
public function success($message = '', $data = null)
{
return $this->json($data, 200, $message);
}
public function error($message = '', $code = 400, $data = null)
{
return $this->json($data, $code, $message);
}
public function include($include = [], $key = 'include')
{
$request = request();
if ($request->filled($key)) {
$include1 = $request->input($key);
$include1 = is_array($include1) ? $include1 : explode(',', $include1);
$include = array_merge($include, $include1);
}
return $include;
}
protected function user($guard = null)
{
return Auth::guard($guard)->user();
}
}