putDebug($data, $new, $file); } } if (!function_exists('auth')) { /** * 访问权限检查 * @param null|string $node * @return boolean * @throws ReflectionException */ function auth(?string $node): bool { return AdminService::instance()->check($node); } } if (!function_exists('sysuri')) { /** * 生成最短 URL 地址 * @param string $url 路由地址 * @param array $vars PATH 变量 * @param boolean|string $suffix 后缀 * @param boolean|string $domain 域名 * @return string */ function sysuri(string $url = '', array $vars = [], $suffix = true, $domain = false): string { return SystemService::instance()->sysuri($url, $vars, $suffix, $domain); } } if (!function_exists('sysconf')) { /** * 获取或配置系统参数 * @param string $name 参数名称 * @param mixed $value 参数内容 * @return mixed * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ function sysconf(string $name = '', $value = null) { if (is_null($value) && is_string($name)) { return SystemService::instance()->get($name); } else { return SystemService::instance()->set($name, $value); } } } if (!function_exists('sysdata')) { /** * JSON 数据读取与存储 * @param string $name 数据名称 * @param mixed $value 数据内容 * @return mixed * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ function sysdata(string $name, $value = null) { if (is_null($value)) { return SystemService::instance()->getData($name); } else { return SystemService::instance()->setData($name, $value); } } } if (!function_exists('sysqueue')) { /** * 注册异步处理任务 * @param string $title 任务名称 * @param string $command 执行内容 * @param integer $later 延时执行时间 * @param array $data 任务附加数据 * @param integer $rscript 任务类型(0单例,1多例) * @param integer $loops 循环等待时间 * @return string * @throws \think\admin\Exception * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ function sysqueue(string $title, string $command, int $later = 0, array $data = [], int $rscript = 1, int $loops = 0): string { return QueueService::instance()->register($title, $command, $later, $data, $rscript, $loops)->code; } } if (!function_exists('systoken')) { /** * 生成 CSRF-TOKEN 参数 * @param null|string $node * @return string */ function systoken(?string $node = null): string { $result = TokenService::instance()->buildFormToken($node); return $result['token'] ?? ''; } } if (!function_exists('sysoplog')) { /** * 写入系统日志 * @param string $action 日志行为 * @param string $content 日志内容 * @return boolean */ function sysoplog(string $action, string $content): bool { return SystemService::instance()->setOplog($action, $content); } } if (!function_exists('str2arr')) { /** * 字符串转数组 * @param string $text 待转内容 * @param string $separ 分隔字符 * @param null|array $allow 限定规则 * @return array */ function str2arr(string $text, string $separ = ',', ?array $allow = null): array { $text = trim($text, $separ); $data = strlen($text) ? explode($separ, $text) : []; if (is_array($allow)) foreach ($data as $key => $item) { if (!in_array($item, $allow)) unset($data[$key]); } foreach ($data as $key => $item) { if ($item === '') unset($data[$key]); } return $data; } } if (!function_exists('arr2str')) { /** * 数组转字符串 * @param array $data 待转数组 * @param string $separ 分隔字符 * @param null|array $allow 限定规则 * @return string */ function arr2str(array $data, string $separ = ',', ?array $allow = null): string { if (is_array($allow)) foreach ($data as $key => $item) { if (!in_array($item, $allow)) unset($data[$key]); } foreach ($data as $key => $item) { if ($item === '') unset($data[$key]); } return $separ . join($separ, $data) . $separ; } } if (!function_exists('encode')) { /** * 加密 UTF8 字符串 * @param string $content * @return string */ function encode(string $content): string { [$chars, $length] = ['', strlen($string = iconv('UTF-8', 'GBK//TRANSLIT', $content))]; for ($i = 0; $i < $length; $i++) $chars .= str_pad(base_convert(ord($string[$i]), 10, 36), 2, 0, 0); return $chars; } } if (!function_exists('decode')) { /** * 解密 UTF8 字符串 * @param string $content * @return string */ function decode(string $content): string { $chars = ''; foreach (str_split($content, 2) as $char) { $chars .= chr(intval(base_convert($char, 36, 10))); } return iconv('GBK//TRANSLIT', 'UTF-8', $chars); } } if (!function_exists('enbase64url')) { /** * Base64安全URL编码 * @param string $string * @return string */ function enbase64url(string $string): string { return rtrim(strtr(base64_encode($string), '+/', '-_'), '='); } } if (!function_exists('debase64url')) { /** * Base64安全URL解码 * @param string $string * @return string */ function debase64url(string $string): string { return base64_decode(str_pad(strtr($string, '-_', '+/'), strlen($string) % 4, '=')); } } if (!function_exists('http_get')) { /** * 以get模拟网络请求 * @param string $url HTTP请求URL地址 * @param array|string $query GET请求参数 * @param array $options CURL参数 * @return boolean|string */ function http_get(string $url, $query = [], array $options = []) { return HttpExtend::get($url, $query, $options); } } if (!function_exists('http_post')) { /** * 以post模拟网络请求 * @param string $url HTTP请求URL地址 * @param array|string $data POST请求数据 * @param array $options CURL参数 * @return boolean|string */ function http_post(string $url, $data, array $options = []) { return HttpExtend::post($url, $data, $options); } } if (!function_exists('data_save')) { /** * 数据增量保存 * @param Model|Query|string $dbQuery * @param array $data 需要保存或更新的数据 * @param string $key 条件主键限制 * @param array $where 其它的where条件 * @return boolean|integer * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException * @throws \think\admin\Exception */ function data_save($dbQuery, array $data, string $key = 'id', array $where = []) { return SystemService::instance()->save($dbQuery, $data, $key, $where); } } if (!function_exists('format_bytes')) { /** * 文件字节单位转换 * @param string|integer $size * @return string */ function format_bytes($size): string { if (is_numeric($size)) { $units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; for ($i = 0; $size >= 1024 && $i < 4; $i++) $size /= 1024; return round($size, 2) . ' ' . $units[$i]; } else { return $size; } } } if (!function_exists('format_datetime')) { /** * 日期格式标准输出 * @param int|string $datetime 输入日期 * @param string $format 输出格式 * @return string */ function format_datetime($datetime, string $format = 'Y年m月d日 H:i:s'): string { if (empty($datetime)) return '-'; if (is_numeric($datetime)) { return date($format, $datetime); } else { return date($format, strtotime($datetime)); } } } if (!function_exists('down_file')) { /** * 下载远程文件到本地 * @param string $source 远程文件地址 * @param boolean $force 是否强制重新下载 * @param integer $expire 强制本地存储时间 * @return string */ function down_file(string $source, bool $force = false, int $expire = 0): string { return Storage::down($source, $force, $expire)['url'] ?? $source; } }