package gonganxitong import ( "shylinux.com/x/ice" kit "shylinux.com/x/toolkits" "shylinux.com/x/community/src/gonganxitong/model" ) type member struct { Tables user user order string `data:"102"` role string `data:"leader,worker,server"` remove string `name:"remove" role:"void"` enable string `name:"enable" role:"void"` disable string `name:"disable" role:"void"` } func (s member) Remove(m *ice.Message, arg ...string) { if s.IsLeader(m) { m.Cmdy(s.UserPlace, s.Delete, s.option(m)) } } func (s member) Enable(m *ice.Message, arg ...string) { if s.IsLeader(m) { m.Cmdy(s.UserPlace, s.UpdateField, model.STATUS, MemberNormal, s.option(m)) } } func (s member) Disable(m *ice.Message, arg ...string) { if s.IsLeader(m) { m.Cmdy(s.UserPlace, s.UpdateField, model.STATUS, MemberDisabled, s.option(m)) } } func (s member) List(m *ice.Message, arg ...string) { user_uid, isLeader := m.Option(model.USER_UID), s.IsLeader(m) s.FieldsWithCreatedAT(m, s.UserPlace, model.USER_UID, s.Keys(s.UserPlace, model.ROLE), s.AS(s.Key(s.UserPlace, model.STATUS), model.MEMBER_STATUS)) if len(arg) == 1 { m.Cmdy(s.UserPlace, s.Select, s.Keys(s.Place, model.UID), arg[0]).Action() } else if len(arg) == 2 { m.FieldsSetDetail().Cmdy(s.UserPlace, s.Select, s.Keys(s.Place, model.UID), arg[0], s.Key(s.UserPlace, model.UID), arg[1]).Action() } else { return } m.Table(func(value ice.Maps) { if !m.FieldsIsDetail() { if user_uid == value[model.USER_UID] { m.Push("who", "myself") } else { m.Push("who", "") } } if isLeader { if user_uid == value[model.USER_UID] { m.PushButton() } else { if MemberStatus(kit.Int(value[model.MEMBER_STATUS])) == MemberNormal { m.PushButton(s.Disable) } else { m.PushButton(s.Enable, s.Remove) } } } else { m.PushButton() } }) s.SelectJoinUser(m, model.NAME, model.INFO, model.AVATAR, model.AUTH_UID) s.SelectJoinAuth(m) s.DisplayBase(m, "").DisplayCSS("") } func init() { ice.TeamCtxCmd(member{Tables: newTables()}) } func (s member) option(m *ice.Message, arg ...string) []string { return m.OptionSimple(s.Keys(s.Place, model.UID), model.UID) } type MemberStatus int const ( MemberNormal MemberStatus = iota MemberDisabled ) var MemberStatusList = map[MemberStatus]string{ MemberNormal: "normal", MemberDisabled: "disabled", } func (s MemberStatus) String() string { return MemberStatusList[s] } 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] }