generated from liutk/owl-admin-base
0.5
parent
c77fed7b65
commit
e9d9633f42
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Api;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Traits\PaginatorTrait;
|
||||||
|
use App\Models\Ad;
|
||||||
|
use App\Models\Filters\AdFilter;
|
||||||
|
use App\Http\Resources\AdResource;
|
||||||
|
|
||||||
|
class AdController extends Controller
|
||||||
|
{
|
||||||
|
use PaginatorTrait;
|
||||||
|
|
||||||
|
public function index(Request $request){
|
||||||
|
$query = Ad::filter($request->all(), AdFilter::class)->sort();
|
||||||
|
$list = $query->paginate($this->resolvePerPage('per_page', 20));
|
||||||
|
|
||||||
|
return $this->json(AdResource::collection($list));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,11 +2,13 @@
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Traits\JsonResponse;
|
||||||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||||
|
use Illuminate\Foundation\Bus\DispatchesJobs;
|
||||||
use Illuminate\Foundation\Validation\ValidatesRequests;
|
use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||||
use Illuminate\Routing\Controller as BaseController;
|
use Illuminate\Routing\Controller as BaseController;
|
||||||
|
|
||||||
class Controller extends BaseController
|
class Controller extends BaseController
|
||||||
{
|
{
|
||||||
use AuthorizesRequests, ValidatesRequests;
|
use AuthorizesRequests, DispatchesJobs, ValidatesRequests, JsonResponse;
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
namespace App\Http\Resources;
|
||||||
|
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
|
class AdResource 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 [
|
||||||
|
'resource_url' => $this->resource_url,
|
||||||
|
'jump_type' => $this->jump_type,
|
||||||
|
'jump_config' => $this->jump_config,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -49,8 +49,8 @@ class Ad extends Model
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
self::TYPE_WEB => '网页跳转',
|
self::TYPE_WEB => '网页跳转',
|
||||||
self::TYPE_APP => '应用跳转',
|
// self::TYPE_APP => '应用跳转',
|
||||||
self::TYPE_MINI => '小程序跳转',
|
// self::TYPE_MINI => '小程序跳转',
|
||||||
self::TYPE_OFF => '无跳转',
|
self::TYPE_OFF => '无跳转',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
<?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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Traits;
|
||||||
|
|
||||||
|
trait PaginatorTrait
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 解析每页显示的条数
|
||||||
|
*
|
||||||
|
* @param string $perPageName
|
||||||
|
* @param int $default
|
||||||
|
* @param int|null $max
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function resolvePerPage(string $perPageName = 'per_page', int $default = 20, ?int $max = null): int
|
||||||
|
{
|
||||||
|
$perPage = (int) request()->input($perPageName);
|
||||||
|
|
||||||
|
if ($perPage >= 1) {
|
||||||
|
if ($max !== null && $max >= 1 && $perPage >= $max) {
|
||||||
|
return $max;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $perPage;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $default;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -17,3 +17,7 @@ use Illuminate\Support\Facades\Route;
|
||||||
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
|
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
|
||||||
return $request->user();
|
return $request->user();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Route::middleware('api')->group(function () {
|
||||||
|
Route::get('/ads', [App\Http\Controllers\Api\AdController::class, 'index']);
|
||||||
|
});
|
||||||
Loading…
Reference in New Issue