|
@@ -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();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //接珍
|
|
|
+ //完成
|
|
|
+ //反馈
|
|
|
+}
|