mirror of
https://shylinux.com/x/community
synced 2025-05-06 22:16:54 +08:00
109 lines
2.7 KiB
Go
109 lines
2.7 KiB
Go
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] }
|