Files
xk-api-old-laravel/bootstrap/helpers.php
2025-01-11 14:16:20 +08:00

196 lines
4.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
if (!function_exists('is_wechat')) {
/**
* 判断是否是微信访问.
*
* @return bool
*/
function is_wechat(): bool
{
return str_contains(\Jenssegers\Agent\Facades\Agent::getUserAgent(), 'MicroMessenger');
}
}
if (!function_exists('is_mobile')) {
/**
* 是否手机
*
* @return bool
*/
function is_mobile(): bool
{
$agent = new Jenssegers\Agent\Agent();
return $agent->isMobile();
}
}
if (!function_exists('json_success')) {
/**
* 成功
*
* @param mixed $message
* @param mixed $data
* @return void
*/
function json_success(mixed $message = '', mixed $data = []): void
{
if (is_string($message)) {
$result = [
'msg' => $message,
'data' => $data,
];
} else {
$result = [
'msg' => '',
'data' => $message,
];
}
$result['code'] = 0;
response()->json($result)->throwResponse();
}
}
if (!function_exists('json_page')) {
/**
* 分页
*
* @param $data
* @param mixed $pageData
* @param mixed $message
* @return void
*/
function json_page($data, mixed $pageData = [], mixed $message = ''): void
{
$pageData['total'] = method_exists($data, 'total') ? $data->total() : null;
$pageData['count'] = $data->count();
$pageData['page'] = $data->currentPage();
$pageData['per_page'] = $data->perPage();
$pageData['last'] = method_exists($data, 'lastPage') ? $data->lastPage() : null;
json_success($message, [
'page_info' => $pageData,
'page_data' => $data->toArray()['data'],
]);
}
}
if (!function_exists('json_error')) {
/**
* 失败
*
* @param mixed $message
* @param mixed $data
* @param int $code
* @return void
*/
function json_error(mixed $message = '', mixed $data = [], int $code = 1): void
{
$result = [
'code' => $code,
'msg' => $message,
'data' => $data,
];
response()->json($result)->throwResponse();
}
}
if (!function_exists('json_guest')) {
/**
* 失败 - 未登录
*
* @param mixed $message
* @param int $code
* @return void
*/
function json_guest(mixed $message = '未登录,请先登录', int $code = 99): void
{
json_error($message, [], $code);
}
}
if (!function_exists('json_result')) {
/**
* 结果
*
* @param mixed $message
* @param mixed $data
* @param int $code
* @return array
*/
function json_result(mixed $message = '', mixed $data = [], int $code = 0): array
{
return [
'code' => $code,
'msg' => $message,
'data' => $data,
];
}
}
if (!function_exists('url_to_uri')) {
/**
* 网址去除域名段 获取 url
*
* @param $url
* @return string|null
*/
function url_to_uri($url): ?string
{
if (!$url) {
return null;
}
$arr = parse_url($url);
if (isset($arr['scheme']) && isset($arr['host'])) {
$domains = [config('filesystems.disks.' . config('filesystems.default') . '.domain')];
$domain = $arr['scheme'] . '://' . $arr['host'];
if (in_array($domain, $domains)) {
$url = str_replace($arr['scheme'] . '://' . $arr['host'], '', $url);
$url = preg_replace('/!.*/', '', $url);
}
} elseif (!str_starts_with($url, '/')) {
$url = '/' . $url;
}
return $url;
}
}
if (!function_exists('uri_to_image_url')) {
/**
* 还原图片网址
*
* @param $uri
* @return string|null
*/
function uri_to_image_url($uri): ?string
{
if (!$uri) {
return null;
}
return config('filesystems.disks.' . config('filesystems.default') . '.domain') . url_to_uri($uri);
}
}
if (!function_exists('string_to_array')) {
/**
* 字符串转数组针对非0传值场景
*
* @param mixed $string 原始字符串
* @param bool $sort 是否重新排序
* @param string $separator 切割字符
* @return array
*/
function string_to_array(mixed $string, bool $sort = false, string $separator = ','): array
{
$arr = explode($separator, $string);
foreach ($arr as &$value) {
$value = trim($value);
}
$arr = array_filter($arr);
if ($sort) {
sort($arr);
}
return $arr;
}
}