|
@@ -1,193 +1,214 @@
|
|
|
-<?php
|
|
|
-namespace App\Tools;
|
|
|
-use Hyperf\Snowflake\IdGeneratorInterface;
|
|
|
-use Hyperf\Context\ApplicationContext;
|
|
|
-
|
|
|
-class PublicData
|
|
|
-{
|
|
|
- /**
|
|
|
- * ceshi-todo
|
|
|
- * 递归查询
|
|
|
- * @param $menuItems
|
|
|
- * @param $parentId
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public static function buildMenuTree($menuItems, $parentId = 0) {
|
|
|
- $tree = [];
|
|
|
- foreach ($menuItems as $item) {
|
|
|
- if ($item['pid'] == $parentId) {
|
|
|
- // 找到子菜单
|
|
|
- $children = self::buildMenuTree($menuItems, $item['id']);
|
|
|
- // 如果子菜单存在,则添加到当前菜单的children中
|
|
|
- if ($children) {
|
|
|
- $item['children'] = $children;
|
|
|
- }
|
|
|
- // 将当前菜单添加到树中
|
|
|
- $tree[] = $item;
|
|
|
- }
|
|
|
- }
|
|
|
- return $tree;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 把数组里面的某一个字段作为key
|
|
|
- * @param $array
|
|
|
- * @param $column
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public static function arrayColumnAsKey($array, $column) {
|
|
|
- $result = [];
|
|
|
- foreach ($array as $item) {
|
|
|
- if (isset($item[$column])) {
|
|
|
- $result[$item[$column]] = $item;
|
|
|
- } else {
|
|
|
- // 如果字段不存在,你可以选择跳过、使用默认值或抛出异常
|
|
|
- // 这里我们选择跳过
|
|
|
- continue;
|
|
|
- }
|
|
|
- }
|
|
|
- return $result;
|
|
|
- }
|
|
|
- /**
|
|
|
- * 计算两个时间差的天数
|
|
|
- * @param $sTime
|
|
|
- * @param $eTime
|
|
|
- * @return float
|
|
|
- */
|
|
|
- public static function residueDay($sTime,$eTime)
|
|
|
- {
|
|
|
- $startTime = strtotime($sTime);
|
|
|
- $endTime = strtotime($eTime);
|
|
|
- $diffDays = floor(($endTime - $startTime) / (60 * 60 * 24));
|
|
|
- return $diffDays;
|
|
|
- }
|
|
|
-
|
|
|
- public static function uuid()
|
|
|
- {
|
|
|
- $container = ApplicationContext::getContainer();
|
|
|
- $generator = $container->get(IdGeneratorInterface::class);
|
|
|
-
|
|
|
- return $generator->generate();
|
|
|
- }
|
|
|
-
|
|
|
- public static function http_get($url)
|
|
|
- {
|
|
|
- $oCurl = curl_init();
|
|
|
- if (stripos($url, "https://") !== false) {
|
|
|
- curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, false);
|
|
|
- curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false);
|
|
|
- curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
|
|
|
- }
|
|
|
- curl_setopt($oCurl, CURLOPT_URL, $url);
|
|
|
- curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
|
|
|
- $sContent = curl_exec($oCurl);
|
|
|
- $aStatus = curl_getinfo($oCurl);
|
|
|
- curl_close($oCurl);
|
|
|
- if (intval($aStatus["http_code"]) == 200) {
|
|
|
- return $sContent;
|
|
|
- } else {
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * POST 请求
|
|
|
- * @param string $url
|
|
|
- * @param array $param
|
|
|
- * @param boolean $post_file 是否文件上传
|
|
|
- * @return string content
|
|
|
- */
|
|
|
- public static function http_post($url, $param, $post_file = false)
|
|
|
- {
|
|
|
- $oCurl = curl_init();
|
|
|
- if (stripos($url, "https://") !== false) {
|
|
|
- curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, false);
|
|
|
- curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false);
|
|
|
- curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
|
|
|
- }
|
|
|
- if (is_string($param) || $post_file) {
|
|
|
- $strPOST = $param;
|
|
|
- } else {
|
|
|
- $aPOST = [];
|
|
|
- foreach ($param as $key => $val) {
|
|
|
- $aPOST[] = $key . "=" . urlencode($val);
|
|
|
- }
|
|
|
- $strPOST = join("&", $aPOST);
|
|
|
- }
|
|
|
- curl_setopt($oCurl, CURLOPT_URL, $url);
|
|
|
- curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
|
|
|
- curl_setopt($oCurl, CURLOPT_POST, true);
|
|
|
- curl_setopt($oCurl, CURLOPT_POSTFIELDS, $strPOST);
|
|
|
- $sContent = curl_exec($oCurl);
|
|
|
- $aStatus = curl_getinfo($oCurl);
|
|
|
- curl_close($oCurl);
|
|
|
- if (intval($aStatus["http_code"]) == 200) {
|
|
|
- return $sContent;
|
|
|
- } else {
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * POST 请求
|
|
|
- * @param string $url
|
|
|
- * @param array $param
|
|
|
- * @param boolean $post_file 是否文件上传
|
|
|
- * @return string content
|
|
|
- */
|
|
|
- public static function http_post_zp($url, $data, $options = [])
|
|
|
- {
|
|
|
-
|
|
|
- // 初始化CURL会话
|
|
|
- $ch = curl_init($url);
|
|
|
- var_dump("参数:",$data);
|
|
|
- // 设置CURL选项
|
|
|
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
|
|
|
- curl_setopt($ch, CURLOPT_HEADER, false); // 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
|
|
|
- curl_setopt($ch, CURLOPT_POST, true); // 发送一个常规的POST请求。
|
|
|
- curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); // 要传递的POST数据,这里使用http_build_query将数组转换为URL编码的查询字符串。
|
|
|
- $headers = [
|
|
|
- 'Authorization: Bearer be1856920c54ac537b530d69bc2eda73.gOO2BMq9NXavzEMq',
|
|
|
- 'Content-Type: application/json',
|
|
|
-// 'Custom-Header: customHeaderValue'
|
|
|
- ];
|
|
|
- curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
|
- // 如果有额外的CURL选项,则合并它们
|
|
|
- if (!empty($options)) {
|
|
|
- curl_setopt_array($ch, $options);
|
|
|
- }
|
|
|
-
|
|
|
- // 执行CURL会话并获取响应
|
|
|
- $response = curl_exec($ch);
|
|
|
- // 检查是否有CURL错误
|
|
|
- if (curl_errno($ch)) {
|
|
|
- $error_msg = curl_error($ch);
|
|
|
- curl_close($ch);
|
|
|
- throw new Exception("CURL Error: $error_msg");
|
|
|
- }
|
|
|
-
|
|
|
- // 获取HTTP状态码
|
|
|
- $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
|
|
-
|
|
|
- // 关闭CURL会话
|
|
|
- curl_close($ch);
|
|
|
-
|
|
|
- // 返回一个包含响应和HTTP状态码的数组
|
|
|
- $responseBody = $response;
|
|
|
- $headerEnd = strpos($response, "\r\n\r\n");
|
|
|
-
|
|
|
- if ($headerEnd !== false) {
|
|
|
- // 去除响应头,只保留响应体
|
|
|
- $responseBody = substr($response, $headerEnd + 4); // +4 是因为 "\r\n\r\n" 有4个字符
|
|
|
-// echo $responseBody; // 输出:This is the response body.
|
|
|
- } else {
|
|
|
- // 如果没有找到空行,可能响应格式不正确或没有响应头
|
|
|
-// echo "No headers found in response.";
|
|
|
- }
|
|
|
- return [
|
|
|
- 'response' => $responseBody,
|
|
|
- 'http_code' => $http_code
|
|
|
- ];
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
+<?php
|
|
|
+namespace App\Tools;
|
|
|
+use Hyperf\Snowflake\IdGeneratorInterface;
|
|
|
+use Hyperf\Context\ApplicationContext;
|
|
|
+
|
|
|
+class PublicData
|
|
|
+{
|
|
|
+ /**
|
|
|
+ * ceshi-todo
|
|
|
+ * 递归查询
|
|
|
+ * @param $menuItems
|
|
|
+ * @param $parentId
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public static function buildMenuTree($menuItems, $parentId = 0)
|
|
|
+ {
|
|
|
+ $tree = [];
|
|
|
+ foreach ($menuItems as $item) {
|
|
|
+ if ($item['pid'] == $parentId) {
|
|
|
+ // 找到子菜单
|
|
|
+ $children = self::buildMenuTree($menuItems, $item['id']);
|
|
|
+ // 如果子菜单存在,则添加到当前菜单的children中
|
|
|
+ if ($children) {
|
|
|
+ $item['children'] = $children;
|
|
|
+ }
|
|
|
+ // 将当前菜单添加到树中
|
|
|
+ $tree[] = $item;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $tree;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function buildCategoryTree($menuItems, $parentId = 0)
|
|
|
+ {
|
|
|
+ $tree = [];
|
|
|
+ foreach ($menuItems as $item) {
|
|
|
+ if ($item['pid'] == $parentId) {
|
|
|
+ // 找到子菜单
|
|
|
+ $children = self::buildMenuTree($menuItems, $item['category_id']);
|
|
|
+ // 如果子菜单存在,则添加到当前菜单的children中
|
|
|
+ if ($children) {
|
|
|
+ $item['children'] = $children;
|
|
|
+ }
|
|
|
+ // 将当前菜单添加到树中
|
|
|
+ $tree[] = $item;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $tree;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 把数组里面的某一个字段作为key
|
|
|
+ * @param $array
|
|
|
+ * @param $column
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public static function arrayColumnAsKey($array, $column)
|
|
|
+ {
|
|
|
+ $result = [];
|
|
|
+ foreach ($array as $item) {
|
|
|
+ if (isset($item[$column])) {
|
|
|
+ $result[$item[$column]] = $item;
|
|
|
+ } else {
|
|
|
+ // 如果字段不存在,你可以选择跳过、使用默认值或抛出异常
|
|
|
+ // 这里我们选择跳过
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算两个时间差的天数
|
|
|
+ * @param $sTime
|
|
|
+ * @param $eTime
|
|
|
+ * @return float
|
|
|
+ */
|
|
|
+ public static function residueDay($sTime, $eTime)
|
|
|
+ {
|
|
|
+ $startTime = strtotime($sTime);
|
|
|
+ $endTime = strtotime($eTime);
|
|
|
+ $diffDays = floor(($endTime - $startTime) / (60 * 60 * 24));
|
|
|
+ return $diffDays;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function uuid()
|
|
|
+ {
|
|
|
+ $container = ApplicationContext::getContainer();
|
|
|
+ $generator = $container->get(IdGeneratorInterface::class);
|
|
|
+
|
|
|
+ return $generator->generate();
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function http_get($url)
|
|
|
+ {
|
|
|
+ $oCurl = curl_init();
|
|
|
+ if (stripos($url, "https://") !== false) {
|
|
|
+ curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, false);
|
|
|
+ curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false);
|
|
|
+ curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
|
|
|
+ }
|
|
|
+ curl_setopt($oCurl, CURLOPT_URL, $url);
|
|
|
+ curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
|
|
|
+ $sContent = curl_exec($oCurl);
|
|
|
+ $aStatus = curl_getinfo($oCurl);
|
|
|
+ curl_close($oCurl);
|
|
|
+ if (intval($aStatus["http_code"]) == 200) {
|
|
|
+ return $sContent;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * POST 请求
|
|
|
+ * @param string $url
|
|
|
+ * @param array $param
|
|
|
+ * @param boolean $post_file 是否文件上传
|
|
|
+ * @return string content
|
|
|
+ */
|
|
|
+ public static function http_post($url, $param, $post_file = false)
|
|
|
+ {
|
|
|
+ $oCurl = curl_init();
|
|
|
+ if (stripos($url, "https://") !== false) {
|
|
|
+ curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, false);
|
|
|
+ curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false);
|
|
|
+ curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
|
|
|
+ }
|
|
|
+ if (is_string($param) || $post_file) {
|
|
|
+ $strPOST = $param;
|
|
|
+ } else {
|
|
|
+ $aPOST = [];
|
|
|
+ foreach ($param as $key => $val) {
|
|
|
+ $aPOST[] = $key . "=" . urlencode($val);
|
|
|
+ }
|
|
|
+ $strPOST = join("&", $aPOST);
|
|
|
+ }
|
|
|
+ curl_setopt($oCurl, CURLOPT_URL, $url);
|
|
|
+ curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
|
|
|
+ curl_setopt($oCurl, CURLOPT_POST, true);
|
|
|
+ curl_setopt($oCurl, CURLOPT_POSTFIELDS, $strPOST);
|
|
|
+ $sContent = curl_exec($oCurl);
|
|
|
+ $aStatus = curl_getinfo($oCurl);
|
|
|
+ curl_close($oCurl);
|
|
|
+ if (intval($aStatus["http_code"]) == 200) {
|
|
|
+ return $sContent;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * POST 请求
|
|
|
+ * @param string $url
|
|
|
+ * @param array $param
|
|
|
+ * @param boolean $post_file 是否文件上传
|
|
|
+ * @return string content
|
|
|
+ */
|
|
|
+ public static function http_post_zp($url, $data, $options = [])
|
|
|
+ {
|
|
|
+
|
|
|
+ // 初始化CURL会话
|
|
|
+ $ch = curl_init($url);
|
|
|
+ var_dump("参数:", $data);
|
|
|
+ // 设置CURL选项
|
|
|
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
|
|
|
+ curl_setopt($ch, CURLOPT_HEADER, false); // 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
|
|
|
+ curl_setopt($ch, CURLOPT_POST, true); // 发送一个常规的POST请求。
|
|
|
+ curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); // 要传递的POST数据,这里使用http_build_query将数组转换为URL编码的查询字符串。
|
|
|
+ $headers = [
|
|
|
+ 'Authorization: Bearer be1856920c54ac537b530d69bc2eda73.gOO2BMq9NXavzEMq',
|
|
|
+ 'Content-Type: application/json',
|
|
|
+// 'Custom-Header: customHeaderValue'
|
|
|
+ ];
|
|
|
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
|
+ // 如果有额外的CURL选项,则合并它们
|
|
|
+ if (!empty($options)) {
|
|
|
+ curl_setopt_array($ch, $options);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 执行CURL会话并获取响应
|
|
|
+ $response = curl_exec($ch);
|
|
|
+ // 检查是否有CURL错误
|
|
|
+ if (curl_errno($ch)) {
|
|
|
+ $error_msg = curl_error($ch);
|
|
|
+ curl_close($ch);
|
|
|
+ throw new Exception("CURL Error: $error_msg");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取HTTP状态码
|
|
|
+ $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
|
|
+
|
|
|
+ // 关闭CURL会话
|
|
|
+ curl_close($ch);
|
|
|
+
|
|
|
+ // 返回一个包含响应和HTTP状态码的数组
|
|
|
+ $responseBody = $response;
|
|
|
+ $headerEnd = strpos($response, "\r\n\r\n");
|
|
|
+
|
|
|
+ if ($headerEnd !== false) {
|
|
|
+ // 去除响应头,只保留响应体
|
|
|
+ $responseBody = substr($response, $headerEnd + 4); // +4 是因为 "\r\n\r\n" 有4个字符
|
|
|
+// echo $responseBody; // 输出:This is the response body.
|
|
|
+ } else {
|
|
|
+ // 如果没有找到空行,可能响应格式不正确或没有响应头
|
|
|
+// echo "No headers found in response.";
|
|
|
+ }
|
|
|
+ return [
|
|
|
+ 'response' => $responseBody,
|
|
|
+ 'http_code' => $http_code
|
|
|
+ ];
|
|
|
+ }
|
|
|
+}
|
|
|
+
|