$data['user_id'], 'stock_id'=>$stock_id ])->field('usable_num,frozen_num,stock_id as name')->find(); if(empty($info)){ $info = new self; $info->user_id = $data['user_id']; $info->stock_id = $stock_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 getUserStockLock(int $user_id,string $stock_id='INR'):array { $info = self::where([ 'user_id'=>$user_id, 'stock_id'=>$stock_id ])->lock(true)->find(); if(empty($info)){ // 如果没有则创建 $info = new self; $info->user_id = $user_id; $info->stock_id = $stock_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,stock_id as name')->select(); if($list->isEmpty()){ $self = new self; $self->user_id = $user_id; $self->stock_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,stock_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']=StockInTradeModel::getTradeOrderBuyNum($user_id,$val['name'],1); $list[$key]['buy_down']=StockInTradeModel::getTradeOrderBuyNum($user_id,$val['name'],2); } } //获取平仓累计盈亏 $daily_num=StockInTradeModel::getTradeOrderDailyNum($user_id); //$earnest_money=StockTradeModel::getUserEarnestMmoney($user_id); // 保证金 挂单 和 持仓的订单金额 // $earnest_money=StockMysTradeModel::getAmountForMargin($user_id); $earnest_money=0; $fee_num=StockInTradeModel::getTradeOrderFee($user_id); // 获取新股申购的手续费 $pre_fee = UserInPreStockOrderModel::getRealFee($user_id); return [ 'earnest_money'=>(float)$earnest_money,//保证金 'daily_num'=>$daily_num,//累计盈亏 'fee_num'=>$fee_num,//累计盈亏 'pre_fee' => $pre_fee, // 新股手续费 'sum_fee' => bcadd($fee_num, $pre_fee, 4), 'list'=>$list->toArray() ]; } public static function InsertUserStock(array $data) { $self = new self; $self->user_id = $data['user_id']; $self->stock_id = $data['stock_id']; $self->usable_num = $data['usable_num']; $self->frozen_num = $data['frozen_num']; $self->create_time = date('Y-m-d H:i:s'); $self->save(); } public static function updateUserStock(array $update_data,array $where) { $update_data['update_time']=date('Y-m-d H:i:s'); $res=self::where($where)->save($update_data); //echo self::where($where)->getLastSql(); return $res; } }