payComon($event); if($event['type']=="inv")$this->invComon($event); if($event['type']=="check")$this->checkPay($event); } public function payComon($data){ $payinfo = Pay::where("payNo",$data['payNo'])->findOrEmpty(); if($payinfo->isEmpty()) return; if($payinfo->is_comon!=1)return; $qrdNo = PayInfo::alias("a")->leftJoin("ComonOrder b","a.cgdNo=b.cgdNo")->where(["payNo"=>$data['payNo'],"is_del"=>0,"a.status"=>1])->column("orderCode"); $qrdinfo = QrdInfo::where([["sequenceNo","in",$qrdNo],["wpay_fee",">",0]])->select(); if($qrdinfo->isEmpty())return; $this->CheckComonOrder($payinfo); $tag=[]; $qrdSave=[]; foreach ($qrdinfo as $item){ $tag_temp=[ "code"=>$item->sequenceNo, "tag_id"=>10, "creater"=>"system", "createrid"=>0, "tag_fee"=>0, "tag_img"=>"", "status"=>1 ]; $qrd=[ "id"=>$item->id, "wpay_fee"=>$item->wpay_fee, "apay_fee"=>$item->apay_fee, "pay_status"=>$item->pay_status, "pay_tag_fee"=>0, "pay_tag" => 1 ]; if($item->wpay_fee>$data['pay_fee']){ $tag_temp['tag_fee'] = $data['pay_fee']; $qrd['pay_tag_fee'] = $data['pay_fee']; $qrd['wpay_fee'] = $item->wpay_fee-$data['pay_fee']; $qrd['apay_fee'] = $item->apay_fee+$data['pay_fee']; $qrd['pay_status'] = ($qrd['wpay_fee']==0 &&$item->pay_fee==0) ? 3:($qrd['apay_fee']==0?1:2); $data['pay_fee']=0; }else{ $data['pay_fee']=$data['pay_fee']-$item->wpay_fee; $qrd['pay_tag_fee'] = $item->wpay_fee; $qrd['wpay_fee'] = 0; $qrd['apay_fee'] = $item->apay_fee+$item->wpay_fee; $qrd['pay_status'] = ($qrd['wpay_fee']==0 &&$item->pay_fee==0) ? 3:($qrd['apay_fee']==0?1:2); } $qrdSave[]=$qrd; $tag[]=$tag_temp; if($data['pay_fee']==0) break; } (new \app\admin\model\QrdInfo)->saveAll($qrdSave); (new \app\admin\model\TagLog)->saveAll($tag); } protected function invComon($data){ $invinfo =InvoicePool::where(['invNo'=>$data['invNo']])->findOrEmpty(); if($invinfo->isEmpty())return; if($invinfo->status!=4 ||$invinfo->is_comon!=1 )return; $invpay =InvoicePay::where(['invNo'=>$data['invNo']])->findOrEmpty(); if($invinfo->isEmpty())return; if($invinfo->status!=0 )return; $payinfo = Pay::where('payNo',$invpay['payNo'])->findOrEmpty(); if($payinfo->isEmpty()) return; if($payinfo->is_comon!=1)return; $ticket =InvoiceTicket::where(["invNo"=>$data['invNo'],"type"=>0])->findOrEmpty(); if($ticket->isEmpty())return; $pay_fee=0; if($payinfo->winv_fee >=$ticket->inv_value){ $pay_fee = $ticket->inv_value; }else{ $pay_fee = $payinfo->winv_fee; } $payinvoice = [ "payNo"=>$invpay['payNo'], "hpNo"=>makeNo("hp"), "apply_id"=>0, "apply_name"=>"system", "invType"=>$invinfo->open_type==3?1:3, "invoiceType"=>$invinfo->inv_type, "inv_fee"=>$pay_fee, "inv_subtotal_amount"=>$ticket->inv_subtotal, "inv_amount"=>$ticket->inv_total, "invStatus"=>1, "status"=>4, "check_time"=>date("Y-m-d H:i:s"), "open_time"=>$ticket->open_date, "invoiceNumber"=>$ticket->inv_number, "seller_check"=>1, "buyer_check"=>1, "invoiceCode"=>$ticket->inv_code, "checkNumber"=>$ticket->check_code, "checkApi"=>$data['checkApi']??0 ]; $payinfo->winv_fee = $payinfo->winv_fee-$pay_fee; $payinfo->ainv_fee = $payinfo->ainv_fee+$pay_fee; $payinfo->inv_status = ($payinfo->winv_fee==0 &&$payinfo->inv_fee==0)?3:($payinfo->ainv_fee==0?1:2); $this->CheckComonOrder($payinfo); $payinfo->save(); PayInvoice::create($payinvoice); } protected function checkPay($data){ $payinfo = Pay::where('payNo',$data['payNo'])->findOrEmpty(); if($payinfo->isEmpty()) return; if($payinfo->is_comon!=1)return; $this->CheckComonOrder($payinfo); } public function CheckComonOrder($payinfo){ if($payinfo->inv_status==3 &&$payinfo->pay_status==3){ PayInfo::alias('a')->leftJoin('ComonOrder b','a.cgdNo=b.cgdNo') ->where(['payNo'=>$payinfo->payNo,'is_del'=>0,'a.status'=>1]) ->update(["b.status"=>2]); } if($payinfo->inv_status==1 &&$payinfo->pay_status==1){ PayInfo::alias('a')->leftJoin('ComonOrder b','a.cgdNo=b.cgdNo') ->where(['payNo'=>$payinfo->payNo,'is_del'=>0,'a.status'=>1]) ->update(['b.status'=>0]); } } }