DiyService.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Niucloud-admin 企业快速开发的saas管理平台
  4. // +----------------------------------------------------------------------
  5. // | 官方网址:https://www.niucloud.com
  6. // +----------------------------------------------------------------------
  7. // | niucloud团队 版权所有 开源版本可自由商用
  8. // +----------------------------------------------------------------------
  9. // | Author: Niucloud Team
  10. // +----------------------------------------------------------------------
  11. namespace app\service\api\diy;
  12. use app\dict\diy\PagesDict;
  13. use app\dict\diy\TemplateDict;
  14. use app\model\diy\Diy;
  15. use app\model\diy\DiyTheme;
  16. use app\service\core\site\CoreSiteService;
  17. use core\base\BaseApiService;
  18. /**
  19. * 自定义页面服务层
  20. * Class DiyService
  21. * @package app\service\api\diy
  22. */
  23. class DiyService extends BaseApiService
  24. {
  25. public function __construct()
  26. {
  27. parent::__construct();
  28. $this->model = new Diy();
  29. }
  30. /**
  31. * 获取自定义页面信息
  32. * @param array $params
  33. * @return array
  34. */
  35. public function getInfo(array $params = [])
  36. {
  37. $site_id = $params[ 'site_id' ] ?? 0;
  38. $start_up_page = [];
  39. $page_template = [];
  40. if (!empty($params[ 'name' ])) {
  41. // 查询启动页
  42. $diy_config_service = new DiyConfigService();
  43. $start_up_page = $diy_config_service->getStartUpPageConfig($params[ 'name' ]);
  44. $page_template = TemplateDict::getTemplate([ 'key' => [ $params[ 'name' ] ] ]);
  45. if (!empty($page_template)) {
  46. $page_template = $page_template [ $params[ 'name' ] ];
  47. }
  48. }
  49. if (empty($params[ 'id' ]) && !empty($start_up_page) && !empty($page_template) && !empty($start_up_page[ 'page' ]) && $start_up_page[ 'page' ] != $page_template[ 'page' ]) {
  50. $info = $start_up_page;
  51. return $info;
  52. } else {
  53. $condition = [
  54. [ 'site_id', '=', $site_id ]
  55. ];
  56. if (!empty($params[ 'id' ])) {
  57. $condition[] = [ 'id', '=', $params[ 'id' ] ];
  58. } elseif (!empty($params[ 'name' ])) {
  59. $condition[] = [ 'name', '=', $params[ 'name' ] ];
  60. $condition[] = [ 'is_default', '=', 1 ];
  61. }
  62. $field = 'id,site_id,title,name,type,template, mode,value,is_default,share,visit_count';
  63. $info = $this->model->field($field)->where($condition)->findOrEmpty()->toArray();
  64. if (empty($info)) {
  65. // 查询默认页面数据
  66. if (!empty($params[ 'name' ])) {
  67. $page_data = $this->getFirstPageData($params[ 'name' ]);
  68. if (!empty($page_data)) {
  69. $info = [
  70. 'site_id' => $site_id,
  71. 'title' => $page_data[ 'title' ],
  72. 'name' => $page_data[ 'type' ],
  73. 'type' => $page_data[ 'type' ],
  74. 'template' => $page_data[ 'template' ],
  75. 'mode' => $page_data[ 'mode' ],
  76. 'value' => json_encode($page_data[ 'data' ], JSON_UNESCAPED_UNICODE),
  77. 'is_default' => 1,
  78. 'share' => '',
  79. 'visit_count' => 0
  80. ];
  81. }
  82. }
  83. } else {
  84. // $info[ 'value' ] = $this->handleThumbImgs($info[ 'value' ]);
  85. }
  86. return $info;
  87. }
  88. }
  89. /**
  90. * 获取默认页面数据
  91. * @param $type
  92. * @return array|mixed
  93. */
  94. public function getFirstPageData($type)
  95. {
  96. $pages = PagesDict::getPages([ 'type' => $type ]);
  97. if (!empty($pages)) {
  98. $template = array_key_first($pages);
  99. $page = array_shift($pages);
  100. $page[ 'template' ] = $template;
  101. $page[ 'type' ] = $type;
  102. return $page;
  103. }
  104. return [];
  105. }
  106. /**
  107. * 获取自定义主题配色
  108. * @return array
  109. */
  110. public function getDiyTheme()
  111. {
  112. $site_id = request()->defaultSiteId();
  113. $site_addon = ( new CoreSiteService() )->getSiteCache($site_id);
  114. $addon_list = array_merge($site_addon['apps'],$site_addon['site_addons']);
  115. $theme_data = (new DiyTheme())->where([['site_id', '=', $site_id], ['is_selected', '=', 1]])->column('id,title,theme,new_theme','addon');
  116. $system_theme = array_values(array_filter(event('ThemeColor', [ 'key' => 'app'])))[0] ?? [];
  117. $app_theme['app'] = [
  118. 'title' => $theme_data['app']['title'] ?? (!empty($system_theme) ? $system_theme['theme_color'][0]['title'] : ''),
  119. 'theme' => $theme_data['app']['theme'] ?? (!empty($system_theme) ? $system_theme['theme_color'][0]['theme'] : ''),
  120. 'new_theme' => $theme_data['app']['new_theme'] ?? '',
  121. ];
  122. $data = [];
  123. foreach ($addon_list as $key => $value){
  124. if (isset($value['support_app']) && empty($value['support_app']) && $value['type'] == 'addon'){
  125. continue;
  126. }
  127. $addon_theme = array_values(array_filter(event('ThemeColor', [ 'key' => $value['key']])))[0] ?? [];
  128. if (!empty($addon_theme) && !empty($addon_theme['theme_color'])) {
  129. $data[$value['key']]['title'] = $theme_data[$value['key']]['title'] ?? $addon_theme['theme_color'][0][ 'title' ];
  130. $data[$value['key']]['theme'] = $theme_data[$value['key']]['theme'] ?? $addon_theme['theme_color'][0][ 'theme' ];
  131. $data[$value['key']]['new_theme'] = $theme_data[$value['key']]['new_theme'] ?? '';
  132. }
  133. }
  134. if (empty($data) || count($site_addon[ 'apps' ]) > 1) {// 应用数量大于1时,展示系统主题色设置,只有一个应用时,不展示系统主题色设置
  135. $data = array_merge($app_theme,$data);
  136. }
  137. return $data;
  138. }
  139. }