Browse Source

用户与电视盒子用户,挂断视频问诊

lizhen_gitee 6 months ago
parent
commit
5979136ede
2 changed files with 131 additions and 4 deletions
  1. 70 2
      application/api/controller/Wenzhen.php
  2. 61 2
      application/api/controller/tvuser/Wenzhen.php

+ 70 - 2
application/api/controller/Wenzhen.php

@@ -706,6 +706,12 @@ class Wenzhen extends Api
             ];
             $rs['seconds'] = $rs['video_endtime'] - time();
 
+            //修改最后拨通时间
+            $update = [
+                'last_video_time' => time(),
+            ];
+            $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->update($update);
+
             $this->success('操作成功',$rs);
         }
 
@@ -715,12 +721,11 @@ class Wenzhen extends Api
             $this->error('订单错误,请刷新重试');
         }
 
-        //判断医生在线状态
-
         //修改订单
         $update = [
             'status' => 25,
             'video_time' => time(),
+            'last_video_time' => time(),
         ];
 
         $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->where('status',10)->update($update);
@@ -743,4 +748,67 @@ class Wenzhen extends Api
         $this->success('操作成功',$rs);
     }
 
+
+    //挂断,医生挂断。这个方法主要用来统计是否已满足一分钟
+    public function video_end(){
+        $apilimit = $this->apiLimit();
+        if(!$apilimit){
+            $this->error('操作频繁');
+        }
+
+        //订单详情
+        $order_id = input('order_id',0);
+        $wenzhen_order = Db::name('wenzhen_order')->where('user_id',$this->auth->id)->where('id',$order_id)->find();
+        if(empty($wenzhen_order)){
+            $this->error('不存在的订单');
+        }
+
+        if($wenzhen_order['ordertype'] != 2){
+            $this->error('视频问诊才能拨打视频');
+        }
+        if($wenzhen_order['video_model'] != 2){
+            $this->error('即时视频问诊才能主动拨打视频');
+        }
+
+        if($wenzhen_order['status'] != 25){
+            $this->error('订单错误,请刷新重试');
+        }
+
+        $nowtime = time();
+
+        //本次不超过1分钟
+        if($nowtime - $wenzhen_order['last_video_time'] < 60 ){
+            $this->success('已挂断');
+        }
+
+        //如果本次挂断之前已通话超过一分钟,那自动结束
+        Db::startTrans();
+        $wenzhen_order = Db::name('wenzhen_order')->where('id',$order_id)->lock(true)->find();
+        $update = [
+            'status' => 30,
+            'finish_time' => $nowtime,
+        ];
+        $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->update($update);
+        if(!$update_rs){
+            Db::rollback();
+            $this->error('操作失败');
+        }
+
+        //给医生结算钱
+        $logtype = $wenzhen_order['ordertype'] == 1 ? 111 : 112;
+        if($wenzhen_order['comefrom'] == 1 && $wenzhen_order['total_fee'] > 0){
+            $rs_wallet = model('walletdoctor')->lockChangeAccountRemain($wenzhen_order['doctor_id'],'money',$wenzhen_order['total_fee'],$logtype,$remark='问诊订单','wenzhen_order',$order_id);
+            if($rs_wallet['status'] === false){
+                Db::rollback();
+                $this->error($rs_wallet['msg']);
+            }
+        }
+
+        //医生接诊量
+        Db::name('doctor')->where('id',$wenzhen_order['doctor_id'])->setInc('ordernum');
+
+        Db::commit();
+        $this->success('已挂断');
+    }
+
 }

+ 61 - 2
application/api/controller/tvuser/Wenzhen.php

@@ -447,6 +447,12 @@ class Wenzhen extends Api
             ];
             $rs['seconds'] = $rs['video_endtime'] - time();
 
+            //修改最后拨通时间
+            $update = [
+                'last_video_time' => time(),
+            ];
+            $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->update($update);
+
             $this->success('操作成功',$rs);
         }
 
@@ -456,12 +462,11 @@ class Wenzhen extends Api
             $this->error('订单错误,请刷新重试');
         }
 
-        //判断医生在线状态
-
         //修改订单
         $update = [
             'status' => 25,
             'video_time' => time(),
+            'last_video_time' => time(),
         ];
 
         $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->where('status',10)->update($update);
@@ -483,4 +488,58 @@ class Wenzhen extends Api
 
         $this->success('操作成功',$rs);
     }
+
+    //挂断,医生挂断。这个方法主要用来统计是否已满足一分钟
+    public function video_end(){
+        $apilimit = $this->apiLimit();
+        if(!$apilimit){
+            $this->error('操作频繁');
+        }
+
+        //订单详情
+        $order_id = input('order_id',0);
+        $wenzhen_order = Db::name('wenzhen_order')->where('user_id',$this->auth->id)->where('comefrom',2)->where('id',$order_id)->find();
+        if(empty($wenzhen_order)){
+            $this->error('不存在的订单');
+        }
+
+        if($wenzhen_order['ordertype'] != 2){
+            $this->error('视频问诊才能拨打视频');
+        }
+        if($wenzhen_order['video_model'] != 2){
+            $this->error('即时视频问诊才能主动拨打视频');
+        }
+
+        if($wenzhen_order['status'] != 25){
+            $this->error('订单错误,请刷新重试');
+        }
+
+        $nowtime = time();
+
+        //本次不超过1分钟
+        if($nowtime - $wenzhen_order['last_video_time'] < 60 ){
+            $this->success('已挂断');
+        }
+
+        //如果本次挂断之前已通话超过一分钟,那自动结束
+        Db::startTrans();
+        $wenzhen_order = Db::name('wenzhen_order')->where('id',$order_id)->lock(true)->find();
+        $update = [
+            'status' => 30,
+            'finish_time' => $nowtime,
+        ];
+        $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->update($update);
+        if(!$update_rs){
+            Db::rollback();
+            $this->error('操作失败');
+        }
+
+        //给医生结算钱
+
+        //医生接诊量
+        Db::name('doctor')->where('id',$wenzhen_order['doctor_id'])->setInc('ordernum');
+
+        Db::commit();
+        $this->success('已挂断');
+    }
 }