$v){ $parmAr[$k] = $v; } $parmStr2 = http_build_query($parmAr); return $web .( empty($parmStr2) ? "" : ("?" . $parmStr2)); } /** * 几天未消费 * @param $time */ function getLastTime($time) { $nowTime = time(); $day = 3600 * 24; if(empty($time)) { return '从无消费'; } if($nowTime - $time < $day) { return '今天有消费'; } $lDay = intval(($nowTime - $time) / $day); return ($lDay + 1).'天未消费'; } /** * 分级排序 * @param $data * @param int $pid * @param string $field * @param string $pk * @param string $html * @param int $level * @param bool $clear * @return array */ function sort_list_tier($data, $pid = 0, $field = 'pid', $pk = 'id', $html = '|-----', $level = 1, $clear = true) { static $list = []; if ($clear) $list = []; foreach ($data as $k => $res) { if ($res[$field] == $pid) { $res['html'] = str_repeat($html, $level); $list[] = $res; unset($data[$k]); sort_list_tier($data, $res[$pk], $field, $pk, $html, $level + 1, false); } } return $list; } /** * 上传路径转化,默认路径 * @param $path * @param int $type * @param bool $force * @return string */ function make_path($path, int $type = 2, bool $force = false) { $path = DS . ltrim(rtrim($path)); switch ($type) { case 1: $path .= DS . date('Y'); break; case 2: $path .= DS . date('Y') . DS . date('m'); break; case 3: $path .= DS . date('Y') . DS . date('m') . DS . date('d'); break; } try { if (is_dir(app()->getRootPath() . 'public' . DS . 'uploads' . $path) == true || mkdir(app()->getRootPath() . 'public' . DS . 'uploads' . $path, 0777, true) == true) { return trim(str_replace(DS, '/', $path), '.'); } else return ''; } catch (\Exception $e) { if ($force) throw new \Exception($e->getMessage()); return '无法创建文件夹,请检查您的上传目录权限:' . app()->getRootPath() . 'public' . DS . 'uploads' . DS . 'attach' . DS; } } /** * 格式化属性 * @param $arr * @return array */ function attr_format($arr) { $data = []; $res = []; $count = count($arr); if ($count > 1) { for ($i = 0; $i < $count - 1; $i++) { if ($i == 0) $data = $arr[$i]['detail']; //替代变量1 $rep1 = []; foreach ($data as $v) { foreach ($arr[$i + 1]['detail'] as $g) { //替代变量2 $rep2 = ($i != 0 ? '' : $arr[$i]['value'] . '_$_') . $v . '-$-' . $arr[$i + 1]['value'] . '_$_' . $g; $tmp[] = $rep2; if ($i == $count - 2) { foreach (explode('-$-', $rep2) as $k => $h) { //替代变量3 $rep3 = explode('_$_', $h); //替代变量4 $rep4['detail'][$rep3[0]] = isset($rep3[1]) ? $rep3[1] : ''; } if($count == count($rep4['detail'])) $res[] = $rep4; } } } $data = isset($tmp) ? $tmp : []; } } else { $dataArr = []; foreach ($arr as $k => $v) { foreach ($v['detail'] as $kk => $vv) { $dataArr[$kk] = $v['value'] . '_' . $vv; $res[$kk]['detail'][$v['value']] = $vv; } } $data[] = implode('-', $dataArr); } return [$data, $res]; } /** * 获取图片转为base64 * @param string $avatar * @return bool|string */ function image_to_base64($avatar = '', $timeout = 9) { try { $url = parse_url($avatar); $url = $url['host']; $header = [ 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:45.0) Gecko/20100101 Firefox/45.0', 'Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 'Accept-Encoding: gzip, deflate, br', 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'Host:' . $url ]; $dir = pathinfo($url); $host = $dir['dirname']; $refer = $host . '/'; $curl = curl_init(); curl_setopt($curl, CURLOPT_REFERER, $refer); curl_setopt($curl, CURLOPT_URL, $avatar); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_ENCODING, 'gzip'); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); $data = curl_exec($curl); $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); if ($code == 200) { return "data:image/jpeg;base64," . base64_encode($data); } else { return false; } } catch (\Exception $e) { return false; } } /** * 获取图片转为base64 * @param string $avatar * @return bool|string */ function put_image($url, $filename = '') { if ($url == '') { return false; } try { if ($filename == '') { $ext = pathinfo($url); if ($ext['extension'] != "jpg" && $ext['extension'] != "png" && $ext['extension'] != "jpeg") { return false; } $filename = time() . "." . $ext['extension']; } //文件保存路径 ob_start(); readfile($url); $img = ob_get_contents(); ob_end_clean(); $path = 'uploads/qrcode'; $fp2 = fopen($path . '/' . $filename, 'a'); fwrite($fp2, $img); fclose($fp2); return $path . '/' . $filename; } catch (\Exception $e) { return false; } } function doRequest($url, $data, $header = null, $post = true, $json = false, $form = false, $format = 0) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); if ($post) { curl_setopt($curl, CURLOPT_POST, 1); if (!$json && !$form) { curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); } else if ($json && !$form) { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data, $format)); } else { curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); if ($header) { curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_HEADER, 0); } $result = curl_exec($curl); if (curl_errno($curl)) { return json_encode(['status' => curl_errno($curl), 'msg' => '请求失败']); } curl_close($curl); return $result; }