helpers.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. use Illuminate\Support\Arr;
  3. if (! function_exists('user_admin_config')) {
  4. function user_admin_config($key = null, $value = null)
  5. {
  6. // 获取 session 实例
  7. $session = session();
  8. // 从 session 中获取 'admin.config',如果没有则使用默认的 'admin' 配置
  9. $config = $session->get('admin.config', function () {
  10. $adminConfig = config('admin');
  11. $adminConfig['lang'] = config('app.locale');
  12. return $adminConfig;
  13. });
  14. // 如果 $key 是数组,表示我们需要批量设置配置项
  15. if (is_array($key)) {
  16. foreach ($key as $k => $v) {
  17. Arr::set($config, $k, $v); // 在配置数组中设置每个键值对
  18. }
  19. $session->put('admin.config', $config); // 将更新后的配置保存到 session 中
  20. return;
  21. }
  22. // 如果没有传递具体的 key,返回整个配置数组
  23. if (is_null($key)) {
  24. return $config;
  25. }
  26. // 获取指定的配置项,如果不存在则返回默认值 $value
  27. return Arr::get($config, $key, $value);
  28. }
  29. }
  30. //通过parent_id构建树形结构
  31. if (!function_exists('buildTree')) {
  32. function buildTree(array $elements, $parentId = 0)
  33. {
  34. $branch = [];
  35. foreach ($elements as $element) {
  36. if ($element['parent_id'] == $parentId) {
  37. $children = buildTree($elements, $element['id']);
  38. if ($children) {
  39. $element['children'] = $children;
  40. }
  41. $branch[] = $element;
  42. }
  43. }
  44. return $branch;
  45. }
  46. }
  47. // 展平树形结构
  48. if (!function_exists('flattenTree')) {
  49. function flattenTree(array $tree, array &$result = [], $level = 0)
  50. {
  51. foreach ($tree as $node) {
  52. // 复制节点数据,但不包括子节点,并添加 level 字段
  53. $flattenedNode = array_diff_key($node, ['children' => null]);
  54. $flattenedNode['level'] = $level;
  55. $result[] = $flattenedNode;
  56. // 如果有子节点,递归处理子节点,并将 level 增加 1
  57. if (isset($node['children']) && is_array($node['children'])) {
  58. flattenTree($node['children'], $result, $level + 1);
  59. }
  60. }
  61. return $result;
  62. }
  63. }