code); if ($code === LotterySettings::defaultCurrency()) { return ApiMessage::errorResponse($request, 'admin.currency_default_cannot_delete', ErrorCode::ValidationFailed->value, null, 422); } $references = $this->referenceSummary($code); if ($references !== []) { return ApiMessage::errorResponse( $request, 'admin.currency_referenced_cannot_delete', ErrorCode::ValidationFailed->value, ['references' => $references], 422, ['refs' => implode('、', $references)], ); } $id = (int) $currency->id; $currency->delete(); return ApiResponse::success([ 'deleted' => true, 'id' => $id, 'code' => $code, ]); } /** @return list */ private function referenceSummary(string $code): array { $checks = [ '玩家默认币种' => DB::table('players')->where('default_currency', $code), '玩家钱包' => DB::table('player_wallets')->where('currency_code', $code), '转账单' => DB::table('transfer_orders')->where('currency_code', $code), '注单' => DB::table('ticket_orders')->where('currency_code', $code), '赔率配置' => DB::table('odds_items')->where('currency_code', $code), '奖池' => DB::table('jackpot_pools')->where('currency_code', $code), 'Jackpot 贡献记录' => DB::table('jackpot_contributions')->where('currency_code', $code), ]; $references = []; foreach ($checks as $label => $query) { if ($query->exists()) { $references[] = $label; } } return $references; } }