package systemuser import ( "strconv" "time" "github.com/flipped-aurora/gin-vue-admin/server/commonus" "github.com/flipped-aurora/gin-vue-admin/server/global" "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" "github.com/flipped-aurora/gin-vue-admin/server/model/systemuser" "github.com/gin-gonic/gin" ) //菜单相关 func (s *SysTemMenuApi) SystemMenuList(c *gin.Context) { // response.Result(101, global.Gva_Authority_Authentication, "数据获取失败!", c) var systemMenuList []systemuser.SystemMenu menuOperErr := global.GVA_DB_Master.Where("`m_steat` IN ?", []int{1, 2}).Order("m_sort asc").Order("m_id desc").Find(&systemMenuList).Error if menuOperErr != nil { response.Result(101, menuOperErr, "数据获取失败!", c) return } systemListMenu := GetMenuThree(1, 0, systemMenuList) sendData := commonus.MapOut() sendData["list"] = systemListMenu response.Result(0, sendData, "数据获取成功!", c) } //递归无限树 func GetMenuThree(jurisd int, parentId int64, threeData []systemuser.SystemMenu) []SystemMenuThree { treeList := []SystemMenuThree{} for _, v := range threeData { if v.ParentId == parentId { child := GetMenuThree(jurisd, v.Id, threeData) node := SystemMenuThree{ Id: v.Id, Title: v.Title, State: v.State, ParentId: v.ParentId, ApiUrl: v.ApiUrl, Time: v.Time, EiteTime: v.EiteTime, UserId: v.UserId, Sort: v.Sort, } isTrue, menuOper := MenuOperation(jurisd, v.Id) if isTrue == true { node.MenuOperation = menuOper } node.Child = child treeList = append(treeList, node) } } return treeList } //获取菜单操作项目 func MenuOperation(jurisd int, menuId int64) (isTrue bool, operation []systemuser.MenuOperation) { isTrue = false if jurisd != 1 { operErr := global.GVA_DB_Master.Where("`menu_id` = ? AND oper_id IN ?", menuId, global.Gva_Authority_Authentication).Order("oper_id desc").Find(&operation).Error if operErr == nil { isTrue = true } } else { operErr := global.GVA_DB_Master.Where("`menu_id` = ?", menuId).Order("oper_id desc").Find(&operation).Error if operErr == nil { isTrue = true } } return } //获取左侧菜单栏 func (s *SysTemMenuApi) GetMenu(c *gin.Context) { var systemMenuList []systemuser.SystemMenu menuOperErr := global.GVA_DB_Master.Where("`m_steat` IN ? AND m_id IN ?", []int{1, 2}, global.Gva_Authority_Authentication_Subsidiary).Order("m_id desc").Find(&systemMenuList).Error if menuOperErr != nil { response.Result(101, menuOperErr, "数据获取失败!", c) return } systemListMenu := GetMenuThree(2, 0, systemMenuList) sendData := commonus.MapOut() sendData["list"] = systemListMenu response.Result(0, sendData, "数据获取成功!", c) } //菜单列表(不带操作) func (s *SysTemMenuApi) GetMenuList(c *gin.Context) { var systemMenuList []systemuser.SystemMenu menuOperErr := global.GVA_DB_Master.Where("`m_steat` IN ? AND `m_parent` = 0", []int{1, 2}).Order("m_sort asc").Order("m_id desc").Find(&systemMenuList).Error if menuOperErr != nil { response.Result(101, menuOperErr, "数据获取失败!", c) return } sendData := commonus.MapOut() sendData["list"] = systemMenuList // systemListMenu := GetMenuThree(1, 0, systemMenuList) response.Result(0, sendData, "数据获取成功!", c) } //添加菜单 func (s *SysTemMenuApi) AddMenu(c *gin.Context) { // isTrue, userCont := commonus.AdminClientIdentity() isTrue, userCont := commonus.ClientIdentity() if isTrue != true { response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData addMenuData err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(102, err, "参数错误!请重新提交!", c) return } if requestData.Title == "" { response.Result(103, err, "请输入栏目名称!", c) return } if requestData.MenuUrl == "" { response.Result(104, err, "请输入栏目URL!", c) return } if requestData.Sort == 0 { requestData.Sort = 50 } // _, attriButeErr := strconv.ParseInt(userCont.AttriBute, 10, 64) //转换管理员属性部门 // if attriButeErr != nil { // response.Result(105, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) // return // } // var menuCont systemuser.SystemMenu // judgeErr := global.GVA_DB_Master.Model(&systemuser.SystemMenu{}).Select("m_id").Where("`m_title` = ?", requestData.Title).First(&menuCont).Error // if judgeErr == nil { // response.Result(106, isTrue, "该菜单名称已经存在!请不要重复添加!", c) // return // } // judgeUrlErr := global.GVA_DB_Master.Model(&systemuser.SystemMenu{}).Select("m_id").Where("`m_url` = ?", requestData.MenuUrl).First(&menuCont).Error // if judgeUrlErr == nil { // response.Result(107, isTrue, "该菜单URL已经存在!请不要重复添加!", c) // return // } var saveMenu systemuser.SystemMenu saveMenu.Title = requestData.Title saveMenu.State = 1 saveMenu.ParentId = int64(requestData.ParentId) saveMenu.ApiUrl = requestData.MenuUrl saveMenu.Time = time.Now().Unix() saveMenu.EiteTime = time.Now().Unix() userKey, userKeyErr := strconv.ParseInt(userCont.Key, 10, 64) if userKeyErr == nil { saveMenu.UserId = userKey } saveMenu.Sort = requestData.Sort addassessInfoErr := global.GVA_DB_Master.Create(&saveMenu).Error if addassessInfoErr != nil { response.Result(108, saveMenu, "数据写入失败!", c) } else { response.Result(0, saveMenu, "数据写入成功!", c) } } //修改菜单 func (s *SysTemMenuApi) EiteMenu(c *gin.Context) { // isTrue, _ := commonus.AdminClientIdentity() isTrue, _ := commonus.ClientIdentity() if isTrue != true { response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData eiteMenuData err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(102, err, "参数错误!请重新提交!", c) return } if requestData.Id == 0 { response.Result(103, err, "请选择您要修改的菜单!", c) return } if requestData.Title == "" { response.Result(104, err, "请输入栏目名称!", c) return } if requestData.MenuUrl == "" { response.Result(105, err, "请输入栏目URL!", c) return } if requestData.Sort == 0 { requestData.Sort = 50 } var menuCont systemuser.SystemMenu judgeOldErr := global.GVA_DB_Master.Model(&systemuser.SystemMenu{}).Select("m_id", "m_title", "m_url").Where("`m_id` = ?", requestData.Id).First(&menuCont).Error if judgeOldErr != nil { response.Result(106, isTrue, "该菜单不存在!请确认后再修改", c) return } judgeErr := global.GVA_DB_Master.Model(&systemuser.SystemMenu{}).Select("m_id").Where("`m_title` = ? AND `m_title` <> ?", requestData.Title, menuCont.Title).First(&menuCont).Error if judgeErr == nil { response.Result(107, isTrue, "该菜单名称已经存在!请不要重复添加!", c) return } var menuConts systemuser.SystemMenu judgeUrlErr := global.GVA_DB_Master.Model(&systemuser.SystemMenu{}).Select("m_id").Where("`m_url` = ? AND `m_url` <> ?", requestData.MenuUrl, menuCont.ApiUrl).First(&menuConts).Error if judgeUrlErr == nil { response.Result(108, isTrue, "该菜单URL已经存在!请不要重复添加!", c) return } saveData := commonus.MapOut() saveData["m_title"] = requestData.Title saveData["m_parent"] = int64(requestData.ParentId) saveData["m_url"] = requestData.MenuUrl saveData["m_sort"] = requestData.Sort saveData["m_eite_time"] = time.Now().Unix() isErr := eiteAssEssInfoCont(int64(requestData.Id), saveData) if isErr != nil { response.Result(109, isErr, "修改失败!", c) return } response.Result(0, saveData, "修改成功!", c) } //菜单编辑操作 func eiteAssEssInfoCont(saveId int64, saveData map[string]interface{}) (menuErr error) { var menuCont systemuser.SystemMenu menuErr = global.GVA_DB_Master.Model(&menuCont).Where("m_id = ?", saveId).Updates(saveData).Error return } //菜单删除 func (s *SysTemMenuApi) DelMenu(c *gin.Context) { // isTrue, _ := commonus.AdminClientIdentity() isTrue, _ := commonus.ClientIdentity() if isTrue != true { response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData commonus.DelParameter err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "参数错误!请重新提交!", c) return } if requestData.Id == 0 && requestData.OutId == "" { response.Result(102, err, "参数错误!请重新提交!", c) return } if requestData.OutId != "" { idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64) if inIntErr == nil { requestData.Id = idInt } } if requestData.State == 0 { requestData.State = 1 } saveData := commonus.MapOut() saveData["m_steat"] = requestData.State saveData["m_eite_time"] = time.Now().Unix() if requestData.IsDel != 1 { isErr := eiteAssEssInfoCont(requestData.Id, saveData) if isErr != nil { response.Result(109, isErr, "修改失败!", c) return } response.Result(0, saveData, "修改成功!", c) } else { if requestData.State == 3 { var menuConts systemuser.SystemMenu archiveInfoErr := global.GVA_DB_Master.Where("m_id = ? OR `m_parent` = ?", requestData.Id, requestData.Id).Delete(&menuConts).Error if archiveInfoErr != nil { response.Result(104, requestData, "删除失败!", c) return } response.Result(0, requestData, "删除成功!", c) } else { isErr := eiteAssEssInfoCont(requestData.Id, saveData) if isErr != nil { response.Result(109, isErr, "修改失败!", c) return } response.Result(0, saveData, "修改成功!", c) } } } //添加菜单操作 func (s *SysTemMenuApi) AddMenuOperation(c *gin.Context) { // isTrue, _ := commonus.AdminClientIdentity() isTrue, _ := commonus.ClientIdentity() if isTrue != true { response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData addMenuOper err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "参数错误!请重新提交!", c) return } if requestData.MenuId == "" { response.Result(102, err, "参数错误!请重新提交!", c) return } var menuIdInt int64 idInt, inIntErr := strconv.ParseInt(requestData.MenuId, 10, 64) if inIntErr == nil { menuIdInt = idInt } else { response.Result(102, err, "参数错误!请重新提交!", c) return } if requestData.Title == "" { response.Result(102, err, "参数错误!请重新提交!", c) return } var menuCont systemuser.MenuOperation judgeErr := global.GVA_DB_Master.Model(&systemuser.MenuOperation{}).Select("m_id").Where("`menu_id` = ?", menuIdInt).Where("`oper_title` = ?", requestData.Title).First(&menuCont).Error if judgeErr == nil { response.Result(106, isTrue, "该菜单的此操作名称已经存在!请不要重复添加!", c) return } var saveMenuOper systemuser.MenuOperation saveMenuOper.OperTitle = requestData.Title saveMenuOper.MenuId = menuIdInt addassessInfoErr := global.GVA_DB_Master.Create(&saveMenuOper).Error if addassessInfoErr != nil { response.Result(108, saveMenuOper, "数据写入失败!", c) } else { response.Result(0, saveMenuOper, "数据写入成功!", c) } } //删除菜单操作 func (s *SysTemMenuApi) DelMenuOperation(c *gin.Context) { // isTrue, _ := commonus.AdminClientIdentity() isTrue, _ := commonus.ClientIdentity() if isTrue != true { response.Result(101, isTrue, "您的身份令牌已经失效!请重新登录获取身份令牌!", c) return } var requestData commonus.DelParameter err := c.ShouldBindJSON(&requestData) if err != nil { response.Result(101, err, "参数错误!请重新提交!", c) return } if requestData.Id == 0 && requestData.OutId == "" { response.Result(102, err, "参数错误!请重新提交!", c) return } if requestData.OutId != "" { idInt, inIntErr := strconv.ParseInt(requestData.OutId, 10, 64) if inIntErr == nil { requestData.Id = idInt } } var menuContOper systemuser.MenuOperation archiveInfoErr := global.GVA_DB_Master.Where("oper_id = ?", requestData.Id).Delete(&menuContOper).Error if archiveInfoErr != nil { response.Result(104, requestData, "删除失败!", c) return } response.Result(0, requestData, "删除成功!", c) }