refactor: 系统其他urls回显

This commit is contained in:
2025-06-10 14:46:11 +08:00
parent 1f81d2c8e4
commit 24212386bc

View File

@@ -158,7 +158,76 @@ class System
[ [
'name' => '其他内页', 'name' => '其他内页',
'link_to' => 'system_page', 'link_to' => 'system_page',
'data' => [ 'data' => self::getSystemOtherPages()
]
];
return success('获取成功', $urls);
}
}
// 获取文章分类数据
private function getArticleCategory($lang_id)
{
$data = ArticleCategoryModel::field([
'id',
'pid',
'name'
])
->language($lang_id)
->isShow(true)
->order(['sort' => 'asc', 'id' => 'desc'])
->select();
return $data->toArray();
}
// 获取产品分类数据
private function getProductCategory($lang_id)
{
$data = ProductCategoryModel::field([
'id',
'pid',
'name'
])
->language($lang_id)
->isShow(true)
->order(['sort' => 'asc', 'id' => 'desc'])
->select();
return $data->toArray();
}
// 根据文章分类获取文章
private function getArticleByCategory($lang_id, $category_id)
{
$data = ArticleModel::field([
'id',
'title' => 'name'
])
->language($lang_id)
->category($category_id)
->select();
return $data->toArray();
}
// 根据产品分类获取产品
private function getProductByCategory($lang_id, $category_id)
{
$data = ProductModel::field([
'id',
'name'
])
->language($lang_id)
->category($category_id)
->enabled()
->isShow(true)
->select();
return $data->toArray();
}
// 获取系统其他内页
static private function getSystemOtherPages()
{
return [
[ [
'id' => 1, 'id' => 1,
'name' => '首页', 'name' => '首页',
@@ -270,70 +339,7 @@ class System
] ]
] ]
] ]
],
]
]; ];
return success('获取成功', $urls);
}
}
// 获取文章分类数据
private function getArticleCategory($lang_id)
{
$data = ArticleCategoryModel::field([
'id',
'pid',
'name'
])
->language($lang_id)
->isShow(true)
->order(['sort' => 'asc', 'id' => 'desc'])
->select();
return $data->toArray();
}
// 获取产品分类数据
private function getProductCategory($lang_id)
{
$data = ProductCategoryModel::field([
'id',
'pid',
'name'
])
->language($lang_id)
->isShow(true)
->order(['sort' => 'asc', 'id' => 'desc'])
->select();
return $data->toArray();
}
// 根据文章分类获取文章
private function getArticleByCategory($lang_id, $category_id)
{
$data = ArticleModel::field([
'id',
'title' => 'name'
])
->language($lang_id)
->category($category_id)
->select();
return $data->toArray();
}
// 根据产品分类获取产品
private function getProductByCategory($lang_id, $category_id)
{
$data = ProductModel::field([
'id',
'name'
])
->language($lang_id)
->category($category_id)
->enabled()
->isShow(true)
->select();
return $data->toArray();
} }
// 根据系统页面url获取回显数据项 // 根据系统页面url获取回显数据项
@@ -351,21 +357,29 @@ class System
parse_str($url, $params); parse_str($url, $params);
} }
if (empty($params['id'])) return [];
switch ($link_to) { switch ($link_to) {
case 'article_category': case 'article_category':
if (empty($params['id'])) return [];
$data = ArticleCategoryModel::field(['id', 'name'])->bypk($params['id'])->find(); $data = ArticleCategoryModel::field(['id', 'name'])->bypk($params['id'])->find();
break; break;
case 'article': case 'article':
if (empty($params['id'])) return [];
$data = ArticleModel::field(['id', 'title' => 'name'])->bypk($params['id'])->find(); $data = ArticleModel::field(['id', 'title' => 'name'])->bypk($params['id'])->find();
break; break;
case 'product_category': case 'product_category':
if (empty($params['id'])) return [];
$data = ProductCategoryModel::field(['id', 'name'])->bypk($params['id'])->find(); $data = ProductCategoryModel::field(['id', 'name'])->bypk($params['id'])->find();
break; break;
case 'product': case 'product':
if (empty($params['id'])) return [];
$data = ProductModel::field(['id', 'name'])->bypk($params['id'])->find(); $data = ProductModel::field(['id', 'name'])->bypk($params['id'])->find();
break; break;
case 'system_page':
$data = self::filterSystemOtherPage(self::getSystemOtherPages(), function($item) use ($params, $link) {
if (empty($params['id'])) return $item['url'] == $link;
return $item['id'] == $params['id'];
});
break;
default: default:
return []; return [];
break; break;
@@ -378,4 +392,22 @@ class System
'link' => $link 'link' => $link
]; ];
} }
// 根据条件过滤结果
static private function filterSystemOtherPage(array $data, callable $callback): array
{
foreach ($data as $it) {
if ($callback($it)) {
return $it;
}
if (isset($it['children'])) {
$child = self::filterSystemOtherPage($it['children'], $callback);
if (!empty($child)) {
return $child;
}
}
}
return [];
}
} }