Commit 868f2c8b authored by shajiaiming's avatar shajiaiming

api menu

parent 9b5c74c8
......@@ -3,6 +3,7 @@ package models
import (
"bwallet/pkg/setting"
"github.com/jinzhu/gorm"
"reflect"
)
type ApiModule struct {
......@@ -16,6 +17,17 @@ type ApiModule struct {
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 {
return setting.DatabaseSetting.Name_Manage + ".gli_api_module"
}
......@@ -29,3 +41,30 @@ func GetModules(maps interface{}) ([]*ApiModule, error) {
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) {
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 {
api.DELETE("/role", backend.DeleteRole)
api.GET("/user-permissions", backend.GetPermissions)
api.POST("/user-permission", backend.SetPermission)
api.POST("/user-role", backend.AddAdminRole)
api.POST("/set-role", backend.SetRole)
api.POST("/set-permission", backend.SetPermission)
api.GET("/api-modules", backend.GetApiModules)
api.GET("/api-menu", backend.GetMenu)
}
return r
......
......@@ -2,6 +2,8 @@ package api_module_service
import (
"bwallet/models"
"bwallet/pkg/gredis"
"encoding/json"
)
type ApiModule struct {
......@@ -28,6 +30,21 @@ func (a *ApiModule) GetAll() ([]*models.ApiModule, error) {
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{}) {
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