You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
414 lines
9.6 KiB
414 lines
9.6 KiB
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)
|
|
}
|
|
}
|
|
}
|
|
|