WebLink.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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 WebLink extends BaseDict
  14. {
  15. /**
  16. * 系统weblink页面链接
  17. * @param array $params
  18. * @return array|false|mixed|string
  19. * @throws \think\db\exception\DataNotFoundException
  20. * @throws \think\db\exception\DbException
  21. * @throws \think\db\exception\ModelNotFoundException
  22. */
  23. public function load(array $params = [])
  24. {
  25. if (!empty($params[ 'params' ][ 'addon' ])) {
  26. $addons = [ $params[ 'params' ][ 'addon' ] ];
  27. } else {
  28. $addons = $this->getLocalAddons();
  29. }
  30. $link_files = [];
  31. foreach ($addons as $v) {
  32. $link_path = $this->getAddonDictPath($v) . "diy" . DIRECTORY_SEPARATOR . "web_links.php";
  33. if (is_file($link_path)) {
  34. $link_files[ $v ] = $link_path;
  35. }
  36. }
  37. $addon_service = new AddonService();
  38. $addon_info_list = $addon_service->getAddonListByKeys(array_keys($link_files));
  39. if (!empty($params[ 'params' ][ 'query' ]) && $params[ 'params' ][ 'query' ] == 'addon') {
  40. $list_key = array_column($addon_info_list, 'key');
  41. $addon_info_list = array_combine($list_key, $addon_info_list);
  42. return $addon_info_list;
  43. } else {
  44. $links = $params[ 'data' ];
  45. foreach ($link_files as $k => $v) {
  46. $addon_link = include $v;
  47. if (!empty($addon_link)) {
  48. $addon_info = [];
  49. foreach ($addon_info_list as $ck => $cv) {
  50. if ($cv[ 'key' ] == $k) {
  51. $addon_info = $cv;
  52. break;
  53. }
  54. }
  55. foreach ($addon_link as $ck => $cv) {
  56. $addon_link[ $ck ][ 'addon_info' ] = $addon_info;
  57. }
  58. $links = array_merge($links, $addon_link);
  59. }
  60. }
  61. return $links;
  62. }
  63. }
  64. }