diff($birthdate)->y; return $age; } //计算年龄,返回年龄 如 31岁3月3天 public static function calculateAgeText($birthdate) { $birthdate = new DateTime($birthdate); $currentDate = new DateTime(); $ageDiff = $currentDate->diff($birthdate); $years = $ageDiff->y; $months = $ageDiff->m; $days = $ageDiff->d; $ageString = ""; if ($years > 0) { $ageString .= $years . "岁"; } if ($months > 0) { $ageString .= $months . "月"; } if ($days > 0) { $ageString .= $days . "天"; } return $ageString; } public static function Post($url, $data_string,$mark='') { $data=[ 'request_url'=>$url, 'post_data'=>$data_string, ]; $log_id=self::RequestLog($data,0,$mark); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json; charset=utf-8', 'Content-Length: ' . strlen($data_string) ]); curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string); $r = curl_exec($curl); curl_close($curl); // $r='{"resultMsg":"登记成功1111","resultCode":"0","resultDatas":[{"queueNo":"16","checkNo":"2108180032","videoRoom":"超声影像室","isStudyGroupRegistration":"N","imageNo":"p2108180029","currentNum":1},{"queueNo":"17","checkNo":"2108180033","videoRoom":"超声影像室","isStudyGroupRegistration":"N","imageNo":"p2108180029","currentNum":2},{"queueNo":"18","checkNo":"2108180034","videoRoom":"超声影像室","isStudyGroupRegistration":"N","imageNo":"p2108180029","currentNum":3}],"isSuccess":true}'; $data=[ 'response_data'=>$r ]; self::RequestLog($data,$log_id); return $r; } public static function PostSoap($url, $data_string,$mark='') { $data=[ 'request_url'=>$url, 'post_data'=>$data_string, ]; $log_id=self::RequestLog($data,0,$mark); $xml_data = ' ? ? ? ? '; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/soap+xml;charset=utf-8', 'Content-Length: ' . strlen($xml_data) ]); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data); $r = curl_exec($ch); \Illuminate\Support\Facades\Log::info($r); try { $xml = simplexml_load_string($r, 'SimpleXMLElement', LIBXML_NOCDATA); $namespaces = $xml->getNamespaces(true); $xml->registerXPathNamespace('soapenv', $namespaces['SOAP-ENV']); $xml->registerXPathNamespace('ns', 'http://bjgoodwillcis.com'); // 提取 CDATA 内容 $sendResult = $xml->xpath('//ns:SendResult')[0]; $jsonData = (string)$sendResult; // $res = explode('', $r)[1]; // $res = explode('', $res)[0]; // $xmlData = simplexml_load_string($res); // $jsonData = json_encode($xmlData, JSON_UNESCAPED_UNICODE); }catch (Exception $e) { $jsonData = $e->getMessage(); } // dd($res); // $result = json_decode($jsonData, true); curl_close($ch); $data=[ 'response_data'=>$r ]; self::RequestLog($data,$log_id); return $jsonData; } public static function RequestLog($arr,$id,$mark='') { //记录请求日志 date_default_timezone_set('PRC'); LogService::CheckTableName(); $table_name = 'zz_request_log_' . date('ym'); $response_data = isset($arr['response_data']) ? self::JsonEncode($arr['response_data']) : ''; $header_data = isset($arr['request_header']) ?self::JsonEncode($arr['request_header']):''; $post_data = isset($arr['post_data'])?self::JsonEncode($arr['post_data']):''; $get_data = isset($arr['get_data'])?self::JsonEncode($arr['get_data'], JSON_UNESCAPED_UNICODE):''; $milliseconds = round(microtime(true) * 1000); $date = date("Y-m-d H:i:s", $milliseconds / 1000); $formatted_date = sprintf("%s.%03d", $date, $milliseconds % 1000); // $i=DB::insert("insert into ".$table_name." (request_ip, response_data,header_data,post_data,get_data,request_url,create_time,update_time) // values (?,?,?,?,?,?,?,?)",[$arr['ip'],$response_data,$header_data,$post_data,$get_data,$arr['request_url'],$formatted_date,$formatted_date]); // var_dump($i); if ($id > 0) { return DB::table($table_name)->where('id', $id)->update([ 'response_data' => $response_data, ]); } else { return DB::table($table_name)->insertGetId([ 'mark'=>$mark, 'request_ip' => '127.0.0.1', 'response_data' => $response_data, 'header_data' => $header_data, 'post_data' => $post_data, 'get_data' => $get_data, 'request_url' => $arr['request_url'], 'create_time' => $formatted_date, 'update_time' => $formatted_date ]); } } public static function JsonEncode($data){ //格式化数据,转json $post_data =$data; $post_data = json_encode($post_data, JSON_UNESCAPED_UNICODE); $str_len = mb_strlen($post_data); $str_size = $str_len / 1024; if ($str_size > 40) $post_data = '{"data":"Row size too large"}'; return $post_data; } }