139 lines
6.1 KiB
PHP
139 lines
6.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin\Product;
|
|
|
|
use App\Services\Admin\Product\AdminSaleCodeService;
|
|
use Illuminate\Http\Request;
|
|
|
|
final class AdminSaleCodeController
|
|
{
|
|
public function __construct(
|
|
private readonly AdminSaleCodeService $service,
|
|
) {}
|
|
|
|
public function index()
|
|
{
|
|
$tree = $this->service->getGroupedTree();
|
|
return view('admin.product.salecode.index', ['tree' => $tree]);
|
|
}
|
|
|
|
// --- Provider ---
|
|
public function storeProvider(Request $request)
|
|
{
|
|
$data = $request->validate([
|
|
'code' => ['required', 'string', 'max:30'],
|
|
'name' => ['required', 'string', 'max:50'],
|
|
'transport_type' => ['required', 'in:HTTP_FORM,HTTP_ENCRYPTED,TCP_SOCKET'],
|
|
'base_url' => ['nullable', 'string', 'max:255'],
|
|
'host' => ['nullable', 'string', 'max:100'],
|
|
'port' => ['nullable', 'integer', 'min:1', 'max:65535'],
|
|
'timeout_connect_sec' => ['required', 'integer', 'min:1', 'max:120'],
|
|
'timeout_read_sec' => ['required', 'integer', 'min:1', 'max:300'],
|
|
'charset' => ['required', 'string', 'max:20'],
|
|
'response_format_default' => ['nullable', 'string', 'max:10'],
|
|
'is_test_mode' => ['required', 'in:0,1'],
|
|
'supports_issue' => ['required', 'in:0,1'],
|
|
'supports_cancel' => ['required', 'in:0,1'],
|
|
'supports_resend' => ['required', 'in:0,1'],
|
|
'supports_cancel_check' => ['required', 'in:0,1'],
|
|
'supports_network_cancel' => ['required', 'in:0,1'],
|
|
'config_json' => ['nullable', 'string'],
|
|
'is_active' => ['required', 'in:0,1'],
|
|
]);
|
|
|
|
$res = $this->service->storeProvider($data, (int) auth('admin')->id(), $request->ip(), $request->userAgent() ?? '');
|
|
|
|
return redirect()->back()->with('toast', [
|
|
'type' => $res['ok'] ? 'success' : 'danger',
|
|
'title' => '알림',
|
|
'message' => $res['message'],
|
|
]);
|
|
}
|
|
|
|
public function updateProvider(int $id, Request $request)
|
|
{
|
|
$data = $request->validate([
|
|
'name' => ['required', 'string', 'max:50'],
|
|
'transport_type' => ['required', 'in:HTTP_FORM,HTTP_ENCRYPTED,TCP_SOCKET'],
|
|
'base_url' => ['nullable', 'string', 'max:255'],
|
|
'host' => ['nullable', 'string', 'max:100'],
|
|
'port' => ['nullable', 'integer', 'min:1', 'max:65535'],
|
|
'timeout_connect_sec' => ['required', 'integer', 'min:1', 'max:120'],
|
|
'timeout_read_sec' => ['required', 'integer', 'min:1', 'max:300'],
|
|
'charset' => ['required', 'string', 'max:20'],
|
|
'response_format_default' => ['nullable', 'string', 'max:10'],
|
|
'is_test_mode' => ['required', 'in:0,1'],
|
|
'supports_issue' => ['required', 'in:0,1'],
|
|
'supports_cancel' => ['required', 'in:0,1'],
|
|
'supports_resend' => ['required', 'in:0,1'],
|
|
'supports_cancel_check' => ['required', 'in:0,1'],
|
|
'supports_network_cancel' => ['required', 'in:0,1'],
|
|
'config_json' => ['nullable', 'string'],
|
|
'is_active' => ['required', 'in:0,1'],
|
|
]);
|
|
|
|
$res = $this->service->updateProvider($id, $data, (int) auth('admin')->id(), $request->ip(), $request->userAgent() ?? '');
|
|
|
|
return redirect()->back()->with('toast', [
|
|
'type' => $res['ok'] ? 'success' : 'danger',
|
|
'title' => '알림',
|
|
'message' => $res['message'],
|
|
]);
|
|
}
|
|
|
|
public function destroyProvider(int $id, Request $request)
|
|
{
|
|
$res = $this->service->deleteProvider($id, (int) auth('admin')->id(), $request->ip(), $request->userAgent() ?? '');
|
|
|
|
return redirect()->back()->with('toast', [
|
|
'type' => $res['ok'] ? 'success' : 'danger',
|
|
'title' => '알림',
|
|
'message' => $res['message'],
|
|
]);
|
|
}
|
|
|
|
// --- Product Code ---
|
|
public function storeCode(Request $request)
|
|
{
|
|
$data = $request->validate([
|
|
'provider_id' => ['required', 'integer'],
|
|
'api_code' => ['required', 'string', 'max:50'],
|
|
'name' => ['required', 'string', 'max:100'],
|
|
'is_active' => ['required', 'in:0,1'],
|
|
]);
|
|
|
|
$res = $this->service->storeCode($data, (int) auth('admin')->id(), $request->ip(), $request->userAgent() ?? '');
|
|
return redirect()->back()->with('toast', ['type' => $res['ok'] ? 'success' : 'danger', 'title' => '알림', 'message' => $res['message']]);
|
|
}
|
|
|
|
public function updateCode(int $id, Request $request)
|
|
{
|
|
$data = $request->validate([
|
|
'provider_id' => ['required', 'integer'],
|
|
'api_code' => ['required', 'string', 'max:50'],
|
|
'name' => ['required', 'string', 'max:100'],
|
|
'is_active' => ['required', 'in:0,1'],
|
|
]);
|
|
|
|
$res = $this->service->updateCode($id, $data, (int) auth('admin')->id(), $request->ip(), $request->userAgent() ?? '');
|
|
return redirect()->back()->with('toast', ['type' => $res['ok'] ? 'success' : 'danger', 'title' => '알림', 'message' => $res['message']]);
|
|
}
|
|
|
|
public function updateCodeSort(Request $request)
|
|
{
|
|
$data = $request->validate([
|
|
'ids' => ['required', 'array'],
|
|
'ids.*' => ['integer'],
|
|
]);
|
|
|
|
$res = $this->service->updateCodeSort($data['ids'], (int) auth('admin')->id());
|
|
return response()->json($res);
|
|
}
|
|
|
|
public function destroyCode(int $id, Request $request)
|
|
{
|
|
$res = $this->service->deleteCode($id, (int) auth('admin')->id(), $request->ip(), $request->userAgent() ?? '');
|
|
return redirect()->back()->with('toast', ['type' => $res['ok'] ? 'success' : 'danger', 'title' => '알림', 'message' => $res['message']]);
|
|
}
|
|
}
|