更新获取身份认证信息接口认证失败原因字段返回

This commit is contained in:
wucongxing 2023-02-22 13:43:21 +08:00
parent 2bda61d29f
commit c68c3ea000

View File

@ -5,6 +5,7 @@ namespace App\Services;
use App\Constants\DoctorTitleCode; use App\Constants\DoctorTitleCode;
use App\Constants\HttpEnumCode; use App\Constants\HttpEnumCode;
use App\Model\DoctorExpertise; use App\Model\DoctorExpertise;
use App\Model\DoctorIdenFail;
use App\Model\Hospital; use App\Model\Hospital;
use App\Model\HospitalDepartmentCustom; use App\Model\HospitalDepartmentCustom;
use App\Model\UserDoctor; use App\Model\UserDoctor;
@ -212,7 +213,6 @@ class DoctorAuthService extends BaseService
'user_id', 'user_id',
'idcard_status', 'idcard_status',
'iden_auth_status', 'iden_auth_status',
'iden_auth_fail_reason',
'avatar', 'avatar',
'hospital_id', 'hospital_id',
'department_custom_id', 'department_custom_id',
@ -238,7 +238,7 @@ class DoctorAuthService extends BaseService
$result = $doctor->toArray(); $result = $doctor->toArray();
// 头像 // 头像
if (!empty($doctor['avatar'])){ if (!empty($doctor['avatar'])) {
$result['avatar'] = addAliyunOssWebsite($doctor['avatar']); $result['avatar'] = addAliyunOssWebsite($doctor['avatar']);
} }
@ -257,7 +257,7 @@ class DoctorAuthService extends BaseService
// 医师执业证 // 医师执业证
if (!empty($user_doctor_info['license_cert'])) { if (!empty($user_doctor_info['license_cert'])) {
$license_cert = explode(',', $user_doctor_info['license_cert']); $license_cert = explode(',', $user_doctor_info['license_cert']);
foreach ($license_cert as &$item){ foreach ($license_cert as &$item) {
$item = addAliyunOssWebsite($item); $item = addAliyunOssWebsite($item);
} }
$result['license_cert'] = $license_cert; $result['license_cert'] = $license_cert;
@ -266,7 +266,7 @@ class DoctorAuthService extends BaseService
// 医师职称证 // 医师职称证
if (!empty($user_doctor_info['qualification_cert'])) { if (!empty($user_doctor_info['qualification_cert'])) {
$qualification_cert = explode(',', $user_doctor_info['qualification_cert']); $qualification_cert = explode(',', $user_doctor_info['qualification_cert']);
foreach ($qualification_cert as &$item){ foreach ($qualification_cert as &$item) {
$item = addAliyunOssWebsite($item); $item = addAliyunOssWebsite($item);
} }
$result['qualification_cert'] = $qualification_cert; $result['qualification_cert'] = $qualification_cert;
@ -275,7 +275,7 @@ class DoctorAuthService extends BaseService
// 医师资格证 // 医师资格证
if (!empty($user_doctor_info['work_cert'])) { if (!empty($user_doctor_info['work_cert'])) {
$work_cert = explode(',', $user_doctor_info['work_cert']); $work_cert = explode(',', $user_doctor_info['work_cert']);
foreach ($work_cert as &$item){ foreach ($work_cert as &$item) {
$item = addAliyunOssWebsite($item); $item = addAliyunOssWebsite($item);
} }
$result['work_cert'] = $work_cert; $result['work_cert'] = $work_cert;
@ -302,6 +302,17 @@ class DoctorAuthService extends BaseService
$UserDoctorService = new UserDoctorService(); $UserDoctorService = new UserDoctorService();
$result['doctor_expertise'] = $UserDoctorService->getDoctorSelectedExpertise($doctor['doctor_id']); $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'] ?? "";
$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'] ?? "";
return success($result); return success($result);
} }
@ -418,28 +429,28 @@ class DoctorAuthService extends BaseService
$params['doctor_id'] = $user_info['client_user_id']; $params['doctor_id'] = $user_info['client_user_id'];
$doctor_expertise = DoctorExpertise::getList($params); $doctor_expertise = DoctorExpertise::getList($params);
if (!empty($doctor_expertise)) { if (!empty($doctor_expertise)) {
$expertise_ids = array_column($doctor_expertise->toArray(),'expertise_id'); $expertise_ids = array_column($doctor_expertise->toArray(), 'expertise_id');
} }
// 对比已选择专长 // 对比已选择专长
// 对比专长是否删除 // 对比专长是否删除
$is_delete_expertise = array_diff($request_params['doctor_expertise'],$expertise_ids); $is_delete_expertise = array_diff($request_params['doctor_expertise'], $expertise_ids);
if (empty($is_delete_expertise)){ if (empty($is_delete_expertise)) {
// 对比专长是否新增 // 对比专长是否新增
$is_add_expertise = array_diff($expertise_ids,$request_params['doctor_expertise']) ; $is_add_expertise = array_diff($expertise_ids, $request_params['doctor_expertise']);
} }
// 专长是否改动false未改动 true已改动 // 专长是否改动false未改动 true已改动
$expertise_is_change = false; $expertise_is_change = false;
if (!empty($is_delete_expertise) || !empty($is_add_expertise)){ if (!empty($is_delete_expertise) || !empty($is_add_expertise)) {
$expertise_is_change = true; $expertise_is_change = true;
} }
Db::beginTransaction(); Db::beginTransaction();
try { try {
// 专长有改动 // 专长有改动
if ($expertise_is_change){ if ($expertise_is_change) {
// 删除原专长 // 删除原专长
$params = array(); $params = array();
$params['doctor_id'] = $user_info['client_user_id']; $params['doctor_id'] = $user_info['client_user_id'];
@ -487,7 +498,7 @@ class DoctorAuthService extends BaseService
} }
// 修改审核状态 // 修改审核状态
if (!empty($doctor_data) || !empty($doctor_info_data) || $expertise_is_change){ if (!empty($doctor_data) || !empty($doctor_info_data) || $expertise_is_change) {
$params = array(); $params = array();
$params['doctor_id'] = $user_info['client_user_id']; $params['doctor_id'] = $user_info['client_user_id'];
@ -531,7 +542,7 @@ class DoctorAuthService extends BaseService
$params = array(); $params = array();
$params['doctor_id'] = $user_info['client_user_id']; $params['doctor_id'] = $user_info['client_user_id'];
$user_doctor_info = UserDoctorInfo::getOne($params); $user_doctor_info = UserDoctorInfo::getOne($params);
if (empty($user_doctor_info)){ if (empty($user_doctor_info)) {
return success(); return success();
} }
@ -565,16 +576,16 @@ class DoctorAuthService extends BaseService
return fail(HttpEnumCode::HTTP_ERROR, "未知医生"); return fail(HttpEnumCode::HTTP_ERROR, "未知医生");
} }
if ($doctor['idcard_status'] != 1){ if ($doctor['idcard_status'] != 1) {
return fail(HttpEnumCode::HTTP_ERROR, "请先进行实名认证"); return fail(HttpEnumCode::HTTP_ERROR, "请先进行实名认证");
} }
if ($doctor['iden_auth_status'] != 1){ if ($doctor['iden_auth_status'] != 1) {
return fail(HttpEnumCode::HTTP_ERROR, "请先进行身份认证"); return fail(HttpEnumCode::HTTP_ERROR, "请先进行身份认证");
} }
// 审核中 // 审核中
if ($doctor['multi_point_status'] == 2){ if ($doctor['multi_point_status'] == 2) {
return fail(HttpEnumCode::HTTP_ERROR, "审核中,暂不允许修改"); return fail(HttpEnumCode::HTTP_ERROR, "审核中,暂不允许修改");
} }
@ -590,23 +601,23 @@ class DoctorAuthService extends BaseService
// 身份证正面 // 身份证正面
$id_card_front = PcreMatch::pregRemoveOssWebsite($id_card_front); $id_card_front = PcreMatch::pregRemoveOssWebsite($id_card_front);
if ($id_card_front != $user_doctor_info['id_card_front']){ if ($id_card_front != $user_doctor_info['id_card_front']) {
$doctor_info_data['id_card_front'] = $id_card_front; $doctor_info_data['id_card_front'] = $id_card_front;
} }
// 身份证反面 // 身份证反面
$id_card_back = PcreMatch::pregRemoveOssWebsite($id_card_back); $id_card_back = PcreMatch::pregRemoveOssWebsite($id_card_back);
if ($id_card_back != $user_doctor_info['id_card_back']){ if ($id_card_back != $user_doctor_info['id_card_back']) {
$doctor_info_data['id_card_back'] = $id_card_back; $doctor_info_data['id_card_back'] = $id_card_back;
} }
// 签名 // 签名
$sign_image = PcreMatch::pregRemoveOssWebsite($sign_image); $sign_image = PcreMatch::pregRemoveOssWebsite($sign_image);
if ($sign_image != $user_doctor_info['sign_image']){ if ($sign_image != $user_doctor_info['sign_image']) {
$doctor_info_data['sign_image'] = $sign_image; $doctor_info_data['sign_image'] = $sign_image;
} }
if (empty($doctor_info_data)){ if (empty($doctor_info_data)) {
return success(); return success();
} }
@ -643,4 +654,64 @@ class DoctorAuthService extends BaseService
return success(); return success();
} }
/**
* 获取医生身份认证失败原因
* @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
{
$result = array();
// 身份认证状态0:未认证 1:认证通过 2:审核中 3:认证失败)
if ($iden_auth_status == 3) {
// 获取认证失败字段
$params = array();
$params['doctor_id'] = $doctor_id;
$doctor_iden_fails = DoctorIdenFail::getList($params);
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'];
}
// 科室电话
if ($doctor_iden_fail['field_name'] == "department_custom_mobile") {
$result['department_custom_mobile_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'];
}
// 医师执业证
if ($doctor_iden_fail['field_name'] == "license_cert") {
$result['license_cert_reason'] = $doctor_iden_fail['fail_reason'];
}
// 医师资格证
if ($doctor_iden_fail['field_name'] == "qualification_cert") {
$result['qualification_cert_reason'] = $doctor_iden_fail['fail_reason'];
}
// 医师工作证
if ($doctor_iden_fail['field_name'] == "work_cert") {
$result['work_cert_reason'] = $doctor_iden_fail['fail_reason'];
}
}
}
}
return $result;
}
} }