<?php namespace app\model; /** * @property int id * @property int user_id * @property int digital_id * @property float usable_num * @property float frozen_num * @property string create_time * @property string update_time */ class UserDigitalModel extends BaseModel { protected $name = 'user_digital'; protected $pk = 'id'; public static function getUserDigitalByUserId(array $data):array { if(!empty($data['trade_name'])){ $digital_id=strtoupper($data['trade_name']); }else{ $digital_id='USDT'; } $info = self::where([ 'user_id'=>$data['user_id'], 'digital_id'=>$digital_id ])->field('usable_num,frozen_num,digital_id as name')->find(); if(empty($info)){ return [ 'usable_num'=>0, 'frozen_num'=>0, 'name'=>$digital_id ]; } return $info->toArray(); } public static function getUserDigitalLock(int $user_id,string $digital_id='USDT'):array { $info = self::where([ 'user_id'=>$user_id, 'digital_id'=>$digital_id ])->lock(true)->find(); if(empty($info)){ $info = new self; $info->user_id = $user_id; $info->digital_id = $digital_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 getUserDigitalList(int $user_id):array { $list = self::where([ 'user_id'=>$user_id, ])->field('usable_num,frozen_num,digital_id as name')->select(); if(empty($list)){ return []; } $digital_list=DigitalListModel::getMarketList(['page'=>1,'page_size'=>100],$type=1); //print_r($digital_list); foreach ($list as $key=>$val){ foreach ($digital_list['list'] as $item){ if($item['name']==$val['name']){ $list[$key]['logo_link']=$item['logo_link']; } } if($val['name']!='USDT'){ //买入成本 $buy_info=DigitalTradeModel::getTradeOrderPrice($user_id,$val['name'],1); if($buy_info['order_num']>0){ $buy_price=($buy_info['order_money']/$buy_info['order_num']);//平均买入价 $list[$key]['buy_price']=$buy_price; }else{ $list[$key]['buy_price']=0; } //累计盈亏 $sale_info=DigitalTradeModel::getTradeOrderPrice($user_id,$val['name'],2); if($sale_info['order_num']>0){ $sale_price=$sale_info['order_money']/$sale_info['order_num']; $list[$key]['daily_num']=($sale_price-$buy_price)*$sale_info['order_num']; }else{ $list[$key]['daily_num']=0; } }else{ $list[$key]['buy_price']=0; $list[$key]['daily_num']=0; } } //获取持仓成本 //$buy_num=DigitalTradeModel::getTradeOrderBuyNum($user_id); //获取平仓累计盈亏 //$daily_num=DigitalTradeModel::getTradeOrderDailyNum($user_id); $fee_num=DigitalTradeModel::getTradeOrderFee($user_id); return [ 'fee_num'=>$fee_num,//手续费 'list'=>$list->toArray() ]; } public static function InsertUserDigital(array $data) { $self = new self; $self->user_id = $data['user_id']; $self->digital_id = $data['digital_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 updateUserDigital(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; } }