|
@@ -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('订单错误,请刷新重试');
|
|
|
}
|
|
|
|
|
|
}
|