forked from x/icebergs
opt core
This commit is contained in:
parent
bfbf6d9a2d
commit
9dc89e50c5
@ -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)), ",")))
|
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) {
|
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.Log_INSERT(kit.MDB_KEY, path.Join(prefix, chain), arg[0], arg[1])
|
||||||
m.Echo(m.Rich(prefix, chain, kit.Data(arg)))
|
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)
|
fields := _hash_fields(m)
|
||||||
m.Richs(prefix, chain, value, func(key string, val map[string]interface{}) {
|
m.Richs(prefix, chain, value, func(key string, val map[string]interface{}) {
|
||||||
if val[kit.MDB_META] != nil {
|
val = kit.GetMeta(val)
|
||||||
val = val[kit.MDB_META].(map[string]interface{})
|
|
||||||
}
|
|
||||||
if m.Option(FIELDS) == DETAIL {
|
if m.Option(FIELDS) == DETAIL {
|
||||||
m.Push(DETAIL, val)
|
m.Push(DETAIL, val)
|
||||||
} else {
|
} 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) {
|
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{}) {
|
m.Richs(prefix, chain, value, func(key string, val map[string]interface{}) {
|
||||||
if val[kit.MDB_META] != nil {
|
val = kit.GetMeta(val)
|
||||||
val = val[kit.MDB_META].(map[string]interface{})
|
|
||||||
}
|
|
||||||
for i := 0; i < len(arg)-1; i += 2 {
|
for i := 0; i < len(arg)-1; i += 2 {
|
||||||
if arg[i] == field {
|
if arg[i] == field {
|
||||||
continue
|
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) {
|
func _hash_inputs(m *ice.Message, prefix, chain string, field, value string) {
|
||||||
list := map[string]int{}
|
list := map[string]int{}
|
||||||
m.Richs(prefix, chain, kit.MDB_FOREACH, func(key string, val map[string]interface{}) {
|
m.Richs(prefix, chain, kit.MDB_FOREACH, func(key string, val map[string]interface{}) {
|
||||||
if val[kit.MDB_META] != nil {
|
val = kit.GetMeta(val)
|
||||||
val = val[kit.MDB_META].(map[string]interface{})
|
|
||||||
}
|
|
||||||
if field == kit.MDB_HASH {
|
if field == kit.MDB_HASH {
|
||||||
list[key]++
|
list[key]++
|
||||||
} else {
|
} else {
|
||||||
@ -152,15 +149,20 @@ func _list_select(m *ice.Message, prefix, chain, field, value string) {
|
|||||||
field = ""
|
field = ""
|
||||||
}
|
}
|
||||||
fields := _list_fields(m)
|
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{}) {
|
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 = kit.GetMeta(val)
|
||||||
val = val[kit.MDB_META].(map[string]interface{})
|
switch cb := cb.(type) {
|
||||||
}
|
case func(fields []string, value map[string]interface{}):
|
||||||
|
cb(fields, val)
|
||||||
|
default:
|
||||||
if m.Option(FIELDS) == DETAIL {
|
if m.Option(FIELDS) == DETAIL {
|
||||||
m.Push(DETAIL, val)
|
m.Push(DETAIL, val)
|
||||||
} else {
|
} else {
|
||||||
m.Push("", val, fields)
|
m.Push("", val, fields)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
if m.Option(FIELDS) != DETAIL {
|
if m.Option(FIELDS) != DETAIL {
|
||||||
m.Sort(kit.MDB_ID, "int_r")
|
m.Sort(kit.MDB_ID, "int_r")
|
||||||
@ -189,9 +191,7 @@ func _list_export(m *ice.Message, prefix, chain, file string) {
|
|||||||
count := 0
|
count := 0
|
||||||
head := kit.Split(m.Option(FIELDS))
|
head := kit.Split(m.Option(FIELDS))
|
||||||
m.Grows(prefix, chain, "", "", func(index int, val map[string]interface{}) {
|
m.Grows(prefix, chain, "", "", func(index int, val map[string]interface{}) {
|
||||||
if val[kit.MDB_META] != nil {
|
val = kit.GetMeta(val)
|
||||||
val = val[kit.MDB_META].(map[string]interface{})
|
|
||||||
}
|
|
||||||
|
|
||||||
if index == 0 && len(head) == 0 {
|
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) {
|
func _list_inputs(m *ice.Message, prefix, chain string, field, value string) {
|
||||||
list := map[string]int{}
|
list := map[string]int{}
|
||||||
m.Grows(prefix, chain, "", "", func(index int, val map[string]interface{}) {
|
m.Grows(prefix, chain, "", "", func(index int, val map[string]interface{}) {
|
||||||
if val[kit.MDB_META] != nil {
|
val = kit.GetMeta(val)
|
||||||
val = val[kit.MDB_META].(map[string]interface{})
|
|
||||||
}
|
|
||||||
list[kit.Format(val[field])]++
|
list[kit.Format(val[field])]++
|
||||||
})
|
})
|
||||||
for k, i := range list {
|
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)), ",")))
|
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) {
|
func _zone_select(m *ice.Message, prefix, chain, zone string, id string) {
|
||||||
cb := m.Optionv(SELECT_CB)
|
|
||||||
fields := _zone_fields(m)
|
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{}) {
|
m.Richs(prefix, chain, kit.Select(kit.MDB_FOREACH, zone), func(key string, val map[string]interface{}) {
|
||||||
if val[kit.MDB_META] != nil {
|
val = kit.GetMeta(val)
|
||||||
val = val[kit.MDB_META].(map[string]interface{})
|
|
||||||
}
|
|
||||||
if zone == "" {
|
if zone == "" {
|
||||||
if m.Option(FIELDS) == DETAIL {
|
if m.Option(FIELDS) == DETAIL {
|
||||||
m.Push(DETAIL, val)
|
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{}) {
|
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 = kit.GetMeta(value)
|
||||||
value = value[kit.MDB_META].(map[string]interface{})
|
|
||||||
}
|
|
||||||
|
|
||||||
switch cb := cb.(type) {
|
switch cb := cb.(type) {
|
||||||
case func(string, []string, map[string]interface{}, map[string]interface{}):
|
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
|
count := 0
|
||||||
m.Richs(prefix, chain, kit.MDB_FOREACH, func(key string, val map[string]interface{}) {
|
m.Richs(prefix, chain, kit.MDB_FOREACH, func(key string, val map[string]interface{}) {
|
||||||
if val[kit.MDB_META] != nil {
|
val = kit.GetMeta(val)
|
||||||
val = val[kit.MDB_META].(map[string]interface{})
|
|
||||||
}
|
|
||||||
|
|
||||||
m.Grows(prefix, kit.Keys(chain, kit.MDB_HASH, key), "", "", func(index int, value map[string]interface{}) {
|
m.Grows(prefix, kit.Keys(chain, kit.MDB_HASH, key), "", "", func(index int, value map[string]interface{}) {
|
||||||
if value[kit.MDB_META] != nil {
|
value = kit.GetMeta(value)
|
||||||
value = value[kit.MDB_META].(map[string]interface{})
|
|
||||||
}
|
|
||||||
|
|
||||||
list := []string{}
|
list := []string{}
|
||||||
for _, k := range fields {
|
for _, k := range fields {
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
"github.com/shylinux/icebergs/base/aaa"
|
"github.com/shylinux/icebergs/base/aaa"
|
||||||
"github.com/shylinux/icebergs/base/cli"
|
"github.com/shylinux/icebergs/base/cli"
|
||||||
"github.com/shylinux/icebergs/base/mdb"
|
"github.com/shylinux/icebergs/base/mdb"
|
||||||
|
"github.com/shylinux/icebergs/base/nfs"
|
||||||
kit "github.com/shylinux/toolkits"
|
kit "github.com/shylinux/toolkits"
|
||||||
|
|
||||||
"bufio"
|
"bufio"
|
||||||
@ -58,7 +59,7 @@ func Script(m *ice.Message, name string) io.Reader {
|
|||||||
}
|
}
|
||||||
m.Option("_script", name)
|
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
|
return s
|
||||||
}
|
}
|
||||||
switch strings.Split(name, "/")[0] {
|
switch strings.Split(name, "/")[0] {
|
||||||
|
1
conf.go
1
conf.go
@ -26,6 +26,7 @@ const ( // MSG
|
|||||||
MSG_ARGS = "_args"
|
MSG_ARGS = "_args"
|
||||||
|
|
||||||
MSG_CONTROL = "_control"
|
MSG_CONTROL = "_control"
|
||||||
|
MSG_DISPLAY = "_display"
|
||||||
MSG_PROCESS = "_process"
|
MSG_PROCESS = "_process"
|
||||||
|
|
||||||
MSG_CMDS = "cmds"
|
MSG_CMDS = "cmds"
|
||||||
|
@ -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(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.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) {
|
func _action_show(m *ice.Message, river, storm, index string, arg ...string) {
|
||||||
cmds := []string{index}
|
cmds := []string{index}
|
||||||
@ -98,9 +99,7 @@ const ACTION = "action"
|
|||||||
func init() {
|
func init() {
|
||||||
Index.Merge(&ice.Context{
|
Index.Merge(&ice.Context{
|
||||||
Configs: map[string]*ice.Config{
|
Configs: map[string]*ice.Config{
|
||||||
ACTION: {Name: ACTION, Help: "应用", Value: kit.Data(
|
ACTION: {Name: ACTION, Help: "应用", Value: kit.Data(DOMAIN, kit.Dict())},
|
||||||
DOMAIN, kit.Dict(),
|
|
||||||
)},
|
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
"/action": {Name: "/action river storm action arg...", Help: "工作台", Action: map[string]*ice.Action{
|
"/action": {Name: "/action river storm action arg...", Help: "工作台", Action: map[string]*ice.Action{
|
||||||
|
@ -15,12 +15,19 @@ var Index = &ice.Context{Name: CHAT, Help: "聊天中心",
|
|||||||
m.Load()
|
m.Load()
|
||||||
m.Cmd(web.SERVE, aaa.WHITE, "header", "river", "action", "footer")
|
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.location", "true")
|
||||||
m.Conf(ACTION, "meta.domain.web.chat.paste", "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.chat.scan", "true")
|
||||||
m.Conf(ACTION, "meta.domain.web.wiki.feel", "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.task", "true")
|
||||||
m.Conf(ACTION, "meta.domain.web.team.plan", "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(
|
m.Conf(RIVER, "meta.template", kit.Dict(
|
||||||
"base", kit.Dict(
|
"base", kit.Dict(
|
||||||
@ -35,17 +42,19 @@ var Index = &ice.Context{Name: CHAT, Help: "聊天中心",
|
|||||||
"web.chat.scan",
|
"web.chat.scan",
|
||||||
"web.chat.paste",
|
"web.chat.paste",
|
||||||
"web.chat.location",
|
"web.chat.location",
|
||||||
|
"web.chat.meet.miss",
|
||||||
|
"web.wiki.feel",
|
||||||
},
|
},
|
||||||
"miss", []interface{}{
|
"task", []interface{}{
|
||||||
"web.team.task",
|
"web.team.task",
|
||||||
"web.team.plan",
|
"web.team.plan",
|
||||||
"web.wiki.draw",
|
"web.mall.asset",
|
||||||
"web.wiki.data",
|
"web.mall.salary",
|
||||||
"web.wiki.word",
|
"web.wiki.word",
|
||||||
},
|
},
|
||||||
"meet", []interface{}{
|
"draw", []interface{}{
|
||||||
"web.wiki.feel",
|
"web.wiki.draw",
|
||||||
"web.chat.meet.miss",
|
"web.wiki.data",
|
||||||
"web.wiki.word",
|
"web.wiki.word",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
@ -6,8 +6,6 @@ import (
|
|||||||
kit "github.com/shylinux/toolkits"
|
kit "github.com/shylinux/toolkits"
|
||||||
)
|
)
|
||||||
|
|
||||||
var _miss_select = "time,name,照片,性别,年龄,身高,籍贯,户口,学历,职业,公司,年薪,资产,家境"
|
|
||||||
|
|
||||||
const (
|
const (
|
||||||
MISS = "miss"
|
MISS = "miss"
|
||||||
)
|
)
|
||||||
@ -25,23 +23,23 @@ func init() {
|
|||||||
|
|
||||||
MISS: {Name: "miss name auto create", Help: "资料", Action: map[string]*ice.Action{
|
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) {
|
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) {
|
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) {
|
mdb.REMOVE: {Name: "remove", 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))
|
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) {
|
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) {
|
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) {
|
}, 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))
|
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) {
|
msg.Table(func(index int, value map[string]string, head []string) {
|
||||||
value["照片"] = kit.Format(`<img src="%s" height=%s>`, value["照片"], kit.Select("100", "400", m.Option(mdb.FIELDS) == mdb.DETAIL))
|
value["照片"] = kit.Format(`<img src="%s" height=%s>`, value["照片"], kit.Select("100", "400", m.Option(mdb.FIELDS) == mdb.DETAIL))
|
||||||
m.Push("", value, kit.Split(m.Option(mdb.FIELDS)))
|
m.Push("", value, kit.Split(m.Option(mdb.FIELDS)))
|
||||||
|
@ -18,7 +18,7 @@ func init() {
|
|||||||
PASTE: {Name: "paste hash auto create@paste", Help: "粘贴板", Action: map[string]*ice.Action{
|
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) {
|
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"})
|
_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)
|
m.Cmdy(mdb.INSERT, m.Prefix(PASTE), "", mdb.HASH, arg)
|
||||||
}},
|
}},
|
||||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
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.Cmdy(mdb.SELECT, m.Prefix(PASTE), "", mdb.HASH)
|
||||||
m.Sort(kit.MDB_TIME, "time_r")
|
m.SortTimeR(kit.MDB_TIME)
|
||||||
m.PushAction(mdb.REMOVE)
|
m.PushAction(mdb.REMOVE)
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
|
@ -43,6 +43,7 @@ const (
|
|||||||
POD = "pod"
|
POD = "pod"
|
||||||
CTX = "ctx"
|
CTX = "ctx"
|
||||||
CMD = "cmd"
|
CMD = "cmd"
|
||||||
|
ARG = "arg"
|
||||||
)
|
)
|
||||||
const (
|
const (
|
||||||
INFO = "info"
|
INFO = "info"
|
||||||
@ -57,9 +58,7 @@ const RIVER = "river"
|
|||||||
func init() {
|
func init() {
|
||||||
Index.Merge(&ice.Context{
|
Index.Merge(&ice.Context{
|
||||||
Configs: map[string]*ice.Config{
|
Configs: map[string]*ice.Config{
|
||||||
RIVER: {Name: RIVER, Help: "群组", Value: kit.Data(
|
RIVER: {Name: RIVER, Help: "群组", Value: kit.Data(kit.MDB_PATH, "usr/local/river")},
|
||||||
kit.MDB_PATH, "usr/local/river",
|
|
||||||
)},
|
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
INFO: {Name: "info auto", Help: "信息", Action: map[string]*ice.Action{
|
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)
|
m.Appendv(ice.MSG_APPEND, aaa.USERNAME, aaa.USERNICK)
|
||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, 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.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.Table(func(index int, value map[string]string, head []string) {
|
||||||
m.Push(aaa.USERNICK, aaa.UserNick(m, value[aaa.USERNAME]))
|
m.Push(aaa.USERNICK, aaa.UserNick(m, value[aaa.USERNAME]))
|
||||||
|
@ -17,7 +17,7 @@ func init() {
|
|||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
SCAN: {Name: "scan hash auto create@scan", Help: "扫码", Action: map[string]*ice.Action{
|
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) {
|
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)
|
m.Cmdy(mdb.INSERT, m.Prefix(SCAN), "", mdb.HASH, arg)
|
||||||
}},
|
}},
|
||||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
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.Cmdy(mdb.SELECT, m.Prefix(SCAN), "", mdb.HASH)
|
||||||
m.Sort(kit.MDB_TIME, "time_r")
|
m.SortTimeR(kit.MDB_TIME)
|
||||||
m.PushAction(mdb.REMOVE)
|
m.PushAction(mdb.REMOVE)
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
|
@ -11,37 +11,66 @@ import (
|
|||||||
func _sub_key(m *ice.Message, account string) string {
|
func _sub_key(m *ice.Message, account string) string {
|
||||||
return kit.Keys(kit.MDB_HASH, kit.Hashs(account))
|
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) {
|
func _asset_list(m *ice.Message, account string, id string) {
|
||||||
if account == "" {
|
if account == "" {
|
||||||
m.Option(mdb.FIELDS, "time,account,amount,count")
|
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 {
|
} 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)
|
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) {
|
func _asset_create(m *ice.Message, account string) {
|
||||||
m.Cmdy(mdb.INSERT, ASSET, "", mdb.HASH, ACCOUNT, account)
|
m.Cmdy(mdb.INSERT, ASSET, "", mdb.HASH, ACCOUNT, account)
|
||||||
}
|
}
|
||||||
func _asset_insert(m *ice.Message, account string, arg ...string) {
|
func _asset_insert(m *ice.Message, account string, arg ...string) {
|
||||||
msg := m.Cmd(mdb.SELECT, ASSET, "", mdb.HASH, ACCOUNT, account)
|
_asset_create(m, 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])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
m.Cmdy(mdb.INSERT, ASSET, _sub_key(m, account), mdb.LIST, arg)
|
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)
|
m.Cmdy(mdb.MODIFY, ASSET, "", mdb.HASH, ACCOUNT, account, AMOUNT, amount)
|
||||||
}
|
}
|
||||||
func _asset_modify(m *ice.Message, account, id, field, value string, arg ...string) {
|
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, field, value, arg)
|
m.Cmdy(mdb.MODIFY, ASSET, _sub_key(m, account), mdb.LIST, kit.MDB_ID, id, arg)
|
||||||
}
|
}
|
||||||
func _asset_export(m *ice.Message, file string) {
|
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)
|
m.Cmdy(mdb.EXPORT, ASSET, "", mdb.ZONE, file)
|
||||||
}
|
}
|
||||||
func _asset_import(m *ice.Message, file string) {
|
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) {
|
func _asset_inputs(m *ice.Message, field, value string) {
|
||||||
switch field {
|
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:
|
case "from", "to", ACCOUNT:
|
||||||
m.Cmdy(mdb.INPUTS, ASSET, "", mdb.HASH, ACCOUNT, value)
|
m.Cmdy(mdb.INPUTS, ASSET, "", mdb.HASH, ACCOUNT, value)
|
||||||
default:
|
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"
|
SPEND = "spend"
|
||||||
TRANC = "tranc"
|
TRANC = "tranc"
|
||||||
BONUS = "bonus"
|
BONUS = "bonus"
|
||||||
|
CHECK = "check"
|
||||||
)
|
)
|
||||||
const ASSET = "asset"
|
const ASSET = "asset"
|
||||||
|
|
||||||
@ -73,29 +111,22 @@ func init() {
|
|||||||
ASSET: {Name: ASSET, Help: "资产", Value: kit.Data(kit.MDB_SHORT, ACCOUNT)},
|
ASSET: {Name: ASSET, Help: "资产", Value: kit.Data(kit.MDB_SHORT, ACCOUNT)},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
ASSET: {Name: "asset account id auto spend tranc bonus export import", Help: "资产", Action: map[string]*ice.Action{
|
ASSET: {Name: "asset account id auto spend tranc bonus", Help: "资产", Action: map[string]*ice.Action{
|
||||||
SPEND: {Name: "spend account amount time@date name text", Help: "消费", Hand: func(m *ice.Message, arg ...string) {
|
SPEND: {Name: "spend account name amount time@date text", Help: "支出", Hand: func(m *ice.Message, arg ...string) {
|
||||||
_asset_create(m, arg[1])
|
_sub_amount(m, arg)
|
||||||
if amount := kit.Int(arg[3]); amount > 0 {
|
|
||||||
arg[3] = kit.Format(-amount)
|
|
||||||
}
|
|
||||||
_asset_insert(m, arg[1], kit.Simple(kit.MDB_TYPE, "支出", arg[2:])...)
|
_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) {
|
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_insert(m, arg[3], kit.Simple(kit.MDB_TYPE, "转入", kit.MDB_NAME, arg[1], arg[4:])...)
|
||||||
|
_sub_amount(m, arg)
|
||||||
_asset_create(m, arg[1])
|
|
||||||
if amount := kit.Int(arg[5]); amount > 0 {
|
|
||||||
arg[5] = kit.Format(-amount)
|
|
||||||
}
|
|
||||||
_asset_insert(m, arg[1], kit.Simple(kit.MDB_TYPE, "转出", kit.MDB_NAME, arg[3], arg[4:])...)
|
_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) {
|
BONUS: {Name: "bonus account name amount time@date text", Help: "收入", Hand: func(m *ice.Message, arg ...string) {
|
||||||
_asset_create(m, arg[1])
|
|
||||||
_asset_insert(m, arg[1], kit.Simple(kit.MDB_TYPE, "收入", arg[2:])...)
|
_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) {
|
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])
|
_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))
|
_asset_import(m, m.Option(kit.MDB_FILE))
|
||||||
}},
|
}},
|
||||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
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) {
|
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) {
|
ctx.COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||||
if arg[0] == "run" {
|
if arg[0] == "run" {
|
||||||
m.Cmdy(arg[1], arg[2:])
|
m.Cmdy(arg[1], arg[2:])
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if len(arg) > 0 {
|
||||||
m.Cmdy(ctx.COMMAND, arg[0])
|
m.Cmdy(ctx.COMMAND, arg[0])
|
||||||
|
return
|
||||||
|
}
|
||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
_asset_list(m, kit.Select("", arg, 0), kit.Select("", arg, 1))
|
_asset_list(m, kit.Select("", arg, 0), kit.Select("", arg, 1))
|
||||||
|
@ -3,7 +3,6 @@ package mall
|
|||||||
import (
|
import (
|
||||||
ice "github.com/shylinux/icebergs"
|
ice "github.com/shylinux/icebergs"
|
||||||
"github.com/shylinux/icebergs/base/web"
|
"github.com/shylinux/icebergs/base/web"
|
||||||
kit "github.com/shylinux/toolkits"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const MALL = "mall"
|
const MALL = "mall"
|
||||||
@ -12,150 +11,7 @@ var Index = &ice.Context{Name: MALL, Help: "贸易中心",
|
|||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Load() }},
|
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_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) }
|
||||||
|
36
core/mall/salary.go
Normal file
36
core/mall/salary.go
Normal file
@ -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)
|
||||||
|
}
|
@ -1 +0,0 @@
|
|||||||
package mall
|
|
@ -1 +0,0 @@
|
|||||||
package team
|
|
@ -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)
|
|
||||||
}
|
|
@ -5,7 +5,6 @@ import (
|
|||||||
"github.com/shylinux/icebergs/base/ctx"
|
"github.com/shylinux/icebergs/base/ctx"
|
||||||
"github.com/shylinux/icebergs/base/gdb"
|
"github.com/shylinux/icebergs/base/gdb"
|
||||||
"github.com/shylinux/icebergs/base/mdb"
|
"github.com/shylinux/icebergs/base/mdb"
|
||||||
"github.com/shylinux/icebergs/base/web"
|
|
||||||
kit "github.com/shylinux/toolkits"
|
kit "github.com/shylinux/toolkits"
|
||||||
|
|
||||||
"time"
|
"time"
|
||||||
@ -36,22 +35,11 @@ func init() {
|
|||||||
m.Set(ice.MSG_RESULT).Cmdy(PLAN, m.Option("scale"))
|
m.Set(ice.MSG_RESULT).Cmdy(PLAN, m.Option("scale"))
|
||||||
}},
|
}},
|
||||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
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) {
|
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"))
|
m.Set(ice.MSG_RESULT).Cmdy(PLAN, m.Option("scale"))
|
||||||
}},
|
}},
|
||||||
ctx.COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
ctx.COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||||
@ -59,7 +47,9 @@ func init() {
|
|||||||
m.Cmdy(arg[1], arg[2:])
|
m.Cmdy(arg[1], arg[2:])
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if len(arg) > 0 {
|
||||||
m.Cmdy(ctx.COMMAND, arg[0])
|
m.Cmdy(ctx.COMMAND, arg[0])
|
||||||
|
}
|
||||||
}},
|
}},
|
||||||
|
|
||||||
gdb.BEGIN: {Name: "begin", Help: "开始", Hand: func(m *ice.Message, arg ...string) {
|
gdb.BEGIN: {Name: "begin", Help: "开始", Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
@ -62,7 +62,7 @@ func _task_list(m *ice.Message, zone string, id string) {
|
|||||||
} else {
|
} else {
|
||||||
m.Option(mdb.FIELDS, kit.Select("begin_time,id,status,level,score,type,name,text", mdb.DETAIL, id != ""))
|
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) {
|
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)
|
m.Cmdy(mdb.SELECT, TASK, "", mdb.ZONE, zone, id)
|
||||||
|
@ -9,12 +9,8 @@ const TEAM = "team"
|
|||||||
|
|
||||||
var Index = &ice.Context{Name: TEAM, Help: "团队中心",
|
var Index = &ice.Context{Name: TEAM, Help: "团队中心",
|
||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Load() }},
|
||||||
m.Load()
|
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Save() }},
|
||||||
}},
|
|
||||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
|
||||||
m.Save()
|
|
||||||
}},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package wiki
|
package wiki
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
|
||||||
|
|
||||||
ice "github.com/shylinux/icebergs"
|
ice "github.com/shylinux/icebergs"
|
||||||
kit "github.com/shylinux/toolkits"
|
kit "github.com/shylinux/toolkits"
|
||||||
|
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 图形接口
|
// 图形接口
|
||||||
|
@ -15,9 +15,7 @@ const DATA = "data"
|
|||||||
func init() {
|
func init() {
|
||||||
Index.Merge(&ice.Context{
|
Index.Merge(&ice.Context{
|
||||||
Configs: map[string]*ice.Config{
|
Configs: map[string]*ice.Config{
|
||||||
DATA: {Name: DATA, Help: "数据表格", Value: kit.Data(
|
DATA: {Name: DATA, Help: "数据表格", Value: kit.Data(kit.MDB_PATH, "usr/export", "regs", ".*\\.csv")},
|
||||||
"path", "usr/export", "regs", ".*\\.csv",
|
|
||||||
)},
|
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
DATA: {Name: "data path auto", Help: "数据表格", Meta: kit.Dict(
|
DATA: {Name: "data path auto", Help: "数据表格", Meta: kit.Dict(
|
||||||
|
@ -13,20 +13,21 @@ const DRAW = "draw"
|
|||||||
func init() {
|
func init() {
|
||||||
Index.Merge(&ice.Context{
|
Index.Merge(&ice.Context{
|
||||||
Configs: map[string]*ice.Config{
|
Configs: map[string]*ice.Config{
|
||||||
DRAW: {Name: DRAW, Help: "思维导图", Value: kit.Data(
|
DRAW: {Name: DRAW, Help: "思维导图", Value: kit.Data(kit.MDB_PATH, "", "regs", ".*\\.svg")},
|
||||||
"path", "", "regs", ".*\\.svg",
|
|
||||||
)},
|
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
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",
|
"display", "/plugin/local/wiki/draw.js", "style", "drawer",
|
||||||
), Action: map[string]*ice.Action{
|
), 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"))
|
_wiki_save(m, DRAW, path.Join(arg...), m.Option("content"))
|
||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
if !_wiki_list(m, DRAW, kit.Select("./", path.Join(arg...))) {
|
if !_wiki_list(m, DRAW, kit.Select("./", path.Join(arg...))) {
|
||||||
_wiki_show(m, DRAW, path.Join(arg...))
|
_wiki_show(m, DRAW, path.Join(arg...))
|
||||||
|
if m.Result(0) == ice.ErrWarn {
|
||||||
|
m.Set(ice.MSG_RESULT)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
|
@ -12,20 +12,20 @@ func init() {
|
|||||||
Index.Merge(&ice.Context{
|
Index.Merge(&ice.Context{
|
||||||
Configs: map[string]*ice.Config{
|
Configs: map[string]*ice.Config{
|
||||||
FEEL: {Name: FEEL, Help: "影音媒体", Value: kit.Data(
|
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{
|
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",
|
"display", "/plugin/local/wiki/feel.js",
|
||||||
), Action: map[string]*ice.Action{
|
), Action: map[string]*ice.Action{
|
||||||
web.UPLOAD: {Name: "upload", Help: "上传", Hand: func(m *ice.Message, arg ...string) {
|
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) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
_wiki_list(m, FEEL, kit.Select("./", arg, 0))
|
_wiki_list(m, FEEL, kit.Select("./", arg, 0))
|
||||||
m.Sort(kit.MDB_TIME, "time_r")
|
m.Option(ice.MSG_DISPLAY, "")
|
||||||
m.Option("_display", "")
|
m.SortTimeR(kit.MDB_TIME)
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}, nil)
|
}, nil)
|
||||||
|
@ -1,25 +1,27 @@
|
|||||||
package wiki
|
package wiki
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"path"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
ice "github.com/shylinux/icebergs"
|
ice "github.com/shylinux/icebergs"
|
||||||
"github.com/shylinux/icebergs/base/nfs"
|
"github.com/shylinux/icebergs/base/nfs"
|
||||||
"github.com/shylinux/icebergs/base/web"
|
"github.com/shylinux/icebergs/base/web"
|
||||||
kit "github.com/shylinux/toolkits"
|
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 {
|
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("prefix", m.Option(nfs.DIR_ROOT, _wiki_path(m, cmd)))
|
||||||
m.Option(nfs.DIR_ROOT, path.Join(m.Option(ice.MSG_LOCAL), m.Conf(cmd, kit.META_PATH)))
|
|
||||||
if len(arg) == 0 || strings.HasSuffix(arg[0], "/") {
|
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" {
|
if m.Option(nfs.DIR_DEEP) != "true" {
|
||||||
// 目录列表
|
// 目录列表
|
||||||
m.Option(nfs.DIR_TYPE, nfs.DIR)
|
m.Option(nfs.DIR_TYPE, nfs.DIR)
|
||||||
m.Cmdy(nfs.DIR, kit.Select("./", arg, 0), "time size path")
|
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
|
return false
|
||||||
}
|
}
|
||||||
func _wiki_show(m *ice.Message, cmd, name string, arg ...string) {
|
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) {
|
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))
|
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)
|
m.Cmdy(web.CACHE, web.WATCH, up[0], p)
|
||||||
} else {
|
} 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]))
|
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: "文档中心",
|
var Index = &ice.Context{Name: WIKI, Help: "文档中心",
|
||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Load() }},
|
||||||
m.Load()
|
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Save() }},
|
||||||
}},
|
|
||||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
|
||||||
m.Save()
|
|
||||||
}},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@ package wiki
|
|||||||
import (
|
import (
|
||||||
ice "github.com/shylinux/icebergs"
|
ice "github.com/shylinux/icebergs"
|
||||||
"github.com/shylinux/icebergs/base/cli"
|
"github.com/shylinux/icebergs/base/cli"
|
||||||
"github.com/shylinux/icebergs/base/ctx"
|
|
||||||
"github.com/shylinux/icebergs/base/nfs"
|
"github.com/shylinux/icebergs/base/nfs"
|
||||||
"github.com/shylinux/icebergs/base/ssh"
|
"github.com/shylinux/icebergs/base/ssh"
|
||||||
"github.com/shylinux/icebergs/base/web"
|
"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)
|
data := kit.Dict(kit.MDB_NAME, name)
|
||||||
cmds := kit.Split(text)
|
cmds := kit.Split(text)
|
||||||
m.Search(cmds[0], func(p *ice.Context, s *ice.Context, key string, cmd *ice.Command) {
|
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 {
|
data["feature"], data["inputs"] = cmd.Meta, cmd.List
|
||||||
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")
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
// 扩展参数
|
// 扩展参数
|
||||||
@ -216,9 +208,7 @@ func _field_show(m *ice.Message, name, text string, arg ...string) {
|
|||||||
list := data["inputs"].([]interface{})
|
list := data["inputs"].([]interface{})
|
||||||
for i := count; i < len(args); i++ {
|
for i := count; i < len(args); i++ {
|
||||||
list = append(list, kit.Dict(
|
list = append(list, kit.Dict(
|
||||||
"_input", "text",
|
"_input", "text", "name", "args", "value", args[i],
|
||||||
"name", "args",
|
|
||||||
"value", args[i],
|
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
data["inputs"] = list
|
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) {
|
func _baidu_show(m *ice.Message, name, text string, arg ...string) {
|
||||||
_option(m, BAIDU, name, text, arg...)
|
_option(m, BAIDU, name, text, arg...)
|
||||||
|
|
||||||
// m.Cmdy(mdb.RENDER, web.RENDER.Frame, kit.Format("https://baidu.com/s?wd=%s", text))
|
// 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) {
|
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) {
|
func _word_show(m *ice.Message, name string, arg ...string) {
|
||||||
m.Set(ice.MSG_RESULT)
|
m.Set(ice.MSG_RESULT)
|
||||||
m.Option("render", "raw")
|
m.Option("render", "raw")
|
||||||
m.Optionv(TITLE, map[string]int{})
|
m.Option(TITLE, map[string]int{})
|
||||||
m.Optionv("menu", map[string]interface{}{"list": []interface{}{}})
|
m.Option("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(ice.MSG_ALIAS, m.Confv(WORD, "meta.alias"))
|
||||||
|
m.Option(nfs.DIR_ROOT, _wiki_path(m, WORD))
|
||||||
// 文件列表
|
m.Cmdy(ssh.SOURCE, name)
|
||||||
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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -374,7 +346,7 @@ func init() {
|
|||||||
VIDEO: {Name: VIDEO, Help: "视频", Value: kit.Data("template", video)},
|
VIDEO: {Name: VIDEO, Help: "视频", Value: kit.Data("template", video)},
|
||||||
|
|
||||||
WORD: {Name: WORD, Help: "语言文字", Value: kit.Data(
|
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},
|
PREMENU: []interface{}{TITLE, PREMENU},
|
||||||
CHAPTER: []interface{}{TITLE, CHAPTER},
|
CHAPTER: []interface{}{TITLE, CHAPTER},
|
||||||
SECTION: []interface{}{TITLE, SECTION},
|
SECTION: []interface{}{TITLE, SECTION},
|
||||||
@ -433,7 +405,7 @@ func init() {
|
|||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
arg = _name(m, arg)
|
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) {
|
SHELL: {Name: "shell [name] cmd", Help: "命令", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
arg = _name(m, arg)
|
arg = _name(m, arg)
|
||||||
@ -491,7 +463,7 @@ func init() {
|
|||||||
m.Cmdy(arg[0], "action", "run", arg[1:])
|
m.Cmdy(arg[0], "action", "run", arg[1:])
|
||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, 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
|
return
|
||||||
}
|
}
|
||||||
_word_show(m, arg[0])
|
_word_show(m, arg[0])
|
||||||
|
2
meta.go
2
meta.go
@ -117,7 +117,7 @@ func (m *Message) Push(key string, value interface{}, arg ...interface{}) *Messa
|
|||||||
|
|
||||||
default:
|
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 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_KEY, key)
|
||||||
m.Add(MSG_APPEND, kit.MDB_VALUE, kit.Format(value))
|
m.Add(MSG_APPEND, kit.MDB_VALUE, kit.Format(value))
|
||||||
break
|
break
|
||||||
|
7
misc.go
7
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)
|
var count = int32(0)
|
||||||
|
|
||||||
func (m *Message) AddCmd(cmd *Command) string {
|
func (m *Message) AddCmd(cmd *Command) string {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user