Browse Source

问诊订单状态修改

lizhen_gitee 10 months ago
parent
commit
54ecb83683
2 changed files with 200 additions and 15 deletions
  1. 20 15
      application/api/controller/Wenzhen.php
  2. 180 0
      application/api/controller/doctor/Wenzhen.php

+ 20 - 15
application/api/controller/Wenzhen.php

@@ -207,8 +207,8 @@ class Wenzhen extends Api
         if($status != 'all'){
             $where['order.status'] = $status;
 
-            if($status == 30){
-                $where['order.status'] = ['IN',$status];
+            if($status == 20){// 已接诊、问诊中
+                $where['order.status'] = ['IN',[20,25]];
             }
         }
 
@@ -227,7 +227,19 @@ class Wenzhen extends Api
         if(!empty($list)){
             //循环处理
             foreach($list as $key => $val){
-                $list[$key] = $this->orderinfo_appen($val);
+                $val = $this->orderinfo_appen($val);
+
+                //医生原因的退款,都直接算到退珍
+                if(in_array($val['status'],[16,18,22])){
+                    $val['status'] = 100;
+                }
+
+                //视频拨打中  也算问诊中
+                if($val['status'] == 25){
+                    $val['status'] = 20;
+                }
+
+                $list[$key] = $val;
             }
         }
 
@@ -291,7 +303,7 @@ class Wenzhen extends Api
 
     //订单状态备注枚举
     private function order_status_enum(){
-        //状态:0=未付款,3=已失效,10=待接诊,13=用户退诊,16=医生未接诊,18=医生退诊,20=已接诊,22=超时未拨打,25=视频通话中,30=问诊完成,40=已反馈
+        //状态:0=未付款,3=已失效,10=待接诊,13=用户退诊,16=医生未接诊,18=医生退诊,20=已接诊,22=超时未拨打,25=视频通话中,30=问诊完成
         $status_data = [
             0 =>  [
                 'name'=>'等待支付时间',
@@ -315,8 +327,8 @@ class Wenzhen extends Api
                 'seconds' => 0,
             ],
             13 => [
-                'name'=>'您的订单已申请退款',
-                'name_en'=>'Your order has been requested for a refund',
+                'name'=>'您的订单已退珍',
+                'name_en'=>'Your order has been canceled',
                 'minute' => '',
                 'minute_en' => '',
                 'seconds' => 0,
@@ -343,8 +355,8 @@ class Wenzhen extends Api
                 'seconds' => 0,
             ],
             22 => [
-                'name'=>'医生超时未拨打视频,自动退款',
-                'name_en'=>'Time Remaining',
+                'name'=>'医生超时未拨打视频',
+                'name_en'=>'',
                 'minute' => '',
                 'minute_en' => '',
                 'seconds' => 0,
@@ -357,13 +369,6 @@ class Wenzhen extends Api
                 'seconds' => 0,
             ],
             30 => [
-                'name'=>'问诊完成',
-                'name_en'=>'Time Remaining',
-                'minute' => '',
-                'minute_en' => '',
-                'seconds' => 0,
-            ],
-            40 => [
                 'name'=>'点击查看医生反馈结果',
                 'name_en'=>'Click to view the consultation results',
                 'minute' => '',

+ 180 - 0
application/api/controller/doctor/Wenzhen.php

@@ -0,0 +1,180 @@
+<?php
+
+namespace app\api\controller\doctor;
+
+use app\common\controller\Apic;
+use think\Db;
+/**
+ * 问诊订单
+ */
+class Wenzhen extends Apic
+{
+    protected $noNeedLogin = '';
+    protected $noNeedRight = '*';
+
+
+
+    //订单列表
+    public function order_list(){
+
+        $where = ['doctor_id'=>$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);
+
+        //订单详情
+        $wenzhen_order = Db::name('wenzhen_order')->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();
+
+        $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->where('status',10)->update($update);
+        if(!$update_rs){
+            Db::rollback();
+        }
+    }
+    //接珍
+    //完成
+    //反馈
+}