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 )
}
}
}