1
0
mirror of https://shylinux.com/x/icebergs synced 2025-04-26 01:24:05 +08:00

opt river.type

This commit is contained in:
shylinux 2020-08-04 01:52:59 +08:00
parent dded350e0d
commit f40802f5c3
17 changed files with 102 additions and 66 deletions

View File

@ -10,6 +10,7 @@ const (
)
const (
USERNICK = "usernick"
USERZONE = "userzone"
USERNAME = "username"
PASSWORD = "password"
USERROLE = "userrole"

View File

@ -12,7 +12,7 @@ import (
func _user_list(m *ice.Message) {
m.Richs(USER, nil, kit.MDB_FOREACH, func(key string, value map[string]interface{}) {
m.Push(key, value, []string{kit.MDB_TIME, USERNICK, USERNAME})
m.Push(key, value, []string{kit.MDB_TIME, USERZONE, USERNICK, USERNAME})
})
m.Sort(USERNAME)
}
@ -47,6 +47,8 @@ func _user_create(m *ice.Message, name, word string) {
m.Rich(USER, nil, kit.Dict(
USERNAME, name, PASSWORD, word,
USERNICK, name, USERNODE, cli.NodeName,
USERZONE, m.Option(ice.MSG_USERZONE),
USERNODE, cli.NodeName,
))
m.Log_CREATE(USERNAME, name)
m.Event(gdb.USER_CREATE, name)
@ -78,6 +80,12 @@ func UserNick(m *ice.Message, username interface{}) (nick string) {
})
return
}
func UserZone(m *ice.Message, username interface{}) (zone string) {
m.Richs(USER, nil, kit.Format(username), func(key string, value map[string]interface{}) {
zone = kit.Format(value[USERZONE])
})
return
}
func UserRole(m *ice.Message, username interface{}) (role string) {
if role = VOID; username == cli.UserName {
return ROOT

View File

@ -15,7 +15,7 @@ import (
)
func _file_name(m *ice.Message, arg ...string) string {
return kit.Select(path.Join("usr/export", kit.Select(arg[0], arg[0]+":"+arg[1], arg[1] != ""), arg[2]), arg, 3)
return kit.Select(path.Join("usr/export", kit.Select(arg[0], arg[0]+"/"+arg[1], arg[1] != ""), arg[2]), arg, 3)
}
func _hash_insert(m *ice.Message, prefix, key string, arg ...string) string {
@ -60,6 +60,10 @@ func _hash_import(m *ice.Message, prefix, key, file string) {
de := json.NewDecoder(f)
de.Decode(&list)
if m.Conf(prefix, kit.Keys(key, kit.MDB_META, kit.MDB_SHORT)) == "" {
m.Conf(prefix, kit.Keys(key, kit.MDB_META, kit.MDB_SHORT), m.Conf(prefix, kit.Keys(kit.MDB_META, kit.MDB_SHORT)))
}
count := 0
for _, data := range list {
// 导入数据
@ -71,7 +75,9 @@ func _hash_import(m *ice.Message, prefix, key, file string) {
}
func _hash_select(m *ice.Message, prefix, key, field, value string) {
fields := strings.Split(kit.Select("time,name", m.Option("fields")), ",")
m.Debug("what %v %v", prefix, key, value)
m.Richs(prefix, key, value, func(key string, val map[string]interface{}) {
m.Debug("what %v %v", prefix, key)
if value == kit.MDB_FOREACH {
m.Push(key, val, fields)
return
@ -299,14 +305,20 @@ var Index = &ice.Context{Name: "mdb", Help: "数据模块",
_list_delete(m, arg[0], arg[1], arg[3], arg[4])
}
}},
SELECT: {Name: "select conf key type field value", Help: "数据查询", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
switch arg[2] {
case HASH:
_hash_select(m, arg[0], arg[1], arg[3], arg[4])
case LIST:
_list_select(m, arg[0], arg[1], kit.Select("", arg, 3), kit.Select("", arg, 4))
}
}},
EXPORT: {Name: "export conf key type [name]", Help: "导出数据", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
switch file := _file_name(m, arg...); arg[2] {
case HASH:
_hash_export(m, arg[0], arg[1], file)
case LIST:
_list_export(m, arg[0], arg[1], file)
case DICT:
_dict_export(m, arg[0], arg[1], file)
}
}},
IMPORT: {Name: "import conf key type file", Help: "导入数据", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
@ -315,17 +327,6 @@ var Index = &ice.Context{Name: "mdb", Help: "数据模块",
_hash_import(m, arg[0], arg[1], file)
case LIST:
_list_import(m, arg[0], arg[1], file)
case DICT:
_dict_import(m, arg[0], arg[1], file)
}
}},
SELECT: {Name: "select conf key type field value", Help: "数据查询", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
switch arg[2] {
case LIST:
_list_select(m, arg[0], arg[1], kit.Select("", arg, 3), kit.Select("", arg, 4))
case HASH:
_hash_select(m, arg[0], arg[1], arg[3], arg[4])
}
}},
},

View File

@ -277,6 +277,7 @@ func (f *Frame) Start(m *ice.Message, arg ...string) bool {
m.Option("_option", ice.MSG_USERNAME)
m.Option(ice.MSG_USERNAME, cli.UserName)
m.Option(ice.MSG_USERROLE, aaa.ROOT)
m.Option(ice.MSG_USERZONE, "boot")
aaa.UserRoot(m)
default:
if s, e := os.Open(arg[0]); !m.Warn(e != nil, "%s", e) {

View File

@ -34,6 +34,7 @@ const ( // MSG
MSG_USERPOD = "user.pod"
MSG_USERNICK = "user.nick"
MSG_USERNAME = "user.name"
MSG_USERZONE = "user.zone"
MSG_USERROLE = "user.role"
MSG_USERDATA = "user.data"
MSG_USERADDR = "user.addr"

View File

@ -98,35 +98,13 @@ var Index = &ice.Context{Name: "chat", Help: "聊天中心",
}
default:
// 群组检查
m.Richs(RIVER, nil, arg[0], func(key string, value map[string]interface{}) {
m.Debug("%v", kit.Value(value, "meta.type"))
if kit.Value(value, "meta.type") != "public" {
m.Option(ice.MSG_DOMAIN, "R"+arg[0])
}
m.Richs(RIVER, kit.Keys(kit.MDB_HASH, arg[0], USER), m.Option(ice.MSG_USERNAME), func(key string, value map[string]interface{}) {
if m.Option(ice.MSG_RIVER, arg[0]); len(arg) > 1 {
// 应用检查
m.Richs(RIVER, kit.Keys(kit.MDB_HASH, arg[0], TOOL), arg[1], func(key string, value map[string]interface{}) {
m.Debug("%v", kit.Value(value, "meta.type"))
if kit.Value(value, "meta.type") != "public" {
m.Option(ice.MSG_DOMAIN, kit.Keys(m.Option(ice.MSG_DOMAIN), "S"+arg[1]))
}
m.Option(ice.MSG_STORM, arg[1])
})
}
m.Log_AUTH(RIVER, m.Option(ice.MSG_RIVER), STORM, m.Option(ice.MSG_STORM), "domain", m.Option(ice.MSG_DOMAIN))
})
})
switch m.Option(ice.MSG_USERURL) {
case "/action":
case "/river":
if len(arg) > 0 {
m.Option(ice.MSG_RIVER, arg[0])
arg = arg[1:]
}
if len(arg) > 0 {
if len(arg) > 1 && arg[1] == "storm" {
m.Option(ice.MSG_STORM, arg[0])
arg = arg[1:]
}
@ -139,15 +117,37 @@ var Index = &ice.Context{Name: "chat", Help: "聊天中心",
m.Option(ice.MSG_STORM, arg[0])
arg = arg[1:]
}
case "/river":
case "/action":
if len(arg) > 0 {
m.Option(ice.MSG_RIVER, arg[0])
arg = arg[1:]
}
if len(arg) > 1 && arg[1] == "storm" {
if len(arg) > 0 {
m.Option(ice.MSG_STORM, arg[0])
arg = arg[1:]
}
}
// 群组检查
m.Richs(RIVER, nil, m.Option(ice.MSG_RIVER), func(key string, value map[string]interface{}) {
if kit.Value(value, "meta.type") == "private" {
m.Option(ice.MSG_DOMAIN, "U"+m.Option(ice.MSG_USERNAME))
} else if kit.Value(value, "meta.type") != "public" {
m.Option(ice.MSG_DOMAIN, "R"+m.Option(ice.MSG_RIVER))
}
if m.Richs(RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), USER), m.Option(ice.MSG_USERNAME), func(key string, value map[string]interface{}) {
// 应用检查
m.Richs(RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL), m.Option(ice.MSG_STORM), func(key string, value map[string]interface{}) {
})
}) == nil {
m.Render(web.STATUS, 403, "not join")
m.Option(ice.MSG_USERURL, "")
return
}
})
m.Log_AUTH(RIVER, m.Option(ice.MSG_RIVER), STORM, m.Option(ice.MSG_STORM), "domain", m.Option(ice.MSG_DOMAIN))
m.Optionv(ice.MSG_CMDS, arg)
}
}
@ -178,6 +178,15 @@ var Index = &ice.Context{Name: "chat", Help: "聊天中心",
"node": {Name: "node", Help: "设备", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
}},
"user": {Name: "user", Help: "用户", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Richs(RIVER, nil, m.Option(ice.MSG_RIVER), func(key string, value map[string]interface{}) {
m.Richs(RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), USER), kit.MDB_FOREACH, func(key string, value map[string]interface{}) {
value = value[kit.MDB_META].(map[string]interface{})
m.Push(key, value, []string{kit.MDB_TIME})
m.Push(aaa.USERZONE, aaa.UserZone(m, value[aaa.USERNAME]))
m.Push(aaa.USERNICK, aaa.UserNick(m, value[aaa.USERNAME]))
m.Push(key, value, []string{aaa.USERNAME})
})
})
}},
"/ocean": {Name: "/ocean", Help: "大海洋", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {

View File

@ -63,26 +63,26 @@ func init() {
}},
MISS: {Name: "miss name=auto auto 添加:button 导出:button 导入:button", Help: "信息", Meta: kit.Dict(
"display", "", "insert", _miss_insert,
"display", "", "添加", _miss_insert,
), Action: map[string]*ice.Action{
mdb.INSERT: {Name: "insert [key value]...", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.INSERT, m.Prefix(MISS), "", mdb.HASH, arg)
m.Cmdy(mdb.INSERT, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
}},
mdb.MODIFY: {Name: "modify key value", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.MODIFY, m.Prefix(MISS), "", mdb.HASH, kit.MDB_NAME, m.Option("name"), arg[0], arg[1])
m.Cmdy(mdb.MODIFY, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_NAME, m.Option("name"), arg[0], arg[1])
}},
mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.DELETE, m.Prefix(MISS), "", mdb.HASH, kit.MDB_NAME, m.Option("name"))
m.Cmdy(mdb.DELETE, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_NAME, m.Option("name"))
}},
mdb.EXPORT: {Name: "export file", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.EXPORT, m.Prefix(MISS), "", mdb.HASH)
m.Cmdy(mdb.EXPORT, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH)
}},
mdb.IMPORT: {Name: "import file", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.IMPORT, m.Prefix(MISS), "", mdb.HASH)
m.Cmdy(mdb.IMPORT, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH)
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Option("fields", _miss_select)
if msg := m.Cmd(mdb.SELECT, m.Prefix(MISS), "", mdb.HASH, kit.MDB_NAME, kit.Select(kit.MDB_FOREACH, arg, 0)); len(arg) == 0 {
if msg := m.Cmd(mdb.SELECT, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_NAME, kit.Select(kit.MDB_FOREACH, arg, 0)); len(arg) == 0 {
msg.Table(func(index int, value map[string]string, head []string) {
for _, k := range head {
if k == "照片" {
@ -111,30 +111,30 @@ func init() {
}},
DATE: {Name: "date id=auto auto 添加:button 导出:button 导入:button", Help: "约会", Meta: kit.Dict(
"display", "", "insert", _date_insert,
"display", "", "添加", _date_insert,
), Action: map[string]*ice.Action{
mdb.INSERT: {Name: "insert [key value]...", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.INSERT, m.Prefix(DATE), "", mdb.LIST, arg)
m.Cmdy(mdb.INSERT, m.Prefix(DATE), m.Option(ice.MSG_DOMAIN), mdb.LIST, arg)
}},
mdb.MODIFY: {Name: "modify key value", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.MODIFY, m.Prefix(DATE), "", mdb.LIST, kit.MDB_ID, m.Option("id"), arg[0], arg[1])
m.Cmdy(mdb.MODIFY, m.Prefix(DATE), m.Option(ice.MSG_DOMAIN), mdb.LIST, kit.MDB_ID, m.Option("id"), arg[0], arg[1])
}},
mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
// m.Cmdy(mdb.DELETE, m.Prefix(DATE), "", mdb.LIST, kit.MDB_NAME, m.Option("name"))
// m.Cmdy(mdb.DELETE, m.Prefix(DATE), m.Option(ice.MSG_DOMAIN), mdb.LIST, kit.MDB_NAME, m.Option("name"))
}},
mdb.EXPORT: {Name: "export file", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.EXPORT, m.Prefix(DATE), "", mdb.LIST)
m.Cmdy(mdb.EXPORT, m.Prefix(DATE), m.Option(ice.MSG_DOMAIN), mdb.LIST)
}},
mdb.IMPORT: {Name: "import file", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.IMPORT, m.Prefix(DATE), "", mdb.LIST)
m.Cmdy(mdb.IMPORT, m.Prefix(DATE), m.Option(ice.MSG_DOMAIN), mdb.LIST)
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if len(arg) == 0 {
m.Option("fields", _date_select)
m.Cmdy(mdb.SELECT, m.Prefix(DATE), "", mdb.LIST)
m.Cmdy(mdb.SELECT, m.Prefix(DATE), m.Option(ice.MSG_DOMAIN), mdb.LIST)
return
}
m.Cmdy(mdb.SELECT, m.Prefix(DATE), "", mdb.LIST, kit.MDB_ID, arg[0])
m.Cmdy(mdb.SELECT, m.Prefix(DATE), m.Option(ice.MSG_DOMAIN), mdb.LIST, kit.MDB_ID, arg[0])
}},
},
}, nil)

View File

@ -95,10 +95,8 @@ func init() {
RIVER: {Name: "river", Help: "群组", Value: kit.Data(
"template", kit.Dict(
"base", kit.Dict(
"main", []interface{}{
"web.code.inner",
"web.code.dream",
"web.code.space",
"admin", []interface{}{
"web.chat.user",
},
),
),

View File

@ -97,6 +97,14 @@ func init() {
web.SHARE: {Name: "share name", Help: "共享", Hand: func(m *ice.Message, arg ...string) {
_storm_share(m, m.Option(ice.MSG_RIVER), m.Option(ice.MSG_STORM), arg[0])
}},
"save": {Name: "save", Help: "保存", Hand: func(m *ice.Message, arg ...string) {
prefix := kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL, kit.MDB_HASH, m.Option(ice.MSG_STORM))
for i, v := range arg {
args := kit.Parse(nil, "", kit.Split(v)...)
m.Conf(RIVER, kit.Keys(prefix, kit.MDB_LIST, i, kit.MDB_META, "args"), args)
m.Debug("fuck %v %v", kit.Keys(prefix, kit.MDB_LIST, i), args)
}
}},
TOOL: {Name: "tool [pod ctx cmd help]...", Help: "添加工具", Hand: func(m *ice.Message, arg ...string) {
_storm_tool(m, m.Option(ice.MSG_RIVER), m.Option(ice.MSG_STORM), arg...)
}},

View File

@ -248,7 +248,7 @@ var Index = &ice.Context{Name: "mall", Help: "贸易中心",
}},
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Save(ASSET) }},
ASSET: {Name: "asset account=auto id=auto auto 支出:button 转账:button 收入:button", Help: "资产", Meta: kit.Dict(
ASSET: {Name: "asset account=auto id=auto auto 支出:button 转账:button 收入:button 导出:button 导入:button", Help: "资产", Meta: kit.Dict(
"支出", _input_spend, "转账", _input_trans, "收入", _input_bonus,
), Action: map[string]*ice.Action{
"spend": {Name: "insert [key value]...", Help: "支出", Hand: func(m *ice.Message, arg ...string) {

View File

@ -308,7 +308,7 @@ var Index = &ice.Context{Name: "team", Help: "团队中心",
}},
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Save(TASK) }},
TASK: {Name: "task zone=auto id=auto auto 添加:button", Help: "任务", Meta: kit.Dict(
TASK: {Name: "task zone=auto id=auto auto 添加:button 导出:button 导入:button", Help: "任务", Meta: kit.Dict(
"添加", _task_inputs,
), Action: map[string]*ice.Action{
mdb.INSERT: {Name: "insert [key value]...", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
@ -362,6 +362,7 @@ var Index = &ice.Context{Name: "team", Help: "团队中心",
PLAN: {Name: "plan scale:select=day|week|month|year|long begin_time=@date auto 添加:button", Help: "计划", Meta: kit.Dict(
"添加", _task_inputs,
"display", "/plugin/local/team/plan.js", "detail", []string{StatusPrepare, StatusProcess, StatusCancel, StatusFinish},
"style", "plan",
), Action: map[string]*ice.Action{
mdb.INSERT: {Name: "insert [key value]...", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
_task_create(m, arg[1])

View File

@ -8,7 +8,6 @@ import (
"github.com/shylinux/icebergs/base/nfs"
"github.com/shylinux/icebergs/base/web"
"github.com/shylinux/icebergs/core/code"
"github.com/shylinux/icebergs/core/wiki"
kit "github.com/shylinux/toolkits"
"os"
@ -120,9 +119,7 @@ var Index = &ice.Context{Name: "git", Help: "代码库",
})
m.Sort("name")
}},
"total": {Name: "total name=auto auto", Help: "提交统计", Meta: kit.Dict(
mdb.PLUGIN, wiki.DataPlugin,
), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
"total": {Name: "total name=auto auto", Help: "提交统计", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if len(arg) > 0 {
// 提交详情
m.Richs("repos", nil, arg[0], func(key string, value map[string]interface{}) {

View File

@ -5,3 +5,6 @@ refer "官网" `
文档 https://git-scm.com/docs
源码 https://github.com/git/git
`
field status web.code.git.status
field total web.code.git.total

View File

@ -289,6 +289,7 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
}},
TALK: {Name: "talk text", Help: "聊天", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
// 用户权限
m.Option(ice.MSG_USERZONE, LARK)
m.Option(ice.MSG_USERNAME, m.Option(OPEN_ID))
m.Option(ice.MSG_USERNICK, aaa.UserNick(m, m.Option(ice.MSG_USERNAME)))
m.Option(ice.MSG_USERROLE, aaa.UserRole(m, m.Option(ice.MSG_USERNAME)))

View File

@ -12,6 +12,8 @@ import (
"path"
)
const MP = "mp"
var Index = &ice.Context{Name: "mp", Help: "小程序",
Caches: map[string]*ice.Cache{},
Configs: map[string]*ice.Config{
@ -40,6 +42,7 @@ var Index = &ice.Context{Name: "mp", Help: "小程序",
"appid", m.Conf("login", "meta.appid"), "secret", m.Conf("login", "meta.appmm"))
// 用户登录
m.Option(ice.MSG_USERZONE, MP)
m.Echo(aaa.SessCreate(msg, msg.Append("openid"), aaa.UserRole(msg, msg.Append("openid"))))
case "info":

View File

@ -73,6 +73,8 @@ func action(m *ice.Message) {
m.Info("what %v", m.Result())
}
const WX = "wx"
var Index = &ice.Context{Name: "wx", Help: "公众号",
Caches: map[string]*ice.Cache{},
Configs: map[string]*ice.Config{
@ -120,6 +122,7 @@ var Index = &ice.Context{Name: "wx", Help: "公众号",
parse(m)
// 用户登录
m.Option(ice.MSG_USERZONE, WX)
m.Option(ice.MSG_SESSID, aaa.SessCreate(m, m.Append("FromUserName"), aaa.UserRole(m, m.Append("FromUserName"))))
switch m.Option("MsgType") {

View File

@ -11,6 +11,7 @@ chapter "应用"
field "runtime" cli.runtime
field "asset" web.mall.asset args `[ ]`
field "task" web.team.task args `[ ]`
field "miss" web.chat.meet.miss args `[ ]`
chapter "项目"
section "icebergs"