作者 刘锟

update

<?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;
}
}
... ...
<?php
namespace App\Models\Product;
use Illuminate\Database\Eloquent\Model;
class StockData extends Model
{
protected $connection = "custom_mysql";
protected $table = 'gl_stock_data';
}
... ...