2 Star 1 Fork 2

go-mao/mao

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
permission_domain.go 1.40 KB
一键复制 编辑 原始数据 按行查看 历史
haitgo 提交于 2023-12-30 12:04 +08:00 . 调整hook参数传递方式
package frame
import "strings"
/*
权限代号命名规则
user=用户
user.create=用户创建
2=用户
2.2=用户创建
*/
type permissionDomain struct {
server *Server
permissionsMap map[string]*Permission
permissions []*Permission
}
// 权限输出
type Permission struct {
Name string `json:"name"`
Id string `json:"id"`
Childs []*Permission `json:"childs"`
Pid string `json:"pid"`
}
func (this *permissionDomain) add(name string, codes ...string) {
if len(codes) != 1 {
return
}
var code = codes[0]
if this.permissionsMap == nil {
this.permissionsMap = make(map[string]*Permission)
}
if _, ok := this.permissionsMap[code]; ok {
return
}
p := &Permission{Name: name, Id: code}
codeArr := strings.Split(code, ".")
if len(codeArr) > 1 {
p.Pid = strings.Join(codeArr[:len(codeArr)-1], ".")
}
this.permissionsMap[code] = p
this.permissions = append(this.permissions, p)
}
func (this *permissionDomain) _getPermissions(parentCode string, list []*Permission) []*Permission {
plist := make([]*Permission, 0)
for index, item := range this.permissions {
if item.Pid == parentCode {
item.Childs = this._getPermissions(item.Id, this.permissions[index+1:])
plist = append(plist, item)
}
}
return plist
}
// 获取所有权限结构树
func (this *permissionDomain) getPermissions() []*Permission {
return this._getPermissions("", this.permissions)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/go-mao/mao.git
git@gitee.com:go-mao/mao.git
go-mao
mao
mao
v1.0.25

搜索帮助