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.
222 lines
7.8 KiB
222 lines
7.8 KiB
2 months ago
|
<?php
|
||
|
|
||
|
namespace app\model;
|
||
|
|
||
|
/**
|
||
|
* 股票市场
|
||
|
* @property int $id
|
||
|
* @property int $stock_market_type
|
||
|
* @property int $status
|
||
|
* @property int $rate
|
||
|
* @property string $symbol
|
||
|
* @property string $unit
|
||
|
* @property int $trade_day_type
|
||
|
* @property string $am_open_time
|
||
|
* @property string $am_close_time
|
||
|
* @property string $pm_open_time
|
||
|
* @property string $pm_close_time
|
||
|
* @property string $create_time
|
||
|
* @property string $update_time
|
||
|
* @property int $lever_status
|
||
|
* @property int $stock_min
|
||
|
* @property int $lever_min
|
||
|
* @property int $lever_max
|
||
|
*/
|
||
|
class StockMarketModel extends BaseModel
|
||
|
{
|
||
|
protected $name = 'stock_market';
|
||
|
protected $pk = 'id';
|
||
|
|
||
|
// 股票市场类型
|
||
|
// 1 现货 2 合约 3 美股 4 印尼 5 马股 6 泰股 7 印度股
|
||
|
const DIGITAL_MARKET = '1';
|
||
|
const CONTRACT_MARKET = '2';
|
||
|
const STOCK_MARKET_USA = '3';
|
||
|
const STOCK_MARKET_MG = '5';
|
||
|
const STOCK_MARKET_TG = '6';
|
||
|
const STOCK_MARKET_YNG = '4';
|
||
|
const STOCK_MARKET_IN = '7';
|
||
|
const STOCK_MARKET_HY = '8';
|
||
|
const STOCK_MARKET_SGD = '9';
|
||
|
const STOCK_MARKET_FUND = '10';
|
||
|
const STOCK_MARKET_OPTION_IN = '11';
|
||
|
const STOCK_MARKET_HK = '12';
|
||
|
const STOCK_MARKET_UK = '14';
|
||
|
const STOCK_MARKET_FUR = '15';
|
||
|
const STOCK_MARKET_EUR = '16';
|
||
|
const STOCK_MARKET_BRL = '17';
|
||
|
const STOCK_MARKET_JP = '18';
|
||
|
const FOREX_MARKET = '19';
|
||
|
|
||
|
const STOCK_MARKET_TYPE = [
|
||
|
self::DIGITAL_MARKET => '现货',
|
||
|
self::CONTRACT_MARKET => '合约',
|
||
|
self::STOCK_MARKET_USA => '美股',
|
||
|
self::STOCK_MARKET_MG => '马股',
|
||
|
self::STOCK_MARKET_TG => '泰股',
|
||
|
self::STOCK_MARKET_YNG => '印尼股',
|
||
|
self::STOCK_MARKET_IN => '印度股',
|
||
|
self::STOCK_MARKET_HY => '秒合约',
|
||
|
self::STOCK_MARKET_SGD => '新加坡股',
|
||
|
self::STOCK_MARKET_FUND => '基金',
|
||
|
self::STOCK_MARKET_OPTION_IN => '印度期权',
|
||
|
self::STOCK_MARKET_HK => '港股',
|
||
|
self::STOCK_MARKET_UK => '英股',
|
||
|
self::STOCK_MARKET_FUR => '法股',
|
||
|
self::STOCK_MARKET_EUR => '德股',
|
||
|
self::STOCK_MARKET_BRL => '巴西股',
|
||
|
self::STOCK_MARKET_JP => '日股',
|
||
|
self::FOREX_MARKET => '外汇',
|
||
|
];
|
||
|
|
||
|
// 状态
|
||
|
const STATUS_NO = 1;
|
||
|
const STATUS_OFF = 2;
|
||
|
|
||
|
// 交易日限制
|
||
|
const TRADE_DAY_TYPE = [
|
||
|
'1' => 'T+0',
|
||
|
'2' => 'T+1',
|
||
|
'3' => 'T+2',
|
||
|
'4' => 'T+3',
|
||
|
];
|
||
|
|
||
|
const LEVER_STATUS_ON = 1; // 杠杆状态 开启
|
||
|
const LEVER_STATUS_OFF = 2; // 杠杆状态 关闭
|
||
|
|
||
|
|
||
|
// 获取费率
|
||
|
public function getRate($accountType)
|
||
|
{
|
||
|
switch ($accountType)
|
||
|
{
|
||
|
case '3':
|
||
|
// 美股
|
||
|
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_USA)->value('rate');
|
||
|
if(empty($rate) || $rate <= 0){
|
||
|
$rate = 0;
|
||
|
}
|
||
|
break;
|
||
|
case '4':
|
||
|
// 印尼股
|
||
|
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_YNG)->value('rate');
|
||
|
if(empty($rate) || $rate <= 0){
|
||
|
$rate = 0;
|
||
|
}
|
||
|
break;
|
||
|
case '5':
|
||
|
// 马来股
|
||
|
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_MG)->value('rate');
|
||
|
if(empty($rate) || $rate <= 0){
|
||
|
$rate = 0;
|
||
|
}
|
||
|
break;
|
||
|
case '6':
|
||
|
// 泰股
|
||
|
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_TG)->value('rate');
|
||
|
if(empty($rate) || $rate <= 0){
|
||
|
$rate = 0;
|
||
|
}
|
||
|
break;
|
||
|
case '7':
|
||
|
// 印度股
|
||
|
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_IN)->value('rate');
|
||
|
if(empty($rate) || $rate <= 0){
|
||
|
$rate = 0;
|
||
|
}
|
||
|
break;
|
||
|
case '9':
|
||
|
// 新加坡
|
||
|
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_SGD)->value('rate');
|
||
|
if(empty($rate) || $rate <= 0){
|
||
|
$rate = 0;
|
||
|
}
|
||
|
break;
|
||
|
case '10':
|
||
|
// 基金
|
||
|
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_FUND)->value('rate');
|
||
|
if(empty($rate) || $rate <= 0){
|
||
|
$rate = 0;
|
||
|
}
|
||
|
break;
|
||
|
case '11':
|
||
|
// 印度期权
|
||
|
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_OPTION_IN)->value('rate');
|
||
|
if(empty($rate) || $rate <= 0){
|
||
|
$rate = 0;
|
||
|
}
|
||
|
break;
|
||
|
case '12':
|
||
|
// 港股
|
||
|
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_HK)->value('rate');
|
||
|
if(empty($rate) || $rate <= 0){
|
||
|
$rate = 0;
|
||
|
}
|
||
|
break;
|
||
|
case '14':
|
||
|
// 港股
|
||
|
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_UK)->value('rate');
|
||
|
if(empty($rate) || $rate <= 0){
|
||
|
$rate = 0;
|
||
|
}
|
||
|
break;
|
||
|
case '15':
|
||
|
// 港股
|
||
|
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_FUR)->value('rate');
|
||
|
if(empty($rate) || $rate <= 0){
|
||
|
$rate = 0;
|
||
|
}
|
||
|
break;
|
||
|
case '16':
|
||
|
// 港股
|
||
|
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_EUR)->value('rate');
|
||
|
if(empty($rate) || $rate <= 0){
|
||
|
$rate = 0;
|
||
|
}
|
||
|
break;
|
||
|
case '17':
|
||
|
// 巴西股
|
||
|
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_BRL)->value('rate');
|
||
|
if(empty($rate) || $rate <= 0){
|
||
|
$rate = 0;
|
||
|
}
|
||
|
break;
|
||
|
case '18':
|
||
|
// 巴西股
|
||
|
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_JP)->value('rate');
|
||
|
if(empty($rate) || $rate <= 0){
|
||
|
$rate = 0;
|
||
|
}
|
||
|
break;
|
||
|
case '19':
|
||
|
// 巴西股
|
||
|
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::FOREX_MARKET)->value('rate');
|
||
|
if(empty($rate) || $rate <= 0){
|
||
|
$rate = 0;
|
||
|
}
|
||
|
break;
|
||
|
default:
|
||
|
$rate = 1;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
return $rate;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
public function getAllTape(){
|
||
|
return [
|
||
|
self::STOCK_MARKET_USA => StockListModel::$tapeList,
|
||
|
self::STOCK_MARKET_MG => StockMysListModel::$tapeList,
|
||
|
self::STOCK_MARKET_TG => StockThaListModel::$tapeList,
|
||
|
self::STOCK_MARKET_YNG => StockIdnListModel::$tapeList,
|
||
|
self::STOCK_MARKET_IN => StockInListModel::$tapeList,
|
||
|
self::STOCK_MARKET_SGD => StockSgdListModel::$tapeList,
|
||
|
self::STOCK_MARKET_HK => StockHkdListModel::$tapeList,
|
||
|
self::STOCK_MARKET_EUR => StockEurListModel::$tapeList,
|
||
|
self::STOCK_MARKET_FUR => StockFurListModel::$tapeList,
|
||
|
self::STOCK_MARKET_BRL => StockBrlListModel::$tapeList,
|
||
|
self::STOCK_MARKET_JP => StockJpListModel::$tapeList,
|
||
|
];
|
||
|
}
|
||
|
}
|