package systemuser
import (
"strconv"
"time"
"gin_server_admin/commonus"
"gin_server_admin/global"
"gin_server_admin/model/common/response"
"gin_server_admin/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 ( 1001 , 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 ( 1001 , 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 ( 1001 , 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 ( 1001 , 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 ( 1001 , 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 )
}