对接公卫接口

main
yanzai 2 years ago
parent 289025c9c2
commit 6c2e28a38c

@ -33,9 +33,10 @@ class HealthCheckupController extends Controller
//查询能否进行免费体检
public function CheckRequirements(){
$id_card_num=request('id_card_num');
$name=request('name');
$type=request('type');//体检类型 1,健康证2老年人
$s=app()->make(AppointmentService::class);
return $s->CheckAppointment($id_card_num,$type);
return $s->CheckAppointment($name,$id_card_num,$type);
}
//获取个人预约记录详情

@ -3,11 +3,21 @@
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class TestController extends Controller
{
public function DBtest(){
echo DB::table('users')->count();
//echo DB::table('users')->count();
$SendData='<com:queryCheckUp>
<!--Optional:-->
<xm>任普</xm>
<!--Optional:-->
<sfz>110224195806025611</sfz>
</com:queryCheckUp>';
$url = config('app.globals.GongWeiBaseUrl');
return \Yz::XmlHttp($SendData,$url);
}
}

@ -1,4 +1,8 @@
<?php
use App\Services\LogService;
use Illuminate\Support\Facades\DB;
class Yz{
public static function echo($data=[],$code=200){
$result=array();
@ -26,5 +30,87 @@ class Yz{
$result['data']=$data;
return $result;
}
public static function XmlHttp($SendData,$url){
// 记录请求开始时间
$start_time = microtime(true);
$xml_post_string = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://com.wondersgroup.jkda.application.modules.webservice">
<soapenv:Header/>
<soapenv:Body>'
.$SendData.
'</soapenv:Body>
</soapenv:Envelope>';
$headers = array(
"Content-type: text/xml;charset=utf-8",
"Accept: text/xml",
"Cache-Control: no-cache",
"Pragma: no-cache",
"Content-length: ".strlen($xml_post_string),
"appCode: glMzZT",
"sign: E98BB73DE7356B1641BCA0D025D7CD11",
"apiCode: 9051ecd6-dd16-4cdb-9a38-ca159114febd",
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
$resdata = curl_exec($ch);
// 记录请求结束时间
$end_time = microtime(true);
// 计算时间差
$request_time = $end_time - $start_time;
// 打印请求时间
echo "请求时间:{$request_time} 秒";
$result="";
try {
if(curl_errno($ch)) {
$result=curl_error($ch);
// print curl_error($ch);
} else {
curl_close($ch);
$res = explode('<soap:Body>', $resdata)[1];
$res = explode('</soap:Body>', $res)[0];
$xmlObject = simplexml_load_string($res);
$jsonData = json_encode($xmlObject);
$result = json_decode($jsonData, true);
}
}catch (Exception $e) {
$result = $e->getMessage();
}
LogService::CheckTableName();
date_default_timezone_set('PRC');
$table_name='zz_request_log_' . date('ym');
$formatted_date= date("Y-m-d H:i:s");
DB::table($table_name)->insert([
'request_ip'=>'',
'response_data'=>json_encode($result, JSON_UNESCAPED_UNICODE),
'header_data'=>'',
'post_data'=>$SendData,
'get_data'=>'',
'request_url'=>$url,
'create_time' => $formatted_date,
'update_time' => $formatted_date
]);
return $result;
}
}

@ -48,7 +48,7 @@ class AppointmentService
}
//检测是否有登记预约记录
public function CheckAppointment($id_card_num,$type){
public function CheckAppointment($name,$id_card_num,$type){
if(strlen($id_card_num)>0){
date_default_timezone_set('PRC');
$currentYear = date('Y');
@ -69,9 +69,19 @@ class AppointmentService
$result['msg']='已体检过';
$result['info']=$c;
}else{
$result['status']=true;
$result['msg']='可以继续,本年度无免费体检记录';
$result['info']=$c;
$gongwei= self::CheckGongWei($name,$id_card_num);
if( $gongwei['status']===false) {
$result['status'] = false;
$result['msg'] = $gongwei['msg'];
$result['GongWeiinfo'] = $gongwei['GongWeiinfo'];
return $result;
}
$result['status']=true;
$result['msg']='可以继续,本年度无免费体检记录';
$result['info']=$c;
}
@ -82,6 +92,39 @@ class AppointmentService
return $result;
}
public function CheckGongWei($name,$id_card_num){
date_default_timezone_set('PRC');
$currentYear = date('Y');
$firstDay = date('Y-01-01', strtotime($currentYear));
$lastDay = date('Y-12-31', strtotime($currentYear));
$SendData='<com:queryCheckUp>
<!--Optional:-->
<xm>'.$name.'</xm>
<!--Optional:-->
<sfz>'.$id_card_num.'</sfz>
</com:queryCheckUp>';
$url = config('app.globals.GongWeiBaseUrl').'/jkdacp/webservice/DPService?wsdl';
$res=\Yz::XmlHttp($SendData,$url);
//如果没有返回queryCheckUp节点返回异常
if(!isset($res['queryCheckUp'])) {
$result['status']=false;
$result['msg']='公卫接口异常';
$result['GongWeiinfo']=$res;
return $result;
}
$result=[];
if(isset($res['queryCheckUp']['tjrq']) and ($res['queryCheckUp']['tjrq']>=$firstDay and $res['queryCheckUp']['tjrq']<=$lastDay)){
$result['status']=false;
$result['msg']='公卫有记录';
$result['GongWeiinfo']=$res['queryCheckUp'];
}else{
$result['status']=true;
$result['msg']='公卫有无记录';
$result['GongWeiinfo']=$res['queryCheckUp'];
}
return $result;
}
function isOver65($idCard) {
// 从身份证号中提取出生日期

@ -12,7 +12,7 @@ return [
'WxReturnCodeUrl_local'=>'http://192.168.31.106:5173/#/getWxCode/', //获取code后引导返回到前端的地址 开发
'WxReturnCodeUrl_server'=>'https://www.yanzai.vip/common/mH5/#/getWxCode/', //获取code后引导返回到前端的地址 生产
'GongWeiBaseUrl'=>'http://114.242.58.53:8082/jkdacp/webservice/DPService?wsdl', //公卫接口地址,外网测试地址
],

@ -49,6 +49,12 @@
<el-tag v-if="scope.row.status==2" class="ml-2" type="warning"></el-tag>
</template>
</el-table-column>
<el-table-column prop="fee_type" label="收费状态" width="100">
<template #default="scope">
<el-tag v-if="scope.row.fee_type==0" class="ml-2" type="success"></el-tag>
<el-tag v-if="scope.row.fee_type==1" class="ml-2" type="info"></el-tag>
</template>
</el-table-column>
<el-table-column prop="date" label="预约时间" >
<template #default="scope">
<span v-if="scope.row.date"> {{scope.row.date.substring(0,10)}} (<span style="color:#1cb9d1">{{scope.row.time}}</span>)</span>

Loading…
Cancel
Save