作者 刘锟

合并分支 'akun' 到 'master'

Akun



查看合并请求 !2177
  1 +<?php
  2 +/**
  3 + * Created by PhpStorm.
  4 + * User: Akun
  5 + * Date: 2025/06/121
  6 + */
  7 +
  8 +namespace App\Console\Commands\Test;
  9 +
  10 +use App\Models\Product\StockData;
  11 +use App\Services\ProjectServer;
  12 +use Illuminate\Console\Command;
  13 +
  14 +/**
  15 + * Class CreateUpdatePageMaster
  16 + * @package App\Console\Commands
  17 + */
  18 +class HyStockData extends Command
  19 +{
  20 + /**
  21 + * The name and signature of the console command.
  22 + *
  23 + * @var string
  24 + */
  25 + protected $signature = 'hy_stock_data';
  26 +
  27 + /**
  28 + * The console command description.
  29 + *
  30 + * @var string
  31 + */
  32 + protected $description = '翰宇药业中文站股票信息获取';
  33 +
  34 +
  35 + public function handle()
  36 + {
  37 + $this->get_stock();
  38 + }
  39 +
  40 + public function get_stock()
  41 + {
  42 + //翰宇药业项目id
  43 + $project_id = 1;
  44 + //流通股数量
  45 + $all_stock_num = 745000000;
  46 +
  47 + // 连接数据库
  48 + $project = ProjectServer::useProject($project_id);
  49 + if ($project) {
  50 +
  51 + // 基本参数配置
  52 + $apiUrl = "http://web.juhe.cn/finance/stock/hs"; // 接口请求URL
  53 + $method = "GET"; // 接口请求方式
  54 + $headers = ["Content-Type: application/x-www-form-urlencoded"]; // 接口请求header
  55 + $apiKey = "f6d2a89b4049c3400b5d1059deb320bf"; // 在个人中心->我的数据,接口名称上方查看
  56 + // 接口请求入参配置
  57 + $requestParams = [
  58 + 'key' => $apiKey,
  59 + 'gid' => 'sz300199',
  60 + 'type' => '',
  61 + ];
  62 + $requestParamsStr = http_build_query($requestParams);
  63 +
  64 + // 发起接口网络请求
  65 + $curl = curl_init();
  66 + curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
  67 + curl_setopt($curl, CURLOPT_URL, $apiUrl . '?' . $requestParamsStr);
  68 + curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  69 + curl_setopt($curl, CURLOPT_FAILONERROR, false);
  70 + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  71 + if (1 == strpos("$" . $apiUrl, "https://")) {
  72 + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  73 + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  74 + }
  75 + $response = curl_exec($curl);
  76 + curl_close($curl);
  77 +
  78 + // 解析响应结果
  79 + $responseResult = json_decode($response, true);
  80 + if ($responseResult) {
  81 + $data = $responseResult['result'][0]['data'];
  82 + if ($data) {
  83 + //获取最近一条
  84 + $stock = StockData::select(['today_date', 'today_time'])->orderBy('id', 'desc')->first();
  85 + if (empty($stock) || $data['date'] > $stock->today_date) {
  86 + //新增当日数据
  87 + $stock = new StockData();
  88 + $stock->today_date = $data['date'];
  89 + $stock->today_time = $data['time'];
  90 + $stock->now_pri = $data['nowPri'];
  91 + $stock->increase = $data['increase'];
  92 + $stock->incre_per = $data['increPer'];
  93 + $stock->today_max = $data['todayMax'];
  94 + $stock->today_min = $data['todayMin'];
  95 + $stock->today_start_pri = $data['todayStartPri'];
  96 + $stock->yestod_end_pri = $data['yestodEndPri'];
  97 + $stock->tra_number = $data['traNumber'];
  98 + $stock->tra_amount = $data['traAmount'];
  99 + $stock->change_per = floor(($data['traNumber'] / $all_stock_num) * 10000) / 100;
  100 + $stock->save();
  101 + } elseif ($data['date'] == $stock['today_date'] && $data['time'] > $stock['today_time']) {
  102 + //当日数据更新
  103 + $stock->today_time = $data['time'];
  104 + $stock->now_pri = $data['nowPri'];
  105 + $stock->increase = $data['increase'];
  106 + $stock->incre_per = $data['increPer'];
  107 + $stock->today_max = $data['todayMax'];
  108 + $stock->today_min = $data['todayMin'];
  109 + $stock->tra_number = $data['traNumber'];
  110 + $stock->tra_amount = $data['traAmount'];
  111 + $stock->change_per = floor(($data['traNumber'] / $all_stock_num) * 10000) / 100;
  112 + $stock->save();
  113 + }
  114 +
  115 + $this->output('数据更新成功');
  116 + } else {
  117 + $this->output('数据为空');
  118 + }
  119 + } else {
  120 + $this->output('请求异常');
  121 + }
  122 + } else {
  123 + $this->output('数据库链接失败');
  124 + }
  125 + }
  126 +
  127 + /**
  128 + * 输出处理日志
  129 + * @param $message
  130 + * @return bool
  131 + */
  132 + public function output($message)
  133 + {
  134 + echo date('Y-m-d H:i:s') . ' | ' . $message . PHP_EOL;
  135 + return true;
  136 + }
  137 +}
  1 +<?php
  2 +
  3 +namespace App\Models\Product;
  4 +
  5 +use Illuminate\Database\Eloquent\Model;
  6 +
  7 +class StockData extends Model
  8 +{
  9 + protected $connection = "custom_mysql";
  10 +
  11 + protected $table = 'gl_stock_data';
  12 +}