global.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. use Illuminate\Support\Carbon;
  3. use App\Services\ConfigService;
  4. if (!function_exists('ensureUrl')) {
  5. function ensureUrl($url)
  6. {
  7. if (!filter_var($url, FILTER_VALIDATE_URL)) {
  8. if (empty($url)) return $url;
  9. $newUrl = config('app.image_url1') . $url;
  10. return filter_var($newUrl, FILTER_VALIDATE_URL) ? $newUrl : $url;
  11. }
  12. return $url;
  13. }
  14. }
  15. if (!function_exists('replacePartInUrl')) {
  16. function replacePartInUrl($url)
  17. {
  18. if (filter_var($url, FILTER_VALIDATE_URL)) {
  19. $target = config('app.image_url1');
  20. return str_replace($target, '', $url);
  21. }
  22. return $url;
  23. }
  24. }
  25. if (!function_exists('format_date')) {
  26. function format_date($date, $format = 'Y-m-d')
  27. {
  28. if (!$date) return null;
  29. return Carbon::parse($date)->format($format);
  30. }
  31. }
  32. if (!function_exists('get_image_url')) {
  33. function get_image_url($path)
  34. {
  35. $baseUrl = config('app.image_url', null);
  36. if (!$baseUrl) {
  37. return null;
  38. }
  39. return rtrim($baseUrl, '/') . '/' . ltrim($path, '/');
  40. }
  41. }
  42. if (!function_exists('full_url')) {
  43. function full_url($filepath)
  44. {
  45. $baseUrl = config('app.url');
  46. $imageUrl = config('app.image_url');
  47. // 优先使用图片专用域名
  48. $domain = $imageUrl ? $imageUrl : $baseUrl;
  49. if ($domain) {
  50. // 去除域名末尾的斜杠,去除文件路径开头的斜杠,然后拼接
  51. return rtrim($domain, '/') . '/' . ltrim($filepath, '/');
  52. }
  53. return $filepath;
  54. }
  55. }
  56. // 多语言
  57. if (!function_exists('lang')) {
  58. function lang($key)
  59. {
  60. $msg = __('message.' . $key);
  61. if ($msg === "message.{$key}") return $key;
  62. return $msg;
  63. }
  64. }
  65. // 读取系统设置
  66. if (!function_exists('config_val')) {
  67. function config_val($field)
  68. {
  69. return ConfigService::model()::where('field', $field)->value('val') ?? '';
  70. }
  71. }
  72. // 小数随机
  73. if(!function_exists('random_float')){
  74. function random_float($min, $max, $precision = 2) {
  75. $multiplier = pow(10, $precision);
  76. $intMin = $min * $multiplier;
  77. $intMax = $max * $multiplier;
  78. return mt_rand($intMin, $intMax) / $multiplier;
  79. }
  80. }
  81. if (!function_exists('retain_number')) {
  82. /**
  83. * 保留数字指定的小数位数(直接截断,不四舍五入)
  84. *
  85. * @param float|int|string $number 要处理的数字
  86. * @param int $point 要保留的小数位数(默认2位)
  87. * @return float|string 返回处理后的数字(失败时返回原始输入)
  88. */
  89. function retain_number($number, $point = 2) {
  90. // 验证小数位数参数
  91. $point = (int)$point;
  92. if ($point < 0) {
  93. $point = 0;
  94. }
  95. // 非数字直接返回
  96. if (!is_numeric($number)) {
  97. return $number;
  98. }
  99. $floatValue = (float)$number;
  100. // 如果是整数或小数位数为0,直接返回整数
  101. if (is_int($number) || $point === 0) {
  102. return (float)floor($floatValue);
  103. }
  104. // 计算截断倍数(如 2位小数则乘以 100)
  105. $multiplier = pow(10, $point);
  106. // 直接截断小数部分
  107. $truncated = floor($floatValue * $multiplier) / $multiplier;
  108. return $truncated;
  109. }
  110. }
  111. // 字符串格式化版本(保证小数位数,如 5 → "5.00")
  112. if (!function_exists('retain_number_format')) {
  113. function retain_number_format($number, $point = 2) {
  114. // $result = retain_number($number, $point);
  115. if (!is_numeric($number)) {
  116. return $number;
  117. }
  118. return number_format($number, $point, '.', '');
  119. }
  120. }