toArray(); return $this->success($LHaaruJ); } public function rangeNew(){ $hot = DB::table('currency_quotation') ->join('currency', 'currency_quotation.currency_id', '=', 'currency.id') ->where('currency.is_display', 1) ->where('currency.is_legal', 1) ->orderBy("currency_quotation.volume","desc") ///->where('currency_quotation.change','>', 0) ->limit(100) ->get(); $increase = DB::table('currency_quotation') ->join('currency', 'currency_quotation.currency_id', '=', 'currency.id') ->where('currency.is_display', 1) ->where('currency.is_legal', 1) //->where('currency_quotation.change','>', 0) ->orderBy("currency_quotation.change","desc") ->limit(100) ->get(); $currency['hot'] = $hot; $currency['increase'] = $increase; return $this->success($currency); } public function bizcate(){ $data = DB::table('lh_deposit_config')->join('currency','currency.id','=','currency_id') ->groupBy('currency_id') ->select(['currency.name as currency_name','currency.logo as currency_logo','lh_deposit_config.*']) ->get(); return $this->success($data); } public function listsRecharge() { $Key = config('app.udun_apikey'); $memberid = config('app.memberid'); $HttpUrl = config('app.gateway'); $CallUrl = config('app.callback'); $udun_enable = config('app.udun_enable'); $list = Currency::where('is_display', 1)->orderBy('sort', 'asc')->get()->toArray(); $array = array(); if($udun_enable==true) { $list = UdunAddress::where('status', 1)->orderBy('id', 'asc')->get()->toArray(); $array = array(); foreach ($list as $v) { $walletaddress = $this->xcreateAddress($v['chain_id'],$memberid,$v['name'],$v['contract']); if (is_array($walletaddress) && isset($walletaddress['data']['address'])) { $v['address_erc'] = $v['address_omni'] = $walletaddress['data']['address']; } else { $v['address_erc'] = $v['address_omni'] = ''; } $v['vcode'] = $v['real_name']; array_push($array, $v); } }else{ foreach ($list as $v) { if ($v['address_erc'] !='' && $v['address_omni'] !='') { $a=$v; $a['name']=$a['name'].'-ERC20'; array_push($array, $a); $b=$v; $b['name']=$b['name'].'-TRC20'; $b['address_erc']=$b['address_omni']; array_push($array, $b); }else{ if($v['address_erc'] !=''){ array_push($array, $v); } if($v['address_omni'] !=''){ array_push($array, $v); } } } } return $this->success(array('currency' => $list, 'udun_enable'=>$udun_enable,'recharge' => $array)); } public function xcreateAddress(int $coinType,$MerchantId,$CoinName,$contract) { $Key = config('app.udun_apikey'); $HttpUrl = config('app.gateway'); $CallUrl = config('app.callback'); $memberid = config('app.memberid'); // if($coinType ==0) $currency_id='BTC'; // if($coinType ==60) $currency_id='ETH'; // if($coinType ==195) $currency_id='TRX'; $user_id = Users::getUserId(); // $map = array('memberid'=>$memberid,'user_id' => $user_id, 'chain_id' => $coinType); if(!$user_id) return $this->error("非法用户"); if(!WalletAddress::where('memberid',$memberid)->where('user_id',$user_id)->where('chain_id',$coinType)->where('contract',$contract)->where('currency_id',$CoinName)->first()){ $body = array( 'merchantId' => $MerchantId, 'coinType' => $coinType, 'callUrl' => $CallUrl, ); $Timestamp = time(); $Nonce = rand(100000,999999); $body = '['.json_encode($body).']'; $timestamp = $Timestamp; $nonce = $Nonce; $url = $HttpUrl.'/mch/address/create'; $key = $Key; $sign = md5($body.$key.$nonce.$timestamp); $data = array( 'timestamp' => $timestamp, 'nonce' => $nonce, 'sign' => $sign, 'body' => $body ); $data_string = json_encode($data); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'X-AjaxPro-Method:ShowList', 'Content-Type: application/json; charset=utf-8', 'Content-Length: ' . strlen($data_string)) ); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); $data = curl_exec($ch); curl_close($ch); if(is_object($data)) { $data = (array)$data; } $data_array = json_decode($data,true); if($data_array['code']!=200 ){ // file_put_contents('/www/wwwroot/crypto/public/walletaddress.txt',time().json_encode($data_array).PHP_EOL,FILE_APPEND); return $this->error("用户id:".$user_id." chain_id : ".$coinType."地址生成失败"); } $newdata['memberid'] =$memberid; $newdata['chain_id'] = $coinType; $newdata['contract'] = $contract; $newdata['currency_id'] = $CoinName; $newdata['user_id'] = $user_id; $newdata['address'] = $data_array['data']['address']; DB::table('wallet_address')->insert($newdata); /* WalletAddress::create([ 'memberid'=>$memberid, 'chain_id'=>$coinType, 'currency_id'=>$currency_id, 'user_id'=>$user_id, 'address'=>$data_array['data']['address'], ]); WalletAddress::create($newdata); */ Redis::set('address:' . strtolower($data_array['data']['address']),$user_id); }else{ $data_array['data'] = WalletAddress::where('memberid',$memberid)->where('user_id',$user_id)->where('chain_id',$coinType)->where('contract',$contract)->where('currency_id',$CoinName)->first(); } return $data_array; } public function createAddress(int $coinType,$MerchantId,$CoinName) { $Key = config('app.udun_apikey'); $HttpUrl = config('app.gateway'); $CallUrl = config('app.callback'); $memberid = config('app.memberid'); // if($coinType ==0) $currency_id='BTC'; // if($coinType ==60) $currency_id='ETH'; // if($coinType ==195) $currency_id='TRX'; $user_id = Users::getUserId(); // $map = array('memberid'=>$memberid,'user_id' => $user_id, 'chain_id' => $coinType); if(!$user_id) return $this->error("非法用户"); if(!WalletAddress::where('memberid',$memberid)->where('user_id',$user_id)->where('chain_id',$coinType)->where('currency_id',$CoinName)->first()){ $body = array( 'merchantId' => $MerchantId, 'coinType' => $coinType, 'callUrl' => $CallUrl, ); $Timestamp = time(); $Nonce = rand(100000,999999); $body = '['.json_encode($body).']'; $timestamp = $Timestamp; $nonce = $Nonce; $url = $HttpUrl.'/mch/address/create'; $key = $Key; $sign = md5($body.$key.$nonce.$timestamp); $data = array( 'timestamp' => $timestamp, 'nonce' => $nonce, 'sign' => $sign, 'body' => $body ); $data_string = json_encode($data); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'X-AjaxPro-Method:ShowList', 'Content-Type: application/json; charset=utf-8', 'Content-Length: ' . strlen($data_string)) ); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); $data = curl_exec($ch); curl_close($ch); if(is_object($data)) { $data = (array)$data; } $data_array = json_decode($data,true); if($data_array['code']!=200 ){ // file_put_contents('/www/wwwroot/crypto/public/walletaddress.txt',time().json_encode($data_array).PHP_EOL,FILE_APPEND); return $this->error("用户id:".$user_id." chain_id : ".$coinType."地址生成失败"); } $newdata['memberid'] =$memberid; $newdata['chain_id'] = $coinType; $newdata['currency_id'] = $CoinName; $newdata['user_id'] = $user_id; $newdata['address'] = $data_array['data']['address']; DB::table('wallet_address')->insert($newdata); /* WalletAddress::create([ 'memberid'=>$memberid, 'chain_id'=>$coinType, 'currency_id'=>$currency_id, 'user_id'=>$user_id, 'address'=>$data_array['data']['address'], ]); WalletAddress::create($newdata); */ Redis::set('address:' . strtolower($data_array['data']['address']),$user_id); }else{ $data_array['data'] = WalletAddress::where('memberid',$memberid)->where('user_id',$user_id)->where('chain_id',$coinType)->where('currency_id',$CoinName)->first(); } return $data_array; } public function address(int $id): array { $Key = config('app.udun_apikey'); $memberid = config('app.memberid'); $HttpUrl = config('app.gateway'); $CallUrl = config('app.callback'); $memberid = config('memberid'); $user_id = Users::getUserId(); $map = ['memberid'=>$memberid,'user_id' => $user_id, 'chain_id' => $id]; if(!WalletAddress::query()->where($map)->exists()){ $coinType = 0; switch ((int)$id){ case 3: $coinType = 60; $currency_id = 2; break; case 4: $coinType = 60; $currency_id = 2; break; case 1: $coinType = 195; $currency_id = 10; break; case 2: $coinType = 0; $currency_id = 1; break; case 5: $coinType = 0; $currency_id = 1; break; } $data_array = $this->createAddress($coinType,$memberid);//,$CallUrl,$HttpUrl,$Key $data['memberid'] =$memberid; $data['chain_id'] = $id; $data['currency_id'] = $currency_id; $data['user_id'] = $user_id; $data['address'] = $data_array['data']['address']; // file_put_contents('/www/wwwroot/server/public/t.txt',$memberid."---".json_encode($data_array),FILE_APPEND); if($data_array['code']!=200 ){ return $this->error("用户id:".$user_id." chain_id : ".$coinType."地址生成失败"); }else{ WalletAddress::query()->create($data); Redis::set('address:' . strtolower($data_array['data']['address']),$user_id); } $address = $data_array['data']['address']; }else{ $address =WalletAddress::query()->where($map)->value('address'); } return ['address' => $address]; } public function lists() { $CnrtCHJ = Currency::where('is_display', 1)->orderBy('sort', 'asc')->get()->toArray(); $ZwZsbXQ = array(); foreach ($CnrtCHJ as $LkZuCYJ) { if ($LkZuCYJ['is_legal']) { array_push($ZwZsbXQ, $LkZuCYJ); } } return $this->success(array('currency' => $CnrtCHJ, 'legal' => $ZwZsbXQ)); } public function lever() { $ORXHJHJ = Currency::where('is_display', 1)->orderBy('sort', 'asc')->get()->toArray(); $GDKcLQQ = array(); foreach ($ORXHJHJ as $tvYImDv) { if ($tvYImDv['is_lever']) { array_push($GDKcLQQ, $tvYImDv); } } $QQXtbYJ = strtotime(date('Y-m-d')); foreach ($GDKcLQQ as $lZliuuJ) { $NCAnfzQ = array(); foreach ($ORXHJHJ as $wlhJtsJ) { if ($wlhJtsJ['id'] != $lZliuuJ['id']) { $kbWrlVv = 0; $qpXftSJ = 0; $ilDGdcQ = ''; $DpAftsJ = ''; $VVYVhSv = 0.0; $ilDGdcQ = TransactionComplete::orderBy('create_time', 'desc')->where('currency', $wlhJtsJ['id'])->where('legal', $lZliuuJ['id'])->first(); $DpAftsJ = TransactionComplete::orderBy('create_time', 'desc')->where('create_time', '<', $QQXtbYJ)->where('currency', $wlhJtsJ['id'])->where('legal', $lZliuuJ['id'])->first(); !empty($ilDGdcQ) && ($kbWrlVv = $ilDGdcQ->price); !empty($DpAftsJ) && ($qpXftSJ = $DpAftsJ->price); if (empty($kbWrlVv)) { if ($qpXftSJ) { $VVYVhSv = -100.0; } } else { if ($qpXftSJ) { $VVYVhSv = ($kbWrlVv - $qpXftSJ) / $qpXftSJ; } else { $VVYVhSv = 100.0; } } array_push($NCAnfzQ, array('id' => $wlhJtsJ['id'], 'name' => $wlhJtsJ['name'], 'last_price' => $kbWrlVv, 'proportion' => $VVYVhSv, 'yesterday_last_price' => $qpXftSJ)); } } $lZliuuJ['quotation'] = $NCAnfzQ; } return $this->success($GDKcLQQ); } public function TradeMarket(Request $request) { $quo = Currency::find($request->input('legal_id'))->name; $base = Currency::find($request->input('currency_id'))->name; $currencyInfo=Currency::where('id',$request->input('currency_id'))->first(); $sisValue =$currencyInfo->oncontact; $symbol = strtolower($base . $quo); // var_dump($base,$quo); // die; $url = "https://api.huobi.pro/market/history/trade?symbol={$symbol}&size=20"; $res = json_decode(file_get_contents($url), true); $rsp = []; if ($res['status']=='ok') { foreach ($res['data'] as $val) { if (count($rsp) >= 20) { break; } array_walk($val['data'], function (&$v) use (& $rsp,$sisValue) { $v['time'] = date('H:i:s', intVal($v['ts'] / 1000)); if (count($rsp) >= 20) { } else { if($sisValue != 0){ $v['price'] = round($v['price'] + $sisValue,8); } $rsp[] = $v; } }); } } // var_dump($rsp); return $this->success($rsp); } public function quotation_tian() { $BrsWBjv = Currency::where('is_display', 1)->orderBy('sort', 'asc')->get()->toArray(); $mOnknFv = array(); foreach ($BrsWBjv as $qMSPJTQ) { if ($qMSPJTQ['is_legal']) { array_push($mOnknFv, $qMSPJTQ); } } $fjllgVJ = strtotime(date('Y-m-d')); foreach ($mOnknFv as $zlqdSQv) { $XSjKELv = array(); foreach ($BrsWBjv as $NAaKMjv => $UNHGjLv) { $zlqdSQv['quotation'] = CurrencyQuotation::orderBy('add_time', 'desc')->where('legal_id', $zlqdSQv['id'])->get()->toArray(); } } return $this->success($mOnknFv); } //获取单个行情 2024 public function exDeal(){ $legal_id = Input::get("legal_id"); $currency_id = Input::get("currency_id"); if (empty($legal_id) || empty($currency_id)) return $this->error("参数错误"); $arr = CurrencyMatch::where("currency_id",$currency_id) ->where("legal_id",$legal_id) ->where('is_display', 1)->first(); return $this->success($arr); } //币种分类 public function b_class(Request $request){ $result =DB::table('currency_class')->where('is_display',1)->orderBy('sort','asc')->get(); $data = [ 'code' => 1, 'msg' => 'success', 'data' => $result ]; return $data; // echo json_encode($data); } public function sinatest(){ $sina = new sina(); // $currency_list = CurrencyMatch::forward_sj(); // echo json_encode($currency_list); // $name = 'JPY'; // echo json_encode($sina->foreign($name)); $name = 'CBK'; // echo json_encode($sina->real()); $period='1min'; echo json_encode($sina->real_gu($name)); } public function test(){ $sina = new sina(); echo $sina->real().'
'; echo $sina->foreign_real().'
'; echo $sina->etfreal().'
'; echo $sina->gpreal().'
'; /* $currency_list = CurrencyMatch::forward_sj(); echo json_encode($currency_list); $name = 'JPY'; echo json_encode($sina->foreign($name));*/ } public function sina_s($name,$period){ $sina = new sina(); $result = $sina->getwaipanKline($name,$period,300); $result = array_map(function ($value) { $value['time'] = $value['id']*1000; $value['volume'] = $value['amount'] ?? 0; return $value; }, $result); // file_put_contents('/www/wwwroot/crypto/public/t.txt',$period."--".$name); $data = [ 'code' => 1, 'msg' => 'success', 'data' => $result ]; return $data; echo json_encode($data); } public function foreign($name,$period){ $sina = new sina(); $result = $sina->getKline($name,$period,300); $result = array_map(function ($value) { $value['time'] = $value['id'] * 1000; $value['volume'] = $value['amount'] ?? 0; return $value; }, $result); $data = [ 'code' => 1, 'msg' => 'success', 'data' => $result ]; return $data; echo json_encode($data); } public function gp($name,$period){ $sina = new sina(); $result = $sina->geteftgp($name,$period,300); $result = array_map(function ($value) { $value['time'] = $value['id'] * 1000; $value['volume'] = $value['amount'] ?? 0; return $value; }, $result); $data = [ 'code' => 1, 'msg' => 'success', 'data' => $result ]; return $data; } public function newTimeshars(Request $request) { $iriUDGJ = $request->get('symbol'); $VmCMUNQ = $request->get('period'); $biRnHJv = $request->get('from', null); $cAMDfuJ = $request->get('to', null); $iriUDGJ = strtoupper($iriUDGJ); $KuPpbTJ = ['1min' => 5, '5min' => 6, '15min' => 1, '30min' => 7, '60min' => 2, '1D' => 4, '1W' => 8, '1M' => 9, '1day' => 4, '1week' => 8, '1mon' => 9, '1year' => 10]; $lKNcYmQ = array_keys($KuPpbTJ); $fVvRJYJ = array_values($KuPpbTJ); if ($biRnHJv == null || $cAMDfuJ == null) { return ['code' => -1, 'msg' => 'error: start time or end time must be filled in', 'data' => null]; } if ($biRnHJv > $cAMDfuJ) { return ['code' => -1, 'msg' => 'error: start time should not exceed the end time.', 'data' => null]; } if ($iriUDGJ == '' || stripos($iriUDGJ, '/') === false) { return ['code' => -1, 'msg' => 'error: symbol invalid', 'data' => null]; } if ($VmCMUNQ == '' || !in_array($VmCMUNQ, $lKNcYmQ)) { return ['code' => -1, 'msg' => 'error: period invalid', 'data' => null]; } $adlYLXQ = strtotime(date('Y-m-d H:i')); if ($VmCMUNQ == '1min' && $cAMDfuJ >= $adlYLXQ) { $cAMDfuJ = $adlYLXQ - 1; } $mjWkkrv = $KuPpbTJ[$VmCMUNQ]; $iriUDGJ = explode('/', $iriUDGJ); list($HSQfSkJ, $JnRWhhQ) = $iriUDGJ; $HSQfSkJ = Currency::where('name', $HSQfSkJ)->where('is_display', 1)->first(); $JnRWhhQ = Currency::where('name', $JnRWhhQ)->where('is_display', 1)->where('is_legal', 1)->first(); if (!$HSQfSkJ || !$JnRWhhQ) { return ['code' => -1, 'msg' => 'error: symbol not exist', 'data' => null]; } $jqbYHhJ = $JnRWhhQ->id; $ElYLALJ = $HSQfSkJ->id; $fFVCeHJ = MarketHour::orderBy('day_time', 'asc')->where('currency_id', $ElYLALJ)->where('legal_id', $jqbYHhJ)->where('type', $mjWkkrv)->where('day_time', '>=', $biRnHJv)->where('day_time', '<=', $cAMDfuJ)->get(); $rXDaOwJ = array(); if ($fFVCeHJ) { foreach ($fFVCeHJ as $qhNdsMJ => $ncfMSiJ) { $KuIMXuv = array('open' => $ncfMSiJ->start_price, 'close' => $ncfMSiJ->end_price, 'high' => $ncfMSiJ->highest, 'low' => $ncfMSiJ->mminimum, 'volume' => $ncfMSiJ->number, 'time' => $ncfMSiJ->day_time * 1000); array_push($rXDaOwJ, $KuIMXuv); } } else { foreach ($fFVCeHJ as $qhNdsMJ => $ncfMSiJ) { $KuIMXuv = null; array_push($rXDaOwJ, $KuIMXuv); } } return ['code' => 1, 'msg' => 'success:)', 'data' => $rXDaOwJ]; } public function klineMarket(Request $request) { // die('dsa'); $symbol = $request->input('symbol'); $period = $request->input('period'); $from = $request->input('from', null); $to = $request->input('to', null); $str = explode('/',$symbol); $currency = DB::table('currency')->where('name',$str[0])->first(); $currency = json_encode($currency); $currency = json_decode($currency,true); $currency_matches = DB::table('currency_matches')->where('currency_id',$currency['id'])->first(); $currency_matches = json_encode($currency_matches); $currency_matches = json_decode($currency_matches,true); // $currency_matches['market_from']; if($currency_matches['market_from']==3){///999 return $this->sina_s($str[0],$period); }///999 if($currency_matches['market_from']==0){///999 return $this->foreign($str[0],$period); } if($currency_matches['market_from']==6 || $currency_matches['market_from']==9){///999 return $this->gp($str[0],$period); } $symbol = strtoupper($symbol); $result = []; //类型,1=15分钟,2=1小时,3=4小时,4=一天,5=分时,6=5分钟,7=30分钟,8=一周,9=一月,10=一年 $period_list = [ '1min' => '1min', '5min' => '5min', '15min' => '15min', '30min' => '30min', '60min' => '60min', '1H' => '60min', '1D' => '1day', '1W' => '1week', '1M' => '1mon', '1Y' => '1year', '1day' => '1day', '1week' => '1week', '1mon' => '1mon', '1year' => '1year', ]; if ($from == null || $to == null) { return [ 'code' => -1, 'msg' => 'error: from time or to time must be filled in', 'data' => $result, ]; } if ($from > $to) { return [ 'code' => -1, 'msg' => 'error: from time should not exceed the to time.', 'data' => $result, ]; } $periods = array_keys($period_list); if ($period == '' || !in_array($period, $periods)) { return [ 'code' => -1, 'msg' => 'error: period invalid', 'data' => $result, ]; } if ($symbol == '' || stripos($symbol, '/') === false) { return [ 'code' => -1, 'msg' => 'error: symbol invalid', 'data' => $result, ]; } $period = $period_list[$period]; list($base_currency, $quote_currency) = explode('/', $symbol); $base_currency_model = Currency::where('name', $base_currency) ->where("is_display", 1) ->first(); $quote_currency_model = Currency::where('name', $quote_currency) ->where("is_display", 1) ->where("is_legal", 1) ->first(); if (!$base_currency_model || !$quote_currency_model) { return [ 'code' => -1, 'msg' => 'error: symbol not exist', 'data' => null ]; } $result = MarketHour::getEsearchMarket($base_currency, $quote_currency, $period, $from, $to); // var_dump($result); // die; $result = array_map(function ($value) { $value['time'] = $value['id'] * 1000; $value['volume'] = $value['amount'] ?? 0; return $value; }, $result); // $result[10]['low']=$result[10]['low']-1200; // $result[10]['close']=$result[10]['close']-1000; return [ 'code' => 1, 'msg' => 'success', 'data' => $result ]; } public function klineMarket111(Request $request) { $symbol = $request->input('symbol'); $period = $request->input('period'); $from = $request->input('from', null); $to = $request->input('to', null); $symbol = strtoupper($symbol); $array = []; $data = ['1min' => '1min', '5min' => '5min', '15min' => '15min', '30min' => '30min', '60min' => '60min', '1H' => '60min', '1D' => '1day', '1W' => '1week', '1M' => '1mon', '1Y' => '1year', '1day' => '1day', '1week' => '1week', '1mon' => '1mon', '1year' => '1year']; if ($from == null || $to == null) { return ['code' => -1, 'msg' => 'error: from time or to time must be filled in', 'data' => $array]; } if ($from > $to) { return ['code' => -1, 'msg' => 'error: from time should not exceed the to time.', 'data' => $array]; } $newdata = array_keys($data); if ($period == '' || !in_array($period, $newdata)) { return ['code' => -1, 'msg' => 'error: period invalid', 'data' => $array]; } if ($symbol == '' || stripos($symbol, '/') === false) { return ['code' => -1, 'msg' => 'error: symbol invalid', 'data' => $array]; } $period = $data[$period]; list($is_display, $is_legal) = explode('/', $symbol); $result = Currency::where('name', $is_display)->where('is_display', 1)->first(); $results = Currency::where('name', $is_legal)->where('is_display', 1)->where('is_legal', 1)->first(); if (!$result || !$results) { return ['code' => -1, 'msg' => 'error: symbol not exist', 'data' => null]; } $array = MarketHour::getEsearchMarket($is_display, $is_legal, $period, $from, $to); $array = array_map(function ($value) { $value['time'] = $value['id'] * 1000; $value['volume'] = $value['amount'] ?? 0; return $value; }, $array); return ['code' => 1, 'msg' => 'success', 'data' => $array]; } public function huangnewQuotation() { $is_class = Input::get('is_class', 0); $list = Currency::with(["quotation"=>function($query) use ($is_class){ $query->where('is_display', 1)->where('market_from', $is_class)->where('id', '<>',4)->orderBy('sort','asc'); }])->whereHas('quotation', function ($query) { $query->where('is_display', 1); })->where('is_display', 1)->where('is_legal', 1)->orderBy('sort','asc')->get(); return $this->success($list); } public function newQuotation() { $BmnYXrJ = Currency::with('quotation')->whereHas('quotation', function ($query) { $query->where('is_display', 1); })->where('is_display', 1)->where('is_legal', 1)->orderBy('sort','asc')->get(); return $this->success($BmnYXrJ); } public function optionalQuotation() { $BmnYXrJ = Currency::with(["quotation"=>function($query){ $query->where('is_display', 1)->where('id', '<>',4)->orderBy('sort','asc'); }])->whereHas('quotation', function ($query) { $query->where('is_display', 1); })->where('is_display', 1)->where('is_legal', 1)->orderBy('sort','asc')->get(); return $this->success($BmnYXrJ); } public function dealInfo() { $TAXjNyv = Input::get('legal_id'); $XhwvDSQ = Input::get('currency_id'); if (empty($TAXjNyv) || empty($XhwvDSQ)) { return $this->error('参数错误'); } $bltKpAQ = Currency::where('is_display', 1)->where('id', $TAXjNyv)->where('is_legal', 1)->first(); $AmPMnfQ = Currency::where('is_display', 1)->where('id', $XhwvDSQ)->first(); if (empty($bltKpAQ) || empty($AmPMnfQ)) { return $this->error('币未找到'); } $gEUGyVJ = Input::get('type', '1'); $PWRLYvQ = 60; switch ($gEUGyVJ) { case 2: $PWRLYvQ = 900; break 1; case 3: $PWRLYvQ = 3600; break 1; case 4: $PWRLYvQ = 14400; break 1; case 5: $PWRLYvQ = 86400; break 1; default: $PWRLYvQ = 60; } $GlYqXKv = time(); $qTstiMQ = 0; $dViLeaQ = TransactionComplete::orderBy('create_time', 'desc')->where('currency', $XhwvDSQ)->where('legal', $TAXjNyv)->first(); $dViLeaQ && ($qTstiMQ = $dViLeaQ->price); $aRpAMwv = TransactionComplete::getQuotation($TAXjNyv, $XhwvDSQ, $GlYqXKv - $PWRLYvQ, $GlYqXKv); $vaTCiiv = array(); for ($LVnvAcQ = 0; $LVnvAcQ < 10; $LVnvAcQ++) { $KXhrmpJ = $GlYqXKv - $LVnvAcQ * $PWRLYvQ; $yrQDxmQ = $KXhrmpJ - $PWRLYvQ; $PtbcDYQ = array(); $PtbcDYQ = $aRpAMwv = TransactionComplete::getQuotation($TAXjNyv, $XhwvDSQ, $yrQDxmQ, $KXhrmpJ); array_push($vaTCiiv, $PtbcDYQ); } return $this->success(array('legal' => $bltKpAQ, 'currency' => $AmPMnfQ, 'last_price' => $qTstiMQ, 'now_quotation' => $aRpAMwv, 'quotation' => $vaTCiiv)); } public function userCurrencyList() { $user_id = Users::getUserId(); $XOylMHJ = Currency::where('is_display', 1)->orderBy('sort', 'desc')->get(); $XOylMHJ = $XOylMHJ->filter(function ($item, $key) { $fRtZmfQ = array_sum([$item->is_legal, $item->is_lever, $item->is_match, $item->is_micro]); return $fRtZmfQ > 1; })->values(); $XOylMHJ->transform(function ($item, $key) use($user_id) { $VxDXWbJ = UsersWallet::where('user_id', $user_id)->where('currency', $item->id)->first(); $item->setVisible(['id', 'name', 'is_legal', 'is_lever', 'is_match', 'is_micro', 'wallet']); return $item->setAttribute('wallet', $VxDXWbJ); }); return $this->success($XOylMHJ); } }