应用集成平台服务端
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.

415 lines
9.6 KiB

3 years ago
package menus
import (
"appPlatform/models/modelAppPlatform"
"appPlatform/overall"
"appPlatform/overall/publicmethod"
3 years ago
"fmt"
"sort"
3 years ago
"time"
3 years ago
"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
3 years ago
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
// })
3 years ago
routerThree := publicmethod.GetMenuRouterThree(0, menusList)
publicmethod.Result(0, routerThree, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2023-05-22 15:36:33
@ 功能: 获取菜单列表树
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) GetMenusListTree(c *gin.Context) {
3 years ago
// var requestData ShearMenu
// c.ShouldBindJSON(&requestData)
// c.ShouldBindQuery(&requestData)
// id := c.Query("id")
requestData := c.Query("keywords")
fmt.Printf("没有路由!=====>%v\n", requestData)
3 years ago
var menusList []modelAppPlatform.Menus
gormDb := overall.CONSTANT_DB_AppPlatform.Where("visible IN ?", []int{1, 2})
3 years ago
if requestData != "" {
gormDb = gormDb.Where("`name` LIKE ?", "%"+requestData+"%")
3 years ago
}
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
})
3 years ago
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)
}
3 years ago
/*
*
@ 作者: 秦东
@ 时间: 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
}
3 years ago
types := publicmethod.MenuTypeToInt(requestData.Types)
var menuCont modelAppPlatform.Menus
3 years ago
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 //跳转路径"`
}
3 years ago
menuCont.ParentId = requestData.ParentId //父菜单ID"`
menuCont.Time = time.Now().Unix() //创建时间"`
menuCont.Outside = requestData.Outside //1:内部使用;2:外部使用;3:内外使用"`
3 years ago
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
3 years ago
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
}
3 years ago
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 {
3 years ago
if types != menuCont.Types && types == 2 {
if requestData.ParentId != 0 {
editCont["component"] = "public/index"
} else {
editCont["component"] = "Layout"
}
} else {
editCont["component"] = requestData.Component
}
3 years ago
}
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
}
3 years ago
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)
}
}
}