wugg 5 months ago
parent
commit
9076107558

+ 2 - 1
app/cxinv/controller/Stage.php

@@ -44,7 +44,8 @@ class Stage extends Base{
                 "dzNo"=>$dzNo,
                 "payNo"=>$params["payNo"],
                 "cgdNo"=>$v["sequenceNo"],
-                "rela_fee"=>$v["rela_fee"]
+                "rela_fee"=>$v["rela_fee"],
+                "status"=>0
             ];
             $total_fee+=$v["rela_fee"];
         }

+ 7 - 4
app/cxinv/model/InvoiceOrder.php

@@ -73,13 +73,16 @@ class InvoiceOrder extends Base{
     //回票流程结束未认证 状态3  退票认证结束 状态4
     public static function onAfterWrite( Model $model){
       $id= $model->id;
-      Log::info('InvoiceOrder跟前数据:'.json_encode($model->toArray(),JSON_UNESCAPED_UNICODE));
+      $change = $model->getChangedData();
+      Log::info('InvoiceOrder跟前数据:'.json_encode($model->id,JSON_UNESCAPED_UNICODE));
       $info = InvoiceOrder::where(['id'=>$id])->findOrEmpty();
       Log::info('InvoiceOrder跟后数据:'.json_encode($info->toArray(),JSON_UNESCAPED_UNICODE));
       if($info->isEmpty())return ;
-      if(in_array($model->status,[1,2])) self::orderIn($info->code,bcsub($info->total_amount,$info->balance_amount,2));
-      if($model->status==3) self::orderOut($info->code,bcsub($info->total_amount,$info->balance_amount,2));
-      if($model->status==4) self::orderCancel($info->code,bcsub($info->total_amount,$info->balance_amount,2));
+      if(empty($change)&&in_array($model->status,[1,2])) self::orderIn($info->code,bcsub($info->total_amount,$info->balance_amount,2));
+      if(!empty($change)&&isset($change['status'])){
+          if($change['status']==3) self::orderOut($info->code,bcsub($info->total_amount,$info->balance_amount,2));
+          if($change['status']==4) self::orderCancel($info->code,bcsub($info->total_amount,$info->balance_amount,2));
+      }
       Log::info('InvoiceOrder跟后数据:'.InvoiceOrder::getLastsql());
 
     }

+ 5 - 10
app/cxinv/model/PayPayment.php

@@ -30,16 +30,14 @@ use think\Model;class PayPayment extends Base
         if(isset($changed['status'])){
              $pay = Pay::where(['payNo'=>$model['payNo'],"is_del"=>0,"status"=>2])->findOrEmpty();
              if($pay->isEmpty()) return;
-             $stageOrder = PaymentOrder::where(['dzNo'=>$dzNo,"is_del"=>0])->select();
+          $status=0;
           switch ($changed['status']){
               case 4:
                   $pay->apay_fee = $pay->apay_fee+$model['pay_fee'];
                   $pay->pay_fee = $pay->pay_fee-$model['pay_fee'];
                   $pay->pay_status= $pay->wpay_fee==0 &&  $pay->pay_fee ==0 ? 3:2;
                   $pay->save();
-                  if($stageOrder->isEmpty()==false){
-                      PaymentOrder::where(['dzNo'=>$dzNo,"status"=>0,'is_del'=>0])->save(["status"=>1]);
-                  }
+                  $status=1;
                   event('comonOrder',['payNo'=>$model['payNo'],'pay_fee'=>$model['pay_fee'],'type'=>'pay']);
                   break;
               case 5:
@@ -47,9 +45,7 @@ use think\Model;class PayPayment extends Base
                   $pay->wpay_fee = $pay->wpay_fee+$model['pay_fee'];
                   $pay->pay_status= $pay->apay_fee==0 ? 1:2;
                   $pay->save();
-                  if($stageOrder->isEmpty()==false){
-                      PaymentOrder::where(['dzNo'=>$dzNo,'status'=>1,'is_del'=>0])->save(['status'=>2]);
-                  }
+                  $status=2;
                   event('comonOrder',['payNo'=>$model['payNo'],'pay_fee'=>$model['pay_fee'],'type'=>'repay']);
                   event('report_code',['type'=>'sub','key'=>'dzNo','value'=>$model['dzNo']]);
                   break;
@@ -60,14 +56,13 @@ use think\Model;class PayPayment extends Base
                   $pay->pay_fee = $pay->pay_fee-$model['pay_fee'];
                   $pay->pay_status= $pay->apay_fee==0 ? 1:2;
                   $pay->save();
-                  if($stageOrder->isEmpty()==false){
-                      PaymentOrder::where(['dzNo'=>$dzNo,'status'=>0,'is_del'=>0])->save(['status'=>3]);
-                  }
+                  $status=3;
                   event("report_code",["type"=>"sub","key"=>"dzNo","value"=>$model['dzNo']]);
                   break;
               default:
                   break;
           }
+           PaymentOrder::checkOrder($dzNo,$status);
         }
     }
 }

+ 27 - 1
app/cxinv/model/PaymentOrder.php

@@ -4,7 +4,7 @@
 namespace app\cxinv\model;
 
 
-use think\Model;
+use think\facade\Log;use think\Model;
 use think\model\concern\SoftDelete;
 class PaymentOrder extends Base{
     use SoftDelete;
@@ -36,6 +36,7 @@ class PaymentOrder extends Base{
     public static function onAfterWrite(Model $model) : void{
          $cgdNo = $model->cgdNo;
          $status = $model->status;
+          Log::info("PaymentOrder::onAfterWrite:".$model->cgdNo."-".$model->status);
          $cgdinfo = CgdInfo::where(["sequenceNo"=>$cgdNo,"is_del"=>0,"status"=>1])->findOrEmpty();
          if($cgdinfo->isEmpty()) return;
          switch ($status){
@@ -56,5 +57,30 @@ class PaymentOrder extends Base{
                 return;
          }
          $cgdinfo->save();
+         Log::info("PaymentOrder::onAfterWrite-update:".self::getLastSql());
+    }
+     //状态 0 关联中 1 已付款 2 解除付款 3 取消付款',
+    public static function  checkOrder($dzNo,$status){
+        $list = self::where(['dzNo'=>$dzNo,'status'=>$status==2?1:0])->field("id,cgdNo,status,rela_fee")->select();
+        Log::info("PaymentOrder::checkOrder:dzNo-{$dzNo},status-{$status}");
+        if($list->isEmpty()) return;
+        Log::info(array_map(function($item)use($status){
+             return [
+                 'id'=>$item['id'],
+                 'cgdNo'=>$item['cgdNo'],
+                 'rela_fee'=>$item['rela_fee'],
+                 'status'=>$status
+             ];
+         },$list->toArray()));
+         (new PaymentOrder)->saveAll(array_map(function($item)use($status){
+             return [
+                'id'=>$item['id'],
+                 'cgdNo'=>$item['cgdNo'],
+                 'rela_fee'=>$item['rela_fee'],
+                 'status'=>$status
+             ];
+         },$list->toArray()));
+          Log::info("PaymentOrder::checkOrder-update:".self::getLastSql());
+
     }
 }