1
0
forked from x/icebergs

add commend

This commit is contained in:
shylinux 2020-04-20 11:28:04 +08:00
parent 03f5c287cd
commit 83acf51f5a
2 changed files with 140 additions and 14 deletions

View File

@ -193,6 +193,60 @@ var Index = &ice.Context{Name: "nfs", Help: "存储模块",
} }
}) })
}})) }}))
m.Cmd(ice.APP_COMMEND, "add", "dir", "base", m.AddCmd(&ice.Command{Name: "commend word", Help: "推荐引擎", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
switch arg[0] {
case "set":
m.Cmdy("nfs.dir", arg[5])
return
}
travel(m, "./", "", func(name string) {
score := 0
m.Richs(ice.APP_COMMEND, "meta.user", m.Option(ice.MSG_USERNAME), func(key string, value map[string]interface{}) {
m.Grows(ice.APP_COMMEND, kit.Keys("meta.user", kit.MDB_HASH, key, "like"), "", "", func(index int, value map[string]interface{}) {
switch kit.Value(value, "extra.engine") {
case "dir":
if value["type"] == strings.TrimPrefix(path.Ext(name), ".") {
score += 1
}
if value["name"] == path.Base(name) {
score += 2
}
if value["text"] == name {
score += 3
}
default:
}
})
m.Grows(cmd, kit.Keys("meta.user", kit.MDB_HASH, key, "hate"), "", "", func(index int, value map[string]interface{}) {
switch kit.Value(value, "extra.engine") {
case "dir":
if value["type"] == strings.TrimPrefix(path.Ext(name), ".") {
score -= 1
}
if value["name"] == path.Base(name) {
score -= 2
}
if value["text"] == name {
score -= 3
}
default:
}
})
})
if s, e := os.Stat(name); e == nil {
m.Push("pod", m.Option(ice.MSG_USERPOD))
m.Push("engine", "dir")
m.Push("favor", "file")
m.Push("id", kit.FmtSize(s.Size()))
m.Push("score", score)
m.Push("type", strings.TrimPrefix(path.Ext(name), "."))
m.Push("name", path.Base(name))
m.Push("text", name)
}
})
}}))
}}, }},
"dir": {Name: "dir name field auto", Help: "目录", List: kit.List( "dir": {Name: "dir name field auto", Help: "目录", List: kit.List(

View File

@ -88,6 +88,7 @@ var Index = &ice.Context{Name: "chat", Help: "聊天中心",
"fe", "volcanos", "fe", "volcanos",
)}, )},
"search": {Name: "search", Help: "search", Value: kit.Data(kit.MDB_SHORT, kit.MDB_NAME)}, "search": {Name: "search", Help: "search", Value: kit.Data(kit.MDB_SHORT, kit.MDB_NAME)},
"commend": {Name: "commend", Help: "commend", Value: kit.Data(kit.MDB_SHORT, kit.MDB_NAME, "user", kit.Data(kit.MDB_SHORT, kit.MDB_NAME))},
}, },
Commands: map[string]*ice.Command{ Commands: map[string]*ice.Command{
ice.ICE_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { ice.ICE_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
@ -96,7 +97,7 @@ var Index = &ice.Context{Name: "chat", Help: "聊天中心",
m.Watch(ice.USER_CREATE, m.Prefix("auto")) m.Watch(ice.USER_CREATE, m.Prefix("auto"))
}}, }},
ice.ICE_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { ice.ICE_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Save("river") m.Save("river", "search", "commend")
}}, }},
"init": {Name: "init", Help: "初始化", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { "init": {Name: "init", Help: "初始化", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
@ -551,20 +552,20 @@ var Index = &ice.Context{Name: "chat", Help: "聊天中心",
switch arg[0] { switch arg[0] {
case "add": case "add":
if m.Richs("search", nil, arg[1], nil) == nil { if m.Richs(cmd, nil, arg[1], nil) == nil {
m.Rich("search", nil, kit.Data(kit.MDB_NAME, arg[1])) m.Rich(cmd, nil, kit.Data(kit.MDB_NAME, arg[1]))
} }
m.Richs("search", nil, arg[1], func(key string, value map[string]interface{}) { m.Richs(cmd, nil, arg[1], func(key string, value map[string]interface{}) {
m.Grow("search", kit.Keys(kit.MDB_HASH, key), kit.Dict( m.Grow(cmd, kit.Keys(kit.MDB_HASH, key), kit.Dict(
kit.MDB_NAME, arg[2], kit.MDB_TEXT, arg[3:], kit.MDB_NAME, arg[2], kit.MDB_TEXT, arg[3:],
)) ))
}) })
case "get": case "get":
wg := &sync.WaitGroup{} wg := &sync.WaitGroup{}
m.Richs("search", nil, arg[1], func(key string, value map[string]interface{}) { m.Richs(cmd, nil, arg[1], func(key string, value map[string]interface{}) {
wg.Add(1) wg.Add(1)
m.Gos(m, func(m *ice.Message) { m.Gos(m, func(m *ice.Message) {
m.Grows("search", kit.Keys(kit.MDB_HASH, key), "", "", func(index int, value map[string]interface{}) { m.Grows(cmd, kit.Keys(kit.MDB_HASH, key), "", "", func(index int, value map[string]interface{}) {
m.Cmdy(value[kit.MDB_TEXT], arg[2:]) m.Cmdy(value[kit.MDB_TEXT], arg[2:])
}) })
wg.Done() wg.Done()
@ -577,20 +578,20 @@ var Index = &ice.Context{Name: "chat", Help: "聊天中心",
break break
} }
m.Richs("search", nil, arg[2], func(key string, value map[string]interface{}) { m.Richs(cmd, nil, arg[2], func(key string, value map[string]interface{}) {
m.Grows("search", kit.Keys(kit.MDB_HASH, key), "", "", func(index int, value map[string]interface{}) { m.Grows(cmd, kit.Keys(kit.MDB_HASH, key), "", "", func(index int, value map[string]interface{}) {
m.Cmdy(value[kit.MDB_TEXT], "set", arg[3:]) m.Cmdy(value[kit.MDB_TEXT], "set", arg[3:])
}) })
}) })
default: default:
if len(arg) == 2 { if len(arg) == 2 {
m.Richs("search", nil, "*", func(key string, value map[string]interface{}) { m.Richs(cmd, nil, "*", func(key string, value map[string]interface{}) {
m.Push(key, value) m.Push(key, value)
}) })
break break
} }
if len(arg) == 3 { if len(arg) == 3 {
m.Richs("search", nil, "*", func(key string, value map[string]interface{}) { m.Richs(cmd, nil, "*", func(key string, value map[string]interface{}) {
m.Push(key, value) m.Push(key, value)
}) })
break break
@ -598,12 +599,83 @@ var Index = &ice.Context{Name: "chat", Help: "聊天中心",
m.Cmdy(ice.WEB_LABEL, arg[0], arg[1], "web.chat.search", "get", arg[2:]) m.Cmdy(ice.WEB_LABEL, arg[0], arg[1], "web.chat.search", "get", arg[2:])
} }
}}, }},
"commend": {Name: "commend label=some word=请求响应 auto", Help: "推荐引擎", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { "commend": {Name: "commend label pod engine work auto", Help: "推荐引擎", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if len(arg) < 2 { if len(arg) < 2 {
m.Cmdy(ice.WEB_LABEL, arg) m.Cmdy(ice.WEB_LABEL, arg)
return return
} }
m.Cmdy(ice.WEB_LABEL, arg[0], "*", "favor", "search", arg[1:])
switch arg[0] {
case "add":
if m.Richs(cmd, nil, arg[1], nil) == nil {
m.Rich(cmd, nil, kit.Data(kit.MDB_NAME, arg[1]))
}
m.Richs(cmd, nil, arg[1], func(key string, value map[string]interface{}) {
m.Grow(cmd, kit.Keys(kit.MDB_HASH, key), kit.Dict(
kit.MDB_NAME, arg[2], kit.MDB_TEXT, arg[3:],
))
})
case "get":
wg := &sync.WaitGroup{}
m.Richs(cmd, nil, arg[1], func(key string, value map[string]interface{}) {
wg.Add(1)
m.Gos(m, func(m *ice.Message) {
m.Grows(cmd, kit.Keys(kit.MDB_HASH, key), "", "", func(index int, value map[string]interface{}) {
m.Cmdy(value[kit.MDB_TEXT], arg[2:])
})
wg.Done()
})
})
wg.Wait()
case "set":
if arg[1] != "" {
// m.Cmdy(ice.WEB_SPACE, arg[1], "web.chat.commend", "set", "", arg[2:])
// break
}
if m.Richs(cmd, "meta.user", m.Option(ice.MSG_USERNAME), nil) == nil {
m.Rich(cmd, "meta.user", kit.Dict(
kit.MDB_NAME, m.Option(ice.MSG_USERNAME),
))
}
switch m.Option("_action") {
case "喜欢":
m.Richs(cmd, "meta.user", m.Option(ice.MSG_USERNAME), func(key string, value map[string]interface{}) {
m.Grow(cmd, kit.Keys("meta.user", kit.MDB_HASH, key, "like"), kit.Dict(
kit.MDB_EXTRA, kit.Dict("engine", arg[2], "favor", arg[3], "id", arg[4]),
kit.MDB_TYPE, arg[5], kit.MDB_NAME, arg[6], kit.MDB_TEXT, arg[7],
))
})
case "讨厌":
m.Richs(cmd, "meta.user", m.Option(ice.MSG_USERNAME), func(key string, value map[string]interface{}) {
m.Grow(cmd, kit.Keys("meta.user", kit.MDB_HASH, key, "hate"), kit.Dict(
kit.MDB_EXTRA, kit.Dict("engine", arg[2], "favor", arg[3], "id", arg[4]),
kit.MDB_TYPE, arg[5], kit.MDB_NAME, arg[6], kit.MDB_TEXT, arg[7],
))
})
}
m.Richs(cmd, nil, arg[2], func(key string, value map[string]interface{}) {
m.Grows(cmd, kit.Keys(kit.MDB_HASH, key), "", "", func(index int, value map[string]interface{}) {
m.Cmdy(value[kit.MDB_TEXT], "set", arg[3:])
})
})
default:
if len(arg) == 2 {
m.Richs(cmd, nil, "*", func(key string, value map[string]interface{}) {
m.Push(key, value)
})
break
}
if len(arg) == 3 {
m.Richs(cmd, nil, "*", func(key string, value map[string]interface{}) {
m.Push(key, value)
})
break
}
// m.Cmdy(ice.WEB_LABEL, arg[0], arg[1], "web.chat.commend", "get", arg[2:])
m.Cmdy("web.chat.commend", "get", arg[2:])
}
}}, }},
}, },
} }