|
@@ -3,7 +3,7 @@ declare (strict_types = 1);
|
|
|
|
|
|
namespace app\admin\listener;
|
|
|
|
|
|
-use app\admin\model\Pay;use app\admin\model\PayInfo;use app\admin\model\QrdInfo;use app\admin\model\TagLog;
|
|
|
+use app\admin\model\InvoicePay;use app\admin\model\InvoicePool;use app\admin\model\InvoiceTicket;use app\admin\model\Pay;use app\admin\model\PayInfo;use app\admin\model\PayInvoice;use app\admin\model\QrdInfo;use app\admin\model\TagLog;use think\facade\Config;
|
|
|
class ComonQrd
|
|
|
{
|
|
|
/**
|
|
@@ -14,15 +14,18 @@ class ComonQrd
|
|
|
public function handle($event)
|
|
|
{
|
|
|
if($event['type']=="pay")$this->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")->column("orderCode");
|
|
|
+ $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){
|
|
@@ -65,4 +68,70 @@ class ComonQrd
|
|
|
(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]);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|