0, ]; protected $hidden = [ 'pre_profit_result', //隐藏掉预设的盈利结果 ]; protected $appends = [ 'currency_name', 'symbol_name', 'account', 'type_name', 'status_name', 'real_name', 'profit_result_name', 'show_micro_id',//显示订单号 'parent_agent_name', ]; protected static $typeList = [ '', self::TYPE_RISE => '涨', self::TYPE_FALL => '跌', ]; protected static $statusList = [ '', self::STATUS_OPENED => '交易中', self::STATUS_CLOSING => '平仓中', self::STATUS_CLOSED => '已平仓', ]; protected static $resultList = [ self::RESULT_LOSS => '亏损', self::RESULT_BALANCE => '无', self::RESULT_PROFIT => '盈利', ]; //伪订单号 public function getShowMicroIdAttribute() { $id = $this->attributes['id'] ?? 0; $uid = $id + 10000; return $uid; } public function getCurrencyNameAttribute() { return $this->currency()->value('name'); } public function getSymbolNameAttribute() { return $this->currencyMatch->symbol ?? ''; } public function getTypeNameAttribute() { $value = $this->attributes['type'] ?? 0; return self::$typeList[$value] ?? ''; } public function getStatusNameAttribute() { $value = $this->attributes['status'] ?? 0; return self::$statusList[$value] ?? ''; } public function getProfitResultNameAttribute() { $value = $this->attributes['profit_result'] ?? 0; return self::$resultList[$value] ?? ''; } public function getPreProfitResultNameAttribute() { $value = $this->attributes['pre_profit_result'] ?? 0; return self::$resultList[$value] ?? ''; } public function getAccountAttribute() { $user = $this->user(); return $user->value('phone') ?? $user->value('email'); } public function setPreProfitResultAttribute($value) { if (!$this->exists) { $user_id = $this->attributes['user_id']; //下单用户id $currency_id = $this->attributes['currency_id']; //币种id $number = $this->attributes['number']; //下单数量 $result = self::getRisk($user_id, $currency_id, $number); $this->attributes['pre_profit_result'] = $result; } else { $this->attributes['pre_profit_result'] = $value; } } /** * 返回输赢结果 * * @return void */ public static function getRisk($user_id, $currency_id, $number) { //检测用户是否在预设的盈利和亏损名单中 $user = Users::find($user_id); // $risk = $user->value('risk'); $risk = $user['risk']; return $risk; // return 0; } /** * 根据价格计算当前的盈利结果 * * @return integer */ public function getProfitTypeAttribute() { $type = $this->attributes['type'] ?? 0; $open_price = $this->attributes['open_price'] ?? 0; $end_price = $this->attributes['end_price'] ?? 0; if (empty($type) || empty($open_price) || empty($end_price)) { return 0; } $profit_type = bc_comp($end_price, $open_price); if ($type == self::TYPE_FALL) { $profit_type = -1 * $profit_type; } return $profit_type; } public function getCostPriceAttribute() { return $this->currency()->value('price') ?? 0; } public function getLossPriceAttribute() { return $this->currency()->value('price') ?? 0; } public function getCostAttribute() { $number = $this->attributes['number'] ?? 0; return bc_mul($number, $this->getAttribute('cost_price')); } public function getCostWithProfitAttribute() { $profit_ratio = $this->getAttribute('profit_ratio'); $number = $this->attributes['number'] ?? 0; $cost_with_profit = bc_mul($number, bc_div(bc_add(100, $profit_ratio), 100)); return bc_mul($cost_with_profit, $this->getAttribute('cost_price')); } public function getRemainMilliSecondsAttribute() { $handled_at = $this->getAttribute('handled_at'); $now = Carbon::now(); if ($now >= $handled_at) { return 0; } return ($handled_at->diffInSeconds($now) + 1.3) * 1000; } public function getRealNameAttribute() { $user_profile = $this->user->userReal->first(); if($user_profile){ return $user_profile->name ?? '--'; }else{ return '--'; } //return $this->user->userProfile->name ?? '--'; } public function user() { return $this->belongsTo(Users::class)->withDefault(); } public function userProfile() { return $this->user->userProfile(); } public function currency() { return $this->belongsTo(Currency::class); } public function currencyMatch() { return $this->belongsTo(CurrencyMatch::class, 'match_id'); } //所属代理商 public function getParentAgentNameAttribute() { $user = $this->user()->getResults(); if ($user) { if ($user->agent_note_id == 0){ return '无'; }else{ $agent = Agent::where('id' , $user->agent_note_id)->first(); return $agent->username; } } else { return ''; } } }