98 lines
3.5 KiB
PHP
98 lines
3.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin\Product;
|
|
|
|
use App\Services\Admin\Product\AdminFeeService;
|
|
use Illuminate\Http\Request;
|
|
|
|
final class AdminFeeController
|
|
{
|
|
public function __construct(
|
|
private readonly AdminFeeService $service,
|
|
) {}
|
|
|
|
public function index()
|
|
{
|
|
$data = $this->service->getFeeData();
|
|
return view('admin.product.fee.index', $data);
|
|
}
|
|
|
|
public function updateBuybackPolicy(Request $request)
|
|
{
|
|
$data = $request->validate([
|
|
'customer_fee_rate' => ['required', 'numeric', 'min:0', 'max:100'],
|
|
'bank_fee_type' => ['required', 'in:FLAT,PERCENT'],
|
|
'bank_fee_value' => ['required', 'numeric', 'min:0'],
|
|
]);
|
|
|
|
$res = $this->service->updateBuybackPolicy($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 storePayment(Request $request)
|
|
{
|
|
$data = $request->validate([
|
|
'code' => ['required', 'string', 'max:30'],
|
|
'name' => ['required', 'string', 'max:50'],
|
|
'display_name' => ['required', 'string', 'max:100'],
|
|
'customer_fee_rate' => ['required', 'numeric', 'min:0', 'max:100'],
|
|
'pg_fee_rate' => ['required', 'numeric', 'min:0', 'max:100'],
|
|
'is_active' => ['required', 'in:0,1'],
|
|
]);
|
|
|
|
$res = $this->service->storePaymentMethod($data, (int) auth('admin')->id(), $request->ip(), $request->userAgent() ?? '');
|
|
|
|
return redirect()->route('admin.fees.index')->with('toast', [
|
|
'type' => $res['ok'] ? 'success' : 'danger',
|
|
'title' => '결제 수단 등록',
|
|
'message' => $res['message'],
|
|
]);
|
|
}
|
|
|
|
public function updatePayment(int $id, Request $request)
|
|
{
|
|
$data = $request->validate([
|
|
'name' => ['required', 'string', 'max:50'],
|
|
'display_name' => ['required', 'string', 'max:100'],
|
|
'customer_fee_rate' => ['required', 'numeric', 'min:0', 'max:100'],
|
|
'pg_fee_rate' => ['required', 'numeric', 'min:0', 'max:100'],
|
|
'is_active' => ['required', 'in:0,1'],
|
|
]);
|
|
|
|
$res = $this->service->updatePaymentMethod($id, $data, (int) auth('admin')->id(), $request->ip(), $request->userAgent() ?? '');
|
|
|
|
return redirect()->route('admin.fees.index')->with('toast', [
|
|
'type' => $res['ok'] ? 'success' : 'danger',
|
|
'title' => '결제 수단 수정',
|
|
'message' => $res['message'],
|
|
]);
|
|
}
|
|
|
|
public function updatePaymentSort(Request $request)
|
|
{
|
|
$data = $request->validate([
|
|
'ids' => ['required', 'array'],
|
|
'ids.*' => ['integer'],
|
|
]);
|
|
|
|
$res = $this->service->updatePaymentSort($data['ids'], (int) auth('admin')->id());
|
|
return response()->json($res);
|
|
}
|
|
|
|
public function destroyPayment(int $id, Request $request)
|
|
{
|
|
$res = $this->service->deletePaymentMethod($id, (int) auth('admin')->id(), $request->ip(), $request->userAgent() ?? '');
|
|
|
|
return redirect()->route('admin.fees.index')->with('toast', [
|
|
'type' => $res['ok'] ? 'success' : 'danger',
|
|
'title' => '결제 수단 삭제',
|
|
'message' => $res['message'],
|
|
]);
|
|
}
|
|
}
|