Files

123 lines
4.6 KiB
PHP

<?php
namespace App\Jobs;
use Illuminate\Support\Facades\DB;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use App\{Agent, LeverTransaction};
class NewDoJie implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $lever_ids;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($lever_ids) {
$this->lever_ids=$lever_ids;
}
/**
* Execute the job.
*
* @return void
*/
public function handle() {
LeverTransaction::where('status' , LeverTransaction::CLOSED)
->where('settled' , 0)
->whereIn('id',$this->lever_ids)
->chunk(100, function($lever_transactions) {
foreach ($lever_transactions as $key => $trade) {
try {
$agent_path=$trade->agent_path;
$_p_arr =explode(',', $agent_path);
if (!empty($_p_arr)) {
$da=[];
foreach($_p_arr as $k=>$v){
$agent=Agent::getAgentById($v);
$da[$k]['agent_id']=$v;
$da[$k]['pro_loss']=$agent->pro_loss;
$da[$k]['pro_ser']=$agent->pro_ser;
}
//极差收益
foreach ($da as $k=>$val){
if($k==0){
$pro_loss=$val['pro_loss'];
$pro_ser=$val['pro_ser'];
}else{
$n=$k-1;
$pro_loss=bc_sub($val['pro_loss'],$da[$n]['pro_loss']);
$pro_ser=bc_sub($val['pro_ser'],$da[$n]['pro_ser']);
}
if ($pro_loss > 0){
$_base_money =bc_mul($trade->fact_profits , -1);
$change = bc_mul($_base_money , $pro_loss/100);
Agent::change_agent_money(
$val['agent_id'] ,
1 ,
$change,
$trade->id,
'您的下级用户'.$trade->user_id.'的订单产生的头寸收益为'.$change.'。订单编号为'.$trade->id,
$trade->user_id,
$trade->legal
);
}
if ($pro_ser >0){
$change = bc_mul($trade->trade_fee ,$pro_ser/100);
Agent::change_agent_money(
$val['agent_id'],
2 ,
$change,
$trade->id,
'您的下级用户'.$trade->user_id.'的订单产生的手续费收益为'.$change.'。订单编号为'.$trade->id,
$trade->user_id,
$trade->legal
);
}
}
}
LeverTransaction::where('id' , $trade->id)->update(['settled' =>1]);
});
} catch (\Exception $e) {
echo 'File :' . $e->getFile() . PHP_EOL;
echo 'Line :' . $e->getLine() . PHP_EOL;
echo 'Msg :' . $e->getMessage(). PHP_EOL;
}
}
});
}
}