<?php
namespace app\model;
/**
 * @property int id
 * @property int user_id
 * @property int stock_id
 * @property float usable_num
 * @property float frozen_num
 * @property string create_time
 * @property string update_time
 */
class UserStockEurModel extends BaseModel
{
    protected $name = 'user_stock_eur';
    protected $pk = 'id';

    public static function getUserStockByUserId(array $data):array
    {
        if(!empty($data['trade_name'])){
            $stock_id=$data['trade_name'];
        }else{
            $stock_id='EUR';
        }
        $info = self::where([
            'user_id'=>$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='EUR'):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 = 'EUR';
            $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']=='EUR'){
                $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']=StockMysTradeModel::getTradeOrderBuyNum($user_id,$val['name'],1);
                $list[$key]['buy_down']=StockMysTradeModel::getTradeOrderBuyNum($user_id,$val['name'],2);
            }

        }
        //获取平仓累计盈亏
        $daily_num=StockMysTradeModel::getTradeOrderDailyNum($user_id);
        //$earnest_money=StockTradeModel::getUserEarnestMmoney($user_id);
        // 保证金 挂单 和 持仓的订单金额
//        $earnest_money=StockMysTradeModel::getAmountForMargin($user_id);
        $earnest_money=0;
        $fee_num=StockMysTradeModel::getTradeOrderFee($user_id);
        // 获取新股申购的手续费
        $pre_fee = UserMysPreStockOrderModel::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;
    }




}