作者 lyh

Merge branch 'master' of http://47.244.231.31:8099/zhl/globalso-v6 into lyh-server

  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 + $hour = date('H');
  38 + $min = date('i');
  39 +
  40 + //9:30 - 11:30 , 13:00 - 15:00
  41 + if(($hour == 9 && $min >15) || $hour == 10 || ($hour == 11 && $min < 45) || $hour == 13 || $hour == 14 || ($hour == 15 && $min < 15 )){
  42 + $this->get_stock();
  43 + }
  44 + }
  45 +
  46 + public function get_stock()
  47 + {
  48 + //翰宇药业项目id
  49 + $project_id = 3531;
  50 + //流通股数量
  51 + $all_stock_num = 745000000;
  52 +
  53 + // 连接数据库
  54 + $project = ProjectServer::useProject($project_id);
  55 + if ($project) {
  56 +
  57 + // 基本参数配置
  58 + $apiUrl = "http://web.juhe.cn/finance/stock/hs"; // 接口请求URL
  59 + $method = "GET"; // 接口请求方式
  60 + $headers = ["Content-Type: application/x-www-form-urlencoded"]; // 接口请求header
  61 + $apiKey = "f6d2a89b4049c3400b5d1059deb320bf"; // 在个人中心->我的数据,接口名称上方查看
  62 + // 接口请求入参配置
  63 + $requestParams = [
  64 + 'key' => $apiKey,
  65 + 'gid' => 'sz300199',
  66 + 'type' => '',
  67 + ];
  68 + $requestParamsStr = http_build_query($requestParams);
  69 +
  70 + // 发起接口网络请求
  71 + $curl = curl_init();
  72 + curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
  73 + curl_setopt($curl, CURLOPT_URL, $apiUrl . '?' . $requestParamsStr);
  74 + curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
  75 + curl_setopt($curl, CURLOPT_FAILONERROR, false);
  76 + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  77 + if (1 == strpos("$" . $apiUrl, "https://")) {
  78 + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  79 + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  80 + }
  81 + $response = curl_exec($curl);
  82 + curl_close($curl);
  83 +
  84 + // 解析响应结果
  85 + $responseResult = json_decode($response, true);
  86 + if ($responseResult) {
  87 + $data = $responseResult['result'][0]['data'];
  88 + if ($data) {
  89 + //获取最近一条
  90 + $stock = StockData::select(['today_date', 'today_time'])->orderBy('id', 'desc')->first();
  91 + if (empty($stock) || $data['date'] > $stock->today_date) {
  92 + //新增当日数据
  93 + $stock = new StockData();
  94 + $stock->today_date = $data['date'];
  95 + $stock->today_time = $data['time'];
  96 + $stock->now_pri = $data['nowPri'];
  97 + $stock->increase = $data['increase'];
  98 + $stock->incre_per = $data['increPer'];
  99 + $stock->today_max = $data['todayMax'];
  100 + $stock->today_min = $data['todayMin'];
  101 + $stock->today_start_pri = $data['todayStartPri'];
  102 + $stock->yestod_end_pri = $data['yestodEndPri'];
  103 + $stock->tra_number = $data['traNumber'];
  104 + $stock->tra_amount = $data['traAmount'];
  105 + $stock->change_per = floor(($data['traNumber'] / $all_stock_num) * 10000) / 100;
  106 + $stock->save();
  107 + } elseif ($data['date'] == $stock['today_date'] && $data['time'] > $stock['today_time']) {
  108 + //当日数据更新
  109 + $stock->today_time = $data['time'];
  110 + $stock->now_pri = $data['nowPri'];
  111 + $stock->increase = $data['increase'];
  112 + $stock->incre_per = $data['increPer'];
  113 + $stock->today_max = $data['todayMax'];
  114 + $stock->today_min = $data['todayMin'];
  115 + $stock->tra_number = $data['traNumber'];
  116 + $stock->tra_amount = $data['traAmount'];
  117 + $stock->change_per = floor(($data['traNumber'] / $all_stock_num) * 10000) / 100;
  118 + $stock->save();
  119 + }
  120 +
  121 + $this->output('数据更新成功');
  122 + } else {
  123 + $this->output('数据为空');
  124 + }
  125 + } else {
  126 + $this->output('请求异常');
  127 + }
  128 + } else {
  129 + $this->output('数据库链接失败');
  130 + }
  131 + }
  132 +
  133 + /**
  134 + * 输出处理日志
  135 + * @param $message
  136 + * @return bool
  137 + */
  138 + public function output($message)
  139 + {
  140 + echo date('Y-m-d H:i:s') . ' | ' . $message . PHP_EOL;
  141 + return true;
  142 + }
  143 +}
  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 +}