From 3c5007dc496fb443e8d22cd00c8a33b0d4b79c60 Mon Sep 17 00:00:00 2001 From: yanzai Date: Sat, 1 Jun 2024 08:20:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=BA=AB=E4=BB=BD=E8=AF=81?= =?UTF-8?q?=E5=8A=A0=E5=AF=86=E8=A7=A3=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/YeWu/HealthCheckupService.php | 21 ++++++++++++++++++- .../app/Services/mH5/OrganizationService.php | 8 ++++++- Laravel/app/Services/mH5/PersonService.php | 21 +++++++++++++++++++ 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/Laravel/app/Services/Admin/YeWu/HealthCheckupService.php b/Laravel/app/Services/Admin/YeWu/HealthCheckupService.php index 50ebe70..3464cdd 100644 --- a/Laravel/app/Services/Admin/YeWu/HealthCheckupService.php +++ b/Laravel/app/Services/Admin/YeWu/HealthCheckupService.php @@ -15,6 +15,12 @@ class HealthCheckupService $firstDay = date('Y-01-01', strtotime($currentYear)); $lastDay = date('Y-12-31', strtotime($currentYear)); + //HSM加密 + $HSM_sfz =\App\Lib\HSM::HsmEncrypt($CheckupInfo['id_card_num']); + if($HSM_sfz['status']!=true){ + return \Yz::echoError1('调用HSM加密失败'); + } + $CheckupInfo['id_card_num']=$HSM_sfz['data']; //如果此次报告内容是免费类型,则检查今年是否进行过免费体检 // if($CheckupInfo['fee_type']==0){ @@ -37,6 +43,7 @@ class HealthCheckupService // 执行数据库操作 // if($CheckupInfo['type']==1){ //如果体检类型为健康证 更新预约记录表 + $u= DB::table('appointment_record') ->where([ 'id_card_num'=>$CheckupInfo['id_card_num'], @@ -58,6 +65,17 @@ class HealthCheckupService $img_url='/storage/'.$filePath; } + if(isset($CheckupInfo['tel'])){ + $HSM_tel =\App\Lib\HSM::HsmEncrypt($CheckupInfo['tel']); + if($HSM_tel['status']!=true){ + return \Yz::echoError1('调用HSM加密失败'); + } + $CheckupInfo['tel']=$HSM_tel['data']; + } + $Hmac=\App\Lib\HSM::Hmac($CheckupInfo['name'].$CheckupInfo['id_card_num'].$CheckupInfo['tel'].$CheckupInfo['result_status']); + if($Hmac['status']!=true){ + return \Yz::echoError1('HMAC摘要失败'); + } $u2=DB::table('examination_records')->insertGetId([ "name"=>$CheckupInfo['name'], @@ -75,7 +93,8 @@ class HealthCheckupService "result_status"=>$CheckupInfo['result_status'], "issue_time"=>$CheckupInfo['issue_time'], "expire_time"=>$CheckupInfo['expire_time'], - "pdfs"=>isset($CheckupInfo['pdfs'])?json_encode($CheckupInfo['pdfs']):'' + "pdfs"=>isset($CheckupInfo['pdfs'])?json_encode($CheckupInfo['pdfs']):'', + 'hmac'=>$Hmac['data'], ]); diff --git a/Laravel/app/Services/mH5/OrganizationService.php b/Laravel/app/Services/mH5/OrganizationService.php index ecf8864..e34ea86 100644 --- a/Laravel/app/Services/mH5/OrganizationService.php +++ b/Laravel/app/Services/mH5/OrganizationService.php @@ -95,6 +95,11 @@ class OrganizationService return \Yz::Return(false,'当前时间段预约已满'); } + $Hmac=\App\Lib\HSM::Hmac($cha_info[0]->name.$cha_info[0]->id_card_num.$info['org_id']); + if($Hmac['status']!=true){ + return \Yz::echoError1('HMAC摘要失败'); + } + //如果都通过则继续 DB::beginTransaction(); try { @@ -111,7 +116,8 @@ class OrganizationService 'doc_type_id'=>$info['doc_id'], 'doc_type_name'=>$info['doc_name'], 'org_id'=>$info['org_id'], - 'status'=>1 + 'status'=>1, + 'hmac'=>$Hmac['data'], ] ); $file=array(); diff --git a/Laravel/app/Services/mH5/PersonService.php b/Laravel/app/Services/mH5/PersonService.php index 89da8f3..81471fc 100644 --- a/Laravel/app/Services/mH5/PersonService.php +++ b/Laravel/app/Services/mH5/PersonService.php @@ -23,6 +23,20 @@ class PersonService $result['status']=false; $result['msg']='已注册过,无需进行此操作'; }else{ + //HSM加密 + $HSM_sfz =\App\Lib\HSM::HsmEncrypt($arr['info']['sfz']); + if($HSM_sfz['status']!=true){ + return \Yz::echoError1('调用HSM加密失败'); + } + $arr['info']['sfz']=$HSM_sfz['data']; + if(isset($arr['info']['tel'])){ + $HSM_tel =\App\Lib\HSM::HsmEncrypt($arr['info']['tel']); + if($HSM_tel['status']!=true){ + return \Yz::echoError1('调用HSM加密失败'); + } + $arr['info']['tel']=$HSM_tel['data']; + } + $i=DB::table('persons')->insert([ 'name' => $arr['info']['name'], 'sex' => $arr['info']['sex'], @@ -88,6 +102,13 @@ class PersonService //获取个人预约记录详情 public function GetAppointmentRecord($arr){ + //HSM加密 + $HSM_sfz =\App\Lib\HSM::HsmEncrypt($arr['id_num']); + if($HSM_sfz['status']!=true){ + return \Yz::echoError1('调用HSM加密失败'); + } + $arr['id_num']=$HSM_sfz['data']; + $cha = DB::select("SELECT a.*,b.sex,b.tel,b.status,c.org_name from appointment_record as a INNER JOIN persons as b on a.person_id=b.id INNER JOIN medical_institution as c on a.org_id=c.id where a.id_card_num=? and a.status=1",[$arr['id_num']]);