wugg 1 year ago
parent
commit
9eb17c72c9
3 changed files with 57 additions and 2 deletions
  1. 3 0
      app/admin/controller/Payment.php
  2. 52 1
      app/admin/listener/ComonQrd.php
  3. 2 1
      app/event.php

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

@@ -783,6 +783,9 @@ class Payment extends Base
                 }
 
                 Db::commit();
+                if($payinfo['is_comon']==1 && $status==4){
+                	event("comonOrder",["payNo"=>$payinfo['payNo'],"pay_fee"=>$payment['pay_fee'],"type"=>"pay"]);
+                }
                 return app_show(0,"状态修改成功");
             }else{
                 Db::rollback();

+ 52 - 1
app/admin/listener/ComonQrd.php

@@ -3,6 +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;
 class ComonQrd
 {
     /**
@@ -12,6 +13,56 @@ class ComonQrd
      */
     public function handle($event)
     {
-
+		if($event['type']=="pay")$this->payComon($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");
+    	$qrdinfo = QrdInfo::where([["sequenceNo","in",$qrdNo],["wpay_fee",">",0]])->select();
+    	if($qrdinfo->isEmpty())return;
+    	$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);
     }
 }

+ 2 - 1
app/event.php

@@ -11,7 +11,8 @@ return [
         'HttpEnd'  => [],
         'LogLevel' => [],
         'LogWrite' => [],
-        "rolesave"=>[\app\listener\roleListen::class]
+        "rolesave"=>[\app\listener\roleListen::class],
+        "comonOrder"=>[\app\admin\listener\ComonQrd::class]
     ],
 
     'subscribe' => [