You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.8 KiB
67 lines
2.8 KiB
<?php
|
|
|
|
namespace app\home\service;
|
|
|
|
use app\model\StockMarketModel;
|
|
|
|
class StockService extends BaseHomeService
|
|
{
|
|
|
|
// 校验股票市场状态
|
|
public function checkMarketStatus($param): array
|
|
{
|
|
try {
|
|
|
|
if(empty($param['type']) || !is_numeric($param['type'])){
|
|
return $this->toData('0', 'SUCCESS', ['status' => '2']);
|
|
}
|
|
|
|
// 1 开启 2 关闭
|
|
$market = StockMarketModel::where('stock_market_type', $param['type'])->find();
|
|
if(empty($market)){
|
|
return $this->toData('0', 'SUCCESS', ['status' => '2']);
|
|
}
|
|
|
|
if($market->status == StockMarketModel::STATUS_OFF){
|
|
return $this->toData('0', 'SUCCESS', ['status' => '2', 'market' => $market->toArray()]);
|
|
}
|
|
|
|
// 如果是开启 则判断是否在开盘时间段
|
|
$date = date('H:i');
|
|
$dateTime = \DateTime::createFromFormat('H:i', $date);
|
|
$amOpenTime = \DateTime::createFromFormat('H:i', $market->am_open_time);
|
|
$pmOpenTime = \DateTime::createFromFormat('H:i', $market->pm_open_time);
|
|
$amCloseTime = \DateTime::createFromFormat('H:i', $market->am_close_time);
|
|
$pmCloseTime = \DateTime::createFromFormat('H:i', $market->pm_close_time);
|
|
|
|
// 判断 上午盘
|
|
if($amOpenTime > $amCloseTime){
|
|
// 开盘时间 大于 闭盘时间 跨天
|
|
if($dateTime >= $amOpenTime || $dateTime <= $amCloseTime){
|
|
return $this->toData('0', 'SUCCESS', ['status' => '1','market' => $market->toArray(),$dateTime,$amOpenTime,$amCloseTime,1]);
|
|
}
|
|
} else {
|
|
if($dateTime >= $amOpenTime && $dateTime <= $amCloseTime){
|
|
return $this->toData('0', 'SUCCESS', ['status' => '1','market' => $market->toArray(),$dateTime,$amOpenTime,$amCloseTime,2]);
|
|
}
|
|
}
|
|
|
|
// 下午盘
|
|
if($pmOpenTime > $pmCloseTime){
|
|
// 开盘时间 大于 闭盘时间 跨天
|
|
if($dateTime >= $pmOpenTime || $dateTime <= $pmCloseTime){
|
|
return $this->toData('0', 'SUCCESS', ['status' => '1','market' => $market->toArray(),$dateTime,$pmOpenTime,$pmCloseTime,3]);
|
|
}
|
|
} else {
|
|
if($dateTime >= $pmOpenTime && $dateTime <= $pmCloseTime){
|
|
return $this->toData('0', 'SUCCESS', ['status' => '1','market' => $market->toArray(),$dateTime,$pmOpenTime,$pmCloseTime,4]);
|
|
}
|
|
}
|
|
|
|
return $this->toData('0', 'SUCCESS', ['status' => '2','market' => $market->toArray()]);
|
|
}catch (\Exception $exception){
|
|
return $this->toData('400','System error',[$exception->getMessage()]);
|
|
}
|
|
|
|
}
|
|
}
|