$this->auth->id]; //订单状态 $status = input('status',10); if($status != 'all'){ $where['order.status'] = $status; if($status == 100){ $where['order.status'] = ['IN',[13,16,18,22]]; } } //问诊类型 $ordertype = input('ordertype',0); if($ordertype){ $where['order.ordertype'] = $ordertype; } //查询 $field = [ 'order.id','order.order_no','order.createtime','order.status','order.ordertype','order.accept_time','order.video_time','order.book_time', 'member.realname as member_realname','member.gender as member_gender','member.birthday as member_birthday', 'member.marital_status','member.allergies_status','member.familymedical_status','member.chronicdisease_status', ]; $list = Db::name('wenzhen_order')->alias('order') ->field($field) ->join('wenzhen_order_member member','order.id = member.order_id','LEFT') ->order('order.id desc') ->where($where) ->autopage()->select(); if(!empty($list)){ //循环处理 foreach($list as $key => $val){ //患者资料 $gender = $val['member_gender'] == 1 ? '男' : '女'; $age = birthtime_to_age($val['member_birthday']).'岁'; $marital = $val['marital_status'] == 1 ? '已婚' : '未婚'; $val['member_info'] = $gender.'|'.$age.'|'.$marital; $allergies_status = $val['allergies_status'] == 1 ? '有' : '无'; $familymedical_status = $val['familymedical_status'] == 1 ? '有' : '无'; $chronicdisease_status = $val['chronicdisease_status'] == 1 ? '有' : '无'; $val['member_remark'] = $allergies_status.'过敏史、'.$familymedical_status.'家族遗传史、'.$chronicdisease_status.'慢性病/肿瘤/手术/放射治疗'; unset($val['member_gender']); unset($val['member_birthday']); unset($val['marital_status']); unset($val['allergies_status']); unset($val['familymedical_status']); unset($val['chronicdisease_status']); //追加 $val = $this->orderinfo_appen($val); $list[$key] = $val; } } $this->success(1,$list); } //单个订单,追加数据 private function orderinfo_appen($val){ //订单类型 $ordertype_data = [ 1 => ['name'=>'图文问诊','name_en'=>'Text and Image Consultation'], 2 => ['name'=>'视频问诊','name_en'=>'Video Consultation'], ]; //开始处理 //订单类型,辅助 $val['ordertype_data'] = $ordertype_data[$val['ordertype']]; //处理完成,返回 return $val; } //订单状态备注枚举 //状态:0=未付款,3=已失效,10=待接诊,13=用户退诊,16=医生未接诊,18=医生退诊,20=已接诊,22=超时未拨打,25=视频通话中,30=问诊完成 //订单详情 public function order_info(){ $order_id = input('order_id',0); //订单详情 $field = [ 'id','order_no','user_id','member_id','doctor_id','ordertype','total_fee','book_time','createtime','status','cancel_time','cancel_reason', 'pay_type','pay_time','accept_time','video_time','finish_time','feedback_time','feedback_remark','feedback_images', ]; $wenzhen_order = Db::name('wenzhen_order')->field($field)->where('doctor_id',$this->auth->id)->where('id',$order_id)->find(); if(empty($wenzhen_order)){ $this->error('不存在的订单'); } $wenzhen_order = info_domain_image($wenzhen_order,['feedback_images']); $wenzhen_order = $this->orderinfo_appen($wenzhen_order); //就诊人详情 $order_member_info = Db::name('wenzhen_order_member')->where('order_id',$order_id)->find(); $order_member_info = info_domain_image($order_member_info,['member_images']); $order_member_info['age'] = birthtime_to_age($order_member_info['birthday']); $wenzhen_order['member_info'] = $order_member_info; //医生详情 /*$field = [ 'd.nickname','d.avatar','d.keshi_id','d.level_id','d.hospital','d.goodat','d.ordernum', 'keshi.name as keshi_name', 'level.name as level_name' ]; $doctor_info = Db::name('doctor')->alias('d') ->field($field) ->join('doctor_level level','d.level_id = level.id','LEFT') ->join('keshi','d.keshi_id = keshi.id','LEFT') ->where('d.id',$wenzhen_order['doctor_id'])->find(); $doctor_info = info_domain_image($doctor_info,['avatar']); $wenzhen_order['doctor_info'] = $doctor_info;*/ $this->success(1,$wenzhen_order); } //退珍 public function tuizhen(){ $apilimit = $this->apiLimit(); if(!$apilimit){ $this->error('操作频繁'); } //订单详情 $order_id = input('order_id',0); $wenzhen_order = Db::name('wenzhen_order')->where('doctor_id',$this->auth->id)->where('id',$order_id)->find(); if(empty($wenzhen_order)){ $this->error('不存在的订单'); } if($wenzhen_order['status'] != 10){ $this->error('待接诊订单才能退诊'); } //修改订单 $nowtime = time(); $update = [ 'status' => 18, 'cancel_time' => $nowtime, 'cancel_reason' => '医生退珍', 'finish_time' => $nowtime, ]; Db::startTrans(); //余额支付的直接退款 if($wenzhen_order['pay_type'] == 'wallet'){ //医生退钱 $logtype = $wenzhen_order['ordertype'] == 1 ? 113 : 114; $rs_wallet = model('walletdoctor')->lockChangeAccountRemain($this->auth->id,'money',-$wenzhen_order['total_fee'],$logtype,$remark='问诊退珍','wenzhen_order',$order_id); if($rs_wallet['status'] === false){ Db::rollback(); $this->error($rs_wallet['msg']); } //用户加钱 $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']); } //订单退款参数 $update['refund_price'] = $wenzhen_order['total_fee']; $update['refund_status'] = 3; }else{ //订单退款参数 $update['refund_status'] = 1; //异步退款 } $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->where('status',10)->update($update); if(!$update_rs){ Db::rollback(); $this->error('退珍失败'); } Db::commit(); $this->success(1,'退珍成功'); } //接珍 public function jiezhen(){ $apilimit = $this->apiLimit(); if(!$apilimit){ $this->error('操作频繁'); } //订单详情 $order_id = input('order_id',0); $wenzhen_order = Db::name('wenzhen_order')->where('doctor_id',$this->auth->id)->where('id',$order_id)->find(); if(empty($wenzhen_order)){ $this->error('不存在的订单'); } if($wenzhen_order['status'] != 10){ $this->error('待接诊订单才能接诊'); } //修改订单 $nowtime = time(); $update = [ 'status' => 20, 'accept_time' => $nowtime, ]; $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->where('status',10)->update($update); if(!$update_rs){ Db::rollback(); $this->error('接诊失败'); } Db::commit(); $this->success(1,'接珍成功'); } //第一次拨打视频 public function first_video(){ $apilimit = $this->apiLimit(); if(!$apilimit){ $this->error('操作频繁'); } //订单详情 $order_id = input('order_id',0); $wenzhen_order = Db::name('wenzhen_order')->where('doctor_id',$this->auth->id)->where('id',$order_id)->find(); if(empty($wenzhen_order)){ $this->error('不存在的订单'); } if($wenzhen_order['ordertype'] != 2 || $wenzhen_order['status'] != 20){ $this->error('已接诊的视频订单才能拨打视频'); } //修改订单 $nowtime = time(); $update = [ 'status' => 25, 'video_time' => $nowtime, ]; $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->where('status',20)->update($update); if(!$update_rs){ $this->error('操作失败'); } $this->success(1,'操作成功'); } //完成 public function finish(){ $apilimit = $this->apiLimit(); if(!$apilimit){ $this->error('操作频繁'); } //订单详情 $order_id = input('order_id',0); $wenzhen_order = Db::name('wenzhen_order')->where('doctor_id',$this->auth->id)->where('id',$order_id)->find(); if(empty($wenzhen_order)){ $this->error('不存在的订单'); } if($wenzhen_order['ordertype'] == 1){ if($wenzhen_order['status'] != 20){ $this->error('已接诊订单才能完成'); } $old_status = 20; } if($wenzhen_order['ordertype'] == 2){ if($wenzhen_order['status'] != 25){ $this->error('尚未发起视频,不能结束'); } $old_status = 25; } //修改订单 $nowtime = time(); $update = [ 'status' => 30, 'finish_time' => $nowtime, ]; $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->where('status',$old_status)->update($update); if(!$update_rs){ $this->error('操作失败'); } $this->success(1,'操作成功'); } //反馈 public function feedback(){ $apilimit = $this->apiLimit(); if(!$apilimit){ $this->error('操作频繁'); } //订单详情 $order_id = input('order_id',0); $wenzhen_order = Db::name('wenzhen_order')->where('doctor_id',$this->auth->id)->where('id',$order_id)->find(); if(empty($wenzhen_order)){ $this->error('不存在的订单'); } if($wenzhen_order['status'] != 30){ $this->error('已完成订单才能反馈'); } //修改订单 $nowtime = time(); $update = [ 'feedback_time' => $nowtime, 'feedback_remark' => input('feedback_remark',''), 'feedback_images' => input('feedback_images',''), ]; $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->where('status',30)->update($update); if(!$update_rs){ $this->error('反馈失败'); } $this->success(1,'反馈成功'); } }