From 9dc89e50c5c8d5879398e27f464f45c197ba06f8 Mon Sep 17 00:00:00 2001 From: shaoying Date: Fri, 16 Oct 2020 21:25:59 +0800 Subject: [PATCH] opt core --- base/mdb/mdb.go | 60 ++++++++---------- base/ssh/scripts.go | 3 +- conf.go | 1 + core/chat/action.go | 5 +- core/chat/chat.go | 21 +++++-- core/chat/meet.go | 16 +++-- core/chat/paste.go | 4 +- core/chat/river.go | 7 +-- core/chat/scan.go | 4 +- core/mall/asset.go | 111 ++++++++++++++++++++------------- core/mall/mall.go | 146 +------------------------------------------- core/mall/salary.go | 36 +++++++++++ core/mall/spend.go | 1 - core/team/asset.go | 1 - core/team/miss.go | 17 ------ core/team/plan.go | 20 ++---- core/team/task.go | 2 +- core/team/team.go | 8 +-- core/wiki/chart.go | 4 +- core/wiki/data.go | 4 +- core/wiki/draw.go | 11 ++-- core/wiki/feel.go | 10 +-- core/wiki/wiki.go | 34 +++++------ core/wiki/word.go | 48 +++------------ meta.go | 2 +- misc.go | 7 +++ 26 files changed, 220 insertions(+), 363 deletions(-) create mode 100644 core/mall/salary.go delete mode 100644 core/mall/spend.go delete mode 100644 core/team/asset.go delete mode 100644 core/team/miss.go diff --git a/base/mdb/mdb.go b/base/mdb/mdb.go index 85b00f87..189e3887 100644 --- a/base/mdb/mdb.go +++ b/base/mdb/mdb.go @@ -23,6 +23,9 @@ func _hash_fields(m *ice.Message) []string { return kit.Split(kit.Select("time,hash,type,name,text", strings.Join(kit.Simple(m.Optionv(FIELDS)), ","))) } func _hash_insert(m *ice.Message, prefix, chain string, arg ...string) { + if m.Option(ice.MSG_DOMAIN) != "" { + m.Conf(prefix, kit.Keys(chain, kit.MDB_META, kit.MDB_SHORT), m.Conf(prefix, kit.Keys(kit.MDB_META, kit.MDB_SHORT))) + } m.Log_INSERT(kit.MDB_KEY, path.Join(prefix, chain), arg[0], arg[1]) m.Echo(m.Rich(prefix, chain, kit.Data(arg))) } @@ -38,9 +41,7 @@ func _hash_select(m *ice.Message, prefix, chain, field, value string) { } fields := _hash_fields(m) m.Richs(prefix, chain, value, func(key string, val map[string]interface{}) { - if val[kit.MDB_META] != nil { - val = val[kit.MDB_META].(map[string]interface{}) - } + val = kit.GetMeta(val) if m.Option(FIELDS) == DETAIL { m.Push(DETAIL, val) } else { @@ -53,9 +54,7 @@ func _hash_select(m *ice.Message, prefix, chain, field, value string) { } func _hash_modify(m *ice.Message, prefix, chain string, field, value string, arg ...string) { m.Richs(prefix, chain, value, func(key string, val map[string]interface{}) { - if val[kit.MDB_META] != nil { - val = val[kit.MDB_META].(map[string]interface{}) - } + val = kit.GetMeta(val) for i := 0; i < len(arg)-1; i += 2 { if arg[i] == field { continue @@ -122,9 +121,7 @@ func _hash_prunes(m *ice.Message, prefix, chain string, arg ...string) { func _hash_inputs(m *ice.Message, prefix, chain string, field, value string) { list := map[string]int{} m.Richs(prefix, chain, kit.MDB_FOREACH, func(key string, val map[string]interface{}) { - if val[kit.MDB_META] != nil { - val = val[kit.MDB_META].(map[string]interface{}) - } + val = kit.GetMeta(val) if field == kit.MDB_HASH { list[key]++ } else { @@ -152,15 +149,20 @@ func _list_select(m *ice.Message, prefix, chain, field, value string) { field = "" } fields := _list_fields(m) + cb := m.Optionv(SELECT_CB) m.Grows(prefix, chain, kit.Select(m.Option("cache.field"), field), kit.Select(m.Option("cache.value"), value), func(index int, val map[string]interface{}) { - if val[kit.MDB_META] != nil { - val = val[kit.MDB_META].(map[string]interface{}) - } - if m.Option(FIELDS) == DETAIL { - m.Push(DETAIL, val) - } else { - m.Push("", val, fields) + val = kit.GetMeta(val) + switch cb := cb.(type) { + case func(fields []string, value map[string]interface{}): + cb(fields, val) + default: + if m.Option(FIELDS) == DETAIL { + m.Push(DETAIL, val) + } else { + m.Push("", val, fields) + } } + }) if m.Option(FIELDS) != DETAIL { m.Sort(kit.MDB_ID, "int_r") @@ -189,9 +191,7 @@ func _list_export(m *ice.Message, prefix, chain, file string) { count := 0 head := kit.Split(m.Option(FIELDS)) m.Grows(prefix, chain, "", "", func(index int, val map[string]interface{}) { - if val[kit.MDB_META] != nil { - val = val[kit.MDB_META].(map[string]interface{}) - } + val = kit.GetMeta(val) if index == 0 && len(head) == 0 { // 输出表头 @@ -250,9 +250,7 @@ func _list_prunes(m *ice.Message, prefix, chain string, arg ...string) { func _list_inputs(m *ice.Message, prefix, chain string, field, value string) { list := map[string]int{} m.Grows(prefix, chain, "", "", func(index int, val map[string]interface{}) { - if val[kit.MDB_META] != nil { - val = val[kit.MDB_META].(map[string]interface{}) - } + val = kit.GetMeta(val) list[kit.Format(val[field])]++ }) for k, i := range list { @@ -266,12 +264,10 @@ func _zone_fields(m *ice.Message) []string { return kit.Split(kit.Select("zone,id,time,type,name,text", strings.Join(kit.Simple(m.Optionv(FIELDS)), ","))) } func _zone_select(m *ice.Message, prefix, chain, zone string, id string) { - cb := m.Optionv(SELECT_CB) fields := _zone_fields(m) + cb := m.Optionv(SELECT_CB) m.Richs(prefix, chain, kit.Select(kit.MDB_FOREACH, zone), func(key string, val map[string]interface{}) { - if val[kit.MDB_META] != nil { - val = val[kit.MDB_META].(map[string]interface{}) - } + val = kit.GetMeta(val) if zone == "" { if m.Option(FIELDS) == DETAIL { m.Push(DETAIL, val) @@ -282,9 +278,7 @@ func _zone_select(m *ice.Message, prefix, chain, zone string, id string) { } m.Grows(prefix, kit.Keys(chain, kit.MDB_HASH, key), kit.MDB_ID, id, func(index int, value map[string]interface{}) { - if value[kit.MDB_META] != nil { - value = value[kit.MDB_META].(map[string]interface{}) - } + value = kit.GetMeta(value) switch cb := cb.(type) { case func(string, []string, map[string]interface{}, map[string]interface{}): @@ -316,14 +310,10 @@ func _zone_export(m *ice.Message, prefix, chain, file string) { count := 0 m.Richs(prefix, chain, kit.MDB_FOREACH, func(key string, val map[string]interface{}) { - if val[kit.MDB_META] != nil { - val = val[kit.MDB_META].(map[string]interface{}) - } + val = kit.GetMeta(val) m.Grows(prefix, kit.Keys(chain, kit.MDB_HASH, key), "", "", func(index int, value map[string]interface{}) { - if value[kit.MDB_META] != nil { - value = value[kit.MDB_META].(map[string]interface{}) - } + value = kit.GetMeta(value) list := []string{} for _, k := range fields { diff --git a/base/ssh/scripts.go b/base/ssh/scripts.go index 8ff0844b..4ef586bf 100644 --- a/base/ssh/scripts.go +++ b/base/ssh/scripts.go @@ -5,6 +5,7 @@ import ( "github.com/shylinux/icebergs/base/aaa" "github.com/shylinux/icebergs/base/cli" "github.com/shylinux/icebergs/base/mdb" + "github.com/shylinux/icebergs/base/nfs" kit "github.com/shylinux/toolkits" "bufio" @@ -58,7 +59,7 @@ func Script(m *ice.Message, name string) io.Reader { } m.Option("_script", name) - if s, e := os.Open(name); e == nil { + if s, e := os.Open(path.Join(m.Option(nfs.DIR_ROOT), name)); e == nil { return s } switch strings.Split(name, "/")[0] { diff --git a/conf.go b/conf.go index e79f32d6..866747a4 100644 --- a/conf.go +++ b/conf.go @@ -26,6 +26,7 @@ const ( // MSG MSG_ARGS = "_args" MSG_CONTROL = "_control" + MSG_DISPLAY = "_display" MSG_PROCESS = "_process" MSG_CMDS = "cmds" diff --git a/core/chat/action.go b/core/chat/action.go index 8b6f2f8b..31ce0c19 100644 --- a/core/chat/action.go +++ b/core/chat/action.go @@ -64,6 +64,7 @@ func _action_list(m *ice.Message, river, storm string) { m.Cmdy(TOOL, storm).Table(func(index int, value map[string]string, head []string) { m.Cmdy(m.Space(kit.Select(m.Option(POD), value[POD])), ctx.COMMAND, kit.Keys(value[CTX], value[CMD])) }) + m.SortInt(kit.MDB_ID) } func _action_show(m *ice.Message, river, storm, index string, arg ...string) { cmds := []string{index} @@ -98,9 +99,7 @@ const ACTION = "action" func init() { Index.Merge(&ice.Context{ Configs: map[string]*ice.Config{ - ACTION: {Name: ACTION, Help: "应用", Value: kit.Data( - DOMAIN, kit.Dict(), - )}, + ACTION: {Name: ACTION, Help: "应用", Value: kit.Data(DOMAIN, kit.Dict())}, }, Commands: map[string]*ice.Command{ "/action": {Name: "/action river storm action arg...", Help: "工作台", Action: map[string]*ice.Action{ diff --git a/core/chat/chat.go b/core/chat/chat.go index fe10ce81..81da7365 100644 --- a/core/chat/chat.go +++ b/core/chat/chat.go @@ -15,12 +15,19 @@ var Index = &ice.Context{Name: CHAT, Help: "聊天中心", m.Load() m.Cmd(web.SERVE, aaa.WHITE, "header", "river", "action", "footer") + m.Conf(ACTION, "meta.domain.web.chat.meet.miss", "true") + m.Conf(ACTION, "meta.domain.web.chat.meet.mate", "true") m.Conf(ACTION, "meta.domain.web.chat.location", "true") m.Conf(ACTION, "meta.domain.web.chat.paste", "true") m.Conf(ACTION, "meta.domain.web.chat.scan", "true") m.Conf(ACTION, "meta.domain.web.wiki.feel", "true") + m.Conf(ACTION, "meta.domain.web.wiki.draw", "true") + m.Conf(ACTION, "meta.domain.web.wiki.data", "true") + m.Conf(ACTION, "meta.domain.web.wiki.word", "true") m.Conf(ACTION, "meta.domain.web.team.task", "true") m.Conf(ACTION, "meta.domain.web.team.plan", "true") + m.Conf(ACTION, "meta.domain.web.mall.asset", "true") + m.Conf(ACTION, "meta.domain.web.mall.salary", "true") m.Conf(RIVER, "meta.template", kit.Dict( "base", kit.Dict( @@ -35,17 +42,19 @@ var Index = &ice.Context{Name: CHAT, Help: "聊天中心", "web.chat.scan", "web.chat.paste", "web.chat.location", + "web.chat.meet.miss", + "web.wiki.feel", }, - "miss", []interface{}{ + "task", []interface{}{ "web.team.task", "web.team.plan", - "web.wiki.draw", - "web.wiki.data", + "web.mall.asset", + "web.mall.salary", "web.wiki.word", }, - "meet", []interface{}{ - "web.wiki.feel", - "web.chat.meet.miss", + "draw", []interface{}{ + "web.wiki.draw", + "web.wiki.data", "web.wiki.word", }, ), diff --git a/core/chat/meet.go b/core/chat/meet.go index 72f53d5c..f2fb705c 100644 --- a/core/chat/meet.go +++ b/core/chat/meet.go @@ -6,8 +6,6 @@ import ( kit "github.com/shylinux/toolkits" ) -var _miss_select = "time,name,照片,性别,年龄,身高,籍贯,户口,学历,职业,公司,年薪,资产,家境" - const ( MISS = "miss" ) @@ -25,23 +23,23 @@ func init() { MISS: {Name: "miss name auto create", Help: "资料", Action: map[string]*ice.Action{ mdb.CREATE: {Name: "create name 照片 性别 年龄 身高 体重 籍贯 户口 学历 学校 职业 公司 年薪 资产 家境", Help: "添加", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.INSERT, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg) + m.Cmdy(mdb.INSERT, m.Prefix(MISS), "", mdb.HASH, arg) }}, mdb.MODIFY: {Name: "modify key value", Help: "编辑", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.MODIFY, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_NAME, m.Option(kit.MDB_NAME), arg[0], arg[1]) + m.Cmdy(mdb.MODIFY, m.Prefix(MISS), "", mdb.HASH, kit.MDB_NAME, m.Option(kit.MDB_NAME), arg[0], arg[1]) }}, - mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.DELETE, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_NAME, m.Option(kit.MDB_NAME)) + mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(mdb.DELETE, m.Prefix(MISS), "", mdb.HASH, kit.MDB_NAME, m.Option(kit.MDB_NAME)) }}, mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.EXPORT, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH) + m.Cmdy(mdb.EXPORT, m.Prefix(MISS), "", mdb.HASH) }}, mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.IMPORT, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH) + m.Cmdy(mdb.IMPORT, m.Prefix(MISS), "", mdb.HASH) }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Option(mdb.FIELDS, kit.Select("time,name,照片,性别,年龄,身高,籍贯,户口,学历,职业,公司,年薪,资产,家境", mdb.DETAIL, len(arg) > 0)) - msg := m.Cmd(mdb.SELECT, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_NAME, arg) + msg := m.Cmd(mdb.SELECT, m.Prefix(MISS), "", mdb.HASH, kit.MDB_NAME, arg) msg.Table(func(index int, value map[string]string, head []string) { value["照片"] = kit.Format(``, value["照片"], kit.Select("100", "400", m.Option(mdb.FIELDS) == mdb.DETAIL)) m.Push("", value, kit.Split(m.Option(mdb.FIELDS))) diff --git a/core/chat/paste.go b/core/chat/paste.go index 75944309..d16a6de5 100644 --- a/core/chat/paste.go +++ b/core/chat/paste.go @@ -18,7 +18,7 @@ func init() { PASTE: {Name: "paste hash auto create@paste", Help: "粘贴板", Action: map[string]*ice.Action{ mdb.CREATE: {Name: "create type=text name=hi data:textarea=hi", Help: "添加", Hand: func(m *ice.Message, arg ...string) { _trans(arg, map[string]string{"data": "text"}) - m.Conf(PASTE, kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT) + m.Conf(m.Prefix(PASTE), kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT) m.Cmdy(mdb.INSERT, m.Prefix(PASTE), "", mdb.HASH, arg) }}, mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) { @@ -43,7 +43,7 @@ func init() { } m.Cmdy(mdb.SELECT, m.Prefix(PASTE), "", mdb.HASH) - m.Sort(kit.MDB_TIME, "time_r") + m.SortTimeR(kit.MDB_TIME) m.PushAction(mdb.REMOVE) }}, }, diff --git a/core/chat/river.go b/core/chat/river.go index b4b25170..7313984f 100644 --- a/core/chat/river.go +++ b/core/chat/river.go @@ -43,6 +43,7 @@ const ( POD = "pod" CTX = "ctx" CMD = "cmd" + ARG = "arg" ) const ( INFO = "info" @@ -57,9 +58,7 @@ const RIVER = "river" func init() { Index.Merge(&ice.Context{ Configs: map[string]*ice.Config{ - RIVER: {Name: RIVER, Help: "群组", Value: kit.Data( - kit.MDB_PATH, "usr/local/river", - )}, + RIVER: {Name: RIVER, Help: "群组", Value: kit.Data(kit.MDB_PATH, "usr/local/river")}, }, Commands: map[string]*ice.Command{ INFO: {Name: "info auto", Help: "信息", Action: map[string]*ice.Action{ @@ -245,7 +244,7 @@ func init() { m.Appendv(ice.MSG_APPEND, aaa.USERNAME, aaa.USERNICK) }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Option(mdb.FIELDS, "time,username") + m.Option(mdb.FIELDS, kit.Select("time,username", mdb.DETAIL, len(arg) > 0)) m.Cmdy(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), USER), mdb.HASH, aaa.USERNAME, arg) m.Table(func(index int, value map[string]string, head []string) { m.Push(aaa.USERNICK, aaa.UserNick(m, value[aaa.USERNAME])) diff --git a/core/chat/scan.go b/core/chat/scan.go index 56c6cf67..a6a586fd 100644 --- a/core/chat/scan.go +++ b/core/chat/scan.go @@ -17,7 +17,7 @@ func init() { Commands: map[string]*ice.Command{ SCAN: {Name: "scan hash auto create@scan", Help: "扫码", Action: map[string]*ice.Action{ mdb.CREATE: {Name: "create type=text name=hi text:textarea=hi", Help: "添加", Hand: func(m *ice.Message, arg ...string) { - m.Conf(SCAN, kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT) + m.Conf(m.Prefix(SCAN), kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT) m.Cmdy(mdb.INSERT, m.Prefix(SCAN), "", mdb.HASH, arg) }}, mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) { @@ -42,7 +42,7 @@ func init() { } m.Cmdy(mdb.SELECT, m.Prefix(SCAN), "", mdb.HASH) - m.Sort(kit.MDB_TIME, "time_r") + m.SortTimeR(kit.MDB_TIME) m.PushAction(mdb.REMOVE) }}, }, diff --git a/core/mall/asset.go b/core/mall/asset.go index d887bf11..58317417 100644 --- a/core/mall/asset.go +++ b/core/mall/asset.go @@ -11,37 +11,66 @@ import ( func _sub_key(m *ice.Message, account string) string { return kit.Keys(kit.MDB_HASH, kit.Hashs(account)) } +func _sub_value(m *ice.Message, key string, arg ...string) string { + for i := 0; i < len(arg)-1; i += 2 { + if arg[i] == key { + return arg[i+1] + } + } + return "" +} +func _sub_amount(m *ice.Message, arg []string) { + for i := 0; i < len(arg)-1; i += 2 { + if arg[i] == AMOUNT { + if amount := kit.Int(arg[i+1]); amount > 0 { + arg[i+1] = kit.Format(-amount) + } + } + } +} func _asset_list(m *ice.Message, account string, id string) { if account == "" { m.Option(mdb.FIELDS, "time,account,amount,count") + defer m.PushAction(CHECK) + defer m.SortIntR(AMOUNT) + + } else if id == "" { + m.Option(mdb.FIELDS, "time,id,type,amount,name,text") + } else { - m.Option(mdb.FIELDS, kit.Select("time,id,type,amount,name,text", mdb.DETAIL, id != "")) + m.Option(mdb.FIELDS, mdb.DETAIL) + defer m.PushAction(mdb.PLUGIN) } m.Cmdy(mdb.SELECT, ASSET, "", mdb.ZONE, account, id) - if id != "" { - m.PushAction(mdb.PLUGIN) - } } +func _asset_check(m *ice.Message, account string) { + amount := 0 + m.Option(mdb.FIELDS, "time,id,type,amount,name,text") + m.Option(mdb.SELECT_CB, func(fields []string, value map[string]interface{}) { + amount += kit.Int(kit.Value(value, AMOUNT)) + }) + m.Cmd(mdb.SELECT, ASSET, _sub_key(m, account), mdb.LIST) + + m.Cmdy(mdb.MODIFY, ASSET, "", mdb.HASH, ACCOUNT, account, AMOUNT, amount) +} func _asset_create(m *ice.Message, account string) { m.Cmdy(mdb.INSERT, ASSET, "", mdb.HASH, ACCOUNT, account) } func _asset_insert(m *ice.Message, account string, arg ...string) { - msg := m.Cmd(mdb.SELECT, ASSET, "", mdb.HASH, ACCOUNT, account) - amount := kit.Int(msg.Append(AMOUNT)) - for i := 0; i < len(arg)-1; i += 2 { - if arg[i] == "amount" { - amount += kit.Int(arg[i+1]) - } - } + _asset_create(m, account) m.Cmdy(mdb.INSERT, ASSET, _sub_key(m, account), mdb.LIST, arg) + + m.Option(mdb.FIELDS, "time,account,amount,count") + amount := kit.Int(m.Cmd(mdb.SELECT, ASSET, "", mdb.HASH, ACCOUNT, account).Append(AMOUNT)) + amount += kit.Int(_sub_value(m, AMOUNT, arg...)) m.Cmdy(mdb.MODIFY, ASSET, "", mdb.HASH, ACCOUNT, account, AMOUNT, amount) } -func _asset_modify(m *ice.Message, account, id, field, value string, arg ...string) { - m.Cmdy(mdb.MODIFY, ASSET, _sub_key(m, account), mdb.LIST, kit.MDB_ID, id, field, value, arg) +func _asset_modify(m *ice.Message, account, id string, arg ...string) { + m.Cmdy(mdb.MODIFY, ASSET, _sub_key(m, account), mdb.LIST, kit.MDB_ID, id, arg) } func _asset_export(m *ice.Message, file string) { - m.Option(mdb.FIELDS, "account,id,time,type,name,text,amount,extra") + m.Option(mdb.FIELDS, "account,id,time,type,amount,name,text,extra") m.Cmdy(mdb.EXPORT, ASSET, "", mdb.ZONE, file) } func _asset_import(m *ice.Message, file string) { @@ -50,10 +79,18 @@ func _asset_import(m *ice.Message, file string) { } func _asset_inputs(m *ice.Message, field, value string) { switch field { + case "pod", "extra.pod": + m.Cmdy(web.ROUTE) + case "ctx", "extra.ctx": + m.Cmdy(ctx.CONTEXT) + case "cmd", "extra.cmd": + m.Cmdy(ctx.CONTEXT, kit.Select(m.Option("ctx"), m.Option("extra.ctx")), ctx.COMMAND) + case "arg", "extra.arg": + case "from", "to", ACCOUNT: m.Cmdy(mdb.INPUTS, ASSET, "", mdb.HASH, ACCOUNT, value) default: - m.Cmdy(mdb.INPUTS, ASSET, _sub_key(m, m.Option(kit.MDB_ZONE)), mdb.LIST, field, value) + m.Cmdy(mdb.INPUTS, ASSET, _sub_key(m, m.Option(ACCOUNT)), mdb.LIST, field, value) } } @@ -64,6 +101,7 @@ const ( SPEND = "spend" TRANC = "tranc" BONUS = "bonus" + CHECK = "check" ) const ASSET = "asset" @@ -73,29 +111,22 @@ func init() { ASSET: {Name: ASSET, Help: "资产", Value: kit.Data(kit.MDB_SHORT, ACCOUNT)}, }, Commands: map[string]*ice.Command{ - ASSET: {Name: "asset account id auto spend tranc bonus export import", Help: "资产", Action: map[string]*ice.Action{ - SPEND: {Name: "spend account amount time@date name text", Help: "消费", Hand: func(m *ice.Message, arg ...string) { - _asset_create(m, arg[1]) - if amount := kit.Int(arg[3]); amount > 0 { - arg[3] = kit.Format(-amount) - } + ASSET: {Name: "asset account id auto spend tranc bonus", Help: "资产", Action: map[string]*ice.Action{ + SPEND: {Name: "spend account name amount time@date text", Help: "支出", Hand: func(m *ice.Message, arg ...string) { + _sub_amount(m, arg) _asset_insert(m, arg[1], kit.Simple(kit.MDB_TYPE, "支出", arg[2:])...) }}, TRANC: {Name: "tranc from to amount time@date text", Help: "转账", Hand: func(m *ice.Message, arg ...string) { - _asset_create(m, arg[3]) _asset_insert(m, arg[3], kit.Simple(kit.MDB_TYPE, "转入", kit.MDB_NAME, arg[1], arg[4:])...) - - _asset_create(m, arg[1]) - if amount := kit.Int(arg[5]); amount > 0 { - arg[5] = kit.Format(-amount) - } + _sub_amount(m, arg) _asset_insert(m, arg[1], kit.Simple(kit.MDB_TYPE, "转出", kit.MDB_NAME, arg[3], arg[4:])...) - }}, - BONUS: {Name: "bonus account amount time@date name text", Help: "收入", Hand: func(m *ice.Message, arg ...string) { - _asset_create(m, arg[1]) + BONUS: {Name: "bonus account name amount time@date text", Help: "收入", Hand: func(m *ice.Message, arg ...string) { _asset_insert(m, arg[1], kit.Simple(kit.MDB_TYPE, "收入", arg[2:])...) }}, + CHECK: {Name: "check account", Help: "核算", Hand: func(m *ice.Message, arg ...string) { + _asset_check(m, m.Option(ACCOUNT)) + }}, mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) { _asset_modify(m, m.Option(ACCOUNT), m.Option(kit.MDB_ID), arg[0], arg[1]) @@ -107,29 +138,21 @@ func init() { _asset_import(m, m.Option(kit.MDB_FILE)) }}, mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { - switch arg[0] { - case "pod", "extra.pod": - m.Cmdy(web.ROUTE) - case "ctx", "extra.ctx": - m.Cmdy(ctx.CONTEXT) - case "cmd", "extra.cmd": - m.Cmdy(ctx.CONTEXT, kit.Select(m.Option("ctx"), m.Option("extra.ctx")), ctx.COMMAND) - case "arg": - - default: - _asset_inputs(m, kit.Select("", arg, 0), kit.Select("", arg, 1)) - } + _asset_inputs(m, kit.Select("", arg, 0), kit.Select("", arg, 1)) }}, mdb.PLUGIN: {Name: "plugin extra.pod extra.ctx extra.cmd extra.arg", Help: "插件", Hand: func(m *ice.Message, arg ...string) { - _asset_modify(m, m.Option(ACCOUNT), m.Option(kit.MDB_ID), kit.MDB_TIME, m.Time(), kit.Simple(kit.Dict(arg))...) + _asset_modify(m, m.Option(ACCOUNT), m.Option(kit.MDB_ID), kit.Simple(kit.Dict(arg))...) }}, ctx.COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) { if arg[0] == "run" { m.Cmdy(arg[1], arg[2:]) return } - m.Cmdy(ctx.COMMAND, arg[0]) + if len(arg) > 0 { + m.Cmdy(ctx.COMMAND, arg[0]) + return + } }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { _asset_list(m, kit.Select("", arg, 0), kit.Select("", arg, 1)) diff --git a/core/mall/mall.go b/core/mall/mall.go index 9f949c0e..76e14f22 100644 --- a/core/mall/mall.go +++ b/core/mall/mall.go @@ -3,7 +3,6 @@ package mall import ( ice "github.com/shylinux/icebergs" "github.com/shylinux/icebergs/base/web" - kit "github.com/shylinux/toolkits" ) const MALL = "mall" @@ -12,150 +11,7 @@ var Index = &ice.Context{Name: MALL, Help: "贸易中心", Commands: map[string]*ice.Command{ ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Load() }}, ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Save() }}, - - "month": {Name: "month month value value 计算:button 记录:button", Help: "工资", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - - data := map[string]int64{"个税方案": 6, "基本工资": 0, "个税": 0, - "公积金比例": 1200, "养老保险比例": 800, "医疗保险比例": 200, "失业保险比例": 20, "工伤保险比例": 2, "生育保险比例": 0, - "公积金金额": 0, "养老保险金额": 0, "医疗保险金额": 0, "失业保险金额": 0, "工伤保险金额": 0, "生育保险金额": 0, - - "企业公积金比例": 1200, "企业养老保险比例": 2000, "企业医疗保险比例": 1000, "企业失业保险比例": 100, "企业工伤保险比例": 30, "企业生育保险比例": 80, - "企业公积金金额": 0, "企业养老保险金额": 0, "企业医疗保险金额": 0, "企业失业保险金额": 0, "企业工伤保险金额": 0, "企业生育保险金额": 0, - } - - for i := 3; i < len(arg)-1; i += 2 { - if _, ok := data[arg[i]]; ok { - data[arg[i]] = kit.Int64(arg[i+1]) - arg[i] = "" - } - } - - data["养老保险比例"] = 725 - data["失业保险比例"] = 18 - - salary := kit.Int64(arg[1]) - data["个税"] = kit.Int64(arg[2]) - base := data["基本工资"] - if base == 0 { - base = salary - } - - // 五险一金 - amount := int64(0) - for _, k := range []string{"公积金", "养老保险", "医疗保险", "失业保险", "工伤保险"} { - m.Push("名目", k) - value := -base * kit.Int64(data[k+"比例"]) / 10000 - m.Info("%v %v: %v %v", base, k, base*kit.Int64(data[k+"比例"]), value) - if m.Push("比例", data[k+"比例"]); data[k+"金额"] == 0 { - if k == "医疗保险" { - value -= 300 - } - data[k+"金额"] = value - } else { - value = data[k+"金额"] - } - amount += value - m.Push("金额", data[k+"金额"]) - } - - // 企业五险一金 - company := int64(0) - for _, k := range []string{"企业公积金", "企业养老保险", "企业医疗保险", "企业失业保险", "企业工伤保险", "企业生育保险"} { - m.Push("名目", k) - value := -base * kit.Int64(data[k+"比例"]) / 10000 - if m.Push("比例", data[k+"比例"]); data[k+"金额"] == 0 { - data[k+"金额"] = value - } - company += -value - m.Push("金额", data[k+"金额"]) - } - m.Push("名目", "企业承担") - m.Push("比例", "") - m.Push("金额", company) - - // 其它津贴 - for i := 3; i < len(arg)-1; i += 2 { - if arg[i] != "" && data[arg[i]] == 0 { - m.Push("名目", arg[i]) - m.Push("比例", "") - m.Push("金额", arg[i+1]) - amount += kit.Int64(arg[i+1]) - } - } - salary += amount - - m.Push("名目", "税前收入") - m.Push("比例", "") - m.Push("金额", salary) - - tax, amount := int64(0), salary - if data["个税方案"] == 6 { - // 2011年个税法案 - month := []int64{ - 8350000, 4500, - 5850000, 3500, - 3850000, 3000, - 1250000, 2500, - 800000, 2000, - 500000, 1000, - 350000, 300, - } - - for i := 0; i < len(month); i += 2 { - if amount > month[i] { - tax, amount = tax+(amount-month[i])*month[i+1]/10000, month[i] - } - } - if data["个税"] != 0 { - tax = data["个税"] - } - m.Push("名目", "个税") - m.Push("比例", "") - m.Push("金额", tax) - - m.Push("名目", "税后收入") - m.Push("比例", "") - m.Push("金额", salary-tax) - } else { - // 2019年个税法案 - // year := []int{ - // 96000000, 4500, - // 66000000, 3500, - // 42000000, 3000, - // 30000000, 2500, - // 14400000, 2000, - // 3600000, 1000, - // 0, 300, - // } - } - - switch m.Option("_action") { - case "计算": - case "记录": - // 收入 - m.Cmd("bonus", "工资", "企业承担", company, arg[0]) - m.Cmd("bonus", "工资", "基本工资", arg[1], arg[0]) - for i := 3; i < len(arg)-1; i += 2 { - if arg[i] != "" && data[arg[i]] == 0 { - m.Cmd("bonus", "工资", arg[i], arg[i+1], arg[0]) - } - } - - // 转账 - m.Cmd("trans", "工资", "公积金", -data["企业公积金金额"], arg[0]) - for _, k := range []string{"企业养老保险", "企业医疗保险", "企业失业保险", "企业工伤保险", "企业生育保险"} { - m.Cmd("trans", "工资", k, -data[k+"金额"], arg[0]) - } - m.Cmd("trans", "工资", "公积金", -data["公积金金额"], arg[0]) - for _, k := range []string{"养老保险", "医疗保险", "失业保险"} { - m.Cmd("trans", "工资", k, -data[k+"金额"], arg[0]) - } - - // 个税 - m.Cmd("trans", "工资", "个税", tax, arg[0]) - } - }}, }, } -func init() { web.Index.Register(Index, &web.Frame{}, ASSET) } +func init() { web.Index.Register(Index, nil, ASSET, SALARY) } diff --git a/core/mall/salary.go b/core/mall/salary.go new file mode 100644 index 00000000..d458741d --- /dev/null +++ b/core/mall/salary.go @@ -0,0 +1,36 @@ +package mall + +import ( + ice "github.com/shylinux/icebergs" + "github.com/shylinux/icebergs/base/mdb" + kit "github.com/shylinux/toolkits" +) + +const SALARY = "salary" + +func init() { + Index.Merge(&ice.Context{ + Configs: map[string]*ice.Config{ + SALARY: {Name: SALARY, Help: "工资", Value: kit.Data(kit.MDB_SHORT, "month")}, + }, + Commands: map[string]*ice.Command{ + SALARY: {Name: "salary month auto create", Help: "工资", Action: map[string]*ice.Action{ + mdb.CREATE: {Name: "create company month amount income tax 公积金 养老保险 医疗保险 工伤保险 失业保险 生育保险 企业公积金 企业养老保险 企业医疗保险 企业工伤保险 企业失业保险 企业生育保险", Help: "添加", Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(mdb.INSERT, SALARY, "", mdb.HASH, arg) + }}, + mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(mdb.MODIFY, SALARY, "", mdb.HASH, "month", m.Option("month"), arg) + }}, + mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(mdb.MODIFY, SALARY, "", mdb.HASH, "month", m.Option("month")) + }}, + mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(mdb.INPUTS, SALARY, "", mdb.HASH, arg) + }}, + }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + m.Option(mdb.FIELDS, kit.Select("time,month,company,amount,income,tax", mdb.DETAIL, len(arg) > 0)) + m.Cmdy(mdb.SELECT, SALARY, "", mdb.HASH, "month", arg) + }}, + }, + }, nil) +} diff --git a/core/mall/spend.go b/core/mall/spend.go deleted file mode 100644 index 0d1a0823..00000000 --- a/core/mall/spend.go +++ /dev/null @@ -1 +0,0 @@ -package mall diff --git a/core/team/asset.go b/core/team/asset.go deleted file mode 100644 index f3b5d7c3..00000000 --- a/core/team/asset.go +++ /dev/null @@ -1 +0,0 @@ -package team diff --git a/core/team/miss.go b/core/team/miss.go deleted file mode 100644 index 17b3e795..00000000 --- a/core/team/miss.go +++ /dev/null @@ -1,17 +0,0 @@ -package team - -import ( - ice "github.com/shylinux/icebergs" - kit "github.com/shylinux/toolkits" -) - -const MISS = "miss" - -func init() { - Index.Merge(&ice.Context{ - Configs: map[string]*ice.Config{ - MISS: {Name: "miss", Help: "miss", Value: kit.Data(kit.MDB_SHORT, kit.MDB_ZONE)}, - }, - Commands: map[string]*ice.Command{}, - }, nil) -} diff --git a/core/team/plan.go b/core/team/plan.go index fbb2d5a1..484f267d 100644 --- a/core/team/plan.go +++ b/core/team/plan.go @@ -5,7 +5,6 @@ import ( "github.com/shylinux/icebergs/base/ctx" "github.com/shylinux/icebergs/base/gdb" "github.com/shylinux/icebergs/base/mdb" - "github.com/shylinux/icebergs/base/web" kit "github.com/shylinux/toolkits" "time" @@ -36,22 +35,11 @@ func init() { m.Set(ice.MSG_RESULT).Cmdy(PLAN, m.Option("scale")) }}, mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { - switch arg[0] { - case "pod", "extra.pod": - m.Cmdy(web.ROUTE) - case "ctx", "extra.ctx": - m.Cmdy(ctx.CONTEXT) - case "cmd", "extra.cmd": - m.Cmdy(ctx.CONTEXT, kit.Select(m.Option("ctx"), m.Option("extra.ctx")), ctx.COMMAND) - case "arg": - - default: - _task_inputs(m, kit.Select("", arg, 0), kit.Select("", arg, 1)) - } + _task_inputs(m, kit.Select("", arg, 0), kit.Select("", arg, 1)) }}, mdb.PLUGIN: {Name: "plugin extra.pod extra.ctx extra.cmd extra.arg", Help: "插件", Hand: func(m *ice.Message, arg ...string) { - _task_modify(m, m.Option(kit.MDB_ZONE), m.Option(kit.MDB_ID), kit.MDB_TIME, m.Time(), kit.Simple(kit.Dict(arg))...) + _task_modify(m, m.Option(kit.MDB_ZONE), m.Option(kit.MDB_ID), kit.MDB_TIME, m.Time(), kit.Simple(kit.KeyValue(nil, "", kit.Dict(arg)))...) m.Set(ice.MSG_RESULT).Cmdy(PLAN, m.Option("scale")) }}, ctx.COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) { @@ -59,7 +47,9 @@ func init() { m.Cmdy(arg[1], arg[2:]) return } - m.Cmdy(ctx.COMMAND, arg[0]) + if len(arg) > 0 { + m.Cmdy(ctx.COMMAND, arg[0]) + } }}, gdb.BEGIN: {Name: "begin", Help: "开始", Hand: func(m *ice.Message, arg ...string) { diff --git a/core/team/task.go b/core/team/task.go index 5bc1d9f7..addcd409 100644 --- a/core/team/task.go +++ b/core/team/task.go @@ -62,7 +62,7 @@ func _task_list(m *ice.Message, zone string, id string) { } else { m.Option(mdb.FIELDS, kit.Select("begin_time,id,status,level,score,type,name,text", mdb.DETAIL, id != "")) defer m.Table(func(index int, value map[string]string, head []string) { - m.PushRender(kit.MDB_ACTION, kit.MDB_BUTTON, _task_action(m, value[TaskField.STATUS])) + m.PushButton(_task_action(m, value[TaskField.STATUS])) }) } m.Cmdy(mdb.SELECT, TASK, "", mdb.ZONE, zone, id) diff --git a/core/team/team.go b/core/team/team.go index 0ab92464..6054b0e9 100644 --- a/core/team/team.go +++ b/core/team/team.go @@ -9,12 +9,8 @@ const TEAM = "team" var Index = &ice.Context{Name: TEAM, Help: "团队中心", Commands: map[string]*ice.Command{ - ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Load() - }}, - ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Save() - }}, + ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Load() }}, + ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Save() }}, }, } diff --git a/core/wiki/chart.go b/core/wiki/chart.go index 2156bdfb..994859c3 100644 --- a/core/wiki/chart.go +++ b/core/wiki/chart.go @@ -1,10 +1,10 @@ package wiki import ( - "strings" - ice "github.com/shylinux/icebergs" kit "github.com/shylinux/toolkits" + + "strings" ) // 图形接口 diff --git a/core/wiki/data.go b/core/wiki/data.go index 2bab350d..65a89e42 100644 --- a/core/wiki/data.go +++ b/core/wiki/data.go @@ -15,9 +15,7 @@ const DATA = "data" func init() { Index.Merge(&ice.Context{ Configs: map[string]*ice.Config{ - DATA: {Name: DATA, Help: "数据表格", Value: kit.Data( - "path", "usr/export", "regs", ".*\\.csv", - )}, + DATA: {Name: DATA, Help: "数据表格", Value: kit.Data(kit.MDB_PATH, "usr/export", "regs", ".*\\.csv")}, }, Commands: map[string]*ice.Command{ DATA: {Name: "data path auto", Help: "数据表格", Meta: kit.Dict( diff --git a/core/wiki/draw.go b/core/wiki/draw.go index 0aec0a34..4262244d 100644 --- a/core/wiki/draw.go +++ b/core/wiki/draw.go @@ -13,20 +13,21 @@ const DRAW = "draw" func init() { Index.Merge(&ice.Context{ Configs: map[string]*ice.Config{ - DRAW: {Name: DRAW, Help: "思维导图", Value: kit.Data( - "path", "", "regs", ".*\\.svg", - )}, + DRAW: {Name: DRAW, Help: "思维导图", Value: kit.Data(kit.MDB_PATH, "", "regs", ".*\\.svg")}, }, Commands: map[string]*ice.Command{ - DRAW: {Name: "draw path=src/ file=main.svg 刷新:button=auto 编辑 保存 项目 变参", Help: "思维导图", Meta: kit.Dict( + DRAW: {Name: "draw path=src/ file=main.svg 刷新:button=auto 编辑 save 项目 变参", Help: "思维导图", Meta: kit.Dict( "display", "/plugin/local/wiki/draw.js", "style", "drawer", ), Action: map[string]*ice.Action{ - nfs.SAVE: {Name: "save path file text", Help: "保存", Hand: func(m *ice.Message, arg ...string) { + nfs.SAVE: {Name: "save", Help: "保存", Hand: func(m *ice.Message, arg ...string) { _wiki_save(m, DRAW, path.Join(arg...), m.Option("content")) }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { if !_wiki_list(m, DRAW, kit.Select("./", path.Join(arg...))) { _wiki_show(m, DRAW, path.Join(arg...)) + if m.Result(0) == ice.ErrWarn { + m.Set(ice.MSG_RESULT) + } } }}, }, diff --git a/core/wiki/feel.go b/core/wiki/feel.go index 7a76635b..d418815f 100644 --- a/core/wiki/feel.go +++ b/core/wiki/feel.go @@ -12,20 +12,20 @@ func init() { Index.Merge(&ice.Context{ Configs: map[string]*ice.Config{ FEEL: {Name: FEEL, Help: "影音媒体", Value: kit.Data( - "path", "usr/image", "regs", ".*.(qrc|png|PNG|jpg|jpeg|JPG|MOV|m4v|mp4)", + kit.MDB_PATH, "usr/image", "regs", ".*.(qrc|png|PNG|jpg|jpeg|JPG|MOV|m4v|mp4)", )}, }, Commands: map[string]*ice.Command{ - FEEL: {Name: "feel path auto 上传 上一页 下一页 下载 参数", Help: "影音媒体", Meta: kit.Dict( + FEEL: {Name: "feel path auto upload 上一页 下一页 下载 参数", Help: "影音媒体", Meta: kit.Dict( "display", "/plugin/local/wiki/feel.js", ), Action: map[string]*ice.Action{ web.UPLOAD: {Name: "upload", Help: "上传", Hand: func(m *ice.Message, arg ...string) { - _wiki_upload(m, FEEL) + _wiki_upload(m, FEEL, m.Option(kit.MDB_PATH)) }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { _wiki_list(m, FEEL, kit.Select("./", arg, 0)) - m.Sort(kit.MDB_TIME, "time_r") - m.Option("_display", "") + m.Option(ice.MSG_DISPLAY, "") + m.SortTimeR(kit.MDB_TIME) }}, }, }, nil) diff --git a/core/wiki/wiki.go b/core/wiki/wiki.go index 64b407ad..d6f26961 100644 --- a/core/wiki/wiki.go +++ b/core/wiki/wiki.go @@ -1,25 +1,27 @@ package wiki import ( - "path" - "strings" - ice "github.com/shylinux/icebergs" "github.com/shylinux/icebergs/base/nfs" "github.com/shylinux/icebergs/base/web" kit "github.com/shylinux/toolkits" + + "path" + "strings" ) +func _wiki_path(m *ice.Message, cmd string, arg ...string) string { + return path.Join(m.Option(ice.MSG_LOCAL), m.Conf(cmd, kit.META_PATH), path.Join(arg...)) +} + func _wiki_list(m *ice.Message, cmd string, arg ...string) bool { - m.Option("prefix", path.Join(m.Option(ice.MSG_LOCAL), m.Conf(cmd, kit.META_PATH))) - m.Option(nfs.DIR_ROOT, path.Join(m.Option(ice.MSG_LOCAL), m.Conf(cmd, kit.META_PATH))) + m.Option("prefix", m.Option(nfs.DIR_ROOT, _wiki_path(m, cmd))) if len(arg) == 0 || strings.HasSuffix(arg[0], "/") { - m.Option("_display", "table") + m.Option(ice.MSG_DISPLAY, "table") if m.Option(nfs.DIR_DEEP) != "true" { // 目录列表 m.Option(nfs.DIR_TYPE, nfs.DIR) m.Cmdy(nfs.DIR, kit.Select("./", arg, 0), "time size path") - } // 文件列表 @@ -31,14 +33,16 @@ func _wiki_list(m *ice.Message, cmd string, arg ...string) bool { return false } func _wiki_show(m *ice.Message, cmd, name string, arg ...string) { - m.Cmdy(nfs.CAT, path.Join(m.Conf(cmd, "meta.path"), name)) + m.Option(nfs.DIR_ROOT, "") + m.Cmdy(nfs.CAT, _wiki_path(m, cmd, name)) } func _wiki_save(m *ice.Message, cmd, name, text string, arg ...string) { - m.Cmd(nfs.SAVE, path.Join(m.Conf(cmd, "meta.path"), name), text) + m.Option(nfs.DIR_ROOT, "") + m.Cmd(nfs.SAVE, _wiki_path(m, cmd, name), text) } -func _wiki_upload(m *ice.Message, cmd string) { +func _wiki_upload(m *ice.Message, cmd string, dir string) { up := kit.Simple(m.Optionv(ice.MSG_UPLOAD)) - if p := path.Join(m.Option(ice.MSG_LOCAL), m.Conf(cmd, kit.META_PATH), m.Option(kit.MDB_PATH), up[1]); m.Option(ice.MSG_USERPOD) == "" { + if p := _wiki_path(m, cmd, dir, up[1]); m.Option(ice.MSG_USERPOD) == "" { m.Cmdy(web.CACHE, web.WATCH, up[0], p) } else { m.Cmdy(web.SPIDE, web.SPIDE_DEV, web.SPIDE_SAVE, p, web.SPIDE_GET, kit.MergeURL2(m.Option(ice.MSG_USERWEB), "/share/cache/"+up[0])) @@ -49,12 +53,8 @@ const WIKI = "wiki" var Index = &ice.Context{Name: WIKI, Help: "文档中心", Commands: map[string]*ice.Command{ - ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Load() - }}, - ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Save() - }}, + ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Load() }}, + ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Save() }}, }, } diff --git a/core/wiki/word.go b/core/wiki/word.go index d5196a61..9125e9ab 100644 --- a/core/wiki/word.go +++ b/core/wiki/word.go @@ -3,7 +3,6 @@ package wiki import ( ice "github.com/shylinux/icebergs" "github.com/shylinux/icebergs/base/cli" - "github.com/shylinux/icebergs/base/ctx" "github.com/shylinux/icebergs/base/nfs" "github.com/shylinux/icebergs/base/ssh" "github.com/shylinux/icebergs/base/web" @@ -175,14 +174,7 @@ func _field_show(m *ice.Message, name, text string, arg ...string) { data := kit.Dict(kit.MDB_NAME, name) cmds := kit.Split(text) m.Search(cmds[0], func(p *ice.Context, s *ice.Context, key string, cmd *ice.Command) { - if ls := strings.Split(cmds[0], "."); len(ls) > 1 { - m.Cmd(ctx.COMMAND, strings.Join(ls[:len(ls)-1], "."), key) - } else { - m.Cmd(ctx.COMMAND, key) - } - if data["feature"], data["inputs"] = cmd.Meta, cmd.List; len(cmd.List) == 0 { - data["inputs"] = m.Confv("field", "meta.some.simple.inputs") - } + data["feature"], data["inputs"] = cmd.Meta, cmd.List }) // 扩展参数 @@ -216,9 +208,7 @@ func _field_show(m *ice.Message, name, text string, arg ...string) { list := data["inputs"].([]interface{}) for i := count; i < len(args); i++ { list = append(list, kit.Dict( - "_input", "text", - "name", "args", - "value", args[i], + "_input", "text", "name", "args", "value", args[i], )) } data["inputs"] = list @@ -287,7 +277,6 @@ func _video_show(m *ice.Message, name, text string, arg ...string) { } func _baidu_show(m *ice.Message, name, text string, arg ...string) { _option(m, BAIDU, name, text, arg...) - // m.Cmdy(mdb.RENDER, web.RENDER.Frame, kit.Format("https://baidu.com/s?wd=%s", text)) } func _other_show(m *ice.Message, name, text string, arg ...string) { @@ -298,29 +287,12 @@ func _other_show(m *ice.Message, name, text string, arg ...string) { func _word_show(m *ice.Message, name string, arg ...string) { m.Set(ice.MSG_RESULT) m.Option("render", "raw") - m.Optionv(TITLE, map[string]int{}) - m.Optionv("menu", map[string]interface{}{"list": []interface{}{}}) - m.Optionv(ice.MSG_ALIAS, m.Confv(WORD, "meta.alias")) - m.Cmdy(ssh.SOURCE, path.Join(m.Conf(WORD, "meta.path"), name)) -} -func reply(m *ice.Message, cmd string, arg ...string) bool { - m.Option(nfs.DIR_ROOT, m.Conf(cmd, "meta.path")) - if len(arg) == 0 || strings.HasSuffix(arg[0], "/") { - m.Option("_display", "table") - if m.Option(nfs.DIR_DEEP) != "true" { - // 目录列表 - m.Option(nfs.DIR_TYPE, nfs.DIR) - m.Cmdy(nfs.DIR, kit.Select("./", arg, 0)) + m.Option(TITLE, map[string]int{}) + m.Option("menu", map[string]interface{}{"list": []interface{}{}}) - } - - // 文件列表 - m.Option(nfs.DIR_TYPE, nfs.FILE) - m.Option(nfs.DIR_REG, m.Conf(cmd, "meta.regs")) - m.Cmdy(nfs.DIR, kit.Select("./", arg, 0)) - return true - } - return false + m.Option(ice.MSG_ALIAS, m.Confv(WORD, "meta.alias")) + m.Option(nfs.DIR_ROOT, _wiki_path(m, WORD)) + m.Cmdy(ssh.SOURCE, name) } const ( @@ -374,7 +346,7 @@ func init() { VIDEO: {Name: VIDEO, Help: "视频", Value: kit.Data("template", video)}, WORD: {Name: WORD, Help: "语言文字", Value: kit.Data( - "path", "", "regs", ".*\\.shy", "alias", map[string]interface{}{ + kit.MDB_PATH, "", "regs", ".*\\.shy", "alias", map[string]interface{}{ PREMENU: []interface{}{TITLE, PREMENU}, CHAPTER: []interface{}{TITLE, CHAPTER}, SECTION: []interface{}{TITLE, SECTION}, @@ -433,7 +405,7 @@ func init() { }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { arg = _name(m, arg) - _field_show(m, strings.ReplaceAll(arg[0], " ", "_"), arg[1], arg[2:]...) + _field_show(m, strings.ReplaceAll(kit.Select(path.Base(arg[1]), arg[0]), " ", "_"), arg[1], arg[2:]...) }}, SHELL: {Name: "shell [name] cmd", Help: "命令", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { arg = _name(m, arg) @@ -491,7 +463,7 @@ func init() { m.Cmdy(arg[0], "action", "run", arg[1:]) }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - if m.Option(nfs.DIR_DEEP, "true"); reply(m, cmd, arg...) { + if m.Option(nfs.DIR_DEEP, "true"); _wiki_list(m, cmd, arg...) { return } _word_show(m, arg[0]) diff --git a/meta.go b/meta.go index 0cf01258..f7cee936 100644 --- a/meta.go +++ b/meta.go @@ -117,7 +117,7 @@ func (m *Message) Push(key string, value interface{}, arg ...interface{}) *Messa default: if m.Option("fields") == "detail" || (len(m.meta[MSG_APPEND]) == 2 && m.meta[MSG_APPEND][0] == kit.MDB_KEY && m.meta[MSG_APPEND][1] == kit.MDB_VALUE) { - if key != kit.MDB_KEY || key != kit.MDB_VALUE { + if key != kit.MDB_KEY && key != kit.MDB_VALUE { m.Add(MSG_APPEND, kit.MDB_KEY, key) m.Add(MSG_APPEND, kit.MDB_VALUE, kit.Format(value)) break diff --git a/misc.go b/misc.go index 204ab625..9da6a344 100644 --- a/misc.go +++ b/misc.go @@ -101,6 +101,13 @@ func (m *Message) PushAction(list ...interface{}) { }) } +func (m *Message) SortStr(key string) { m.Sort(key, "str") } +func (m *Message) SortStrR(key string) { m.Sort(key, "str_r") } +func (m *Message) SortInt(key string) { m.Sort(key, "int") } +func (m *Message) SortIntR(key string) { m.Sort(key, "int_r") } +func (m *Message) SortTime(key string) { m.Sort(key, "time") } +func (m *Message) SortTimeR(key string) { m.Sort(key, "time_r") } + var count = int32(0) func (m *Message) AddCmd(cmd *Command) string {