From dca495db1a17670aaa3da34745d8ec71cc39be72 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 18 Jan 2024 15:35:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E7=AE=80=E4=BB=8B=E5=AE=A1=E6=A0=B8=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E5=8E=9F=E5=9B=A0=E3=80=81=E8=8E=B7=E5=8F=96=E8=BA=AB?= =?UTF-8?q?=E4=BB=BD=E8=AE=A4=E8=AF=81=E5=AE=A1=E6=A0=B8=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E5=8E=9F=E5=9B=A0=E3=80=81=E8=8E=B7=E5=8F=96=E8=BA=AB=E4=BB=BD?= =?UTF-8?q?=E8=AE=A4=E8=AF=81=E4=BF=A1=E6=81=AF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/DoctorAuthController.php | 24 ++++- app/Model/DoctorIdenFail.php | 5 - app/Model/UserDoctor.php | 5 +- app/Services/DoctorAuthService.php | 138 ++++++++++++++---------- config/routes.php | 53 ++++++--- 5 files changed, 143 insertions(+), 82 deletions(-) diff --git a/app/Controller/DoctorAuthController.php b/app/Controller/DoctorAuthController.php index 6e4345b..13d8ffa 100644 --- a/app/Controller/DoctorAuthController.php +++ b/app/Controller/DoctorAuthController.php @@ -11,7 +11,7 @@ use Psr\Container\NotFoundExceptionInterface; use Psr\Http\Message\ResponseInterface; /** - * 医生认证 + * 医生身份认证 */ class DoctorAuthController extends AbstractController { @@ -100,4 +100,26 @@ class DoctorAuthController extends AbstractController $data = $DoctorAuthService->addAuthMulti(); return $this->response->json($data); } + + /** + * 获取身份认证审核失败原因 + * @return ResponseInterface + */ + public function getIdenAuthFailReason(): ResponseInterface + { + $DoctorAuthService = new DoctorAuthService(); + $data = $DoctorAuthService->getIdenAuthFailReason(); + return $this->response->json($data); + } + + /** + * 获取个人简介审核失败原因 + * @return ResponseInterface + */ + public function getDoctorIntroductionFailReason(): ResponseInterface + { + $DoctorAuthService = new DoctorAuthService(); + $data = $DoctorAuthService->getDoctorIntroductionFailReason(); + return $this->response->json($data); + } } \ No newline at end of file diff --git a/app/Model/DoctorIdenFail.php b/app/Model/DoctorIdenFail.php index d524673..691b7f7 100644 --- a/app/Model/DoctorIdenFail.php +++ b/app/Model/DoctorIdenFail.php @@ -31,11 +31,6 @@ class DoctorIdenFail extends Model */ protected array $fillable = ['iden_fail_id', 'doctor_id', 'field_name', 'fail_reason', 'created_at', 'updated_at']; - /** - * The attributes that should be cast to native types. - */ - protected array $casts = ['iden_fail_id' => 'integer', 'doctor_id' => 'integer', 'created_at' => 'datetime', 'updated_at' => 'datetime']; - protected string $primaryKey = "iden_fail_id"; /** diff --git a/app/Model/UserDoctor.php b/app/Model/UserDoctor.php index 8effcc3..f127ce7 100644 --- a/app/Model/UserDoctor.php +++ b/app/Model/UserDoctor.php @@ -29,6 +29,8 @@ use Hyperf\Utils\Arr; * @property int $multi_point_status 医生多点执业认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) * @property string $multi_point_time 审核时间 * @property string $multi_point_fail_reason 多点执业认证失败原因 + * @property int $introduction_status 个人简介审核状态(0:未审核 1:审核通过 2:审核中 3:审核失败) + * @property string $introduction_time 审核时间 * @property int $is_bind_bank 是否已绑定结算银行卡(0:否 1:是) * @property int $is_recommend 是否首页推荐(0:否 1:是) * @property string $avatar 头像 @@ -56,6 +58,7 @@ use Hyperf\Utils\Arr; * @property-read \Hyperf\Database\Model\Collection|DoctorInquiryConfig[]|null $DoctorInquiryConfig * @property-read Hospital|null $Hospital * @property-read \Hyperf\Database\Model\Collection|OrderInquiry[]|null $OrderInquiry + * @property-read User|null $User */ class UserDoctor extends Model { @@ -69,7 +72,7 @@ class UserDoctor extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = ['doctor_id', 'user_id', 'user_name', 'open_id', 'union_id', 'wx_session_key', 'status', 'idcard_status', 'iden_auth_status', 'iden_auth_time', 'iden_auth_fail_reason', 'multi_point_status', 'multi_point_time', 'multi_point_fail_reason', 'is_bind_bank', 'is_recommend', 'avatar', 'doctor_title', 'department_custom_id', 'department_custom_name', 'department_custom_mobile', 'hospital_id', 'served_patients_num', 'praise_rate', 'avg_response_time', 'number_of_fans', 'is_img_expert_reception', 'is_img_welfare_reception', 'is_img_quick_reception', 'is_platform_deep_cooperation', 'is_enterprise_deep_cooperation', 'is_sys_diagno_cooperation', 'qr_code', 'be_good_at', 'brief_introduction', 'created_at', 'updated_at']; + protected array $fillable = ['doctor_id', 'user_id', 'user_name', 'open_id', 'union_id', 'wx_session_key', 'status', 'idcard_status', 'iden_auth_status', 'iden_auth_time', 'iden_auth_fail_reason', 'multi_point_status', 'multi_point_time', 'multi_point_fail_reason', 'introduction_status', 'introduction_time', 'is_bind_bank', 'is_recommend', 'avatar', 'doctor_title', 'department_custom_id', 'department_custom_name', 'department_custom_mobile', 'hospital_id', 'served_patients_num', 'praise_rate', 'avg_response_time', 'number_of_fans', 'is_img_expert_reception', 'is_img_welfare_reception', 'is_img_quick_reception', 'is_platform_deep_cooperation', 'is_enterprise_deep_cooperation', 'is_sys_diagno_cooperation', 'qr_code', 'be_good_at', 'brief_introduction', 'created_at', 'updated_at']; protected string $primaryKey = "doctor_id"; diff --git a/app/Services/DoctorAuthService.php b/app/Services/DoctorAuthService.php index 990ab29..4a30f8e 100644 --- a/app/Services/DoctorAuthService.php +++ b/app/Services/DoctorAuthService.php @@ -19,7 +19,7 @@ use GuzzleHttp\Exception\GuzzleException; use Hyperf\DbConnection\Db; /** - * 医生认证 + * 医生身份认证 */ class DoctorAuthService extends BaseService { @@ -338,20 +338,6 @@ class DoctorAuthService extends BaseService $UserDoctorService = new UserDoctorService(); $result['doctor_expertise'] = $UserDoctorService->getDoctorSelectedExpertise($doctor['doctor_id']); - // 获取医生身份认证失败原因 - $iden_auth_fail_reson = $this->getIdenAuthFailReason($doctor['iden_auth_status'], $doctor['doctor_id']); - - $result['avatar_reason'] = $iden_auth_fail_reson['avatar_reason'] ?? ""; - $result['department_custom_mobile_reason'] = $iden_auth_fail_reson['department_custom_mobile_reason'] ?? ""; - $result['brief_introduction_reason'] = $iden_auth_fail_reson['brief_introduction_reason'] ?? ""; - $result['be_good_at_reason'] = $iden_auth_fail_reson['be_good_at_reason'] ?? ""; - if ($source == 1){ - $result['license_cert_reason'] = $iden_auth_fail_reson['license_cert_reason'] ?? ""; - $result['qualification_cert_reason'] = $iden_auth_fail_reson['qualification_cert_reason'] ?? ""; - $result['work_cert_reason'] = $iden_auth_fail_reson['work_cert_reason'] ?? ""; - } - $result['department_custom_name_reason'] = $iden_auth_fail_reson['department_custom_name_reason'] ?? ""; - return success($result); } @@ -761,63 +747,97 @@ class DoctorAuthService extends BaseService /** * 获取医生身份认证失败原因 - * @param int|string $iden_auth_status - * @param string|int $doctor_id * @return array */ - public function getIdenAuthFailReason(int|string $iden_auth_status, string|int $doctor_id): array + public function getIdenAuthFailReason(): array { - $result = array(); + $user_info = $this->request->getAttribute("userInfo") ?? []; + + $params = array(); + $params['doctor_id'] = $user_info['client_user_id']; + $doctor = UserDoctor::getOne($params); + if (empty($doctor)) { + return fail(HttpEnumCode::HTTP_ERROR, "未知医生"); + } + + // 实名认证状态(0:未认证 1:认证通过 2:认证失败) + if ($doctor['idcard_status'] != 1) { + return fail(HttpEnumCode::HTTP_ERROR, "请先实名认证"); + } // 身份认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) - if ($iden_auth_status == 3) { - // 获取认证失败字段 - $params = array(); - $params['doctor_id'] = $doctor_id; - $doctor_iden_fails = DoctorIdenFail::getList($params); + if ($doctor['iden_auth_status'] != 3){ + return success(null); + } - if (!empty($doctor_iden_fails)) { - foreach ($doctor_iden_fails as $doctor_iden_fail) { - // 头像 - if ($doctor_iden_fail['field_name'] == "avatar") { - $result['avatar_reason'] = $doctor_iden_fail['fail_reason']; - } + // 获取认证失败字段 + $params = array(); + $params['doctor_id'] = $doctor['doctor_id']; + $doctor_iden_fails = DoctorIdenFail::getList($params); + if (empty($doctor_iden_fails)){ + return success(null); + } - // 科室电话 - if ($doctor_iden_fail['field_name'] == "department_custom_mobile") { - $result['department_custom_mobile_reason'] = $doctor_iden_fail['fail_reason']; - } + $result = array(); + foreach ($doctor_iden_fails as $doctor_iden_fail) { + $result[$doctor_iden_fail['field_name']] = $doctor_iden_fail['fail_reason']; + } - // 科室名称 - if ($doctor_iden_fail['field_name'] == "department_custom_name") { - $result['department_custom_name_reason'] = $doctor_iden_fail['fail_reason']; - } + return success($result); + } - // 医生简介 - if ($doctor_iden_fail['field_name'] == "brief_introduction") { - $result['brief_introduction_reason'] = $doctor_iden_fail['fail_reason']; - } + /** + * 获取医生个人简介审核失败原因 + * @return array + */ + public function getDoctorIntroductionFailReason(): array + { + $user_info = $this->request->getAttribute("userInfo") ?? []; - // 擅长 - if ($doctor_iden_fail['field_name'] == "be_good_at") { - $result['be_good_at_reason'] = $doctor_iden_fail['fail_reason']; - } + $params = array(); + $params['doctor_id'] = $user_info['client_user_id']; + $doctor = UserDoctor::getOne($params); + if (empty($doctor)) { + return fail(HttpEnumCode::HTTP_ERROR, "未知医生"); + } - // 医师执业证 - if ($doctor_iden_fail['field_name'] == "license_cert") { - $result['license_cert_reason'] = $doctor_iden_fail['fail_reason']; - } + // 实名认证状态(0:未认证 1:认证通过 2:认证失败) + if ($doctor['idcard_status'] != 1) { + return fail(HttpEnumCode::HTTP_ERROR, "请先实名认证"); + } - // 医师资格证 - if ($doctor_iden_fail['field_name'] == "qualification_cert") { - $result['qualification_cert_reason'] = $doctor_iden_fail['fail_reason']; - } + // 身份认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) + if ($doctor['iden_auth_status'] != 3){ + return success(null); + } - // 医师工作证 - if ($doctor_iden_fail['field_name'] == "work_cert") { - $result['work_cert_reason'] = $doctor_iden_fail['fail_reason']; - } - } + // 个人简介审核状态(0:未审核 1:审核通过 2:审核中 3:审核失败) + if ($doctor['introduction_status'] != 3){ + return success(null); + } + + // 获取认证失败字段 + $params = array(); + $params['doctor_id'] = $doctor['doctor_id']; + $doctor_iden_fails = DoctorIdenFail::getList($params); + if (empty($doctor_iden_fails)){ + return success(null); + } + + foreach ($doctor_iden_fails as $doctor_iden_fail) { + // 头像 + if ($doctor_iden_fail['field_name'] == "avatar") { + $result['avatar_reason'] = $doctor_iden_fail['fail_reason']; + } + + // 医生简介 + if ($doctor_iden_fail['field_name'] == "brief_introduction") { + $result['brief_introduction_reason'] = $doctor_iden_fail['fail_reason']; + } + + // 擅长 + if ($doctor_iden_fail['field_name'] == "be_good_at") { + $result['be_good_at_reason'] = $doctor_iden_fail['fail_reason']; } } diff --git a/config/routes.php b/config/routes.php index 0dd26ab..3cd573f 100644 --- a/config/routes.php +++ b/config/routes.php @@ -48,27 +48,48 @@ Router::addGroup('/doctor', function () { // 身份认证 Router::addGroup('/auth', function () { - // 获取实名认证信息 - Router::get('/real', [DoctorAuthController::class, 'getAuthReal']); + // 实名认证 + Router::addGroup('/real', function () { + // 获取实名认证信息 + Router::get('', [DoctorAuthController::class, 'getAuthReal']); - // 新增实名认证 - Router::post('/real', [DoctorAuthController::class, 'addAuthReal']); + // 新增实名认证 + Router::post('', [DoctorAuthController::class, 'addAuthReal']); + }); - // 获取身份认证信息 - Router::get('/iden', [DoctorAuthController::class, 'getAuthIden']); + // 身份认证 + Router::addGroup('/iden', function () { + // 获取身份认证信息 + Router::get('', [DoctorAuthController::class, 'getAuthIden']); - // 新增身份认证信息 - Router::post('/iden', [DoctorAuthController::class, 'addAuthIden'], - [ - 'middleware' => [LockRequestMiddleware::class] // 锁定重复请求 - ] - ); + // 新增身份认证信息 + Router::post('', [DoctorAuthController::class, 'addAuthIden'], + [ + 'middleware' => [LockRequestMiddleware::class] // 锁定重复请求 + ] + ); - // 获取多点执业认证信息 - Router::get('/multi', [DoctorAuthController::class, 'getAuthMulti']); + // 获取身份认证审核失败原因 + Router::get('/reason', [DoctorAuthController::class, 'getIdenAuthFailReason']); + }); - // 新增多点执业认证信息 - Router::post('/multi', [DoctorAuthController::class, 'addAuthMulti']); + // 身份认证 + Router::addGroup('/multi', function () { + // 获取多点执业认证信息 + Router::get('', [DoctorAuthController::class, 'getAuthMulti']); + + // 新增多点执业认证信息 + Router::post('', [DoctorAuthController::class, 'addAuthMulti']); + }); + + // 个人简介 + Router::addGroup('/introduction', function () { + // 修改个人简介 + Router::put('', [DoctorAuthController::class, 'addDoctorIntroduction']); + + // 获取个人简介审核失败原因 + Router::get('/reason', [DoctorAuthController::class, 'getDoctorIntroductionFailReason']); + }); }); // 问诊