123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- <?php
- namespace app\service\api\diy;
- use app\dict\diy\PagesDict;
- use app\dict\diy\TemplateDict;
- use app\model\diy\Diy;
- use app\model\diy\DiyTheme;
- use app\service\core\site\CoreSiteService;
- use core\base\BaseApiService;
- class DiyService extends BaseApiService
- {
- public function __construct()
- {
- parent::__construct();
- $this->model = new Diy();
- }
-
- public function getInfo(array $params = [])
- {
- $site_id = $params[ 'site_id' ] ?? 0;
- $start_up_page = [];
- $page_template = [];
- if (!empty($params[ 'name' ])) {
-
- $diy_config_service = new DiyConfigService();
- $start_up_page = $diy_config_service->getStartUpPageConfig($params[ 'name' ]);
- $page_template = TemplateDict::getTemplate([ 'key' => [ $params[ 'name' ] ] ]);
- if (!empty($page_template)) {
- $page_template = $page_template [ $params[ 'name' ] ];
- }
- }
- if (empty($params[ 'id' ]) && !empty($start_up_page) && !empty($page_template) && !empty($start_up_page[ 'page' ]) && $start_up_page[ 'page' ] != $page_template[ 'page' ]) {
- $info = $start_up_page;
- return $info;
- } else {
- $condition = [
- [ 'site_id', '=', $site_id ]
- ];
- if (!empty($params[ 'id' ])) {
- $condition[] = [ 'id', '=', $params[ 'id' ] ];
- } elseif (!empty($params[ 'name' ])) {
- $condition[] = [ 'name', '=', $params[ 'name' ] ];
- $condition[] = [ 'is_default', '=', 1 ];
- }
- $field = 'id,site_id,title,name,type,template, mode,value,is_default,share,visit_count';
- $info = $this->model->field($field)->where($condition)->findOrEmpty()->toArray();
- if (empty($info)) {
-
- if (!empty($params[ 'name' ])) {
- $page_data = $this->getFirstPageData($params[ 'name' ]);
- if (!empty($page_data)) {
- $info = [
- 'site_id' => $site_id,
- 'title' => $page_data[ 'title' ],
- 'name' => $page_data[ 'type' ],
- 'type' => $page_data[ 'type' ],
- 'template' => $page_data[ 'template' ],
- 'mode' => $page_data[ 'mode' ],
- 'value' => json_encode($page_data[ 'data' ], JSON_UNESCAPED_UNICODE),
- 'is_default' => 1,
- 'share' => '',
- 'visit_count' => 0
- ];
- }
- }
- } else {
- }
- return $info;
- }
- }
-
- public function getFirstPageData($type)
- {
- $pages = PagesDict::getPages([ 'type' => $type ]);
- if (!empty($pages)) {
- $template = array_key_first($pages);
- $page = array_shift($pages);
- $page[ 'template' ] = $template;
- $page[ 'type' ] = $type;
- return $page;
- }
- return [];
- }
-
- public function getDiyTheme()
- {
- $site_id = request()->defaultSiteId();
- $site_addon = ( new CoreSiteService() )->getSiteCache($site_id);
- $addon_list = array_merge($site_addon['apps'],$site_addon['site_addons']);
- $theme_data = (new DiyTheme())->where([['site_id', '=', $site_id], ['is_selected', '=', 1]])->column('id,title,theme,new_theme','addon');
- $system_theme = array_values(array_filter(event('ThemeColor', [ 'key' => 'app'])))[0] ?? [];
- $app_theme['app'] = [
- 'title' => $theme_data['app']['title'] ?? (!empty($system_theme) ? $system_theme['theme_color'][0]['title'] : ''),
- 'theme' => $theme_data['app']['theme'] ?? (!empty($system_theme) ? $system_theme['theme_color'][0]['theme'] : ''),
- 'new_theme' => $theme_data['app']['new_theme'] ?? '',
- ];
- $data = [];
- foreach ($addon_list as $key => $value){
- if (isset($value['support_app']) && empty($value['support_app']) && $value['type'] == 'addon'){
- continue;
- }
- $addon_theme = array_values(array_filter(event('ThemeColor', [ 'key' => $value['key']])))[0] ?? [];
- if (!empty($addon_theme) && !empty($addon_theme['theme_color'])) {
- $data[$value['key']]['title'] = $theme_data[$value['key']]['title'] ?? $addon_theme['theme_color'][0][ 'title' ];
- $data[$value['key']]['theme'] = $theme_data[$value['key']]['theme'] ?? $addon_theme['theme_color'][0][ 'theme' ];
- $data[$value['key']]['new_theme'] = $theme_data[$value['key']]['new_theme'] ?? '';
- }
- }
- if (empty($data) || count($site_addon[ 'apps' ]) > 1) {
- $data = array_merge($app_theme,$data);
- }
- return $data;
- }
- }
|