From 2de61939b4dd40b3c615e089c0c12e1c1abe3924 Mon Sep 17 00:00:00 2001 From: shy Date: Thu, 5 Sep 2024 20:02:41 +0800 Subject: [PATCH] add some --- src/gonganxitong/allow.go | 6 +- src/gonganxitong/apply.go | 6 +- src/gonganxitong/apply.js | 2 +- src/gonganxitong/common.go | 104 ++++++++++++++--------- src/gonganxitong/common.js | 6 +- src/gonganxitong/member.go | 22 ++++- src/gonganxitong/member.js | 10 +++ src/gonganxitong/message.go | 12 ++- src/gonganxitong/model/model.go | 8 +- src/gonganxitong/portal.css | 1 + src/gonganxitong/portal.go | 16 +++- src/gonganxitong/portal.js | 8 +- src/gonganxitong/portal.json | 25 ++++-- src/gonganxitong/recent.go | 2 +- src/gonganxitong/support.go | 2 +- src/gonganxitong/template/common.go | 5 -- src/gonganxitong/template/homework.go | 17 ++-- src/gonganxitong/template/homework.js | 2 +- src/gonganxitong/template/model/model.go | 2 +- src/gonganxitong/template/portal.go | 6 +- src/gonganxitong/template/userClass.go | 26 ++---- src/huodongzuzhi/activity.go | 23 ++--- src/huodongzuzhi/activity.js | 2 +- src/huodongzuzhi/portal.go | 2 +- src/huodongzuzhi/portal.json | 2 +- src/renzhengshouquan/auth.go | 24 +++--- src/renzhengshouquan/auth.js | 2 +- src/renzhengshouquan/cert.go | 22 +---- src/renzhengshouquan/cert.js | 2 +- src/renzhengshouquan/common.go | 13 +++ src/renzhengshouquan/portal.go | 4 +- src/renzhengshouquan/portal.json | 6 +- src/yuehaoxitong/call.go | 7 +- src/yuehaoxitong/model/model.go | 4 +- src/yuehaoxitong/plan.go | 2 +- src/yuehaoxitong/portal.go | 2 +- src/yuehaoxitong/reception.go | 16 ++-- src/yuehaoxitong/schedule.go | 50 +++++------ src/yuehaoxitong/take.go | 2 +- src/yuehaoxitong/volume.go | 6 +- 40 files changed, 252 insertions(+), 227 deletions(-) create mode 100644 src/gonganxitong/member.js diff --git a/src/gonganxitong/allow.go b/src/gonganxitong/allow.go index 5ee17da..97244e2 100644 --- a/src/gonganxitong/allow.go +++ b/src/gonganxitong/allow.go @@ -24,7 +24,7 @@ func (s allow) Create(m *ice.Message, arg ...string) { s.Table.Create(m, arg...) m.Options(m.Cmd(s.Prefix(m, s.portal), s.portal.SelectCommand, m.PrefixKey()).AppendSimple(model.COMMAND_UID)) s.SendMessage(m, m.Option(model.FROM_USER_UID), m.Option(model.USER_UID)) - s.sendTemplate(m, m.Trans("please process role allow", "请处理 权限审批")) + s.sendTemplate(m, m.Trans("role allow process", "权限审批 请处理")) } func (s allow) List(m *ice.Message, arg ...string) { s.Tables(m, s.apply, "left join users on applies.user_uid = users.uid").FieldsWithCreatedAT(m, s.apply, @@ -52,10 +52,10 @@ func (s allow) List(m *ice.Message, arg ...string) { s.DisplayBase(m, "") } func (s allow) Reject(m *ice.Message, arg ...string) { - s.process(m, AllowCreate, AllowRejected, "❌", m.Trans("rejected role allow", "已驳回 权限审批")) + s.process(m, AllowCreate, AllowRejected, "❌", m.Trans("role allow rejected", "权限审批 已驳回")) } func (s allow) Approve(m *ice.Message, arg ...string) { - s.process(m, AllowCreate, AllowApproved, "✅", m.Trans("approved role allow", "已通过 权限审批")) + s.process(m, AllowCreate, AllowApproved, "✅", m.Trans("role allow approved", "权限审批 已通过")) } func (s allow) process(m *ice.Message, from, to AllowStatus, icon string, title string) { defer m.ToastProcess()() diff --git a/src/gonganxitong/apply.go b/src/gonganxitong/apply.go index 2edb6e0..04bb7b9 100644 --- a/src/gonganxitong/apply.go +++ b/src/gonganxitong/apply.go @@ -87,17 +87,17 @@ func (s apply) Submit(m *ice.Message, arg ...string) { } m.Option(model.FROM_USER_UID, m.Option(model.USER_UID)) m.Cmd(s.Prefix(m, allow{}), s.Create, model.APPLY_UID, m.Option(model.UID), model.PLACE_UID, m.Option(s.Keys(s.Place, model.UID)), msg.AppendSimple(model.USER_UID), model.STATUS, AllowCreate) - s.RecordEvent(m, kit.JoinWord("🕑", m.Trans("apply submit", "已提交 权限申请"), kit.Cut(m.Option(model.UID), 6), s.TransRole(m), m.Option(model.USER_NAME)), m.Option(model.UID)) + s.RecordEvent(m, kit.JoinWord("🕑", m.Trans("role apply submit", "权限申请 已提交"), kit.Cut(m.Option(model.UID), 6), s.TransRole(m), m.Option(model.USER_NAME)), m.Option(model.UID)) s.SendMessage(m, msg.Append(model.USER_UID), m.Option(model.USER_UID)) } func (s apply) Reject(m *ice.Message, arg ...string) { msg := s.changeStatus(m, ApplySubmit, ApplyRejected) - s.sendTemplate(msg, m.Trans("rejected role apply", "已驳回 权限申请")) + s.sendTemplate(msg, m.Trans("role apply rejected", "权限申请 已驳回")) } func (s apply) Approve(m *ice.Message, arg ...string) { msg := s.changeStatus(m, ApplySubmit, ApplyApproved) m.Cmd(s.UserPlace, s.Create, msg.AppendSimple(model.USER_UID, model.ROLE), s.Keys(s.Place, model.UID), msg.Append(model.PLACE_UID)) - s.sendTemplate(msg, m.Trans("approved role apply", "已通过 权限申请")) + s.sendTemplate(msg, m.Trans("role apply approved", "权限申请 已通过")) } func init() { ice.TeamCtxCmd(apply{Table: newTable()}) } diff --git a/src/gonganxitong/apply.js b/src/gonganxitong/apply.js index 4adb395..95a10aa 100644 --- a/src/gonganxitong/apply.js +++ b/src/gonganxitong/apply.js @@ -3,7 +3,7 @@ Volcanos(chat.ONIMPORT, { var PLACE_NAME = msg.Option("_place_name"), PLACE_TYPE = msg.Option("_place_type") var USER_PLACE_ROLE = msg.Option("_user_place_role"), STREET_NAME = msg.Option("_street_name"), APPLY_STATUS = "apply_status" can.onimport.itemcards(can, msg, function(value) { var status = value[APPLY_STATUS]; return [ - {view: html.TITLE, list: [value[PLACE_NAME], can.onimport.textView(can, value, PLACE_TYPE), can.onimport.textView(can, value, USER_PLACE_ROLE)]}, + {view: html.TITLE, list: [value.user_name, can.onimport.textView(can, value, USER_PLACE_ROLE)]}, {view: html.STATUS, list: [value.uid.slice(0, 6), can.base.TimeTrim(value.created_at), can.onimport.textView(can,value, APPLY_STATUS)]}, {view: html.STATUS, list: [value.begin_time.split(" ")[0], value.end_time.split(" ")[0]]}, {view: html.STATUS, list: [value.city_name, value[STREET_NAME]]}, diff --git a/src/gonganxitong/common.go b/src/gonganxitong/common.go index d35cbb3..5ba8e13 100644 --- a/src/gonganxitong/common.go +++ b/src/gonganxitong/common.go @@ -49,9 +49,7 @@ func (s Table) LoadTrans(m *ice.Message, arg ...string) { ice.LoadTrans(m.Spawn(kit.Dict("_template", path.Join(path.Dir(base), "portal.json"))).Message, m.CommandKey(), m.GetCommand().Command) } h := ctx.GetCmdFile(m.Message, m.PrefixKey()) - if strings.HasPrefix(h, "/p/src/") { - h = strings.TrimPrefix(h, "/p/") - } + kit.If(strings.HasPrefix(h, "/p/src/"), func() { h = strings.TrimPrefix(h, "/p/") }) if path.Dir(h) != path.Dir(base) && m.CommandKey() != web.PORTAL { ice.LoadTrans(m.Spawn(kit.Dict("_template", path.Join(path.Dir(h), "portal.json"))).Message, m.CommandKey(), m.GetCommand().Command) } @@ -73,18 +71,6 @@ func (s Table) Inputs(m *ice.Message, arg ...string) { s.InputsListRole(m, UserPlaceRoleList, arg...) case model.PLACE_TYPE: s.InputsList(m, PlaceTypeList, arg...) - case model.CITY_NAME: - if m.IsDebug() { - m.Push(arg[0], "深圳市") - } - case model.COMPANY_NAME: - if m.IsDebug() { - m.Push(arg[0], "云境互联") - } - case model.SCHOOL_NAME: - if m.IsDebug() { - m.Push(arg[0], "深圳中学") - } default: s.Table.Inputs(m, arg...) } @@ -122,6 +108,35 @@ func (s Table) Create(m *ice.Message, arg ...string) { s.Table.Create(m, arg...) s.UserPlaceInit(m) } +func (s Table) Remove(m *ice.Message, arg ...string) { + s.Table.Remove(m, arg...) +} +func (s Table) Modify(m *ice.Message, arg ...string) { + s.Table.Modify(m, arg...) +} +func (s Table) ValueModel(m *ice.Message, action ice.Any, arg ...string) *ice.Message { + defer m.Options(db.MODEL, m.Configv(db.MODEL)).Set(ice.MSG_OPTION, db.MODEL) + defer m.Options(db.DB, m.Configv(db.DB)).Set(ice.MSG_OPTION, db.DB) + return m.Cmdy(m.Prefix(web.PORTAL), action, arg) +} +func (s Table) ValueCreate(m *ice.Message, arg ...string) { + s.ValueModel(m, s.ValueCreate, arg...) + s.RecordEventWithName(m, "") +} +func (s Table) ValueRemove(m *ice.Message, arg ...string) { + s.ValueModel(m, s.ValueRemove, arg...) + s.RecordEventWithName(m, "") +} +func (s Table) ValueModify(m *ice.Message, arg ...string) { + s.ValueModel(m, s.ValueModify, arg...) + s.RecordEventWithName(m, "") +} +func (s Table) ValueList(m *ice.Message, arg []string, fields ...ice.Any) *ice.Message { + kit.If(len(fields) == 0, func() { fields = kit.TransArgs(kit.Split(m.Config(mdb.FIELDS))) }) + defer m.Options(db.FIELDS, fields).Set(ice.MSG_OPTION, db.FIELDS) + defer m.Options(db.TARGET, m.CommandKey()).Set(ice.MSG_OPTION, db.TARGET) + return s.ValueModel(m, s.ValueList, arg...).PushAction(s.Remove).Action(s.Create) +} func (s Table) List(m *ice.Message, arg ...string) *ice.Message { if m.IsTech() { if len(arg) == 0 { @@ -140,27 +155,16 @@ func (s Table) Select(m *ice.Message, arg ...string) *ice.Message { func (s Table) SelectDetail(m *ice.Message, arg ...string) *ice.Message { return s.Table.SelectDetail(m, arg...) } -func (s Table) SelectJoinUser(m *ice.Message) *ice.Message { - return s.SelectJoin(m, user{}, model.NAME, model.AVATAR) +func (s Table) SelectJoinUser(m *ice.Message, arg ...string) *ice.Message { + kit.If(len(arg) == 0, func() { arg = append(arg, model.NAME, model.AVATAR) }) + return s.SelectJoin(m, user{}, arg...) } func (s Table) SelectJoinCity(m *ice.Message) *ice.Message { return s.SelectJoin(m, city{}, model.NAME) } -func (s Table) FindSpaceCmd(m *ice.Message, cmd ice.Any) ice.Any { - switch cmds := ice.GetTypeKey(cmd); cmds { - case web.TEAM_GONGANXITONG_USER, web.TEAM_RENZHENGSHOUQUAN_AUTH, web.CODE_MYSQL_CLIENT: - if ice.Info.NodeName == "20240724-community" { - return cmd - } else { - m.Options(ice.MSG_USERROLE, aaa.TECH) - return []string{web.SPACE, kit.Keys(ice.OPS, "20240724-community"), cmds} - } - } - return cmd -} func (s Table) SelectJoinAuth(m *ice.Message) *ice.Message { defer m.Options(ice.MSG_USERROLE, aaa.VOID) - return s.SelectJoin(m, s.FindSpaceCmd(m, web.TEAM_RENZHENGSHOUQUAN_AUTH), model.STATUS) + return s.SelectJoin(m, s.FindSpaceCmd(m, web.TEAM_RENZHENGSHOUQUAN_AUTH), model.NAME, model.STATUS) } func (s Table) RenameAppend(m *ice.Message, arg ...string) Table { m.RenameAppend(arg...) @@ -176,6 +180,8 @@ func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message { value = UserPlaceRole(kit.Int(value)).String() case model.PLACE_TYPE: value = PlaceType(kit.Int(value)).String() + case model.AUTH_STATUS: + value = AuthStatus(kit.Int(value)).String() case model.APPLY_STATUS: value = ApplyStatus(kit.Int(value)).String() case model.ALLOW_STATUS: @@ -187,7 +193,11 @@ func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message { }) return m } -func (s Table) TablesWithRole(m *ice.Message, arg []string, userPlace UserPlacer, place Placer, target Placer, fields ...ice.Any) *ice.Message { +func (s Table) TablesWithRole(m *ice.Message, arg []string, userPlace UserPlacer, place Placer, target ice.Any, fields ...ice.Any) *ice.Message { + if len(arg) == 0 { + s.Select(m, m.OptionSimple(s.Keys(place, model.UID))...) + return m + } s.Tables(m, kit.JoinWord("INNER JOIN", s.TableName(kit.TypeName(userPlace)), "ON", s.Key(target, model.USER_UID), "=", s.Key(userPlace, model.USER_UID), "AND", s.Key(target, s.Keys(place, model.UID)), "=", s.Key(userPlace, s.Keys(place, model.UID)), @@ -200,7 +210,7 @@ func (s Table) TablesWithRole(m *ice.Message, arg []string, userPlace UserPlacer } else { return m } - return s.SelectJoinUser(m) + return s.SelectJoinUser(m.Options(db.DB, "", db.MODEL, "")) } func (s Table) Update(m *ice.Message, data ice.Map, arg ...string) { data[model.OPERATOR] = m.Option(model.USER_UID) @@ -246,32 +256,32 @@ func (s Table) RecordEventWithName(m *ice.Message, info string, arg ...string) { s.RecordEvent(m, kit.JoinWord(info, kit.Cut(uid, 6), kit.Select(m.Option(model.TITLE), m.Option(model.NAME))), uid) } func (s Table) GetCommands(m *ice.Message, key string, arg ...string) []string { - kit.If(len(arg) == 0, func() { arg = append(arg, m.Option(s.Keys(s.Place, model.UID)), m.Option(model.UID)) }) + m.OptionDefault(model.UID, m.Result()) return kit.Simple(m.OptionSimple(key), ctx.ARGS, kit.Join(arg), m.OptionSimple(model.CITY_NAME, model.STREET_NAME, model.PLACE_NAME)) } func (s Table) SendMessage(m *ice.Message, from_user_uid, to_user_uid string, arg ...string) { - m.Spawn(ice.Maps{db.DB: ""}).Cmd(message{}, s.Create, model.FROM_USER_UID, from_user_uid, model.TO_USER_UID, to_user_uid, s.GetCommands(m, model.COMMAND_UID, arg...)) + m.Spawn(ice.Maps{db.DB: ""}).Cmd(s.Prefix(m, message{}), s.Create, model.FROM_USER_UID, from_user_uid, model.TO_USER_UID, to_user_uid, s.GetCommands(m, model.COMMAND_UID, arg...)) } func (s Table) DoneMessage(m *ice.Message, arg ...string) { if m.Option(model.MESSAGE_UID) != "" { - m.Spawn(ice.Maps{db.DB: ""}).Cmd(message{}, message{}.Done, kit.Dict(model.UID, m.Option(model.MESSAGE_UID))) + m.Spawn(ice.Maps{db.DB: ""}).Cmd(s.Prefix(m, message{}), message{}.Done, kit.Dict(model.UID, m.Option(model.MESSAGE_UID))) } } func (s Table) SendTemplate(m *ice.Message, from, to, title string, arg ...string) { if m.IsErr() { return } - m.Cmd(Portal{}, m.PrefixKey(), from, to, title, arg) + m.Cmd(s.Prefix(m, Portal{}), s.SendTemplate, m.PrefixKey(), from, to, title, arg) } func (s Portal) SendTemplate(m *ice.Message, arg ...string) { name := kit.Select("", arg, 4) if name == "" { - name = m.Option(s.Keys(s.Place, model.NAME)) + " " + s.Place.TransValue(m, s.Keys(s.UserPlace, model.ROLE)) + name = kit.JoinWord(m.Option(model.CITY_NAME), m.Option(model.STREET_NAME), m.Option(s.Keys(s.Place, model.NAME))) } uid, place_uid := kit.Select(m.Option(model.UID), arg, 5), kit.Select("", arg, 6) kit.If(place_uid == "", func() { place_uid = m.Option(s.Keys(s.Place, model.UID)) }) link := s.Link(m, place_uid, arg[0], uid) - m.Cmd(s.FindSpaceCmd(m, user{}), s.SendTemplate, arg[1], arg[2], link, arg[3], name, kit.Cut(uid, 6)) + m.Cmd(s.FindSpaceCmd(m, user{}), s.SendTemplate, arg[1], arg[2], link, kit.JoinWord(m.Option(model.PORTAL_NAME), arg[3]), name, kit.Cut(uid, 6)) } func (s Table) DisplayBase(m *ice.Message, file string) *ice.Message { if s.Place != nil { @@ -329,6 +339,18 @@ func (s Table) SpaceCmd(m *ice.Message, space string, arg ...ice.Any) *ice.Messa return m.Cmd(append([]ice.Any{web.SPACE, kit.Keys(ice.OPS, space)}, arg...)...) } } +func (s Table) FindSpaceCmd(m *ice.Message, cmd ice.Any) ice.Any { + switch cmds := ice.GetTypeKey(cmd); cmds { + case web.TEAM_GONGANXITONG_USER, web.TEAM_RENZHENGSHOUQUAN_AUTH, web.CODE_MYSQL_CLIENT: + if ice.Info.NodeName == "20240724-community" { + return cmd + } else { + m.Options(ice.MSG_USERROLE, aaa.TECH) + return []string{web.SPACE, kit.Keys(ice.OPS, "20240724-community"), cmds} + } + } + return cmd +} func (s Table) Link(m *ice.Message, arg ...string) string { return Portal{}.Link(m, arg...) } @@ -368,8 +390,8 @@ func PortalCmd(portal ice.Any) { cmd("apply", apply{Table: table}) cmd("allow", allow{Table: table}) cmd("member", member{Tables: Tables{Table: table}}) - cmd("message", message{}) - cmd("recent", recent{}) + cmd("message", message{Table: table}) + cmd("recent", recent{Table: table}) cmd("service", service{Table: table}) - cmd("support", support{}) + cmd("support", support{Table: table}) } diff --git a/src/gonganxitong/common.js b/src/gonganxitong/common.js index 6124c0d..5dc1089 100644 --- a/src/gonganxitong/common.js +++ b/src/gonganxitong/common.js @@ -1,11 +1,9 @@ Volcanos(chat.ONIMPORT, { - _init: function(can, msg) { can.onimport.shareTitle && can.onimport.shareTitle(can, msg) + _init: function(can, msg) { var PLACE_NAME = msg.Option("_place_name"), PLACE_TYPE = msg.Option("_place_type"), USER_PLACE_ROLE = msg.Option("_user_place_role") PLACE_TYPE || can.core.List(msg.append, function(key) { can.base.endWith(key, "_type") && (PLACE_TYPE = key), can.base.endWith(key, "_role") && (USER_PLACE_ROLE = key) }) can.onimport.itemcards(can, msg, function(value) { return [ - {view: html.TITLE, list:[value.title||value.name||value.user_name, - can.onimport.textView(can, value, PLACE_TYPE), can.onimport.textView(can, value, USER_PLACE_ROLE), - ]}, + {view: html.TITLE, list:[value.title||value.name||value.user_name, can.onimport.textView(can, value, PLACE_TYPE), can.onimport.textView(can, value, USER_PLACE_ROLE)]}, {view: html.STATUS, list: [value.city_name, value.street_name, value.company_name]}, {view: html.STATUS, list: [value.uid && value.uid.slice(0, 6), can.base.TimeTrim(value.created_at||value.updated_at)]}, value.address && {view: html.STATUS, list: [value.address]}, diff --git a/src/gonganxitong/member.go b/src/gonganxitong/member.go index d4f05dc..cafb026 100644 --- a/src/gonganxitong/member.go +++ b/src/gonganxitong/member.go @@ -21,7 +21,27 @@ func (s member) List(m *ice.Message, arg ...string) { } else { return } - s.SelectJoinUser(m) + s.SelectJoinUser(m, model.AVATAR, model.NAME, model.AUTH_UID) + s.SelectJoinAuth(m) + s.Display(m, "") } func init() { ice.TeamCtxCmd(member{Tables: newTables()}) } + +type AuthStatus int + +const ( + AuthCreate AuthStatus = iota + AuthRequest + AuthIssued + AuthRevoked +) + +var AuthStatusList = map[AuthStatus]string{ + AuthCreate: "create", + AuthRequest: "request", + AuthIssued: "issued", + AuthRevoked: "revoked", +} + +func (s AuthStatus) String() string { return AuthStatusList[s] } diff --git a/src/gonganxitong/member.js b/src/gonganxitong/member.js new file mode 100644 index 0000000..0e4de35 --- /dev/null +++ b/src/gonganxitong/member.js @@ -0,0 +1,10 @@ +Volcanos(chat.ONIMPORT, { + _init: function(can, msg) { + var PLACE_NAME = msg.Option("_place_name"), PLACE_TYPE = msg.Option("_place_type"), USER_PLACE_ROLE = msg.Option("_user_place_role") + can.onimport.itemcards(can, msg, function(value) { return [ + {view: html.TITLE, list: [value.user_name, value.auth_name, can.onimport.authView(can, value), can.onimport.textView(can, value, USER_PLACE_ROLE)]}, + {view: html.STATUS, list: [value.uid.slice(0, 6), can.base.TimeTrim(value.created_at)]}, + {view: html.OUTPUT, list: [value.info||value.content]}, + ] }) + }, +}) \ No newline at end of file diff --git a/src/gonganxitong/message.go b/src/gonganxitong/message.go index b7372a4..1879265 100644 --- a/src/gonganxitong/message.go +++ b/src/gonganxitong/message.go @@ -15,12 +15,22 @@ type message struct { command command service service order string `data:"100"` + create string `name:"create from_user_uid to_user_uid"` read string `name:"read" role:"void"` done string `name:"done" role:"void"` sticky string `name:"sticky" role:"void"` unSticky string `name:"unSticky" role:"void"` } +func (s message) Create(m *ice.Message, arg ...string) { + m.Info("what %v", m.FormatChain()) + m.Info("what %v", m.Option(s.Keys(s.Place, model.UID))) + m.Info("what %v", s.Keys(s.Place, model.UID)) + kit.If(m.Option(ctx.ARGS) == "", func() { + arg = append(arg, ctx.ARGS, kit.Join([]string{m.Option(s.Keys(s.Place, model.UID)), m.Option(model.UID)})) + }) + s.Table.Create(m, arg...) +} func (s message) List(m *ice.Message, arg ...string) { s.Tables(m, s.command, s.service).FieldsWithCreatedAT(m, s, model.FROM_USER_UID, s.Key(s, model.PLACE_NAME), s.Key(s.command, model.NAME), model.SCORE, model.MESSAGE_STATUS, @@ -82,7 +92,7 @@ func (s message) update(m *ice.Message, data ice.Map, arg ...ice.Any) { s.Table.Update(m, data, kit.Simple(model.TO_USER_UID, m.Option(model.USER_UID), m.OptionSimple(model.UID), arg)...) } -func init() { ice.TeamCtxCmd(message{}) } +func init() { ice.TeamCtxCmd(message{Table: newTable()}) } type MessageStatus int diff --git a/src/gonganxitong/model/model.go b/src/gonganxitong/model/model.go index 72950bc..5885f8b 100644 --- a/src/gonganxitong/model/model.go +++ b/src/gonganxitong/model/model.go @@ -42,6 +42,7 @@ const ( ALLOW_UID = "allow_uid" ALLOW_STATUS = "allow_status" EVENT_UID = "event_uid" + PORTAL_NAME = "portal_name" COMMAND_UID = "command_uid" MESSAGE_UID = "message_uid" MESSAGE_STATUS = "message_status" @@ -59,8 +60,6 @@ const ( EMAIL = "email" AVATAR = "avatar" ADDRESS = "address" - TABLES = "tables" - SCORE = "score" NODE_NAME = "node_name" NODENAME = "nodename" SPACE = "space" @@ -68,6 +67,7 @@ const ( INDEX = "index" ARGS = "args" INIT = "init" + SCORE = "score" ) type Sess struct { @@ -162,11 +162,9 @@ type Service struct { Hostname string `gorm:"type:varchar(32)"` } type Support struct { - db.ModelWithUID + db.ModelContent FromUserUID string `gorm:"type:char(32);index"` ToUserUID string `gorm:"type:char(32);index"` - Title string `gorm:"type:varchar(64)"` - Content string } func init() { diff --git a/src/gonganxitong/portal.css b/src/gonganxitong/portal.css index e198cb7..818b93d 100644 --- a/src/gonganxitong/portal.css +++ b/src/gonganxitong/portal.css @@ -52,6 +52,7 @@ $output fieldset.story>form.option { display:none; } $output fieldset.story>div.action { display:none; } $output fieldset.story>div.status { display:none; } $output fieldset.story>div.output { background-color:var(--plugin-bg-color); } +$output div.list fieldset.story>div.output { background-color:var(--output-bg-color); } $output fieldset.story>div.output table.content td { box-shadow:none; } $output fieldset.story>div.output table.content tr.uid { display:none; } $output fieldset.story>div.output table.content td img { max-width:100%; } diff --git a/src/gonganxitong/portal.go b/src/gonganxitong/portal.go index 3d8a0e4..834a412 100644 --- a/src/gonganxitong/portal.go +++ b/src/gonganxitong/portal.go @@ -95,7 +95,7 @@ func (s Portal) Run(m *ice.Message, arg ...string) { } func (s Portal) List(m *ice.Message, arg ...string) { if m.Option(mdb.VIEW) == mdb.TABLE { - s.Hash.List(m, arg...).PushAction(mdb.DETAIL, s.Remove).SortInt(mdb.ORDER) + s.Hash.List(m, arg...).PushAction(mdb.DETAIL, s.Hash.Remove).SortInt(mdb.ORDER) return } if len(arg) == 0 { @@ -166,7 +166,7 @@ func (s Portal) PlaceRemove(m *ice.Message, arg ...string) { m.Cmdy(s.UserPlace, s.Delete, m.OptionSimple(model.USER_UID, model.UID)) } func (s Portal) PlaceList(m *ice.Message, arg ...string) *ice.Message { - s.Tables(m, s.Place).FieldsWithCreatedAT(m, s.UserPlace, model.AUTH_UID, model.INIT, + s.Tables(m, s.Place).FieldsWithCreatedAT(m, s.UserPlace, model.AUTH_UID, s.Key(s.Place, model.INIT), s.Keys(s.Place, model.NAME), s.Keys(s.Place, model.TYPE), s.Keys(s.UserPlace, model.ROLE), s.Keys(s.Place, model.UID), s.Keys(s.Street, model.UID), ) @@ -233,6 +233,18 @@ func (s Portal) AddRecent(m *ice.Message, arg ...string) { m.Cmd(s.Prefix(m, s.recent), s.Create, s.GetCommands(m, model.SERVICE_UID, arg...)) } } +func (s Portal) ValueCreate(m *ice.Message, arg ...string) { + s.Table.Create(m, kit.Simple(arg, m.OptionSimple(model.USER_UID, s.Keys(s.Place, model.UID)))...) +} +func (s Portal) ValueRemove(m *ice.Message, arg ...string) { + s.Table.Delete(m, m.OptionSimple(s.Keys(s.Place, model.UID), model.UID)...) +} +func (s Portal) ValueModify(m *ice.Message, arg ...string) { + s.Table.Update(m, kit.Dict(arg), m.OptionSimple(s.Keys(s.Place, model.UID), model.UID)...) +} +func (s Portal) ValueList(m *ice.Message, arg ...string) { + s.TablesWithRole(m, arg, s.UserPlace, s.Place, m.Option("target"), m.Optionv(mdb.FIELDS).([]ice.Any)...) +} func init() { ice.TeamCtxCmd(Portal{Table: newTable()}) } diff --git a/src/gonganxitong/portal.js b/src/gonganxitong/portal.js index cd9d1d8..932d13e 100644 --- a/src/gonganxitong/portal.js +++ b/src/gonganxitong/portal.js @@ -97,8 +97,8 @@ Volcanos(chat.ONIMPORT, { can.page.Append(can, target, [{view: html.TITLE, list: [{text: can.user.trans(can, "My Count", "我的数据")}]}]) can.onappend.plugin(can._root.Action, {space: "20240903-operation", index: "web.team.dashboard.summary", args: ["e61693838bfe34ab15485b0bc2355d19"]}, function() {}, target) }, - myInit: function(can, msg, value, target) { if (!msg) { return } - can.onmotion.hidden(can, target) + myInit: function(can, msg, value, target) { if (!msg) { return } can.onmotion.hidden(can, target) + return can.page.Append(can, target, [{view: html.TITLE, list: [{text: can.user.trans(can, "My Init", "我的初始化")}]}]) msg.Table(function(val) { if (parseInt(val.init) == parseInt(value.init)+1) { val.args = [value._uid], val.style = html.OUTPUT, value._init = true @@ -106,9 +106,7 @@ Volcanos(chat.ONIMPORT, { can.onappend.plugin(can, val, function(sub) { var run = sub.run sub.run = function(event, cmds, cb) { run(can.request(event, {place_uid: value._uid, place_init: value.init}), cmds, function(msg) { - if (cmds[1] == mdb.CREATE || cmds.length == 1 && msg.Length() > 0) { - debugger - can.onmotion.clearInput(can), can.Update() } else { cb(msg) } + if (cmds[1] == mdb.CREATE || cmds.length == 1 && msg.Length() > 0) { can.onmotion.clearInput(can), can.Update() } else { cb(msg) } }) } }, target) diff --git a/src/gonganxitong/portal.json b/src/gonganxitong/portal.json index 8d20e9e..ad5ab80 100644 --- a/src/gonganxitong/portal.json +++ b/src/gonganxitong/portal.json @@ -38,6 +38,9 @@ "street_name": "街道名称", "company_name": "公司名称", "city_name": "城市名称", + "auth_name": "认证主体", + "auth_status": "认证状态", + "service_name": "服务名称", "qrcode_type": "链接类型", "apply_status": "申请状态", "allow_status": "审批状态", @@ -54,17 +57,23 @@ "table": "应用" }, "value": { + "auth_status": { + "create": "🕑 待认证", + "request": "🕑 待认证", + "issued": "✅ 已认证", + "revoked": "❌ 已吊销" + }, "apply_status": { - "create": "待提交 🕑", - "cancel": "已取消 ❌", - "submit": "已提交 🕑", - "rejected": "已驳回 ❌", - "approved": "已通过 ✅" + "create": "🕑 待提交", + "cancel": "❌ 已取消", + "submit": "🕑 已提交", + "rejected": "❌ 已驳回", + "approved": "✅ 已通过" }, "allow_status": { - "create": "待审批 🕑", - "rejected": "已驳回 ❌", - "approved": "已通过 ✅" + "create": "🕑 待审批", + "rejected": "❌ 已驳回", + "approved": "✅ 已通过" }, "user_place_role": { "visitor": "访客", diff --git a/src/gonganxitong/recent.go b/src/gonganxitong/recent.go index 40b053e..a864725 100644 --- a/src/gonganxitong/recent.go +++ b/src/gonganxitong/recent.go @@ -62,4 +62,4 @@ func (s recent) UnSticky(m *ice.Message, arg ...string) { s.Table.Update(m, ice.Map{model.SCORE: 0}, m.OptionSimple(model.USER_UID, model.UID)...) } -func init() { ice.TeamCtxCmd(recent{}) } +func init() { ice.TeamCtxCmd(recent{Table: newTable()}) } diff --git a/src/gonganxitong/support.go b/src/gonganxitong/support.go index bb176bc..4efb124 100644 --- a/src/gonganxitong/support.go +++ b/src/gonganxitong/support.go @@ -9,4 +9,4 @@ type support struct { func (s support) List(m *ice.Message, arg ...string) {} -func init() { ice.TeamCtxCmd(support{}) } +func init() { ice.TeamCtxCmd(support{Table: newTable()}) } diff --git a/src/gonganxitong/template/common.go b/src/gonganxitong/template/common.go index e55db08..d3e517d 100644 --- a/src/gonganxitong/template/common.go +++ b/src/gonganxitong/template/common.go @@ -35,11 +35,6 @@ func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message { }) return s.Table.RewriteAppend(m) } -func (s Table) CheckRole(m *ice.Message, arg ...string) *ice.Message { - role := User{{.Option "Class"}}Role(s.UserPlaceRole(m)) - m.WarnNotRight(!kit.IsIn(role.String(), append(arg, User{{.Option "Class"}}Creator.String())...), role.String()) - return m -} type Tables struct { Table } diff --git a/src/gonganxitong/template/homework.go b/src/gonganxitong/template/homework.go index 2e5e2a4..9f60396 100644 --- a/src/gonganxitong/template/homework.go +++ b/src/gonganxitong/template/homework.go @@ -1,25 +1,18 @@ package {{.Option "name"}} -import ( - "shylinux.com/x/ice" - kit "shylinux.com/x/toolkits" - - "{{.Option "module"}}/model" -) +import "shylinux.com/x/ice" type {{.Option "table"}} struct { Table - {{.Option "class"}} {{.Option "class"}} - user{{.Option "Class"}} user{{.Option "Class"}} - create string `name:"create title* content*" role:"leader"` + fields string `data:"title,content"` + create string `name:"create title* content*" role:"leader"` } func (s {{.Option "table"}}) Create(m *ice.Message, arg ...string) { - s.Table.Create(m, kit.Simple(arg, m.OptionSimple(model.USER_UID, model.{{.Option "CLASS"}}_UID))...) - s.RecordEventWithName(m, "") + s.Table.ValueCreate(m, arg...) } func (s {{.Option "table"}}) List(m *ice.Message, arg ...string) { - s.TablesWithRole(m, arg, s.user{{.Option "Class"}}, s.{{.Option "class"}}, s, model.TITLE, model.CONTENT).Display("") + s.Table.ValueList(m, arg).Display("") } func init() { ice.TeamCtxCmd({{.Option "table"}}{}) } diff --git a/src/gonganxitong/template/homework.js b/src/gonganxitong/template/homework.js index 158e0d4..f6ba8db 100644 --- a/src/gonganxitong/template/homework.js +++ b/src/gonganxitong/template/homework.js @@ -1,5 +1,5 @@ Volcanos(chat.ONIMPORT, { - _init: function(can, msg) { can.onimport.shareTitle(can, msg) + _init: function(can, msg) { can.onimport.itemcards(can, msg, function(value) { return [ {view: html.TITLE, list: [value.title]}, {view: html.STATUS, list: [value.uid.slice(0, 6), can.base.TimeTrim(value.created_at), value.user_name]}, diff --git a/src/gonganxitong/template/model/model.go b/src/gonganxitong/template/model/model.go index aa56602..c684034 100644 --- a/src/gonganxitong/template/model/model.go +++ b/src/gonganxitong/template/model/model.go @@ -15,7 +15,7 @@ const ( {{.Option "CLASS"}}_NAME = "{{.Option "class"}}_name" {{.Option "CLASS"}}_TYPE = "{{.Option "class"}}_type" {{.Option "TABLE"}}_UID = "{{.Option "what"}}_uid" - COMPANY_UID = "company_uid" + COMPANY_UID = "company_uid" CITY_UID = "city_uid" ) diff --git a/src/gonganxitong/template/portal.go b/src/gonganxitong/template/portal.go index 9a1776f..dc7e306 100644 --- a/src/gonganxitong/template/portal.go +++ b/src/gonganxitong/template/portal.go @@ -7,9 +7,7 @@ import ( type Portal struct { guanlixitong.Portal - placeCreate string `name:"placeCreate city_name* company_name* {{.Option "class"}}_type*:select {{.Option "class"}}_name*" role:"void"` + placeCreate string `name:"placeCreate city_name* company_name* {{.Option "class"}}_name* {{.Option "class"}}_type*:select" role:"void"` } -func init() { - gonganxitong.PortalCmd(Portal{Portal: guanlixitong.NewPortal(user{{.Option "Class"}}{}, {{.Option "class"}}{})}) -} +func init() { gonganxitong.PortalCmd(Portal{Portal: guanlixitong.NewPortal(user{{.Option "Class"}}{}, {{.Option "class"}}{})}) } diff --git a/src/gonganxitong/template/userClass.go b/src/gonganxitong/template/userClass.go index 6169785..d3729a5 100644 --- a/src/gonganxitong/template/userClass.go +++ b/src/gonganxitong/template/userClass.go @@ -1,27 +1,15 @@ package {{.Option "name"}} -import "shylinux.com/x/ice" +import ( + "shylinux.com/x/ice" + + "shylinux.com/x/enterprise/src/guanlixitong" +) type user{{.Option "Class"}} struct{ Table } func init() { ice.TeamCtxCmd(user{{.Option "Class"}}{}) } -type User{{.Option "Class"}}Role int +type User{{.Option "Class"}}Role = guanlixitong.UserGroupRole -const ( - User{{.Option "Class"}}Visitor User{{.Option "Class"}}Role = iota - User{{.Option "Class"}}Creator - User{{.Option "Class"}}Leader - User{{.Option "Class"}}Worker - User{{.Option "Class"}}Server -) - -var User{{.Option "Class"}}RoleList = map[User{{.Option "Class"}}Role]string{ - User{{.Option "Class"}}Visitor: "visitor", - User{{.Option "Class"}}Creator: "creator", - User{{.Option "Class"}}Leader: "leader", - User{{.Option "Class"}}Worker: "worker", - User{{.Option "Class"}}Server: "server", -} - -func (s User{{.Option "Class"}}Role) String() string { return User{{.Option "Class"}}RoleList[s] } +var User{{.Option "Class"}}RoleList = guanlixitong.UserGroupRoleList diff --git a/src/huodongzuzhi/activity.go b/src/huodongzuzhi/activity.go index 3eb430e..b36505f 100644 --- a/src/huodongzuzhi/activity.go +++ b/src/huodongzuzhi/activity.go @@ -1,25 +1,16 @@ package huodongzuzhi -import ( - "shylinux.com/x/ice" - kit "shylinux.com/x/toolkits" - - "shylinux.com/x/community/src/huodongzuzhi/model" -) +import "shylinux.com/x/ice" type activity struct { Table - group group - userGroup userGroup - create string `name:"create title* content*" role:"leader"` + fields string `data:"title,content"` + create string `name:"create title* content*" role:"leader"` + remove string `name:"remove" role:"leader"` } -func (s activity) Create(m *ice.Message, arg ...string) { - s.Table.Create(m, kit.Simple(arg, m.OptionSimple(model.USER_UID, model.GROUP_UID))...) - s.RecordEventWithName(m, "") -} -func (s activity) List(m *ice.Message, arg ...string) { - s.TablesWithRole(m, arg, s.userGroup, s.group, s, model.TITLE, model.CONTENT).Display("") -} +func (s activity) Create(m *ice.Message, arg ...string) { s.ValueCreate(m, arg...) } +func (s activity) Remove(m *ice.Message, arg ...string) { s.ValueRemove(m, arg...) } +func (s activity) List(m *ice.Message, arg ...string) { s.ValueList(m, arg).Display("") } func init() { ice.TeamCtxCmd(activity{}) } diff --git a/src/huodongzuzhi/activity.js b/src/huodongzuzhi/activity.js index b7ff53c..b9d05bc 100644 --- a/src/huodongzuzhi/activity.js +++ b/src/huodongzuzhi/activity.js @@ -1,5 +1,5 @@ Volcanos(chat.ONIMPORT, { - _init: function(can, msg) { can.onimport.shareTitle(can, msg) + _init: function(can, msg) { can.onimport.itemcards(can, msg, function(value) { return [ {view: html.TITLE, list: [value.title]}, {view: html.STATUS, list: [value.uid.slice(0, 6), can.base.TimeTrim(value.created_at), value.user_name]}, diff --git a/src/huodongzuzhi/portal.go b/src/huodongzuzhi/portal.go index a4f85de..10d0cbf 100644 --- a/src/huodongzuzhi/portal.go +++ b/src/huodongzuzhi/portal.go @@ -7,7 +7,7 @@ import ( type Portal struct { guanlixitong.Portal - placeCreate string `name:"placeCreate city_name* company_name* group_type*:select group_name*" role:"void"` + placeCreate string `name:"placeCreate city_name* company_name* group_name* group_type*:select" role:"void"` } func init() { gonganxitong.PortalCmd(Portal{Portal: guanlixitong.NewPortal(userGroup{}, group{})}) } diff --git a/src/huodongzuzhi/portal.json b/src/huodongzuzhi/portal.json index 5d15104..02980b7 100644 --- a/src/huodongzuzhi/portal.json +++ b/src/huodongzuzhi/portal.json @@ -1,7 +1,7 @@ { "portal": "活动组织", - "member": "组织成员", "activity": "活动安排", + "member": "组织成员", "icons": { "activity": "https://img.icons8.com/officel/80/activity-grid.png" }, diff --git a/src/renzhengshouquan/auth.go b/src/renzhengshouquan/auth.go index b2b7d4e..1d18538 100644 --- a/src/renzhengshouquan/auth.go +++ b/src/renzhengshouquan/auth.go @@ -27,11 +27,12 @@ func (s auth) List(m *ice.Message, arg ...string) { m.PushButton(s.Issue) case AuthIssued: m.PushButton(s.Revoke) + case AuthRevoked: + m.PushButton(s.Issue) default: m.PushButton() } - }) - m.RenameAppend(model.TYPE, model.AUTH_TYPE, model.STATUS, model.AUTH_STATUS).Display("") + }).RenameAppend(model.TYPE, model.AUTH_TYPE, model.STATUS, model.AUTH_STATUS).Display("") } func (s auth) CertList(m *ice.Message, arg ...string) { m.Cmdy(cert{}, arg[0]).Action() @@ -48,14 +49,13 @@ func (s auth) Issue(m *ice.Message, arg ...string) { } } s.Update(m, kit.Dict(model.STATUS, AuthIssued), model.FROM_UID, m.Option(model.AUTH_UID), model.UID, m.Option(model.UID)) - s.Select(m, model.UID, m.Option(model.UID)) - switch AuthType(kit.Int(m.Append(model.TYPE))) { + switch s.Select(m, model.UID, m.Option(model.UID)); AuthType(kit.Int(m.Append(model.TYPE))) { case AuthCity: m.Cmd("web.team.gonganxitong.city", s.UpdateAuth, m.Option(model.UID), model.NAME, m.Append(model.NAME)) - case AuthCompany: - m.Cmd("web.team.guanlixitong.company", s.UpdateAuth, m.Option(model.UID), model.NAME, m.Append(model.NAME)) case AuthPersonal: m.Cmd("web.team.gonganxitong.user", s.UpdateAuth, m.Option(model.UID), model.UID, m.Append(model.CREATOR)) + case AuthCompany: + m.Cmd("web.team.guanlixitong.company", s.UpdateAuth, m.Option(model.UID), model.NAME, m.Append(model.NAME)) } } func (s auth) Revoke(m *ice.Message, arg ...string) { @@ -69,21 +69,17 @@ type AuthType int const ( AuthRoot AuthType = iota AuthCity - AuthPersonal - AuthService AuthCompany - AuthSchool - AuthStreet + AuthService + AuthPersonal ) var AuthTypeList = map[AuthType]string{ AuthRoot: "root", AuthCity: "city", - AuthPersonal: "personal", - AuthService: "service", AuthCompany: "company", - AuthSchool: "school", - AuthStreet: "street", + AuthService: "service", + AuthPersonal: "personal", } func (s AuthType) String() string { return AuthTypeList[s] } diff --git a/src/renzhengshouquan/auth.js b/src/renzhengshouquan/auth.js index 977d973..e894499 100644 --- a/src/renzhengshouquan/auth.js +++ b/src/renzhengshouquan/auth.js @@ -1,5 +1,5 @@ Volcanos(chat.ONIMPORT, { - _init: function(can, msg) { can.onimport.shareTitle(can, msg) + _init: function(can, msg) { can.onimport.itemcards(can, msg, function(value) { return [ {view: html.TITLE, list: [value.name||value.title||value.user_name, can.onimport.textView(can, value, "auth_type")]}, {view: html.STATUS, list: [value.uid.slice(0, 6), can.base.TimeTrim(value.created_at), can.onimport.textView(can, value, "auth_status")]}, diff --git a/src/renzhengshouquan/cert.go b/src/renzhengshouquan/cert.go index c7e9981..6e3decb 100644 --- a/src/renzhengshouquan/cert.go +++ b/src/renzhengshouquan/cert.go @@ -1,25 +1,7 @@ package renzhengshouquan -import ( - "shylinux.com/x/ice" - kit "shylinux.com/x/toolkits" +import "shylinux.com/x/ice" - "shylinux.com/x/community/src/renzhengshouquan/model" -) - -type cert struct { - Table - auth auth - userAuth userAuth - create string `name:"create title* content*" role:"leader"` -} - -func (s cert) Create(m *ice.Message, arg ...string) { - s.Table.Create(m, kit.Simple(arg, m.OptionSimple(model.USER_UID, model.AUTH_UID))...) - s.RecordEventWithName(m, "") -} -func (s cert) List(m *ice.Message, arg ...string) { - s.TablesWithRole(m, arg, s.userAuth, s.auth, s, model.TITLE, model.CONTENT).Display("") -} +type cert struct{ Value } func init() { ice.TeamCtxCmd(cert{}) } diff --git a/src/renzhengshouquan/cert.js b/src/renzhengshouquan/cert.js index b7ff53c..b9d05bc 100644 --- a/src/renzhengshouquan/cert.js +++ b/src/renzhengshouquan/cert.js @@ -1,5 +1,5 @@ Volcanos(chat.ONIMPORT, { - _init: function(can, msg) { can.onimport.shareTitle(can, msg) + _init: function(can, msg) { can.onimport.itemcards(can, msg, function(value) { return [ {view: html.TITLE, list: [value.title]}, {view: html.STATUS, list: [value.uid.slice(0, 6), can.base.TimeTrim(value.created_at), value.user_name]}, diff --git a/src/renzhengshouquan/common.go b/src/renzhengshouquan/common.go index c4e4c42..1504c45 100644 --- a/src/renzhengshouquan/common.go +++ b/src/renzhengshouquan/common.go @@ -64,3 +64,16 @@ func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message { type Tables struct{ Table } func (s Tables) BeforeMigrate(m *ice.Message, arg ...string) {} + +type Value struct { + Table + fields string `data:"title,content"` + create string `name:"create title* content*" role:"leader"` + modify string `name:"modify title* content*" role:"leader"` + remove string `name:"remove" role:"leader"` +} + +func (s Value) Create(m *ice.Message, arg ...string) { s.ValueCreate(m, arg...) } +func (s Value) Modify(m *ice.Message, arg ...string) { s.ValueModify(m, arg...) } +func (s Value) Remove(m *ice.Message, arg ...string) { s.ValueRemove(m, arg...) } +func (s Value) List(m *ice.Message, arg ...string) { s.ValueList(m, arg, model.TITLE, model.CONTENT) } diff --git a/src/renzhengshouquan/portal.go b/src/renzhengshouquan/portal.go index c95a7c5..0348906 100644 --- a/src/renzhengshouquan/portal.go +++ b/src/renzhengshouquan/portal.go @@ -65,9 +65,7 @@ func (s Portal) PlaceList(m *ice.Message, arg ...string) *ice.Message { return m } -func init() { - gonganxitong.PortalCmd(Portal{Portal: guanlixitong.NewPortal(userAuth{}, auth{})}) -} +func init() { gonganxitong.PortalCmd(Portal{Portal: guanlixitong.NewPortal(userAuth{}, auth{})}) } func (s Portal) findAuthFrom(m *ice.Message, authType AuthType, arg ...string) string { msg := m.Cmd(auth{}, s.Table.Select, model.TYPE, authType, arg) diff --git a/src/renzhengshouquan/portal.json b/src/renzhengshouquan/portal.json index cddd781..58ee69a 100644 --- a/src/renzhengshouquan/portal.json +++ b/src/renzhengshouquan/portal.json @@ -14,7 +14,7 @@ "My Auth": "我的认证", "user_auth_role": "用户角色", "auth_uid": "认证", - "auth_name": "主体名称", + "auth_name": "认证主体", "auth_type": "主体类型", "auth_status": "认证状态", "from_uid": "认证机构" @@ -34,11 +34,9 @@ "auth_type": { "root": "官方", "city": "城市", + "company": "公司", "personal": "个人", "service": "服务", - "company": "公司", - "school": "学校", - "street": "街道", "style": { "root": "danger", "city": "danger" diff --git a/src/yuehaoxitong/call.go b/src/yuehaoxitong/call.go index 91fccfc..5dc7432 100644 --- a/src/yuehaoxitong/call.go +++ b/src/yuehaoxitong/call.go @@ -18,13 +18,12 @@ type call struct { func (s call) List(m *ice.Message, arg ...string) { if len(arg) == 1 { - m.Option(mdb.ORDER, model.TAKE_TIME) - s.SelectByStatus(m, arg[0], kit.Format(ScheduleTake)) + s.SelectByStatus(m.Options(mdb.ORDER, model.TAKE_TIME), arg[0], kit.Format(ScheduleTake)) kit.If(m.Length() == 0, func() { m.Echo(m.Trans("wait take", "等待取号")) }, func() { m.Action(s.Call) }) } else if len(arg) == 2 { - m.Cmdy(s.Schedule, arg[0], arg[1]).Action(s.Call) + s.Schedule.List(m, arg[0], arg[1]).Action(s.Call) } else if len(arg) == 3 { - m.Cmdy(s.Schedule, s.Select, model.QUEUE_UID, arg[0], model.RECEPTION_UID, arg[2], model.STATUS, ScheduleTake).Action(s.Call) + s.Schedule.Select(m, model.QUEUE_UID, arg[0], model.RECEPTION_UID, arg[2], model.STATUS, kit.Format(ScheduleTake)).Action(s.Call) } } diff --git a/src/yuehaoxitong/model/model.go b/src/yuehaoxitong/model/model.go index a9bc91b..18288d0 100644 --- a/src/yuehaoxitong/model/model.go +++ b/src/yuehaoxitong/model/model.go @@ -22,6 +22,9 @@ const ( SCHEDULE_UID = "schedule_uid" SCHEDULE_STATUS = "schedule_status" COMPANY_UID = "company_uid" + PLACE_NAME = "place_name" + STREET_NAME = "street_name" + CITY_NAME = "city_name" CALL_UID = "call_uid" BEGIN_TIME = "begin_time" END_TIME = "end_time" @@ -34,7 +37,6 @@ const ( COUNT = "count" EXPIRE = "expire" FINISH = "finish" - INIT = "init" ) type UserQueue struct { diff --git a/src/yuehaoxitong/plan.go b/src/yuehaoxitong/plan.go index 6b9a827..f8eb072 100644 --- a/src/yuehaoxitong/plan.go +++ b/src/yuehaoxitong/plan.go @@ -21,7 +21,7 @@ func (s plan) List(m *ice.Message, arg ...string) { s.SelectByStatus(m, kit.Simple(arg[0], SchedulePlan, m.OptionSimple(model.USER_UID))...).PushAction(s.Cancel) kit.If(m.Length() == 0, func() { m.EchoInfoButton("") }, func() { m.Action(s.Create) }) } else if len(arg) == 2 { - m.Cmdy(s.Schedule, arg) + s.Schedule.List(m, arg...) } } diff --git a/src/yuehaoxitong/portal.go b/src/yuehaoxitong/portal.go index 0868924..a7d64d6 100644 --- a/src/yuehaoxitong/portal.go +++ b/src/yuehaoxitong/portal.go @@ -7,7 +7,7 @@ import ( type Portal struct { guanlixitong.Portal - placeCreate string `name:"placeCreate city_name* company_name* queue_type*:select queue_name*" role:"void"` + placeCreate string `name:"placeCreate city_name* company_name* queue_name* queue_type*:select" role:"void"` } func init() { gonganxitong.PortalCmd(Portal{Portal: guanlixitong.NewPortal(userQueue{}, queue{})}) } diff --git a/src/yuehaoxitong/reception.go b/src/yuehaoxitong/reception.go index 6a12d12..c192c01 100644 --- a/src/yuehaoxitong/reception.go +++ b/src/yuehaoxitong/reception.go @@ -18,25 +18,29 @@ func (s reception) Create(m *ice.Message, arg ...string) { s.Table.Create(m, append(arg, m.OptionSimple(model.QUEUE_UID)...)...) s.RecordEventWithName(m, "") } -func (s reception) Remove(m *ice.Message, arg ...string) { - s.Table.Delete(m, m.OptionSimple(model.QUEUE_UID, model.UID)...) - s.RecordEventWithName(m, "") -} func (s reception) Rename(m *ice.Message, arg ...string) { s.Table.Rename(m, m.OptionSimple(model.QUEUE_UID, model.UID)...) s.RecordEventWithName(m, "") } +func (s reception) Remove(m *ice.Message, arg ...string) { + s.Table.Delete(m, m.OptionSimple(model.QUEUE_UID, model.UID)...) + s.RecordEventWithName(m, "") +} func (s reception) List(m *ice.Message, arg ...string) { - s.Table.Fields(m, model.UID, model.NAME, model.CREATED_AT) if len(arg) == 0 { if m.Option(model.QUEUE_UID) != "" { s.Table.Select(m, m.OptionSimple(model.QUEUE_UID)...) } - } else if len(arg) == 1 { + return + } + s.Table.FieldsWithCreatedAT(m, s, model.NAME) + if len(arg) == 1 { s.Table.Select(m, model.QUEUE_UID, arg[0]) kit.If(!m.IsErr() && m.Length() == 0, func() { m.EchoInfoButton("") }) } else if len(arg) == 2 { s.Table.SelectDetail(m, model.QUEUE_UID, arg[0], model.UID, arg[1]) + } else { + return } m.PushAction(s.Rename, s.Remove) } diff --git a/src/yuehaoxitong/schedule.go b/src/yuehaoxitong/schedule.go index 746fe63..9615122 100644 --- a/src/yuehaoxitong/schedule.go +++ b/src/yuehaoxitong/schedule.go @@ -10,8 +10,8 @@ import ( type Schedule struct { Table - queue queue userQueue userQueue + queue queue reception reception volume Volume models string `data:"schedule"` @@ -28,13 +28,14 @@ func (s Schedule) Create(m *ice.Message, arg ...string) { s.addCount(m, mdb.COUNT, "1") s.Table.Create(m, arg...) }) - s.SendMessage(m, m.Option(model.USER_UID), m.Option(model.USER_UID), m.Option(model.QUEUE_UID), m.Result()) + s.SendMessage(m, m.Option(model.USER_UID), m.Option(model.USER_UID)) s.sendTemplate(m, "约号成功", m.Result()) + m.ProcessRefresh() } func (s Schedule) Call(m *ice.Message, arg ...string) { defer m.ToastProcess("叫号中...")("叫号成功") - s.Orders(m, model.TAKE_TIME).Limit(m, 1) user_uid := m.Option(model.USER_UID) + s.Orders(m, model.TAKE_TIME).Limit(m, 1) if m.Option(model.RECEPTION_UID) != "" { s.SelectByStatus(m, kit.Simple(m.Option(model.QUEUE_UID), kit.Format(ScheduleTake), m.OptionSimple(model.RECEPTION_UID))...).PushAction(s.Expire, s.Finish) } else { @@ -45,24 +46,20 @@ func (s Schedule) Call(m *ice.Message, arg ...string) { return } s.changeStatus(m, ScheduleTake, ScheduleCall, model.CALL_UID, user_uid) - s.SendMessage(m, user_uid, m.Append(model.USER_UID), m.Option(model.QUEUE_UID), m.Append(model.UID)) + s.SendMessage(m, user_uid, m.Append(model.USER_UID)) s.sendTemplate(m, "服务已叫号", m.Append(model.UID)) m.ProcessRewrite(model.UID, m.Append(model.UID)) } -func (s Schedule) List(m *ice.Message, arg ...string) { - role := UserQueueRole(kit.Int(m.Cmd(s.userQueue, s.Select, m.OptionSimple(model.QUEUE_UID, model.USER_UID)).Append(model.ROLE))) +func (s Schedule) List(m *ice.Message, arg ...string) *ice.Message { + role := UserQueueRole(s.UserPlaceRole(m)) s.Tables(m, s.volume).FieldsWithCreatedAT(m, s, model.SCHEDULE_STATUS, model.BEGIN_TIME, model.END_TIME, model.CANCEL_TIME, model.TAKE_TIME, model.CALL_TIME, model.EXPIRE_TIME, model.FINISH_TIME, - s.Key(s, model.CALL_UID), s.Key(s, model.RECEPTION_UID), model.USER_UID, model.VOLUME_UID, - ) + s.Key(s, model.RECEPTION_UID), model.VOLUME_UID, s.Key(s, model.CALL_UID), model.USER_UID) if role == UserQueueCreator || role == UserQueueLeader { if len(arg) == 1 { s.Select(m, s.Key(s, model.QUEUE_UID), arg[0]) } else if len(arg) == 2 { s.SelectDetail(m, s.Key(s, model.QUEUE_UID), arg[0], s.Key(s, model.UID), arg[1]) - if ScheduleStatus(kit.Int(m.Append(model.SCHEDULE_STATUS))) == ScheduleFinish { - s.DoneMessage(m) - } } m.Table(func(value ice.Maps) { switch ScheduleStatus(kit.Int(value[model.SCHEDULE_STATUS])) { @@ -79,9 +76,6 @@ func (s Schedule) List(m *ice.Message, arg ...string) { s.Select(m, s.Key(s, model.QUEUE_UID), arg[0], model.CALL_UID, m.Option(model.USER_UID)) } else if len(arg) == 2 { s.SelectDetail(m, s.Key(s, model.QUEUE_UID), arg[0], model.CALL_UID, m.Option(model.USER_UID), s.Key(s, model.UID), arg[1]) - if ScheduleStatus(kit.Int(m.Append(model.SCHEDULE_STATUS))) == ScheduleFinish { - s.DoneMessage(m) - } } m.Table(func(value ice.Maps) { switch ScheduleStatus(kit.Int(value[model.SCHEDULE_STATUS])) { @@ -96,9 +90,6 @@ func (s Schedule) List(m *ice.Message, arg ...string) { s.Select(m, s.Key(s, model.QUEUE_UID), arg[0], model.USER_UID, m.Option(model.USER_UID)) } else if len(arg) == 2 { s.SelectDetail(m, s.Key(s, model.QUEUE_UID), arg[0], model.USER_UID, m.Option(model.USER_UID), s.Key(s, model.UID), arg[1]) - if ScheduleStatus(kit.Int(m.Append(model.SCHEDULE_STATUS))) == ScheduleFinish { - s.DoneMessage(m) - } } m.Table(func(value ice.Maps) { switch ScheduleStatus(kit.Int(value[model.SCHEDULE_STATUS])) { @@ -109,22 +100,27 @@ func (s Schedule) List(m *ice.Message, arg ...string) { } }) } + if len(arg) == 2 { + status := ScheduleStatus(kit.Int(m.Append(model.SCHEDULE_STATUS))) + if status == ScheduleExpire || status == ScheduleFinish { + s.DoneMessage(m) + } + } s.SelectJoin(m, s.reception) s.SelectJoinUser(m) - m.Display("") - m.Action() + m.Action().Display("") + return m } func (s Schedule) SelectByStatus(m *ice.Message, arg ...string) *ice.Message { order := m.Option(mdb.ORDER) s.Tables(m, s.volume).FieldsWithCreatedAT(m, s, model.SCHEDULE_STATUS, model.BEGIN_TIME, model.END_TIME, model.CANCEL_TIME, model.TAKE_TIME, model.CALL_TIME, model.EXPIRE_TIME, model.FINISH_TIME, - s.Key(s, model.OPERATOR), s.Key(s, model.RECEPTION_UID), model.USER_UID, model.VOLUME_UID, - ) + s.Key(s, model.RECEPTION_UID), model.VOLUME_UID, s.Key(s, model.CALL_UID), model.USER_UID) kit.If(order, func() { s.Orders(m, order) }) - s.Select(m, kit.Simple(s.Key(s, model.QUEUE_UID), arg[0], model.STATUS, arg[1], arg[2:])...).Action() + s.Select(m, kit.Simple(s.Key(s, model.QUEUE_UID), arg[0], model.STATUS, arg[1], arg[2:])...) s.SelectJoin(m, s.reception) s.SelectJoinUser(m) - m.Display("") + m.Action().Display("") return m } func (s Schedule) Cancel(m *ice.Message, arg ...string) { @@ -137,7 +133,6 @@ func (s Schedule) Cancel(m *ice.Message, arg ...string) { s.addCount(m, mdb.COUNT, "-1") s.changeStatus(m, SchedulePlan, ScheduleCancel) }) - s.sendTemplate(m, "约号取消") m.ProcessRefresh() } func (s Schedule) Take(m *ice.Message, arg ...string) { @@ -147,7 +142,6 @@ func (s Schedule) Take(m *ice.Message, arg ...string) { return } s.changeStatus(m, SchedulePlan, ScheduleTake) - s.sendTemplate(m, "取号成功") m.ProcessRefresh() } func (s Schedule) Expire(m *ice.Message, arg ...string) { @@ -162,7 +156,6 @@ func (s Schedule) Expire(m *ice.Message, arg ...string) { }) s.Select(m.FieldsSetDetail(), args...) s.sendTemplate(m, "服务已过号") - // m.ProcessRefresh() } func (s Schedule) Finish(m *ice.Message, arg ...string) { defer m.ToastProcess("完成中...")("完成成功") @@ -176,7 +169,6 @@ func (s Schedule) Finish(m *ice.Message, arg ...string) { }) s.Select(m.FieldsSetDetail(), args...) s.sendTemplate(m, "服务已完成") - // m.ProcessRefresh() } func init() { ice.TeamCtxCmd(Schedule{}) } @@ -190,9 +182,9 @@ func (s Schedule) changeStatus(m *ice.Message, from, to ScheduleStatus, arg ...s return m } func (s Schedule) sendTemplate(m *ice.Message, title string, arg ...string) *ice.Message { - queue := m.Cmd(s.queue, s.Select, model.UID, m.Option(model.QUEUE_UID)) reception := m.Cmd(s.reception, s.Select, model.UID, m.Option(model.RECEPTION_UID)) - s.Table.SendTemplate(m, "", m.Append(model.USER_UID), title, queue.Append(model.NAME)+" "+reception.Append(model.NAME), kit.Select("", arg, 0), m.Option(model.QUEUE_UID)) + s.Table.SendTemplate(m, "", m.Append(model.USER_UID), kit.JoinWord(title, reception.Append(model.NAME)), + kit.JoinWord(m.Option(model.CITY_NAME), m.Option(model.STREET_NAME), m.Option(model.PLACE_NAME)), kit.Select("", arg, 0), m.Option(model.QUEUE_UID)) return m } diff --git a/src/yuehaoxitong/take.go b/src/yuehaoxitong/take.go index bcce311..994f07e 100644 --- a/src/yuehaoxitong/take.go +++ b/src/yuehaoxitong/take.go @@ -17,7 +17,7 @@ func (s take) List(m *ice.Message, arg ...string) { s.SelectByStatus(m, kit.Simple(arg[0], SchedulePlan, m.OptionSimple(model.USER_UID))...).PushAction(s.Take) kit.If(m.Length() == 0, func() { m.Echo(m.Trans("not found plan", "没有未取的号")) }) } else if len(arg) == 2 { - m.Cmdy(s.Schedule, arg) + s.Schedule.List(m, arg...) } } diff --git a/src/yuehaoxitong/volume.go b/src/yuehaoxitong/volume.go index 855e559..5361844 100644 --- a/src/yuehaoxitong/volume.go +++ b/src/yuehaoxitong/volume.go @@ -21,11 +21,9 @@ func (s Volume) List(m *ice.Message, arg ...string) { s.Tables(m, s.reception).FieldsWithCreatedAT(m, s, model.RECEPTION_NAME, model.AMOUNT, model.COUNT, model.EXPIRE, model.FINISH, model.BEGIN_TIME, model.END_TIME, - ) - s.Select(m, s.Key(s, model.QUEUE_UID), arg[0]) - m.Display("") + ).Select(m, s.Key(s, model.QUEUE_UID), arg[0]).Display("") } else if len(arg) == 2 { - s.Fields(m, model.CREATED_AT, model.UID, model.USER_UID, s.AS(model.STATUS, model.SCHEDULE_STATUS)) + s.FieldsWithCreatedAT(m, Schedule{}, s.AS(model.STATUS, model.SCHEDULE_STATUS), model.USER_UID) m.Cmdy(Schedule{}, s.Select, "volume_uid = ? and status != ?", arg[1], ScheduleCancel) s.SelectJoinUser(m) }