code); if ($code === LotterySettings::defaultCurrency()) { return ApiResponse::error( '默认币种不可删除', ErrorCode::ValidationFailed->value, null, 422, ); } $references = $this->referenceSummary($code); if ($references !== []) { return ApiResponse::error( '该币种已被业务数据引用,暂不可删除:'.implode('、', $references), ErrorCode::ValidationFailed->value, ['references' => $references], 422, ); } $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; } }