diff --git a/app/admin/controller/v1/Navigation.php b/app/admin/controller/v1/Navigation.php new file mode 100644 index 00000000..1315642d --- /dev/null +++ b/app/admin/controller/v1/Navigation.php @@ -0,0 +1,57 @@ +order(['sort' => 'asc', 'id' => 'asc']) + ->select(); + + return success('获取成功', $types); + } + + // 导航分页 + public function index() + { + $param = request()->get([ + 'name', + 'nav_id', + 'created_at', + 'page/d' => 1, + 'size/d' => 10, + ]); + + $navigations = SysNavigationItemModel::withoutField([ + 'created_at', + 'updated_at' + ]) + ->with(['navigation' => function ($query) { + $query->field(['id', 'name' => 'nav_name']); + }]) + ->withSearch(['name', 'created_at'], [ + 'name' => $param['name']??null, + 'created_at' => $param['created_at']??null + ]) + ->navId($param['nav_id']??null) + ->order(['sort' => 'asc', 'id' => 'asc']) + ->paginate([ + 'page' => $param['page'], + 'list_rows' => $param['size'], + ]) + ->bindAttr('navigation', ['nav_name']) + ->hidden(['nav_id', 'navigation']); + + return success('获取成功', $navigations); + } +} diff --git a/app/admin/model/v1/SysNavigationItemModel.php b/app/admin/model/v1/SysNavigationItemModel.php new file mode 100644 index 00000000..3a6f6d43 --- /dev/null +++ b/app/admin/model/v1/SysNavigationItemModel.php @@ -0,0 +1,46 @@ +belongsTo(SysNavigationModel::class, 'nav_id', 'id'); + } + + // 名称搜索 + public function searchNameAttr($query, $value, $data) + { + if (empty($value)) return; + $query->where('name', 'like', "%{$value}%"); + } + + // 新增时间搜索 + public function searchCreatedAtAttr($query, $value, $data) + { + if (empty($value)) return; + if (is_array($value)) { + if (count($value) > 1) { + $query->whereBetweenTime('created_at', $value[0], $value[1]); + } else { + $query->whereTime('created_at', '>=', $value[0]); + } + } + } + + // 导航查询 + public function scopeNavId($query, $value) + { + if (empty($value)) return; + $query->where('nav_id', '=', $value); + } +} diff --git a/app/admin/model/v1/SysNavigationLinkTypeModel.php b/app/admin/model/v1/SysNavigationLinkTypeModel.php new file mode 100644 index 00000000..1e0d2ae7 --- /dev/null +++ b/app/admin/model/v1/SysNavigationLinkTypeModel.php @@ -0,0 +1,15 @@ +prefix('v1.'); Route::miss(function() { diff --git a/app/common/model/SysNavigationBaseModel.php b/app/common/model/SysNavigationBaseModel.php new file mode 100644 index 00000000..59f4c424 --- /dev/null +++ b/app/common/model/SysNavigationBaseModel.php @@ -0,0 +1,15 @@ + 'int', + 'nav_id' => 'int', + 'pid' => 'int', + 'name' => 'string', + 'icon' => 'string', + 'link_type' => 'int', + 'link' => 'string', + 'sort' => 'int', + 'blank' => 'int', + 'status' => 'int', + 'created_at' => 'datetime', + 'updated_at' => 'datetime', + ]; +} diff --git a/app/common/model/SysNavigationLinkTypeBaseModel.php b/app/common/model/SysNavigationLinkTypeBaseModel.php new file mode 100644 index 00000000..6cda34e9 --- /dev/null +++ b/app/common/model/SysNavigationLinkTypeBaseModel.php @@ -0,0 +1,24 @@ + 'int', + 'type_name' => 'string', + 'sort' => 'int' + ]; +} diff --git a/database/migrations/20241230090420_create_sys_navigation.php b/database/migrations/20241230090420_create_sys_navigation.php index 2b022651..7367f708 100644 --- a/database/migrations/20241230090420_create_sys_navigation.php +++ b/database/migrations/20241230090420_create_sys_navigation.php @@ -29,9 +29,7 @@ class CreateSysNavigation extends Migrator { $table = $this->table('sys_navigation', ['engine' => 'InnoDB', 'comment' => '系统导航表']); $table->addColumn('language_id', 'integer', ['null' => false, 'comment' => '语言ID']) - ->addColumn('at_platform', 'string', ['limit' => 8, 'null' => false, 'comment' => '所在平台: pc为电脑, mobile为手机']) - ->addColumn('at_page', 'string', ['limit' => 64, 'null' => false, 'comment' => '导航所在页面标识']) - ->addColumn('at_position', 'string', ['limit' => 64, 'null' => false, 'comment' => '导航所在页面位置: top为顶部导航, footer为底部导航']) + ->addColumn('at_page', 'string', ['limit' => 64, 'null' => true, 'comment' => '导航所在页面路径']) ->addColumn('unique_label', 'string', ['limit' => 64, 'null' => false, 'comment' => '导航唯一标识']) ->addColumn('name', 'string', ['limit' => 64, 'null' => false, 'comment' => '导航名称']) ->addColumn('desc', 'string', ['limit' => 255, 'null' => true, 'default' => null, 'comment' => '导航描述']) diff --git a/database/migrations/20250301092043_sys_navigation_link_type.php b/database/migrations/20250301092043_sys_navigation_link_type.php new file mode 100644 index 00000000..cbf117d0 --- /dev/null +++ b/database/migrations/20250301092043_sys_navigation_link_type.php @@ -0,0 +1,35 @@ +table('sys_navigation_link_type', ['engine' => 'InnoDB', 'comment' => '系统导航链接类型']); + $table->addColumn('type_name', 'string', ['limit' => 64, 'null' => false, 'comment' => '类型名称']) + ->addColumn('sort', 'integer', ['limit' => 11, 'null' => false, 'default' => 0, 'comment' => '排序']) + ->create(); + } +}