UniappTemplate.php 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Niucloud-admin 企业快速开发的saas管理平台
  4. // +----------------------------------------------------------------------
  5. // | 官方网址:https://www.niucloud.com
  6. // +----------------------------------------------------------------------
  7. // | niucloud团队 版权所有 开源版本可自由商用
  8. // +----------------------------------------------------------------------
  9. // | Author: Niucloud Team
  10. // +----------------------------------------------------------------------
  11. namespace core\dict;
  12. use app\service\admin\addon\AddonService;
  13. class UniappTemplate extends BaseDict
  14. {
  15. /**
  16. * 系统uniapp页面模板
  17. * @param array $params
  18. * @return array|false|mixed|string
  19. */
  20. public function load(array $params)
  21. {
  22. if (!empty($params[ 'params' ][ 'addon' ])) {
  23. $addons = [ $params[ 'params' ][ 'addon' ] ];
  24. } else {
  25. $addons = $this->getLocalAddons();
  26. }
  27. $app_keys = []; // 应用插件key集合
  28. $apps = []; // 应用插件集合
  29. $page_files = []; // 模板页面文件集合
  30. // 筛选插件
  31. if (!empty($params[ 'params' ]) && !empty($params[ 'params' ][ 'addon' ])) {
  32. $is_pass = true;
  33. foreach ($addons as $k => $v) {
  34. if ($params[ 'params' ][ 'addon' ] == $v) {
  35. $addons = [ $v ];
  36. $is_pass = false;
  37. break;
  38. }
  39. }
  40. // 如果没有匹配到,则返回系统的
  41. if ($is_pass) {
  42. return $params[ 'data' ];
  43. }
  44. }
  45. foreach ($addons as $v) {
  46. $page_path = $this->getAddonDictPath($v) . "diy" . DIRECTORY_SEPARATOR . "template.php";
  47. if (is_file($page_path)) {
  48. if (!empty($params[ 'params' ][ 'query' ]) && $params[ 'params' ][ 'query' ] == 'addon') {
  49. $file = include $page_path;
  50. if (!empty($file)) {
  51. $app_keys[] = $v;
  52. $apps[ $v ] = $file;
  53. }
  54. } else {
  55. $page_files[] = $page_path;
  56. }
  57. }
  58. }
  59. // 查询存在模板页面的应用插件列表
  60. if (!empty($params[ 'params' ][ 'query' ]) && $params[ 'params' ][ 'query' ] == 'addon') {
  61. $addon_service = new AddonService();
  62. $list = $addon_service->getAddonListByKeys($app_keys);
  63. $list_key = array_column($list, 'key');
  64. $list = array_combine($list_key, $list);
  65. foreach ($list as $k => $v) {
  66. $list[ $k ][ 'list' ] = $apps[ $k ];
  67. }
  68. return $list;
  69. } else {
  70. // 查询应用插件下的模板页面数据
  71. $page_files_data = $this->loadFiles($page_files);
  72. if (!empty($params[ 'params' ]) && !empty($params[ 'params' ][ 'addon' ])) {
  73. $pages = [];
  74. } else {
  75. $pages = $params[ 'data' ];
  76. }
  77. foreach ($page_files_data as $file_data) {
  78. if (empty($pages)) {
  79. $pages = $file_data;
  80. } else {
  81. $pages = array_merge($pages, $file_data);
  82. }
  83. }
  84. return $pages;
  85. }
  86. }
  87. }