validate()) { throw new Exception($this->getErrorMsg()); } $UserPatient = UserPatient::find()->where([ 'user_id' => \Yii::$app->user->id, 'id' => $this->user_patient_id ])->one(); if (!$UserPatient) { throw new Exception('就诊人不存在'); } $today = strtotime(date('Y-m-d', time())); $end = $today + 60 * 60 * 24; $order_number = Register::find()->where([ 'store_id' => $this->store_id, 'service_user_id' => $this->service_user_id ])->andWhere([ 'between', 'created_at', $today, $end ])->select('order_number')->orderBy(['order_number' => SORT_DESC])->one(); $StoreDoctor=StoreDoctor::find()->where([ 'store_id'=>\Yii::$app->store, 'su_id'=>$this->service_user_id ])->one(); if (!$StoreDoctor) throw new Exception('门店没有该医生'); $ServiceUser=ServiceUser::find()->where([ 'id'=>$this->service_user_id, 'is_delete'=>0 ])->one(); if (!$StoreDoctor) throw new Exception('该医生不存在'); if ($ServiceUser->docService->register_status==0) throw new Exception('该医生没开通挂号服务'); $is_doctorPatient=DoctorPatient::find()->where([ 'up_id' => $this->user_patient_id, 'su_id' => $this->service_user_id, 'user_id' => \Yii::$app->user->id, ])->one(); //添加患者 if (!$is_doctorPatient){ //医生患者 $DoctorPatient=new DoctorPatient(); $DoctorPatient->user_id=\Yii::$app->user->id; $DoctorPatient->su_id=$this->service_user_id; $DoctorPatient->up_id=$this->user_patient_id; $DoctorPatient->name=$UserPatient->name; $DoctorPatient->avatar=$UserPatient->avatar??''; $DoctorPatient->id_card=$UserPatient->id_card; $DoctorPatient->sex=$UserPatient->sex; $DoctorPatient->mobile=$UserPatient->mobile; $DoctorPatient->saveOrFail(); } $Register = Register::find()->where([ 'user_id' => \Yii::$app->user->id, 'user_patient_id' => $this->user_patient_id, 'store_id' => $this->store_id, 'service_user_id' => $this->service_user_id, ])->andWhere([ 'in','status',[0,1] //未支付 待接诊 ])->andWhere(['between','created_at',$today,$end])->one(); if($Register){ return [ 'isHas' => 1, 'register_id' => $Register->id ]; } // if ($Register) throw new Exception('您今天已经在该医生处挂过号,请勿重复挂号'); //获取支付方式配置 $payConfig = PayConfig::findOne(['status' => 1, 'current_use' => 1]); $t = \Yii::$app->db->beginTransaction(); try { $UserRegister = new Register(); $UserRegister->user_id = \Yii::$app->user->id; $UserRegister->store_id = \Yii::$app->store; $UserRegister->order_no = FuncHelper::generate_order_no('SN'); $UserRegister->user_patient_id = $this->user_patient_id; $UserRegister->service_user_id = $this->service_user_id; $UserRegister->depart_id = $ServiceUser->docInfo->depart_id; $UserRegister->order_number = ($order_number['order_number']??0 ) + 1; $UserRegister->price = $ServiceUser->docService->register_price; $UserRegister->pay_type = $payConfig->pay_type??2;//1微信 2易票联 $UserRegister->saveOrFail(); $event = new RegisterEvent();//触发订单创建事件 $event->register = $UserRegister; \Yii::$app->trigger(Register::EVENT_CREATED, $event); $t->commit(); } catch (\Exception $E) { $t->rollBack(); throw new Exception($E->getMessage()); } return ['isHas' => 0,'register_id' => $UserRegister->id]; } public function info() { $ServiceUser = ServiceUser::find()->where([ 'id' => $this->service_user_id, 'role' => UserRoleEnum::DOCTOR, 'status' => UserStatusEnum::OK, 'is_delete' => 0 ])->one(); if (!$ServiceUser) throw new Exception('医生不存在'); \Yii::$app->response->headers->set("Content-type:text/html;charset=utf-8"); $today = strtotime(date('Y-m-d', time())); $end = $today + 60 * 60 * 24; $count = Register::find()->where([ 'service_user_id' => $this->service_user_id ])->andWhere([ 'between', 'created_at', $today, $end ])->count(); $left_number = $ServiceUser->docInfo->register_num - $count; return [ 'time' => date('Y-m-d'), 'register_price' => $ServiceUser->docService->register_price . '元/次', 'left_num' => $left_number, 'register_num' => $ServiceUser->docInfo->register_num ]; } /** * 取消挂号 */ public function cancel() { $Register = Register::find()->where([ 'id'=>$this->register_id, 'user_id' => \Yii::$app->user->id, 'is_delete' => 0, ])->one(); if (!$Register) throw new Exception('该挂号不存在'); Register::updateAll([ 'is_delete' => 1, 'status'=>RegisterEnum::CANCEL ],[ 'id'=>$this->register_id, 'user_id' => \Yii::$app->user->id, ]); return ['取消成功']; } }