Browse Source

未接通订单,医生直接挂断

lizhen_gitee 6 months ago
parent
commit
a5692613ba
1 changed files with 65 additions and 1 deletions
  1. 65 1
      application/api/controller/Wenzhen.php

+ 65 - 1
application/api/controller/Wenzhen.php

@@ -761,6 +761,7 @@ class Wenzhen extends Api
         if(!$apilimit){
             $this->error('操作频繁');
         }
+        $end_rule = input('end_rule','user'); //user 用户挂断,doctor 医生挂断。如果是医生挂断并且这个订单一次都没有接通,那就直接按拒绝接诊,结束订单
 
         //订单详情
         $order_id = input('order_id',0);
@@ -776,12 +777,14 @@ class Wenzhen extends Api
             $this->error('即时视频问诊才能主动拨打视频');
         }
 
-        if($wenzhen_order['status'] != 25){
+        if($wenzhen_order['status'] != 25 && $wenzhen_order['status'] != 10){
             $this->error('订单错误,请刷新重试');
         }
 
         $nowtime = time();
 
+        //接通了
+        if($wenzhen_order['status'] == 25){
         //本次不超过1分钟
         if($nowtime - $wenzhen_order['last_video_time'] < 60 ){
             $this->success('已挂断');
@@ -815,6 +818,67 @@ class Wenzhen extends Api
 
         Db::commit();
         $this->success('已挂断');
+        }
+
+        //没接通
+        if($wenzhen_order['status'] == 10){
+            if($end_rule == 'user'){
+                $this->success('已挂断');
+            }else{
+                //如果是医生挂断并且这个订单一次都没有接通,那就直接按拒绝接诊,结束订单
+                //参考医生发起退珍
+                Db::startTrans();
+
+                $wenzhen_order = Db::name('wenzhen_order')->where('id',$order_id)->lock(true)->find();
+
+                //修改订单
+                $nowtime = time();
+                $update = [
+                    'status' => 16,
+                    'cancel_time' => $nowtime,
+                    'cancel_reason' => '医生未接诊',
+                    'finish_time' => $nowtime,
+                ];
+
+                //余额支付的直接退款
+                if($wenzhen_order['pay_type'] == 'wallet'){
+
+                    //用户加钱
+                    $logtype = $wenzhen_order['ordertype'] == 1 ? 13 : 14;
+                    $rs_wallet = model('wallet')->lockChangeAccountRemain($wenzhen_order['user_id'],'money',$wenzhen_order['total_fee'],$logtype,$remark='医生未接诊','wenzhen_order',$order_id);
+                    if($rs_wallet['status'] === false){
+                        Db::rollback();
+//                        $this->error($rs_wallet['msg']);
+                        $this->error('医生挂断了');
+                    }
+
+                    //订单退款参数
+                    $update['refund_price']  = $wenzhen_order['total_fee'];
+                    $update['refund_status'] = 3;
+                }else{
+                    $update['refund_status'] = 1; //待退款
+
+                    //发起退款
+                    $Wenzhenorder_model = new Wenzhenorder;
+                    $refund_rs = $Wenzhenorder_model->old_refund($wenzhen_order,$wenzhen_order['total_fee']);
+                    if($refund_rs === true){
+                        $update['refund_status'] = 3; //退款完成
+                    }
+                }
+
+                $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->update($update);
+                if(!$update_rs){
+                    Db::rollback();
+                    $this->error('医生挂断了');
+                }
+
+                Db::commit();
+                $this->success('医生挂断并取消了订单');
+            }
+        }
+
+        //没用的兜底
+        $this->success('订单错误,请刷新重试');
     }
 
 }