feat: 升级 samber/do v1 → v2
This commit is contained in:
+43
-11
@@ -1,16 +1,48 @@
|
||||
package base
|
||||
|
||||
import (
|
||||
"git.fsdpf.net/go/reflux"
|
||||
"git.fsdpf.net/go/reflux/valuex"
|
||||
)
|
||||
|
||||
// role_uuid => value
|
||||
type ResRoleValue map[string]string
|
||||
|
||||
type ResConfigure struct {
|
||||
Uuid string `db:"uuid"`
|
||||
ResourceUuid string `db:"resource_uuid"`
|
||||
Key string `db:"key"`
|
||||
Value string `db:"value"`
|
||||
Label string `db:"label"`
|
||||
Type string `db:"type"`
|
||||
IsPrivate bool `db:"isPrivate"`
|
||||
Desc string `db:"desc"`
|
||||
UpdatedAt string `db:"updated_at"`
|
||||
CreatedAt string `db:"created_at"`
|
||||
Uuid string `db:"uuid"`
|
||||
ResourceUuid string `db:"resource_uuid"`
|
||||
Key string `db:"key"`
|
||||
Value string `db:"value"`
|
||||
Label string `db:"label"`
|
||||
Type string `db:"type"`
|
||||
IsPrivate bool `db:"isPrivate"`
|
||||
Desc string `db:"desc"`
|
||||
RoleValues []ResRoleValue `db:"role_values"`
|
||||
UpdatedAt string `db:"updated_at"`
|
||||
CreatedAt string `db:"created_at"`
|
||||
}
|
||||
|
||||
type GetResConfigures func(uuid string) []ResConfigure
|
||||
// GetValueByRoles 根据角色优先级获取配置值
|
||||
//
|
||||
// - roles: 角色UUIDs
|
||||
//
|
||||
// 返回: valuex.Accessor 对象和是否找到角色特定值的标志
|
||||
func (rc *ResConfigure) GetValueByRoles(roles ...string) (valuex.Accessor, bool) {
|
||||
// 如果没有角色值配置或没有传入角色,返回默认值
|
||||
if len(rc.RoleValues) == 0 || len(roles) == 0 {
|
||||
return reflux.New(rc.Value), false
|
||||
}
|
||||
|
||||
for _, rv := range rc.RoleValues {
|
||||
for _, role := range roles {
|
||||
if value, exists := rv[role]; exists {
|
||||
return reflux.New(value), true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 没有找到匹配的角色值,返回默认值
|
||||
return reflux.New(rc.Value), false
|
||||
}
|
||||
|
||||
type GetResConfigure func(key string, roles ...string) (valuex.Accessor, bool)
|
||||
|
||||
Reference in New Issue
Block a user