package hdl import ( "applet/app/e" "applet/app/enum" "applet/app/md" "applet/app/svc" "applet/app/utils" db "code.fnuoos.com/zhimeng/model.git/src" "code.fnuoos.com/zhimeng/model.git/src/implement" "github.com/gin-gonic/gin" ) func MenuList(c *gin.Context) { masterId := svc.GetMasterId(c) engine := db.DBs[masterId] admin := svc.GetUser(c) qrcodeWithBatchRecordsDb := implement.NewPermissionGroupDb(engine) groupList, err := qrcodeWithBatchRecordsDb.FindPermissionGroupV2() if err != nil { e.OutErr(c, e.ERR_DB_ORM, err.Error()) return } // 1、查询出当前用户所有角色 adminRoleDb := implement.NewAdminRoleDb(engine) roles, err := adminRoleDb.FindAdminRole(admin.AdmId) if err != nil { e.OutErr(c, e.ERR_DB_ORM, err.Error()) return } roleDb := implement.NewRoleDb(engine, 0) var adminHasPermissionGroupIds []string for _, v := range *roles { list, _, err1 := roleDb.FindPermissionGroupByRole(v.RoleId) if err1 != nil { e.OutErr(c, e.ERR_DB_ORM, err1.Error()) return } for _, v1 := range list { adminHasPermissionGroupIds = append(adminHasPermissionGroupIds, utils.IntToStr(v1.PermissionGroup.Id)) } } var tempRespMap = map[string]*md.PermissionGroupListResp{} var tempRespMapKeys []string for _, v := range *groupList { var isCheck bool if admin.IsSuperAdministrator == enum.IsSuperAdministratorTure { isCheck = true } else { isCheck = false } if utils.InArr(utils.IntToStr(v.Id), adminHasPermissionGroupIds) { isCheck = true } if v.State == enum.PermissionGroupStateForDiscard { isCheck = false } tempRespMap[utils.IntToStr(v.Id)] = &md.PermissionGroupListResp{ Id: v.Id, Name: v.Name, Key: v.Key, State: v.State, ParentId: v.ParentId, CreateAt: v.CreateAt, UpdateAt: v.UpdateAt, IsCheck: isCheck, } tempRespMapKeys = append(tempRespMapKeys, utils.IntToStr(v.Id)) } for _, v := range tempRespMap { if v.ParentId != 0 && tempRespMap[utils.IntToStr(v.ParentId)].ParentId != 0 { tempRespMap[utils.IntToStr(v.ParentId)].SubPermissionGroupList = append(tempRespMap[utils.IntToStr(v.ParentId)].SubPermissionGroupList, *v) } } for _, v := range tempRespMap { if v.ParentId != 0 && tempRespMap[utils.IntToStr(v.ParentId)].ParentId == 0 { tempRespMap[utils.IntToStr(v.ParentId)].SubPermissionGroupList = append(tempRespMap[utils.IntToStr(v.ParentId)].SubPermissionGroupList, *v) } } var resp []*md.PermissionGroupListResp for _, v := range tempRespMapKeys { if tempRespMap[v].ParentId == 0 { resp = append(resp, tempRespMap[v]) } } e.OutSuc(c, map[string]interface{}{ "list": resp, "state": []map[string]interface{}{ { "name": enum.PermissionGroupState(enum.PermissionGroupStateForNormal).String(), "value": enum.PermissionGroupStateForNormal, }, { "name": enum.PermissionGroupState(enum.PermissionGroupStateForDiscard).String(), "value": enum.PermissionGroupStateForDiscard, }, }, }, nil) return }