Files
repo-backend/app/TransactionComplete.php

184 lines
5.7 KiB
PHP

<?php
/**
* create by vscode
* @author lion
*/
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Utils\RPC;
use App\MarketHour;
use App\MarketDay;
class TransactionComplete extends Model
{
protected $table = 'transaction_complete';
public $timestamps = false;
protected $appends = [
'account_number',
'time',
'from_number',
'currency_name',
'legal_name'
];
public function getTimeAttribute()
{
$value = $this->attributes['create_time'];
return $value ? date("Y-m-d H:i:s", $value) : '';
}
public function getAccountNumberAttribute()
{
return $this->hasOne('App\Users', 'id', 'user_id')->value('account_number');
}
public function getFromNumberAttribute()
{
return $this->hasOne('App\Users', 'id', 'from_user_id')->value('account_number');
}
public static function getQuotation($legal_id, $currency_id, $start_time, $end_time)
{
$return = array(
"start_time" => "",
"end_time" => "",
"start_price" => 0.00,
"end_price" => 0.00,
"highest" => 0.00,
"mmminimum" => 0.00,
"number" => 0.00,
);
if (empty($legal_id) || empty($currency_id) || empty($start_time) || empty($end_time)) {
return $return;
}
//时间段内数量查询、
$numbers = self::where("create_time", ">", $start_time)
->where("create_time", "<", $end_time)
->where("currency", $currency_id)
->where("legal", $legal_id)
->get();
$number = 0;
foreach ($numbers as $key => $value) {
$number = $number + $value->number;
}
$return['number'] = $number;
$return["start_time"] = date("Y-m-d H:i:s", $start_time);
$return["end_time"] = date("Y-m-d H:i:s", $end_time);
$start_price = self::orderBy('create_time', 'asc')
->where("create_time", ">", $start_time)
->where("create_time", "<", $end_time)
->where("currency", $currency_id)
->where("legal", $legal_id)
->first();
// dump( $start_price);
$start_price && $return["start_price"] = $start_price->price;
$end_price = self::orderBy('create_time', 'desc')
->where("create_time", ">", $start_time)
->where("create_time", "<", $end_time)
->where("currency", $currency_id)
->where("legal", $legal_id)
->first();
$end_price && $return["end_price"] = $end_price->price;
$highest = self::orderBy('price', 'desc')
->where("create_time", ">", $start_time)
->where("create_time", "<", $end_time)
->where("currency", $currency_id)
->where("legal", $legal_id)
->first();
$highest && $return["highest"] = $highest->price;
$mmminimum = self::orderBy('price', 'asc')
->where("create_time", ">", $start_time)
->where("create_time", "<", $end_time)
->where("currency", $currency_id)
->where("legal", $legal_id)
->first();
$mmminimum && $return["mmminimum"] = $mmminimum->price;
return $return;
}
//通过新的表设计生产k线图
public static function getQuotation_market_k($legal_id, $currency_id, $start_time, $end_time,$type)
{
$return = array(
"start_time" => "",
"end_time" => "",
"start_price" => 0.00,
"end_price" => 0.00,
"highest" => 0.00,
"mmminimum" => 0.00,
"number" => 0.00,
);
//var_dump($return);
if (empty($legal_id) || empty($currency_id) || empty($start_time) || empty($end_time)) {
return $return;
}
//时间段内数量查询、
$numbers = MarketHour::where("day_time",">",$start_time)
->where("day_time","<",$end_time)
->where("currency_id",$currency_id)
->where("legal_id",$legal_id)
->first();
if($type ==5){
$numbers = MarketDay::where("currency_id", $currency_id)->where("legal_id", $legal_id)->get();
}else{
}
//var_dump($numbers);
// dump($numbers);
// foreach ($numbers as $key => $value) {
// $number = $number + $value['number'];
// }
$return['number'] = $numbers->number;
$return["start_time"] = date("Y-m-d H:i:s", $start_time);
$return["end_time"] = date("Y-m-d H:i:s", $end_time);
$return['highest']=$numbers->highest;
$return['mminimum']=$numbers->mminimum;
return $return;
}
public function getCurrencyNameAttribute()
{
return $this->hasOne('App\Currency', 'id', 'currency')->value('name');
}
public function getLegalNameAttribute()
{
return $this->hasOne('App\Currency', 'id', 'legal')->value('name');
}
public static function getOpenPrice($currency, $legal, $time = null)
{
empty($time) && $time = time();
$time = strtotime(date('Y-m-d', $time));
do{
$openPrice = self::where([
['create_time','>=',$time],
['currency','=',$currency],
['legal','=',$legal]
])->orderBy('create_time','asc')->first();
$time -= 3600*24;
}while(!$openPrice);
if($openPrice){
return $openPrice['price'];
}else{
return 1;
}
}
}