request->headers; $platform_id = $header['FZM-PLATFORM-ID'] ?? null; $names = Yii::$app->request->post('names', ''); if (false == $names || false == $platform_id) { $this->code = -1; $this->msg = '参数错误'; goto doEnd; } foreach ($names as $key => $val) { if (strpos($val, ',') !== false) { $val_array = explode(',', $val); if ('USDT' == strtoupper($val_array[0]) && 'BTC' == strtoupper($val_array[1])) { $condition[] = [$val_array[0], 'omni']; continue; } $condition[] = [$val_array[0], $val_array[1]]; } else { $condition[] = $val; } } $this->data = []; if (count($condition[0]) > 1) { foreach ($condition as $val) { if ('null' == $val[1] || 'coin' == $val[1]) { $this->data[] = Coin::find()->select('id,sid,icon,name,optional_name,nickname,introduce,platform,chain,address as contract_address,treaty') ->where(['name' => $val[0]]) ->asArray() ->one(); continue; } $this->data[] = Coin::find()->select('id,sid,icon,name,optional_name,nickname,introduce,platform,chain,address as contract_address,treaty') ->where(['name' => $val[0]]) ->andWhere(['platform' => $val[1]]) ->asArray() ->one(); } } else { $this->data = Coin::find()->select('id,sid,icon,name,optional_name,nickname,introduce,platform,chain,address as contract_address,treaty') ->where(['in', 'name', $condition]) ->asArray()->all(); } if (empty($this->data)) { goto doEnd; } $chains = array_column($this->data, 'chain'); $symbol = array_column($this->data, 'name'); $chains_symbols = array_keys(array_flip($chains) + array_flip($symbol)); $coin_quotations = ExchangeBusiness::getQuatationByNames($chains_symbols); $last[] = 1; $currency = CoinCurrency::find()->where(['pj_id' => $this->currency_id])->one(); if (false != $currency) { if (1111 == $this->currency_id) { $last[] = 1; } else { $last = Yii::$app->redis_currency->hmget('quotation_boc_' . 'CNY_' . $currency->symbol, 'last'); } } $ticker = ['low' => 0, 'high' => 0, 'last' => 0, 'open' => 0, 'vol' => 0, 'rmb' => 0, 'usd' => 0]; foreach ($this->data as $key => &$val) { $val['chain_quotation'] = isset($coin_quotations[strtoupper($val['chain'])]) ? $coin_quotations[strtoupper($val['chain'])] : []; $nickname = json_decode($val['nickname'], true); $val['nickname'] = isset($nickname[$this->lang]) ? $nickname[$this->lang] : ''; $introduce = json_decode($val['introduce'], true); $val['introduce'] = isset($introduce[$this->lang]) ? $introduce[$this->lang] : ''; $this->data[$key] = array_merge($val, isset($coin_quotations[strtoupper($val['name'])]) ? $coin_quotations[strtoupper($val['name'])] : $ticker); $val['chain_rmb'] = isset($val['chain_quotation']['rmb']) ? $val['chain_quotation']['rmb'] : 0; $val['chain_usd'] = isset($val['chain_quotation']['usd']) ? $val['chain_quotation']['usd'] : 0; $val['chain_country_rate'] = (float)sprintf("%0.4f", $last[0] * $val['chain_rmb']); $val['country_rate'] = (false == $currency) ? $val['rmb'] : (float)sprintf("%0.4f", $last[0] * $val['rmb']); } doEnd : return ['code' => $this->code, 'data' => $this->data, 'msg' => $this->msg]; } }