| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 | 
							- <?php
 
- namespace App\Server;
 
- class ToolServer
 
- {
 
-     /**
 
-      * curl 请求工具
 
-      * @param string $method
 
-      * @param string $url
 
-      * @param array $params
 
-      * @param bool $json
 
-      * @param bool $isDecode
 
-      * @return bool|mixed|string
 
-      */
 
-     public static function curl(string $method, string $url, array $params = [], bool $json = false, bool $isDecode = false)
 
-     {
 
-         $method = strtoupper($method);
 
-         $ch = curl_init();
 
-         curl_setopt($ch, CURLOPT_HEADER, 0);
 
-         if ($method == 'GET') {
 
-             $url_params = '';
 
-             foreach ($params as $key => $val) {
 
-                 if (empty($url_params)) {
 
-                     $url_params .= '?';
 
-                 } else {
 
-                     $url_params .= '&';
 
-                 }
 
-                 $url_params .= $key . '=' . $val;
 
-             }
 
-             if (!empty($url_params)) {
 
-                 $url .= $url_params;
 
-             }
 
-             curl_setopt($ch, CURLOPT_URL, $url);
 
-             curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 
-         } elseif ($method == 'POST') {
 
-             curl_setopt($ch, CURLOPT_URL, $url);
 
-             curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 
-             curl_setopt($ch, CURLOPT_POST, 1);
 
-             curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 
-             curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
 
-             if ($json == true) {
 
-                 $params = json_encode($params, JSON_UNESCAPED_UNICODE);
 
-                 $len = strlen($params);
 
-                 $headers = array("Content-type: application/json;charset=UTF-8","Content-Length: $len");
 
-                 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 
-             } else {
 
-                 $params =  http_build_query($params);
 
-             }
 
-             curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
 
-         }
 
-         $data = curl_exec($ch);
 
-         curl_close($ch);
 
-         if ($isDecode) {
 
-             $data = json_decode($data, true);
 
-         }
 
-         return $data;
 
-     }
 
-     /**
 
-      * 自动收起距离单位
 
-      * @param float $distance
 
-      * @return float|int|string
 
-      */
 
-     public static function distance(float $distance)
 
-     {
 
-         if ($distance == -1) {
 
-             return -1;
 
-         }
 
-         if ($distance > 1000) {
 
-             $distance = round($distance / 1000, 2) . 'km';
 
-         } else {
 
-             $distance .= 'm';
 
-         }
 
-         return $distance;
 
-     }
 
-     /**
 
-      * 获取地址距离
 
-      * @param array $from [起点坐标(经纬度),例如:array(118.012951,36.810024)]
 
-      * @param array $to [终点坐标(经纬度)]
 
-      * @param bool $km 是否以公里为单位 false:米 true:公里(千米)
 
-      * @param int $decimal $decimal   精度 保留小数位数
 
-      * @return int|string 距离数值
 
-      */
 
-     public static function getDistance(array $from, array $to, bool $km = true, int $decimal = 2)
 
-     {
 
-         sort($from);
 
-         sort($to);
 
-         $EARTH_RADIUS = 6370.996; // 地球半径系数
 
-         $distance = $EARTH_RADIUS * 2 * asin(sqrt(pow(sin(($from[0] * pi() / 180 - $to[0] * pi() / 180) / 2), 2) + cos($from[0] * pi() / 180) * cos($to[0] * pi() / 180) * pow(sin(($from[1] * pi() / 180 - $to[1] * pi() / 180) / 2), 2))) * 1000;
 
-         if ($km) {
 
-             $distance = $distance / 1000;
 
-         }
 
-         return round($distance, $decimal);
 
-     }
 
-     /**
 
-      * 加密(可对接java)
 
-      * @param array $data
 
-      * @param string $key
 
-      * @param string $secret
 
-      * @return string
 
-      */
 
-     public static function encodeOld(array $data, string $key, string $secret)
 
-     {
 
-         $plaintext  = urldecode(http_build_query($data)) . '@';
 
-         $key = strtoupper(md5($key . $secret));
 
-         $size = 16;
 
-         $iv = str_repeat("\0", $size);
 
-         $padding = $size - strlen($plaintext) % $size;
 
-         $plaintext .= str_repeat(chr($padding), $padding);
 
-         $encrypted = openssl_encrypt($plaintext, 'AES-192-CBC', base64_decode($key), OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv);
 
-         return base64_encode($encrypted);
 
-     }
 
-     /**
 
-      * 加密
 
-      * @param array $data
 
-      * @param string $key
 
-      * @return string
 
-      */
 
-     public static function encode(array $data, string $key)
 
-     {
 
-         //数据集合转化字符串  再加个 @
 
-         $plaintext  = urldecode(http_build_query($data)) . '@';
 
-         //md5 加密 key
 
-         $key_md5 = $key;
 
-         $size = 16;
 
-         //生成 16 位偏移量
 
-         //$iv = str_repeat("\0", $size);
 
-         $iv = "0987654321098765";
 
-         // 使用 PKCS5Padding 填充
 
-         $padding = $size - strlen($plaintext) % $size;
 
-         $plaintext .= str_repeat(chr($padding), $padding);
 
-         $encrypted = openssl_encrypt($plaintext, 'AES-128-CBC', $key_md5, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv);
 
-         return base64_encode($encrypted);
 
-     }
 
-     public static function encodeStr(string $data, string $key)
 
-     {
 
-         //数据集合转化字符串  再加个 @
 
-         $plaintext = $data . '@';
 
-         //md5 加密 key
 
-         $key_md5 = $key;
 
-         $size = 16;
 
-         //生成 16 位偏移量
 
-         $iv = str_repeat("\0", $size);
 
-         //$iv = "0987654321098765";
 
-         // 使用 PKCS5Padding 填充
 
-         $padding = $size - strlen($plaintext) % $size;
 
-         $plaintext .= str_repeat(chr($padding), $padding);
 
-         $encrypted = openssl_encrypt($plaintext, 'AES-128-CBC', $key_md5, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv);
 
-         return base64_encode($encrypted);
 
-     }
 
-     /**
 
-      * 解密(可对接java)
 
-      * @param string $content
 
-      * @param string $key
 
-      * @return array
 
-      */
 
-     public static function decode(string $content, string $key)
 
-     {
 
-         $key_md5 = $key;
 
-         $size = 16;
 
-         //$iv = str_repeat("\0", $size);
 
-         $iv = "0987654321098765";
 
-         $decrypted = openssl_decrypt(base64_decode($content), 'AES-128-CBC', $key_md5, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv);
 
-         $data_decode = explode('@', $decrypted);
 
-         //$data = [];
 
-         //parse_str($data_decode[0], $data);
 
-         return json_decode($data_decode[0], true);
 
-     }
 
-     /**
 
-      * 解密(php)
 
-      * @param string $content
 
-      * @param string $key
 
-      * @param string $secret
 
-      * @return mixed
 
-      */
 
-     public static function decodeOld(string $content, string $key, string $secret)
 
-     {
 
-         $key = strtoupper(md5($key . $secret));
 
-         $size = 16;
 
-         $iv = str_repeat("\0", $size);
 
-         $decrypted = openssl_decrypt(base64_decode($content), 'AES-192-CBC', base64_decode($key), OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv);
 
-         $data_decode = explode('@', $decrypted);
 
-         //$data = [];
 
-         //parse_str($data_decode[0], $data);
 
-         //return $data;
 
-         return json_decode($data_decode[0], true);
 
-     }
 
-     public static function toStr($bytes)
 
-     {
 
-         $str = '';
 
-         foreach ($bytes as $ch) {
 
-             //dd(chr($ch));
 
-             try {
 
-                 $str .= chr($ch);
 
-             } catch (\Exception $e) {
 
-                 dd(chr($ch));
 
-             }
 
-         }
 
-         return $str;
 
-     }
 
-     /**
 
-      * 签名算法
 
-      * @param array $params
 
-      * @param string $secret
 
-      * @return array
 
-      */
 
-     public static function sign(array $params, string $secret)
 
-     {
 
-         $p = ksort($params);
 
-         $str = '';
 
-         if ($p) {
 
-             foreach ($params as $key => $items) {
 
-                 $str .= "{$key}";
 
-                 $str .= "=";
 
-                 $str .= "{$items}";
 
-                 $str .= "&";
 
-             }
 
-         }
 
-         $string = substr($str, 0, -1);
 
-         //$string = "appKey=$this->appKey&nonce=$this->nonce×tamp=$this->timestamp";
 
-         $stringSignTemp = "$string&secret=$secret";
 
-         //echo $stringSignTemp;
 
-         $sign = strtoupper(MD5($stringSignTemp));
 
-         $params['sign'] = $sign;
 
-         return $params;
 
-     }
 
- }
 
 
  |