You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
3.8 KiB
PHP
87 lines
3.8 KiB
PHP
<?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');
|
|
// $res_sfz = request('id_card_num');
|
|
// $org_sn = request('org_sn');
|
|
$encrypted_data = request('encrypted_data');
|
|
$iv = request('iv');
|
|
$encrypt_iv = bin2hex(random_bytes(16 / 2));
|
|
if (!isset($iv)) return \Yz::echoError1('加密时使用的iv不能为空');
|
|
$encrypted_data = \App\Lib\Tools::AESDecrypt($encrypted_data, config('app.globals.AES_KEY'), $iv);
|
|
if (!$encrypted_data) return \Yz::echoError1('encrypted_data解密失败');
|
|
$encrypted_data = json_decode($encrypted_data, true);
|
|
if (!$encrypted_data) return \Yz::echoError1('encrypted_data解密json串失败');
|
|
if (!$encrypted_data['id_card_num']) return \Yz::echoError1('id_card_num不能为空');
|
|
if (!$encrypted_data['org_sn']) return \Yz::echoError1('org_sn不能为空');
|
|
$res_sfz = $encrypted_data['id_card_num'];
|
|
$org_sn = $encrypted_data['org_sn'];
|
|
$currentYear = date('Y');
|
|
$firstDay = date('Y-01-01', strtotime($currentYear));
|
|
$lastDay = date('Y-12-31', strtotime($currentYear));
|
|
|
|
$HSM = \App\Lib\HSM::HsmEncrypt($res_sfz);
|
|
if ($HSM['status'] != true) {
|
|
return \Yz::echoError1('调用HSM加密失败');
|
|
}
|
|
$sfz = $HSM['data'];
|
|
$info_data = [];
|
|
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')
|
|
->select('type', 'imgurl')
|
|
->where(['appointment_record_id' => $info->id])->get();
|
|
foreach ($imgs as $key => $item) {
|
|
//此处应该 把完整的url 拼接上
|
|
$imgs[$key]->imgurl = env('ZHUAN_WANG').$imgs[$key]->imgurl;
|
|
}
|
|
$info->files = $imgs;
|
|
$info->id_card_num = $sfz;
|
|
// $infos= $info;
|
|
$info_data = [
|
|
'type' => $info->type,
|
|
'name' => $info->name,
|
|
'id_card_num' => $info->id_card_num,
|
|
'sex' => $info->sex,
|
|
'tel' => $info->tel,
|
|
'date' => $info->date,
|
|
'time' => $info->time,
|
|
'free_type' => $info->free_type,
|
|
'doc_type_id' => $info->doc_type_id,
|
|
'doc_type_name' => $info->doc_type_name,
|
|
'org_sn' => $info->org_sn,
|
|
'org_name' => $info->org_name,
|
|
'files' => $info->files,
|
|
];
|
|
}
|
|
$info_data = json_encode($info_data, JSON_UNESCAPED_UNICODE);
|
|
return \Yz::Return(true, '查完完成', ['info' =>$this->AESEncrypt($info_data, $encrypt_iv) , 'iv' => $encrypt_iv]);
|
|
}
|
|
}
|
|
|
|
function AESEncrypt($data, $encrypt_iv)
|
|
{
|
|
// return $data;
|
|
return \App\Lib\Tools::AESEncrypt($data, config('app.globals.AES_KEY'), $encrypt_iv);
|
|
}
|
|
}
|