wugg 1 year ago
parent
commit
e70b46804b

+ 8 - 3
app/admin/command/GetOrderInfoAndInvoiceInfo.php

@@ -48,13 +48,18 @@ class GetOrderInfoAndInvoiceInfo extends Command
 								Db::name("invoice_red")->where($red)->update(["status"=>4,"remark"=>"开票成功","updatetime"=>date("Y-m-d H:i:s")]);
 								Db::name("invoice_pool")->where(["invNo"=>$red['invNo'],"is_del"=>0])->update(["status"=>6,"updatetime"=>date("Y-m-d H:i:s")]);
 							}
-
+							$this->insertTicket($value['result'],$invNo);
 					}else{
 							$invNo = $value['invNo'];
+							$invoicePoo= Db::name('invoice_pool')->where(['invNo'=>$value['invNo'],'is_del'=>0])
+							->findOrEmpty();
 							Db::name("invoice_pool")->where(["invNo"=>$value['invNo'],"is_del"=>0])->update(["status"=>4,"seller_check"=>1,"buyer_check"=>1,"updatetime"=>date("Y-m-d H:i:s")]);
+							$this->insertTicket($value['result'],$invNo);
+							if($invoicePoo['is_comon']==1)event("comonOrder",["invNo"=>$invNo,"type"=>"inv"]);
+							
 					}
-					$da=Db::name("invoice_interface")->where($value)->update(["is_check"=>1,"updatetime"=>date("Y-m-d H:i:s")]);
-					if($da) $this->insertTicket($value['result'],$invNo);
+					Db::name("invoice_interface")->where($value)->update(["is_check"=>1,"updatetime"=>date("Y-m-d H:i:s")]);
+					
 				}
 				if($value['status']==3 || $value['status']==4){
 					if($value['KPLX']==1){

+ 3 - 0
app/admin/controller/Payment.php

@@ -564,6 +564,9 @@ class Payment extends Base
                      }
                 }
                Db::commit();
+                if(($status==3 || $status==4)&&$data['is_common']==1){
+                	event("comonOrder",["payNo"=>$payNo,"type"=>"check"]);
+                }
                return app_show(0,"状态更新成功");
             }
             Db::rollback();

+ 71 - 2
app/admin/listener/ComonQrd.php

@@ -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]);
+        }
+    }
 }

+ 14 - 0
app/admin/model/InvoiceTicket.php

@@ -0,0 +1,14 @@
+<?php
+declare (strict_types = 1);
+
+namespace app\admin\model;
+
+use think\Model;
+
+/**
+ * @mixin \think\Model
+ */
+class InvoiceTicket extends Model
+{
+    //
+}

+ 14 - 0
app/admin/model/PayInvoice.php

@@ -0,0 +1,14 @@
+<?php
+declare (strict_types = 1);
+
+namespace app\admin\model;
+
+use think\Model;
+
+/**
+ * @mixin \think\Model
+ */
+class PayInvoice extends Model
+{
+    //
+}