Lae/app/Http/Controllers/Modules/ModuleController.php

64 lines
1.9 KiB
PHP
Raw Normal View History

2022-08-14 09:40:25 +00:00
<?php
2022-11-16 02:29:50 +00:00
namespace App\Http\Controllers\Modules;
2022-08-14 09:40:25 +00:00
2022-08-28 17:04:44 +00:00
use App\Http\Controllers\Controller;
2022-11-06 11:28:22 +00:00
use App\Models\Module;
2022-11-20 14:16:04 +00:00
use Illuminate\Http\JsonResponse;
2022-11-06 11:28:22 +00:00
use Illuminate\Http\Request;
2022-11-20 14:16:04 +00:00
use Illuminate\Http\Response;
2022-11-06 11:28:22 +00:00
use Illuminate\Support\Str;
2022-08-14 09:40:25 +00:00
2022-08-14 13:57:56 +00:00
class ModuleController extends Controller
2022-08-14 09:40:25 +00:00
{
public function index()
{
2022-11-20 14:16:04 +00:00
$module = auth('module')->user()->calculate();
return $this->success($module);
2022-08-14 09:40:25 +00:00
}
2022-08-28 17:04:44 +00:00
2022-08-28 17:17:57 +00:00
public function call(Request $request, Module $module)
2022-08-28 17:04:44 +00:00
{
2022-09-08 17:12:18 +00:00
$path = request()->path();
$path = substr($path, strlen('/api/modules/' . $module->id));
$path = preg_replace('/[^a-zA-Z0-9\/]/', '', $path);
2022-08-29 09:31:08 +00:00
$method = Str::lower($request->method());
2022-09-03 17:32:50 +00:00
// 如果 method 为 post, 检查用户余额
// if ($method == 'post') {
2022-11-06 11:28:22 +00:00
// $user = auth()->user();
2022-09-03 17:32:50 +00:00
// if ($user->balance < 1) {
// return $this->error('账户余额不足,请保证账户余额至少有 1 元。');
// }
// }
2022-09-03 17:32:50 +00:00
2022-11-20 14:16:04 +00:00
$response = $module->request($method, $path, $request->all());
2022-08-29 09:31:08 +00:00
if ($response['json'] === null && $response['body'] !== null) {
return response($response['body'], $response['status']);
}
2022-11-20 14:16:04 +00:00
return $this->moduleResponse($response['json'], $response['status']);
2022-08-28 17:04:44 +00:00
}
2022-09-16 11:56:58 +00:00
2022-11-20 14:16:04 +00:00
public function exportCall(Request $request, Module $module): Response|JsonResponse
{
$path = request()->path();
$path = substr($path, strlen('/remote/modules/' . $module->id));
$path = preg_replace('/[^a-zA-Z0-9\/]/', '', $path);
$method = Str::lower($request->method());
$response = $module->moduleRequest($method, $path, $request->all());
if ($response['json'] === null && $response['body'] !== null) {
return response($response['body'], $response['status']);
}
2022-11-20 14:16:04 +00:00
return $this->moduleResponse($response['json'], $response['status']);
}
2022-08-14 09:40:25 +00:00
}