chore: 并入 iotlcm-app 历史到 app/(原提交 f40bda9)

This commit is contained in:
MiFaZhan
2026-11-02 13:28:00 +08:00
1107 changed files with 147143 additions and 0 deletions
+116
View File
@@ -0,0 +1,116 @@
// Package v1
// @Link https://github.com/xiujiecn/xiu-admin
// @Copyright Copyright (c) 2025 LiXiujie
// @Author Lxj <li@example.com>
// @License https://github.com/xiujiecn/xiu-admin/blob/master/LICENSE
package v1
import (
"git.5iot.com/iotlcm-public/iotlcm-app/internal/model"
"github.com/gogf/gf/v2/frame/g"
)
// 路由菜单
type RouteMenu struct {
Id int64 `json:"id" dc:"路由ID"`
ParentId int64 `json:"parentId" dc:"父路由ID"`
Path string `json:"path" dc:"路由路径"`
Redirect *string `json:"redirect,omitempty" dc:"重定向路径"`
Name string `json:"name" dc:"路由名称"` // 必须唯一
Component string `json:"component" dc:"组件路径"`
Meta *RouteMeta `json:"meta,omitempty" dc:"路由元数据"`
Children []*RouteMenu `json:"children,omitempty" dc:"子路由"`
}
// 路由元数据
// 对应 vue/packages/@core/base/typings/src/vue-router.d.ts
type RouteMeta struct {
Title string `json:"title" dc:"菜单标题"`
Icon *string `json:"icon,omitempty" dc:"菜单图标"`
Order *int `json:"order,omitempty" dc:"菜单排序"`
OpenInNewWindow *bool `json:"openInNewWindow,omitempty" dc:"是否在新窗口打开"`
NoBasicLayout *bool `json:"noBasicLayout,omitempty" dc:"是否不使用基础布局"`
HideInMenu *bool `json:"hideInMenu,omitempty" dc:"是否隐藏菜单"`
HideInBreadcrumb *bool `json:"hideInBreadcrumb,omitempty" dc:"是否隐藏面包屑"`
HideChildrenInMenu *bool `json:"hideChildrenInMenu,omitempty" dc:"是否隐藏子菜单"`
HideInTab *bool `json:"hideInTab,omitempty" dc:"是否隐藏标签页"`
MenuVisibleWithForbidden *bool `json:"menuVisibleWithForbidden,omitempty" dc:"菜单可见但访问会被重定向到403"`
IgnoreAccess *bool `json:"ignoreAccess,omitempty" dc:"忽略权限,直接可以访问"`
KeepAlive *bool `json:"keepAlive,omitempty" dc:"开启KeepAlive缓存"`
Link *string `json:"link,omitempty" dc:"外链-跳转路径"`
Query map[string]string `json:"query,omitempty" dc:"路由所携带的参数"`
IframeSrc *string `json:"iframeSrc,omitempty" dc:"iframe地址"`
MaxNumOfOpenTab *int `json:"maxNumOfOpenTab,omitempty" dc:"标签页最大打开数量"`
Badge *string `json:"badge,omitempty" dc:"徽标"`
BadgeType *string `json:"badgeType,omitempty" dc:"徽标类型"`
BadgeVariants *string `json:"badgeVariants,omitempty" dc:"徽标颜色"`
Authority []string `json:"authority,omitempty" dc:"需要特定的角色标识才可以访问"`
AffixTab *bool `json:"affixTab,omitempty" dc:"是否固定标签页"`
AffixTabOrder *int `json:"affixTabOrder,omitempty" dc:"固定标签页的顺序"`
ActiveIcon *string `json:"activeIcon,omitempty" dc:"激活图标"`
ActivePath *string `json:"activePath,omitempty" dc:"当前激活的菜单"`
}
// 获取用户所有菜单
type MenuAllReq struct {
g.Meta `path:"/menu/all" method:"get" tags:"系统-菜单管理" summary:"获取用户所有菜单" x-check-permission:""`
}
// type MenuAllRes struct {
// Data []RouteMenu `json:"data" dc:"菜单列表"`
// }
type MenuAllRes = []*RouteMenu
type MenuListReq struct {
g.Meta `path:"/menu/list" method:"get" tags:"系统-菜单管理" summary:"获取菜单列表" x-check-permission:"cpm:system:menu:list"`
model.SysMenuListParam
}
type MenuListRes struct {
Data []*model.SysMenuListModel `json:"items" dc:"菜单列表"`
Total int `json:"total" dc:"总数"`
}
type MenuViewReq struct {
g.Meta `path:"/menu/view" method:"get" tags:"系统-菜单管理" summary:"获取菜单详情" x-check-permission:"cpm:system:menu:query"`
MenuId int64 `json:"menuId" dc:"菜单ID"`
}
type MenuViewRes struct {
model.SysMenuViewModel
}
type MenuAddReq struct {
g.Meta `path:"/menu/add" method:"post" tags:"系统-菜单管理" summary:"添加菜单" x-check-permission:"cpm:system:menu:add"`
model.SysMenuAddModel
}
type MenuAddRes struct {
model.SysMenuViewModel
}
type MenuUpdateReq struct {
g.Meta `path:"/menu/update" method:"post" tags:"系统-菜单管理" summary:"更新菜单" x-check-permission:"cpm:system:menu:edit"`
model.SysMenuUpdateModel
}
type MenuUpdateRes struct {
model.SysMenuViewModel
}
type MenuDeleteReq struct {
g.Meta `path:"/menu/delete" method:"post" tags:"系统-菜单管理" summary:"删除菜单" x-check-permission:"cpm:system:menu:remove"`
MenuId int64 `json:"menuId" dc:"菜单ID"`
}
type MenuDeleteRes struct {
}
type MenuTreeReq struct {
g.Meta `path:"/menu/tree" method:"get" tags:"系统-菜单管理" summary:"获取菜单树" x-check-permission:""`
}
type MenuTreeRes struct {
Data []*model.SysMenuTreeModel `json:"items" dc:"菜单树"`
}