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:"904"` 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 ServiceUID(m *ice.Message) string { return kit.Hashs(ice.Info.Hostname, ice.Info.Pwd, m.Prefix(web.PORTAL)) } func (s service) Update(m *ice.Message, arg ...string) { uid := ServiceUID(m) if s.Select(m.Spawn(), model.UID, uid).Length() == 0 { s.Insert(m, kit.Simple(model.UID, uid, model.INDEX, m.Prefix(web.PORTAL), tcp.NODETYPE, ice.Info.NodeType, tcp.NODENAME, ice.Info.NodeName, nfs.PATHNAME, ice.Info.Pwd, tcp.HOSTNAME, ice.Info.Hostname)...) } 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()), model.UID, uid) m.Cmd(s.PrefixPortal(m), Portal{}.CommandUpdate, 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))) table := m.Option(mdb.TABLE) m.Option("TABLE", strings.ToUpper(table)) m.Option("Table", kit.Capital(table)) m.Option("table", kit.LowerCapital(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.Option("table", kit.LowerCapital(table)) 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) { m.Options(m.Cmd(web.CHAT_WX_ACCESS).AppendSimple()) m.Option("sess_cmd", kit.JoinWord(m.Prefix(aaa.SESS), mdb.CREATE)) m.Option("user_cmd", kit.JoinWord(m.Prefix(aaa.USER), mdb.CREATE)) m.Cmd(web.SPACE, ice.OPS, ctx.CONFIG, web.CHAT_WX_AGENT, web.SPACE, m.Option(ice.MSG_USERPOD)) m.Cmd(web.CHAT_WX_ACCESS, web.OAUTH) m.ProcessHold() } func (s service) List(m *ice.Message, arg ...string) { if len(arg) < 2 { s.Orders(m, s.Desc(model.UPDATED_AT)).Select(m) } else { s.SelectDetail(m, model.UID, arg[1]) } if m.IsTech() { m.PushAction(s.Open, s.Conf).Action(s.Autogen, s.Compile, s.Oauth) } else { m.PushAction(s.Open).Action() } m.RenameAppend(model.NODENAME, model.SPACE, model.NODETYPE, model.SERVICE_TYPE, mdb.STATUS, model.SERVICE_STATUS) s.DisplayBase(m, "") } func (s service) Open(m *ice.Message, arg ...string) { m.ProcessOpen(web.S(m.Option(web.SPACE)) + web.C(m.Option(ctx.INDEX))) } func (s service) Conf(m *ice.Message, arg ...string) { m.ProcessOpen(web.S(m.Option(web.SPACE)) + web.C(m.Option(ctx.INDEX)) + "?view=table") } func init() { ice.TeamCtxCmd(service{}) }