给第三方接口

main
yanzai 11 months ago
parent 3faa049006
commit 07c6223869

@ -0,0 +1,50 @@
<?php
namespace App\Http\Controllers\API\Internal;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class AppointmentController extends Controller
{
//给第三的接口,查询预约记录
public function GetAppointmentRecord(){
date_default_timezone_set('PRC');
$sfz =request('id_card_num');
$org_sn =request('org_sn');
if(!isset($sfz)) return \Yz::echoError1('证件号不能为空');
if(!isset($org_sn)) return \Yz::echoError1('机构code不能为空');
$currentYear = date('Y');
$firstDay = date('Y-01-01', strtotime($currentYear));
$lastDay = date('Y-12-31', strtotime($currentYear));
$HSM=\App\Lib\HSM::HsmEncrypt($sfz);
if($HSM['status']!=true){
return \Yz::echoError1('调用HSM加密失败');
}
$sfz=$HSM['data'];
$infos=[];
if(isset($sfz)){
$info=DB::table('appointment_record as a')
->select('a.id','a.name','a.sex','a.tel','a.id_card_num','a.date','a.time','a.type','a.fee_type as free_type','a.doc_type_id','a.org_code as org_sn','a.org_name','a.doc_type_name','a.created_at','b.org_name')
->join('medical_institution as b','a.org_code','=','b.sn')
->where(['a.id_card_num'=>$sfz,'a.is_del'=>0,'a.org_code'=>$org_sn])
->whereBetween('a.created_at',[$firstDay,$lastDay])->orderBy('a.id','desc')->first();
if(!!$info){
//查询相关图片
$imgs=[];
$imgs=DB::table('appointment_img')->where(['appointment_record_id'=>$info->id])->get();
foreach ($imgs as $key=>$item){
$imgs[$key]->imgurl=env('APP_URL').$item->imgurl;
}
$info->files=$imgs;
$info->id_card_num=request('id_card_num');
$infos[]=$info;
}
return \Yz::Return(true,'查完完成',$infos);
}
}
}

@ -0,0 +1,107 @@
<?php
namespace App\Http\Controllers\API\Internal;
use App\Http\Controllers\Controller;
use App\Services\Admin\YeWu\HealthCheckupService;
use App\Services\OrgService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Validator;
class CheckUpController extends Controller
{
//给第三的接口,创建体检记录
public function CreateCheckupRecord(Request $request){
// 验证请求数据
$validator = Validator::make($request->all(), [
'checkup_info.type' => 'required|integer',
'checkup_info.free_type' => 'required|integer',
'checkup_info.name' => 'required|string',
'checkup_info.sex' => 'required|integer',
'checkup_info.tel' => 'required|string',
'checkup_info.id_card_num' => 'required|string',
'checkup_info.doc_type_id' => 'required|integer',
'checkup_info.doc_type_name' => 'required|string',
'checkup_info.org_sn' => 'required|string',
'checkup_info.tijian_num' => 'required|string',
'checkup_info.tijian_time' => 'required|date',
'checkup_info.report_content' => 'required|array',
'checkup_info.report_content.*.item_name' => 'required|string',
'checkup_info.report_content.*.item_result' => 'required|string',
'checkup_info.report_content.*.item_range' => 'required|array',
'checkup_info.report_content.*.flag' => 'required|string',
'checkup_info.report_content.*.item_unit' => 'required|string',
'checkup_info.report_content.*.check_time' => 'required|date',
'checkup_info.result_status' => 'required|integer',
'checkup_info.shenhe_time' => 'required|date',
'checkup_info.result_content' => 'required|string',
]);
if ($validator->fails()) {
return \Yz::echoError1( $validator->errors());
}
$checkupInfo = $request->input('checkup_info');
$checkupInfo['institution_sn']=$checkupInfo['org_sn'];
$checkupInfo['industry_type']=$checkupInfo['doc_type_name'];
$checkupInfo['register_time']=$checkupInfo['tijian_time'];
$checkupInfo['issue_time']=null;
$checkupInfo['expire_time']=null;
$s=app()->make(HealthCheckupService::class);
return $s->CreateRecord($checkupInfo);
}
//给第三的接口上传体检结果pdf文档
public function UploadPdf(Request $request){
// 验证请求数据
$validator = Validator::make($request->all(), [
'tijian_num' => 'required|string',
'org_sn' => 'required|string',
'files' => 'required|array',
'files.*' => 'required|file|mimes:pdf|max:2048',// 每个文件必须是PDF格式且大小不超过2MB
]);
if ($validator->fails()) {
return \Yz::echoError1( $validator->errors());
}
//查询体检号是否存在
$service=new OrgService();
$res=$service->GetOrgInfo($request->input('org_sn'));
if($res['status']!==true){
return \Yz::echoError1($res['msg']);
}
//查询体检号是否存在
$checkupInfo=DB::table('examination_records')
->where([
'tijian_num'=>$request->input('tijian_num'),
'institution_id'=>$res['data']->id,
])->orderBy('id','desc')->first();
if(!$checkupInfo){
return \Yz::echoError1("体检号不存在");
}
if ($request->hasFile('files') && $request->file('files')) {
$filesUrls=[];
foreach ($request->file('files') as $file) {
// 检查文件是否有效
if ($file->isValid()) {
// 定义存储路径
$path = 'uploads/pdfs/' . date('Ymd'); // 根据当前日期创建子目录
// 保存文件到磁盘
$filename = uniqid() . '_' . $file->getClientOriginalName();
$file->storeAs($path, $filename, 'public'); // 使用 'public' 磁盘
$filesUrls[]=env('APP_URL').'/storage/'.$path.'/'.$filename;
}
}
$u=DB::table('examination_records')->where('id',$checkupInfo->id)->update(['pdfs'=>json_encode($filesUrls,JSON_UNESCAPED_UNICODE)]);
if(!$u){
return \Yz::echoError1("上传文件失败");
}
return \Yz::Return(true,'上传成功',[]);
}
return \Yz::echoError1("上传文件失败");
}
}

@ -110,6 +110,9 @@ class HealthCheckupService
if( $u2>0){
foreach ($CheckupInfo['report_content'] as $item){
if(isset($item['item_range']) and is_array($item['item_range'])){
$item['item_range']=json_encode($item['item_range'],JSON_UNESCAPED_UNICODE);
}
$item['examination_id']=$u2;
$item['tijian_num']=$CheckupInfo['tijian_num'];
DB::table('report_result_item')->insert($item);

@ -0,0 +1,20 @@
<?php
namespace App\Services;
use Illuminate\Support\Facades\DB;
class OrgService
{
//根据org_sn获取机构信息
public function GetOrgInfo($org_sn){
$orgInfo=DB::table('medical_institution')->where('sn',$org_sn)->get();
if(count($orgInfo)==0){
return ['status'=>false,'msg'=>'机构不存在'];
}
if(count($orgInfo)<>1){
return ['status'=>false,'msg'=>'机构编码异常'];
}
return ['status'=>true,'msg'=>'','data'=>$orgInfo[0]];
}
}

@ -103,6 +103,13 @@ Route::group(['middleware'=>['check.sign','log'],'prefix'=>'v1'],function () {
Route::post('Encrypt','App\Http\Controllers\API\Internal\HsmController@Encrypt');//加密
});
//给第三方非思信的接口
//对外接口
Route::group(['middleware'=>['check.sign','log'],'prefix'=>'s1'],function () {
Route::post('GetAppointmentRecord','App\Http\Controllers\API\Internal\AppointmentController@GetAppointmentRecord');//获取预约记录
Route::post('CreateCheckupRecord','App\Http\Controllers\API\Internal\CheckUpController@CreateCheckupRecord');//获取预约记录
Route::post('UploadPdf','App\Http\Controllers\API\Internal\CheckUpController@UploadPdf');//获取预约记录
});
Route::post('test','App\Http\Controllers\API\Admin\LoginController@test');

Loading…
Cancel
Save