44 lines
1.2 KiB
PHP
44 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Repositories\Payments;
|
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
final class GcPinIssueRepository
|
|
{
|
|
public function findByOrderItemId(int $orderItemId): ?object
|
|
{
|
|
return DB::table('gc_pin_issues')
|
|
->where('order_item_id', $orderItemId)
|
|
->first();
|
|
}
|
|
|
|
public function findByOrderId(int $orderId): array
|
|
{
|
|
$rows = DB::table('gc_pin_issues')
|
|
->where('order_id', $orderId)
|
|
->orderBy('id', 'asc')
|
|
->get();
|
|
|
|
return array_map(fn ($r) => (array)$r, $rows->all());
|
|
}
|
|
|
|
public function insert(array $data): int
|
|
{
|
|
return (int) DB::table('gc_pin_issues')->insertGetId($data);
|
|
}
|
|
|
|
public function markOpened(int $id, string $now, array $logs, ?string $reason = null): void
|
|
{
|
|
DB::table('gc_pin_issues')
|
|
->where('id', $id)
|
|
->update([
|
|
'opened_at' => $now,
|
|
'cancel_status' => 'LOCKED',
|
|
'cancel_locked_reason' => $reason ?? '핀 오픈 완료',
|
|
'issue_logs_json' => json_encode($logs, JSON_UNESCAPED_UNICODE),
|
|
'updated_at' => $now,
|
|
]);
|
|
}
|
|
}
|