package menus import ( "appPlatform/models/modelAppPlatform" "appPlatform/overall" "appPlatform/overall/publicmethod" "fmt" "sort" "time" "github.com/gin-gonic/gin" ) /* * @ 作者: 秦东 @ 时间: 2023-05-22 13:26:16 @ 功能: 获取路由树 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) GetMenusThree(c *gin.Context) { var menusList []modelAppPlatform.Menus err := overall.CONSTANT_DB_AppPlatform.Where("`type` IN ? AND `visible` IN ? AND `outside` IN ?", []int{1, 2, 3}, []int{1, 2}, []int{1, 3}).Order("sort ASC").Find(&menusList).Error if err != nil && len(menusList) < 1 { publicmethod.Result(1, err, c, "没有路由!") return } // sort.Slice(menusList, func(i, j int) bool { // return menusList[i].Sort > menusList[j].Sort // }) routerThree := publicmethod.GetMenuRouterThree(0, menusList) publicmethod.Result(0, routerThree, c) } /* * @ 作者: 秦东 @ 时间: 2023-05-22 15:36:33 @ 功能: 获取菜单列表树 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) GetMenusListTree(c *gin.Context) { // var requestData ShearMenu // c.ShouldBindJSON(&requestData) // c.ShouldBindQuery(&requestData) // id := c.Query("id") requestData := c.Query("keywords") fmt.Printf("没有路由!=====>%v\n", requestData) var menusList []modelAppPlatform.Menus gormDb := overall.CONSTANT_DB_AppPlatform.Where("visible IN ?", []int{1, 2}) if requestData != "" { gormDb = gormDb.Where("`name` LIKE ?", "%"+requestData+"%") } err := gormDb.Find(&menusList).Error if err != nil && len(menusList) < 1 { publicmethod.Result(1, err, c, "没有路由!") return } sort.Slice(menusList, func(i, j int) bool { return menusList[i].Sort < menusList[j].Sort }) routerThree := publicmethod.GetAppMenuThree(0, menusList) publicmethod.Result(0, routerThree, c) } /* * @ 作者: 秦东 @ 时间: 2023-05-22 16:21:11 @ 功能: 菜单下拉列表 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) MenuOptions(c *gin.Context) { var menusList []modelAppPlatform.Menus err := overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Menus{}).Select("`id`,`name`,`parentId`").Where("visible IN ?", []int{1, 2}).Find(&menusList).Error if err != nil && len(menusList) < 1 { publicmethod.Result(1, err, c, "没有路由!") return } routerThree := publicmethod.GetMenuOptionsThree(0, menusList) publicmethod.Result(0, routerThree, c) } /* * @ 作者: 秦东 @ 时间: 2023-05-22 16:40:42 @ 功能: 新增菜单 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) AddNewMenu(c *gin.Context) { var requestData AddNewMenuCont c.ShouldBindJSON(&requestData) if requestData.Name == "" { publicmethod.Result(1, requestData, c, "请输入菜单名称!") return } if requestData.Visible == 0 { requestData.Visible = 1 } if requestData.Sort == 0 { requestData.Sort = 50 } if requestData.Outside == 0 { requestData.Sort = 1 } types := publicmethod.MenuTypeToInt(requestData.Types) var menuCont modelAppPlatform.Menus menuCont.Name = requestData.Name //菜单名称"` menuCont.Types = types //菜单类型(1-菜单;2-目录;3-外链;4-按钮权限"` menuCont.Path = requestData.Path //路由路径"` if types == 2 { if requestData.ParentId == 0 { menuCont.Component = "Layout" //组件路径(vue页面完整路径,省略.vue后缀)"` } else { menuCont.Component = "public/index" //组件路径(vue页面完整路径,省略.vue后缀)"` } } else { menuCont.Component = requestData.Component //组件路径(vue页面完整路径,省略.vue后缀)"` } menuCont.Perm = publicmethod.GetUUid(3) //权限标识"` menuCont.Visible = requestData.Visible //显示状态(1:显示;2:隐藏,3:删除)"` menuCont.Sort = requestData.Sort //排序(数字越小排名越靠前))"` menuCont.Icon = requestData.Icon //菜单图标"` if types != 1 { menuCont.Redirect = requestData.Redirect //跳转路径"` } menuCont.ParentId = requestData.ParentId //父菜单ID"` menuCont.Time = time.Now().Unix() //创建时间"` menuCont.Outside = requestData.Outside //1:内部使用;2:外部使用;3:内外使用"` err := overall.CONSTANT_DB_AppPlatform.Create(&menuCont).Error if err != nil { publicmethod.Result(104, err, c) return } publicmethod.Result(0, err, c) } /* * @ 作者: 秦东 @ 时间: 2023-05-23 16:21:32 @ 功能: 查看菜单 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) GetOneMenuCont(c *gin.Context) { var requestData publicmethod.PublicId err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if requestData.Id == "" { publicmethod.Result(1, requestData, c, "未知菜单!") return } var menuCont modelAppPlatform.Menus err = menuCont.GetCont(map[string]interface{}{"`id`": requestData.Id}) if err != nil { publicmethod.Result(107, err, c) return } var sendCont EditMenuCont sendCont.Id = menuCont.Id sendCont.ParentId = menuCont.ParentId //父菜单ID sendCont.Name = menuCont.Name //菜单名称 sendCont.Visible = menuCont.Visible //菜单是否可见(1:是;2:否;) sendCont.Icon = menuCont.Icon //菜单图标 sendCont.Sort = menuCont.Sort //排序 sendCont.Component = menuCont.Component //组件路径 sendCont.Path = menuCont.Path //路由路径 sendCont.Redirect = menuCont.Redirect //跳转路由路径 sendCont.Types = publicmethod.MenuType(menuCont.Types) //菜单类型 sendCont.Outside = menuCont.Outside publicmethod.Result(0, sendCont, c) } /* * @ 作者: 秦东 @ 时间: 2023-05-23 16:44:14 @ 功能: 修改菜单 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) EditMenusCont(c *gin.Context) { var requestData EditMenuCont c.ShouldBindJSON(&requestData) if requestData.Id == 0 { publicmethod.Result(1, requestData, c, "未知菜单!") return } if requestData.Name == "" { publicmethod.Result(1, requestData, c, "请输入菜单名称!") return } if requestData.Visible == 0 { requestData.Visible = 1 } if requestData.Sort == 0 { requestData.Sort = 50 } if requestData.Outside == 0 { requestData.Outside = 1 } whe := publicmethod.MapOut[string]() whe["`id`"] = requestData.Id var menuCont modelAppPlatform.Menus err := menuCont.GetCont(whe) if err != nil { publicmethod.Result(107, err, c) return } editCont := publicmethod.MapOut[string]() if requestData.Name != menuCont.Name { editCont["name"] = requestData.Name } types := publicmethod.MenuTypeToInt(requestData.Types) if types != menuCont.Types { editCont["type"] = types } if requestData.Path != menuCont.Path { editCont["path"] = requestData.Path } if requestData.Component != menuCont.Component { if types != menuCont.Types && types == 2 { if requestData.ParentId != 0 { editCont["component"] = "public/index" } else { editCont["component"] = "Layout" } } else { editCont["component"] = requestData.Component } } if requestData.Visible == 0 { requestData.Visible = 1 } if requestData.Visible != menuCont.Visible { editCont["visible"] = requestData.Visible } if requestData.Sort == 0 { requestData.Sort = 50 } if requestData.Sort != menuCont.Sort { editCont["sort"] = requestData.Sort } if requestData.Icon != menuCont.Icon { editCont["icon"] = requestData.Icon } if requestData.Redirect != menuCont.Redirect { editCont["redirect"] = requestData.Redirect } if requestData.ParentId != menuCont.ParentId { editCont["parentId"] = requestData.ParentId } if len(editCont) > 0 { editCont["time"] = time.Now().Unix() } if requestData.Outside != menuCont.Outside { editCont["outside"] = requestData.Outside } err = menuCont.EiteCont(whe, editCont) if err != nil { publicmethod.Result(106, err, c) return } publicmethod.Result(0, err, c) } /* * @ 作者: 秦东 @ 时间: 2023-05-24 10:33:12 @ 功能: 删除菜单 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) DeltMenusCont(c *gin.Context) { var requestData publicmethod.PublicId err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if requestData.Id == "" { publicmethod.Result(1, requestData, c, "未知菜单!") return } var menuCont modelAppPlatform.Menus err = menuCont.GetCont(map[string]interface{}{"`id`": requestData.Id}) if err != nil { publicmethod.Result(107, err, c) return } editCont := publicmethod.MapOut[string]() editCont["`visible`"] = 3 editCont["`time`"] = time.Now().Unix() err = menuCont.EiteCont(map[string]interface{}{"`id`": requestData.Id}, editCont) if err != nil { publicmethod.Result(106, err, c) return } var sunMenus GetSunMenus sunMenus.GetSunMenusList(menuCont.Id) if len(sunMenus.Id) > 0 { overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Menus{}).Where("`id` IN ?", sunMenus.Id).Updates(editCont) } publicmethod.Result(0, err, c) } /* * @ 作者: 秦东 @ 时间: 2023-05-24 10:52:12 @ 功能: 获取所有子菜单 @ 参数 #superior 上级菜单Id @ 返回值 # @ 方法原型 #func (g *GetSunMenus) GetSunMenusList(superior int) */ func (g *GetSunMenus) GetSunMenusList(superior int) { var menuId []int err := overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Menus{}).Select("`id`").Where("`visible` IN (1,2) AND `parentId` = ?", superior).Find(&menuId).Error if err != nil { return } if len(menuId) > 0 { for _, v := range menuId { if !publicmethod.IsInTrue[int](v, g.Id) { g.Id = append(g.Id, v) } g.GetSunMenusList(v) } } }