package api func GetGameApiInstance() IGameApi { return gameApiInstance } var gameApiInstance IGameApi type IGameApi interface { GetRoutes(req *GetRoutesReq) (*GetRoutesRsp, error) // 用户服务通过用户权限拉取游戏项目路由权限,生成动态菜单 } func RegisterGameApi(handler IGameApi) { gameApiInstance = handler } type ResourceBtnInfo struct { Key string `json:"key"` // 按钮关键词,用于后端判断点击按钮 Name string `json:"name"` // 按钮中文名 BtnType string `json:"btn_type"` // primary warn等 } type ResourceInitInfo struct { Resource string `json:"resource"` Desc string `json:"desc"` ShowMethods []string `json:"show_methods"` // 资源权限列表 MethodsPermissionStr []string `json:"methods_permission"` // 资源权限字符串 GlobalBtns []*ResourceBtnInfo `json:"global_btns"` // 页面全局按钮,放在新增后面 RowBtns []*ResourceBtnInfo `json:"row_btns"` // 页面每一行的功能按钮 } type ProjectInitInfo struct { ProjectId int `json:"project_id"` ProjectName string `json:"project_name"` ResourceList []*ResourceInitInfo `json:"resource_list"` // 权限过滤后客户端可以显示的资源操作 ResourceTotalList []*ResourceInitInfo `json:"resource_total_list"` // 所有资源操作权限,可以用来做权限分配树初始化 } type GetRoutesReq struct { IsAdmin bool Permissions []string } type GetRoutesRsp struct { Projects []*ProjectInitInfo }