mirror of
https://shylinux.com/x/community
synced 2025-04-25 09:38:06 +08:00
113 lines
4.9 KiB
Go
113 lines
4.9 KiB
Go
package gonganxitong
|
|
|
|
import (
|
|
"path"
|
|
"strings"
|
|
|
|
"shylinux.com/x/ice"
|
|
"shylinux.com/x/icebergs/base/aaa"
|
|
"shylinux.com/x/icebergs/base/ctx"
|
|
"shylinux.com/x/icebergs/base/mdb"
|
|
"shylinux.com/x/icebergs/base/nfs"
|
|
"shylinux.com/x/icebergs/base/tcp"
|
|
"shylinux.com/x/icebergs/base/web"
|
|
"shylinux.com/x/icebergs/core/code"
|
|
kit "shylinux.com/x/toolkits"
|
|
|
|
"shylinux.com/x/community/src/gonganxitong/model"
|
|
)
|
|
|
|
type service struct {
|
|
Table
|
|
order string `data:"102"`
|
|
update string `name:"update index name icon"`
|
|
autogen string `name:"autogen name* help* class* table*" icon:"bi bi-plus-square-dotted"`
|
|
oauth string `name:"oauth" icon:"bi bi-shield-fill-check"`
|
|
open string `name:"open" role:"void"`
|
|
conf string `name:"conf" role:"void"`
|
|
}
|
|
|
|
func (s service) Update(m *ice.Message, arg ...string) {
|
|
uid := kit.Hashs(ice.Info.Hostname, ice.Info.Pwd, m.Option(ctx.INDEX))
|
|
if s.Table.Select(m.Spawn(), model.UID, uid).Length() == 0 {
|
|
s.Table.Create(m, kit.Simple(model.UID, uid, m.OptionSimple(mdb.ICON, mdb.NAME, ctx.INDEX), nfs.PATHNAME, ice.Info.Pwd, tcp.HOSTNAME, ice.Info.Hostname)...)
|
|
m.Cmd(s.PrefixPortal(m)).Table(func(value ice.Maps) { m.Cmd(s.PrefixPortal(m), mdb.MODIFY, value[ctx.INDEX], mdb.ENABLE, ice.TRUE) })
|
|
}
|
|
s.Table.Update(m, kit.Dict(arg, m.OptionSimple(mdb.NAME, mdb.ICON),
|
|
nfs.MODULE, ice.Info.Make.Module, nfs.VERSION, ice.Info.Make.Versions(),
|
|
tcp.NODENAME, ice.Info.NodeName, tcp.NODETYPE, ice.Info.NodeType,
|
|
web.DOMAIN, ice.Info.Make.Domain, web.PORTAL, ctx.GetCmdFile(m.Message, m.Prefix(web.PORTAL)),
|
|
), model.UID, uid)
|
|
m.Cmd(s.PrefixPortal(m), "updateCommand", uid)
|
|
}
|
|
func (s service) Autogen(m *ice.Message, arg ...string) {
|
|
m.Option("CLASS", strings.ToUpper(m.Option(mdb.CLASS)))
|
|
m.Option("Class", kit.Capital(m.Option(mdb.CLASS)))
|
|
m.Option("class", kit.LowerCapital(m.Option(mdb.CLASS)))
|
|
m.Option("TABLE", strings.ToUpper(m.Option(mdb.TABLE)))
|
|
m.Option("Table", kit.Capital(m.Option(mdb.TABLE)))
|
|
m.Option("table", kit.LowerCapital(m.Option(mdb.TABLE)))
|
|
code.AutogenImport(m.Message, m.Option(mdb.NAME))
|
|
m.Option(nfs.MODULE, path.Join(code.AutogenMod(m.Message), nfs.SRC, m.Option(mdb.NAME)))
|
|
p, from := path.Join(nfs.SRC, m.Option(mdb.NAME)), "template/"
|
|
msg := m.Cmd("web.team.gonganxitong.service")
|
|
m.Cmd(nfs.DEFS, path.Join(p, "model/model.go"), msg.Template(from+"model/model.go"))
|
|
m.Cmd(nfs.DEFS, path.Join(p, "common.go"), msg.Template(from+"common.go"))
|
|
m.Cmd(nfs.DEFS, path.Join(p, "portal.go"), msg.Template(from+"portal.go"))
|
|
m.Cmd(nfs.DEFS, path.Join(p, "portal.json"), msg.Template(from+"portal.json"))
|
|
m.Cmd(nfs.DEFS, path.Join(p, "user"+m.Option("Class")+".go"), msg.Template(from+"userClass.go"))
|
|
m.Cmd(nfs.DEFS, path.Join(p, m.Option("class")+".go"), msg.Template(from+"class.go"))
|
|
kit.For(kit.Split(m.Option(mdb.TABLE)), func(table string) {
|
|
msg.Option(mdb.TABLE, kit.LowerCapital(table))
|
|
m.Cmd(nfs.DEFS, path.Join(p, m.Option(mdb.TABLE)+".go"), msg.Template(from+"homework.go"))
|
|
m.Cmd(nfs.DEFS, path.Join(p, m.Option(mdb.TABLE)+".js"), msg.Template(from+"homework.js"))
|
|
})
|
|
}
|
|
func (s service) Compile(m *ice.Message, arg ...string) {
|
|
m.Cmdy(code.VIMER, code.COMPILE)
|
|
}
|
|
func (s service) Oauth(m *ice.Message, arg ...string) {
|
|
defer m.ToastProcess()()
|
|
m.Options(m.Cmd(web.CHAT_WX_ACCESS).AppendSimple())
|
|
m.Option("user_cmd", kit.JoinWord(m.Prefix(aaa.USER), mdb.CREATE))
|
|
m.Option("sess_cmd", kit.JoinWord(m.Prefix(aaa.SESS), mdb.CREATE))
|
|
m.Cmd(web.CHAT_WX_ACCESS, web.OAUTH)
|
|
m.Cmd(web.SPACE, ice.OPS, ctx.CONFIG, web.CHAT_WX_AGENT, web.SPACE, m.Option(ice.MSG_USERPOD))
|
|
m.ProcessHold()
|
|
}
|
|
func (s service) List(m *ice.Message, arg ...string) {
|
|
if len(arg) == 2 {
|
|
s.Table.SelectDetail(m, model.UID, arg[1])
|
|
} else {
|
|
s.Orders(m, s.Desc(model.UPDATED_AT)).Select(m)
|
|
}
|
|
list := m.CmdMap(web.SPACE, ice.OPS, web.SPACE, mdb.NAME)
|
|
m.Table(func(value ice.Maps) {
|
|
if _, ok := list[value[tcp.NODENAME]]; ok && value[ctx.INDEX] != "" {
|
|
if m.Cmd(web.SPACE, ice.OPS, web.SPACE, value[tcp.NODENAME], value[ctx.INDEX], kit.Dict(mdb.VIEW, mdb.TABLE)).Length() > 0 {
|
|
m.Push(mdb.STATUS, web.ONLINE)
|
|
return
|
|
}
|
|
}
|
|
m.Push(mdb.STATUS, "")
|
|
})
|
|
if m.IsTech() {
|
|
m.PushAction(s.Open, s.Conf, s.Project).Action(s.Autogen, s.Compile, s.Oauth)
|
|
} else {
|
|
m.PushAction(s.Open).Action()
|
|
}
|
|
m.Sort("status,updated_at", []string{web.ONLINE}, ice.STR_R).Display("")
|
|
m.RenameAppend("nodetype", model.SERVICE_TYPE, mdb.STATUS, model.SERVICE_STATUS)
|
|
}
|
|
func (s service) Open(m *ice.Message, arg ...string) {
|
|
m.ProcessOpen(web.S(m.Option(tcp.NODENAME)) + web.C(m.Option(ctx.INDEX)))
|
|
}
|
|
func (s service) Conf(m *ice.Message, arg ...string) {
|
|
m.ProcessOpen(web.S(m.Option(tcp.NODENAME)) + web.C(m.Option(ctx.INDEX)) + "?view=table")
|
|
}
|
|
func (s service) Project(m *ice.Message, arg ...string) {
|
|
m.ProcessOpen(web.S(m.Option(tcp.NODENAME)) + web.C(web.CODE_VIMER) + "?path=src/&file=" + strings.Split(kit.Select("", strings.Split(m.Option(web.PORTAL), "/src/"), 1), "?")[0])
|
|
}
|
|
|
|
func init() { ice.TeamCtxCmd(service{}) }
|