|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Created by PhpStorm.
|
|
|
|
* User: Akun
|
|
|
|
* Date: 2025/06/121
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace App\Console\Commands\Test;
|
|
|
|
|
|
|
|
use App\Models\Product\StockData;
|
|
|
|
use App\Services\ProjectServer;
|
|
|
|
use Illuminate\Console\Command;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Class CreateUpdatePageMaster
|
|
|
|
* @package App\Console\Commands
|
|
|
|
*/
|
|
|
|
class HyStockData extends Command
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* The name and signature of the console command.
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $signature = 'hy_stock_data';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The console command description.
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $description = '翰宇药业中文站股票信息获取';
|
|
|
|
|
|
|
|
|
|
|
|
public function handle()
|
|
|
|
{
|
|
|
|
$this->get_stock();
|
|
|
|
}
|
|
|
|
|
|
|
|
public function get_stock()
|
|
|
|
{
|
|
|
|
//翰宇药业项目id
|
|
|
|
$project_id = 1;
|
|
|
|
//流通股数量
|
|
|
|
$all_stock_num = 745000000;
|
|
|
|
|
|
|
|
// 连接数据库
|
|
|
|
$project = ProjectServer::useProject($project_id);
|
|
|
|
if ($project) {
|
|
|
|
|
|
|
|
// 基本参数配置
|
|
|
|
$apiUrl = "http://web.juhe.cn/finance/stock/hs"; // 接口请求URL
|
|
|
|
$method = "GET"; // 接口请求方式
|
|
|
|
$headers = ["Content-Type: application/x-www-form-urlencoded"]; // 接口请求header
|
|
|
|
$apiKey = "f6d2a89b4049c3400b5d1059deb320bf"; // 在个人中心->我的数据,接口名称上方查看
|
|
|
|
// 接口请求入参配置
|
|
|
|
$requestParams = [
|
|
|
|
'key' => $apiKey,
|
|
|
|
'gid' => 'sz300199',
|
|
|
|
'type' => '',
|
|
|
|
];
|
|
|
|
$requestParamsStr = http_build_query($requestParams);
|
|
|
|
|
|
|
|
// 发起接口网络请求
|
|
|
|
$curl = curl_init();
|
|
|
|
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
|
|
|
|
curl_setopt($curl, CURLOPT_URL, $apiUrl . '?' . $requestParamsStr);
|
|
|
|
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
|
|
|
|
curl_setopt($curl, CURLOPT_FAILONERROR, false);
|
|
|
|
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
|
|
|
if (1 == strpos("$" . $apiUrl, "https://")) {
|
|
|
|
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
|
|
|
|
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
|
|
|
|
}
|
|
|
|
$response = curl_exec($curl);
|
|
|
|
curl_close($curl);
|
|
|
|
|
|
|
|
// 解析响应结果
|
|
|
|
$responseResult = json_decode($response, true);
|
|
|
|
if ($responseResult) {
|
|
|
|
$data = $responseResult['result'][0]['data'];
|
|
|
|
if ($data) {
|
|
|
|
//获取最近一条
|
|
|
|
$stock = StockData::select(['today_date', 'today_time'])->orderBy('id', 'desc')->first();
|
|
|
|
if (empty($stock) || $data['date'] > $stock->today_date) {
|
|
|
|
//新增当日数据
|
|
|
|
$stock = new StockData();
|
|
|
|
$stock->today_date = $data['date'];
|
|
|
|
$stock->today_time = $data['time'];
|
|
|
|
$stock->now_pri = $data['nowPri'];
|
|
|
|
$stock->increase = $data['increase'];
|
|
|
|
$stock->incre_per = $data['increPer'];
|
|
|
|
$stock->today_max = $data['todayMax'];
|
|
|
|
$stock->today_min = $data['todayMin'];
|
|
|
|
$stock->today_start_pri = $data['todayStartPri'];
|
|
|
|
$stock->yestod_end_pri = $data['yestodEndPri'];
|
|
|
|
$stock->tra_number = $data['traNumber'];
|
|
|
|
$stock->tra_amount = $data['traAmount'];
|
|
|
|
$stock->change_per = floor(($data['traNumber'] / $all_stock_num) * 10000) / 100;
|
|
|
|
$stock->save();
|
|
|
|
} elseif ($data['date'] == $stock['today_date'] && $data['time'] > $stock['today_time']) {
|
|
|
|
//当日数据更新
|
|
|
|
$stock->today_time = $data['time'];
|
|
|
|
$stock->now_pri = $data['nowPri'];
|
|
|
|
$stock->increase = $data['increase'];
|
|
|
|
$stock->incre_per = $data['increPer'];
|
|
|
|
$stock->today_max = $data['todayMax'];
|
|
|
|
$stock->today_min = $data['todayMin'];
|
|
|
|
$stock->tra_number = $data['traNumber'];
|
|
|
|
$stock->tra_amount = $data['traAmount'];
|
|
|
|
$stock->change_per = floor(($data['traNumber'] / $all_stock_num) * 10000) / 100;
|
|
|
|
$stock->save();
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->output('数据更新成功');
|
|
|
|
} else {
|
|
|
|
$this->output('数据为空');
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$this->output('请求异常');
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$this->output('数据库链接失败');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 输出处理日志
|
|
|
|
* @param $message
|
|
|
|
* @return bool
|
|
|
|
*/
|
|
|
|
public function output($message)
|
|
|
|
{
|
|
|
|
echo date('Y-m-d H:i:s') . ' | ' . $message . PHP_EOL;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|