Commit 868f2c8b authored by shajiaiming's avatar shajiaiming

api menu

parent 9b5c74c8
...@@ -3,6 +3,7 @@ package models ...@@ -3,6 +3,7 @@ package models
import ( import (
"bwallet/pkg/setting" "bwallet/pkg/setting"
"github.com/jinzhu/gorm" "github.com/jinzhu/gorm"
"reflect"
) )
type ApiModule struct { type ApiModule struct {
...@@ -16,6 +17,17 @@ type ApiModule struct { ...@@ -16,6 +17,17 @@ type ApiModule struct {
Child []*ApiModule `json:"child,omitempty"` Child []*ApiModule `json:"child,omitempty"`
} }
type Menu struct {
Model
Path string `json:"path,omitempty"`
Method string `json:"method,omitempty"`
Module string `json:"module"`
ParentId int `json:"parent_id,omitempty"`
Child []*Menu `json:"child,omitempty"`
}
func (a ApiModule) TableName() string { func (a ApiModule) TableName() string {
return setting.DatabaseSetting.Name_Manage + ".gli_api_module" return setting.DatabaseSetting.Name_Manage + ".gli_api_module"
} }
...@@ -29,3 +41,30 @@ func GetModules(maps interface{}) ([]*ApiModule, error) { ...@@ -29,3 +41,30 @@ func GetModules(maps interface{}) ([]*ApiModule, error) {
return modules, nil return modules, nil
} }
func GetMenu(maps interface{}) []*Menu {
var menus []*Menu
var res []*Menu
db.Table(setting.DatabaseSetting.Name_Manage+".gli_api_module").Where("parent_id = ?", 0).Order("id").Find(&menus)
if reflect.ValueOf(menus).IsValid() {
res = tree(menus)
}
return res
}
func tree(menus []*Menu) []*Menu {
var nodes []*Menu
if reflect.ValueOf(menus).IsValid() {
for k, v := range menus {
db.Table(setting.DatabaseSetting.Name_Manage+".gli_api_module").Where("parent_id= ?", v.ID).Order("id").Find(&nodes)
for kk, _ := range nodes {
menus[k].Child = append(menus[k].Child, nodes[kk])
}
tree(nodes)
}
}
return menus
}
...@@ -25,3 +25,10 @@ func GetApiModules(c *gin.Context) { ...@@ -25,3 +25,10 @@ func GetApiModules(c *gin.Context) {
handler.SendResponse(c, nil, moudles) handler.SendResponse(c, nil, moudles)
} }
func GetMenu(c *gin.Context) {
apiModuleService := api_module_service.ApiModule{}
moudles := apiModuleService.GetMenu()
handler.SendResponse(c, nil, moudles)
}
\ No newline at end of file
...@@ -152,11 +152,13 @@ func InitRouter() *gin.Engine { ...@@ -152,11 +152,13 @@ func InitRouter() *gin.Engine {
api.DELETE("/role", backend.DeleteRole) api.DELETE("/role", backend.DeleteRole)
api.GET("/user-permissions", backend.GetPermissions) api.GET("/user-permissions", backend.GetPermissions)
api.POST("/user-permission", backend.SetPermission)
api.POST("/user-role", backend.AddAdminRole) api.POST("/user-role", backend.AddAdminRole)
api.POST("/set-role", backend.SetRole) api.POST("/set-role", backend.SetRole)
api.POST("/set-permission", backend.SetPermission)
api.GET("/api-modules", backend.GetApiModules) api.GET("/api-modules", backend.GetApiModules)
api.GET("/api-menu", backend.GetMenu)
} }
return r return r
......
...@@ -2,6 +2,8 @@ package api_module_service ...@@ -2,6 +2,8 @@ package api_module_service
import ( import (
"bwallet/models" "bwallet/models"
"bwallet/pkg/gredis"
"encoding/json"
) )
type ApiModule struct { type ApiModule struct {
...@@ -28,6 +30,21 @@ func (a *ApiModule) GetAll() ([]*models.ApiModule, error) { ...@@ -28,6 +30,21 @@ func (a *ApiModule) GetAll() ([]*models.ApiModule, error) {
return result, nil return result, nil
} }
func (a *ApiModule) GetMenu() []*models.Menu {
menu_cache, _ := gredis.Get("api_menu", 1)
if menu_cache != nil {
var menu []*models.Menu
err := json.Unmarshal([]byte(menu_cache), &menu)
if err != nil {
}
return menu
}
menu := models.GetMenu(a.getMaps())
gredis.Set("api_menu", menu, 3600, 1)
return menu
}
func (a *ApiModule) getMaps() (map[string]interface{}) { func (a *ApiModule) getMaps() (map[string]interface{}) {
maps := make(map[string]interface{}) maps := make(map[string]interface{})
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment