feat: 添加获取系统前台各模块url接口

This commit is contained in:
2025-03-14 17:58:36 +08:00
parent 78dc1188f7
commit 67f5a529ca
7 changed files with 178 additions and 4 deletions

View File

@@ -3,6 +3,10 @@ declare (strict_types = 1);
namespace app\admin\controller\v1;
use app\admin\model\v1\ArticleCategoryModel;
use app\admin\model\v1\ArticleModel;
use app\admin\model\v1\ProductCategoryModel;
use app\admin\model\v1\ProductModel;
use think\facade\Db;
class System
@@ -80,4 +84,138 @@ class System
return success('获取成功', $info);
}
}
// 组装系统内页面URL
public function urls()
{
$lang_id = request()->lang_id;
if (request()->has('link_to')) {
$param = request()->get([
'link_to',
'id'
]);
$urls = [];
switch ($param['link_to']) {
case 'article':
$articles = $this->getArticleByCategory($lang_id, $param['id']);
$urls = array_map(function($item) {
$item['url'] = (string)url('yy/zz', ['id' => $item['id']]);
return $item;
}, $articles);
break;
case 'product':
$products = $this->getProductByCategory($lang_id, $param['id']);
$urls = array_map(function($item) {
$item['url'] = (string)url('yy/zz', ['id' => $item['id']]);
return $item;
}, $products);
break;
default:
return error('请确认link_to参数');
break;
}
return success('获取成功', $urls);
} else {
// 获取文章分类
$article_category = $this->getArticleCategory($lang_id);
// 获取产品分类
$product_category = $this->getProductCategory($lang_id);
$urls = [
[
'name' => '自定义',
'link_to' => 'custom',
'data' => []
],
[
'name' => '文章分类',
'link_to' => 'article_category',
'data' => array_to_tree(array_map(function($item) {
$item['url'] = (string)url('yy/zz', ['id' => $item['id']]);
return $item;
}, $article_category), 0, 'pid', false, false)
],
[
'name' => '文章管理',
'link_to' => 'article',
'data' => array_to_tree($article_category, 0, 'pid', false, false)
],
[
'name' => '产品分类',
'link_to' => 'product_category',
'data' => array_to_tree(array_map(function($item) {
$item['url'] = (string)url('yy/zz', ['id' => $item['id']]);
return $item;
}, $product_category), 0, 'pid', false, false)
],
[
'name' => '产品',
'link_to' => 'product',
'data' => array_to_tree($product_category, 0, 'pid', false, false)
]
];
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)
->enabled()
->select();
return $data->toArray();
}
// 根据产品分类获取产品
private function getProductByCategory($lang_id, $category_id)
{
$data = ProductModel::field([
'id',
'name'
])
->language($lang_id)
->category($category_id)
->isShow(true)
->select();
return $data->toArray();
}
}