feat: 为玩家和管理员模块新增 API 路由与中间件别名
This commit is contained in:
16
app/Http/Controllers/Api/V1/Admin/PingController.php
Normal file
16
app/Http/Controllers/Api/V1/Admin/PingController.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V1\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Support\ApiResponse;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/** 探路由用,上线前可删除或改为需登录 */
|
||||
class PingController extends Controller
|
||||
{
|
||||
public function __invoke(): JsonResponse
|
||||
{
|
||||
return ApiResponse::success(['scope' => 'admin']);
|
||||
}
|
||||
}
|
||||
27
app/Http/Controllers/Api/V1/HealthController.php
Normal file
27
app/Http/Controllers/Api/V1/HealthController.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V1;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Support\ApiResponse;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
class HealthController extends Controller
|
||||
{
|
||||
/**
|
||||
* 健康检查(Next / 网关探活)。路径:GET /api/v1/health
|
||||
*/
|
||||
public function __invoke(): JsonResponse
|
||||
{
|
||||
$payload = [
|
||||
'app' => config('app.name'),
|
||||
'default_currency' => config('lottery.default_currency'),
|
||||
];
|
||||
|
||||
if (config('app.debug')) {
|
||||
$payload['laravel'] = app()->version();
|
||||
}
|
||||
|
||||
return ApiResponse::success($payload);
|
||||
}
|
||||
}
|
||||
16
app/Http/Controllers/Api/V1/Player/PingController.php
Normal file
16
app/Http/Controllers/Api/V1/Player/PingController.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V1\Player;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Support\ApiResponse;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/** 探路由用,上线前可删除或改为需登录 */
|
||||
class PingController extends Controller
|
||||
{
|
||||
public function __invoke(): JsonResponse
|
||||
{
|
||||
return ApiResponse::success(['scope' => 'player']);
|
||||
}
|
||||
}
|
||||
18
app/Http/Middleware/EnsureAdminApi.php
Normal file
18
app/Http/Middleware/EnsureAdminApi.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
/**
|
||||
* 后台 API:后续在此校验管理员登录(如 Sanctum)与 RBAC。
|
||||
*/
|
||||
class EnsureAdminApi
|
||||
{
|
||||
public function handle(Request $request, Closure $next): Response
|
||||
{
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
18
app/Http/Middleware/EnsurePlayerApi.php
Normal file
18
app/Http/Middleware/EnsurePlayerApi.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
/**
|
||||
* 玩家端 API:后续在此校验 SSO / Bearer Token,并解析当前 players.id。
|
||||
*/
|
||||
class EnsurePlayerApi
|
||||
{
|
||||
public function handle(Request $request, Closure $next): Response
|
||||
{
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
29
app/Support/ApiResponse.php
Normal file
29
app/Support/ApiResponse.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Support;
|
||||
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 与 PRD / docs/04-领域字典与编码规范.md 对齐:{ code, msg, data }。
|
||||
*/
|
||||
final class ApiResponse
|
||||
{
|
||||
public static function success(mixed $data = null, string $msg = 'ok', int $code = 0): JsonResponse
|
||||
{
|
||||
return response()->json([
|
||||
'code' => $code,
|
||||
'msg' => $msg,
|
||||
'data' => $data,
|
||||
]);
|
||||
}
|
||||
|
||||
public static function error(string $msg, int $code, mixed $data = null, int $httpStatus = 400): JsonResponse
|
||||
{
|
||||
return response()->json([
|
||||
'code' => $code,
|
||||
'msg' => $msg,
|
||||
'data' => $data,
|
||||
], $httpStatus);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user