已冲正 / 已人工处理。 */ final class TransferOrderReconcileController extends Controller { public function __construct( private readonly LotteryTransferService $transferService, ) {} public function reverse(TransferOrderReverseRequest $request, string $transferNo): JsonResponse { $order = TransferOrder::query()->where('transfer_no', $transferNo)->first(); if ($order === null) { return ApiResponse::error(__('wallet.order_not_found'), 404); } try { $this->transferService->reconcileTransferOrder( $order, 'reverse', (string) $request->validated('remark', ''), ); } catch (WalletOperationException $e) { return ApiResponse::error( LotteryMessage::wallet($request, $e->lotteryCode), $e->lotteryCode, null, $e->httpStatus, ); } return ApiResponse::success(['transfer_no' => $transferNo, 'status' => 'reversed']); } public function manuallyProcess(TransferOrderManuallyProcessRequest $request, string $transferNo): JsonResponse { $order = TransferOrder::query()->where('transfer_no', $transferNo)->first(); if ($order === null) { return ApiResponse::error(__('wallet.order_not_found'), 404); } try { $this->transferService->reconcileTransferOrder( $order, 'manually_process', (string) $request->validated('remark', ''), ); } catch (WalletOperationException $e) { return ApiResponse::error( LotteryMessage::wallet($request, $e->lotteryCode), $e->lotteryCode, null, $e->httpStatus, ); } return ApiResponse::success(['transfer_no' => $transferNo, 'status' => 'manually_processed']); } public function completeCredit(TransferOrderCompleteCreditRequest $request, string $transferNo): JsonResponse { $order = TransferOrder::query()->where('transfer_no', $transferNo)->first(); if ($order === null) { return ApiResponse::error(__('wallet.order_not_found'), 404); } try { $this->transferService->reconcileTransferOrder( $order, 'complete_credit', (string) $request->validated('remark', ''), ); } catch (WalletOperationException $e) { return ApiResponse::error( LotteryMessage::wallet($request, $e->lotteryCode), $e->lotteryCode, null, $e->httpStatus, ); } return ApiResponse::success(['transfer_no' => $transferNo, 'status' => 'success']); } }