|
|
|
<?php
|
|
|
|
|
|
|
|
namespace app\model;
|
|
|
|
|
|
|
|
class UserStockIndexInrModel extends BaseModel
|
|
|
|
{
|
|
|
|
protected $name = 'user_stock_index_inr';
|
|
|
|
|
|
|
|
public static function getUserStockIndexInrLock(int $user_id,string $contract_id ='INR'):array
|
|
|
|
{
|
|
|
|
$info = self::where([
|
|
|
|
'user_id'=>$user_id,
|
|
|
|
'contract_id'=>$contract_id
|
|
|
|
])->lock(true)->find();
|
|
|
|
if(empty($info)){
|
|
|
|
// 如果没有则创建
|
|
|
|
$info = new self;
|
|
|
|
$info->user_id = $user_id;
|
|
|
|
$info->contract_id = $contract_id;
|
|
|
|
$info->usable_num = 0;
|
|
|
|
$info->frozen_num = 0;
|
|
|
|
$info->create_time = date('Y-m-d H:i:s');
|
|
|
|
$info->update_time = date('Y-m-d H:i:s');
|
|
|
|
$info->save();
|
|
|
|
}
|
|
|
|
return $info->toArray();
|
|
|
|
}
|
|
|
|
|
|
|
|
public static function getUserStockByUserId(array $data):array
|
|
|
|
{
|
|
|
|
if(!empty($data['trade_name'])){
|
|
|
|
$contract_id = $data['trade_name'];
|
|
|
|
}else{
|
|
|
|
$contract_id = 'INR';
|
|
|
|
}
|
|
|
|
$info = self::where([
|
|
|
|
'user_id' => $data['user_id'],
|
|
|
|
'contract_id' => $contract_id
|
|
|
|
])->field('usable_num,frozen_num,contract_id as name')->find();
|
|
|
|
if(empty($info)){
|
|
|
|
$info = new self;
|
|
|
|
$info->user_id = $data['user_id'];
|
|
|
|
$info->contract_id = $contract_id;
|
|
|
|
$info->usable_num = 0;
|
|
|
|
$info->frozen_num = 0;
|
|
|
|
$info->create_time = date('Y-m-d H:i:s');
|
|
|
|
$info->update_time = date('Y-m-d H:i:s');
|
|
|
|
$info->save();
|
|
|
|
}
|
|
|
|
return $info->toArray();
|
|
|
|
}
|
|
|
|
|
|
|
|
public static function getUserStockList(int $user_id):array
|
|
|
|
{
|
|
|
|
$list = self::where([
|
|
|
|
'user_id' => $user_id,
|
|
|
|
])->field('usable_num,frozen_num,contract_id as name')->select();
|
|
|
|
if($list->isEmpty()){
|
|
|
|
$self = new self;
|
|
|
|
$self->user_id = $user_id;
|
|
|
|
$self->contract_id = 'INR';
|
|
|
|
$self->usable_num = '0';
|
|
|
|
$self->frozen_num = '0';
|
|
|
|
$self->create_time = date('Y-m-d H:i:s');
|
|
|
|
$self->update_time = date('Y-m-d H:i:s');
|
|
|
|
$self->save();
|
|
|
|
|
|
|
|
$list = self::where([
|
|
|
|
'user_id'=>$user_id,
|
|
|
|
])->field('usable_num,frozen_num,contract_id as name')->select();
|
|
|
|
}
|
|
|
|
foreach ($list as $key=>$val){
|
|
|
|
if($val['name']=='INR'){
|
|
|
|
$list[$key]['buy_up']=[
|
|
|
|
'buy_num'=>0,
|
|
|
|
'buy_money'=>0
|
|
|
|
];
|
|
|
|
$list[$key]['buy_down']=[
|
|
|
|
'buy_num'=>0,
|
|
|
|
'buy_money'=>0
|
|
|
|
];
|
|
|
|
}else{
|
|
|
|
//获取持仓成本
|
|
|
|
$list[$key]['buy_up']=StockIndexInrTrade::getTradeOrderBuyNum($user_id,$val['name'],1);
|
|
|
|
$list[$key]['buy_down']=StockIndexInrTrade::getTradeOrderBuyNum($user_id,$val['name'],2);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
//获取平仓累计盈亏
|
|
|
|
$daily_num=StockIndexInrTrade::getTradeOrderDailyNum($user_id);
|
|
|
|
$earnest_money=0;
|
|
|
|
$fee_num=StockIndexInrTrade::getTradeOrderFee($user_id);
|
|
|
|
return [
|
|
|
|
'earnest_money'=>(float)$earnest_money,//保证金
|
|
|
|
'daily_num'=>$daily_num,//累计盈亏
|
|
|
|
'fee_num'=>$fee_num,//累计盈亏
|
|
|
|
'list'=>$list->toArray()
|
|
|
|
];
|
|
|
|
}
|
|
|
|
|
|
|
|
public static function updateUserStockIndexInr(array $update_data,array $where)
|
|
|
|
{
|
|
|
|
$update_data['update_time']=date('Y-m-d H:i:s');
|
|
|
|
return self::where($where)->save($update_data);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|