request->post(); $keyword = $post['keyword']; $query = ServiceUser::find()->alias('su')->where([ 'su.role' => UserRoleEnum::DOCTOR, 'su.status' => UserStatusEnum::OK, 'su.is_delete' => 0 ])->orderBy(['id'=>SORT_DESC]); $depart_arr = json_decode(ArrayHelper::getValue($post, 'depart_id', "[]"), true); $departs = HospitalDepartment::find()->select('id,name')->where(['<>', 'id', 0])->asArray()->all(); $id = 0; foreach ($departs as $v) { if (in_array($keyword, $v)) { $id = $v['id']; } } $query->joinWith(['docInfo' => function ($q) use ($id, $keyword, $depart_arr) { $q->alias('i'); // 搜索框搜索姓名和科室 if (!empty($keyword)) { $q->andWhere([ 'or', ['like', 'i.name', $keyword], ['i.depart_id' => $id] ]); } // 科室搜索 if (!empty($depart_arr)) { $q->andWhere([ 'i.depart_id' => $depart_arr ]); } }]); $this->field = [ ServiceUser::class => [ 'id', 'avator' => 'docIdentity.work_avator', 'name' => 'docInfo.name', 'depart' => 'docInfo.depart.name', 'hospital' => 'docInfo.hospital.name', 'yard' => 'docInfo.yard.name', 'title' => 'docInfo.title.name', 'inquiry_num' => 'docInfo.inquiries', ], ]; return $this->create($query, $post); } /** * @doc-name 切换在线状态 * @doc-param int online 0不在线1在线 */ public function actionChangeOnline() { $online = \Yii::$app->request->post('online'); $user = \Yii::$app->user->identity; $user->im_status = $online; $user->save(); return ['切换成功']; } /** * @doc-name 获取空闲导医 */ public function actionGetFreeLeaders() { return LeadInfo::getLastLeadUserId(); } }