package controllers import ( "box-gm/models" "github.com/astaxie/beego" // "log" ) type MainController struct { beego.Controller } // IndexInfo 界面信息,每新增一个功能都要新增该结构 type IndexInfo struct { Id int //界面id,模板文件中会使用到这个id,作为焦点 Name string //界面在导航中的显示名 Url string //界面的url地址 } type NavInfo struct { Name string IndexList []*IndexInfo } func getIndex(permission int64) []*NavInfo { var navList []*NavInfo if (permission & (1 << uint(models.ModelUser))) != 0 { navInfo := &NavInfo{ Name: "系统", } navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelUser, Name: "用户管理", Url: "user.html", }) navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelUser, Name: "角色管理", Url: "role.html", }) navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelUser, Name: "日志管理", Url: "log.html", }) navList = append(navList, navInfo) } if (permission & (1 << uint(models.ModelStatment))) != 0 { navInfo := &NavInfo{ Name: "统计数据", } navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelUser, Name: "统计注册", Url: "register.html", }) navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelUser, Name: "统计留存", Url: "retained.html", }) navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelUser, Name: "统计登录", Url: "login.html", }) navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelUser, Name: "在线时长", Url: "onlinetime.html", }) navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelUser, Name: "玩家资源", Url: "resource.html", }) navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelUser, Name: "统计支付金额", Url: "pay.html", }) navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelUser, Name: "统计商品", Url: "goods.html", }) navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelUser, Name: "付费人数", Url: "paynum.html", }) navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelUser, Name: "订单查询", Url: "orderquery.html", }) navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelUser, Name: "客户端埋点", Url: "client.html", }) navList = append(navList, navInfo) } if (permission & (1 << uint(models.ModelRealTime))) != 0 { navInfo := &NavInfo{ Name: "实时数据", } navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelRealTime, Name: "实时注册", Url: "rtregister.html", }) navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelRealTime, Name: "实时登录", Url: "rtlogin.html", }) navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelRealTime, Name: "实时在线", Url: "rtonline.html", }) navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelRealTime, Name: "实时支付金额", Url: "rtpay.html", }) navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelRealTime, Name: "实时支付登录", Url: "rtpaylogin.html", }) navList = append(navList, navInfo) } if (permission & (1 << uint(models.ModelSystem))) != 0 { navInfo := &NavInfo{ Name: "游戏系统设置", } navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelSystem, Name: "版本更新", Url: "hotfix.html", }) navInfo.IndexList = append(navInfo.IndexList, &IndexInfo{ Id: models.ModelSystem, Name: "兑换码", Url: "exchangecode.html", }) navList = append(navList, navInfo) } return navList } // 主界面 // 通过c.Data[key]返回数据 // ace模板文件通过{{.key}}获取数据 func (c *MainController) Get() { // 返回登陆会话信息,如果没有登陆,跳转到登陆界面 userinfo := c.GetSession("user") if userinfo == nil { c.Ctx.Redirect(302, "/accountlogin") return } c.Data["title"] = beego.AppConfig.String("apptitle") //用户权限 user_permission := models.GetPermission(userinfo.(*LoginInfo).Username) c.Data["navList"] = getIndex(user_permission) //界面模板文件 c.TplName = "index.tpl" }