1.创建一个数据表
DROP TABLE IF EXISTS `txzh_token_price`;
CREATE TABLE `txzh_token_price` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`token_ids` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '币种id',
`symbol` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '币种符号',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '币种名称',
`price` decimal(18, 6) NULL DEFAULT NULL COMMENT '币种价格',
`vs_currencies` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '换算币种',
`update_time` int(10) NULL DEFAULT NULL COMMENT '更新时间',
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态:0=不更新 1=更新',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact;
2.php代码如下
<?php
namespace app\im\controller;
use GuzzleHttp\Client;
use app\im\model\mysql\User;
use app\im\model\mysql\TokenPrice;
class Task
{
/**
* 获取代币价格
* @return string
*/
public function getTokenPrice()
{
// 需要的币种列表
$tokenList = TokenPrice::where(array("status"=>1))->select();
// 获取币种列表 $url2 = "https://api.coingecko.com//api/v3/coins/list";
$ids = '';
foreach ($tokenList as $tokenInfo) {
$ids .= $tokenInfo['token_ids'].",";
}
$client = new Client();
$url = "https://api.coingecko.com/api/v3/simple/price?ids=".$ids."&vs_currencies=".$tokenInfo['vs_currencies'];
$res = $client->request('GET', $url);
if ($res->getStatusCode() != 200) {
return false;
}
$resultData = $res->getBody();
$resultDataArray = json_decode($resultData,true);
foreach ($tokenList as $tokenInfo) {
$price = $resultDataArray[$tokenInfo['token_ids']][$tokenInfo['vs_currencies']];
$data = [];
$data['price'] = $price;
$data['update_time'] = time();
TokenPrice::where(array("id"=>$tokenInfo['id']))->update($data);
}
return 'success';
}
}