diff --git a/server/imserver/constant.go b/server/imserver/constant.go index 10796233..e300a6c5 100644 --- a/server/imserver/constant.go +++ b/server/imserver/constant.go @@ -26,15 +26,20 @@ const ( // im server guild const ( - MaxPendingReqs = 10 - DefaultLogs = 20 - LogTypeApprove = 1 - LogTypeLeave = 2 - LogTypeDismiss = 3 - LogTypePromote = 4 - LogTypeDemote = 5 - LogTypeDisband = 6 - GuildMemberLevelLeader = 1 // 成员等级, 会长 - GuildMemberLevelCadre = 2 // 成员等级, 干部 - GuildMemberLevelDefault = 3 // 成员等级, 普通成员 + MaxMembers = 10 + MaxPendingReqs = 10 + DefaultLogs = 20 + LogTypeApprove = 1 + LogTypeLeave = 2 + LogTypeDismiss = 3 + LogTypePromote = 4 + LogTypeDemote = 5 + LogTypeDisband = 6 + GuildMemberLevelLeader = 1 // 成员等级, 会长 + GuildMemberLevelCadre = 2 // 成员等级, 干部 + GuildMemberLevelDefault = 3 // 成员等级, 普通成员 + PendingReqIsJoinGuildStatusDefault = 0 // 等待验证请求状态, 0 等待审核 + PendingReqIsJoinGuildStatusJoined = 1 // 等待验证请求状态, 1 已加入 + PendingReqIsJoinGuildStatusReject = 2 // 等待验证请求状态, 2 拒绝 + PendingReqIsJoinGuildStatusDisband = 3 // 等待验证请求状态, 3 公会已解散 ) diff --git a/server/imserver/cs/cs_proto.pb.go b/server/imserver/cs/cs_proto.pb.go index 7b96ab0e..8a890815 100644 --- a/server/imserver/cs/cs_proto.pb.go +++ b/server/imserver/cs/cs_proto.pb.go @@ -1950,7 +1950,7 @@ type SMGuildInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CurrGuild *MFGuild `protobuf:"bytes,1,opt,name=curr_guild,json=currGuild" json:"curr_guild,omitempty"` + Guild *MFGuild `protobuf:"bytes,1,opt,name=guild" json:"guild,omitempty"` RandomGuilds []*MFGuild `protobuf:"bytes,2,rep,name=random_guilds,json=randomGuilds" json:"random_guilds,omitempty"` } @@ -1986,9 +1986,9 @@ func (*SMGuildInfo) Descriptor() ([]byte, []int) { return file_cs_proto_proto_rawDescGZIP(), []int{35} } -func (x *SMGuildInfo) GetCurrGuild() *MFGuild { +func (x *SMGuildInfo) GetGuild() *MFGuild { if x != nil { - return x.CurrGuild + return x.Guild } return nil } @@ -3244,94 +3244,94 @@ var file_cs_proto_proto_rawDesc = []byte{ 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x0d, 0x0a, 0x0b, 0x43, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, - 0x22, 0x6b, 0x0a, 0x0b, 0x53, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x2a, 0x0a, 0x0a, 0x63, 0x75, 0x72, 0x72, 0x5f, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, - 0x52, 0x09, 0x63, 0x75, 0x72, 0x72, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x30, 0x0a, 0x0d, 0x72, - 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x5f, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, - 0x0c, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x22, 0x23, 0x0a, - 0x0d, 0x43, 0x4d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x43, 0x0a, 0x0d, 0x53, 0x4d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x75, - 0x69, 0x6c, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x17, - 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x2b, 0x0a, 0x0e, 0x43, 0x4d, 0x41, 0x70, 0x70, - 0x6c, 0x79, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, - 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, - 0x6c, 0x64, 0x49, 0x64, 0x22, 0x29, 0x0a, 0x0e, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, - 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, - 0x58, 0x0a, 0x09, 0x43, 0x4d, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, 0x19, 0x0a, 0x08, - 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x24, 0x0a, 0x09, 0x53, 0x4d, 0x41, - 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, - 0x57, 0x0a, 0x08, 0x43, 0x4d, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, - 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, - 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x23, 0x0a, 0x08, 0x53, 0x4d, 0x52, 0x65, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x29, 0x0a, - 0x0c, 0x43, 0x4d, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x19, 0x0a, - 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x27, 0x0a, 0x0c, 0x53, 0x4d, 0x4c, 0x65, - 0x61, 0x76, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, - 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, - 0x67, 0x22, 0x58, 0x0a, 0x0f, 0x43, 0x4d, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, - 0x2a, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x69, 0x73, 0x6d, 0x69, - 0x73, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x2a, 0x0a, 0x0f, 0x53, - 0x4d, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x17, - 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x58, 0x0a, 0x0f, 0x43, 0x4d, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, + 0x22, 0x62, 0x0a, 0x0b, 0x53, 0x4d, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x21, 0x0a, 0x05, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, + 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x05, 0x67, 0x75, 0x69, + 0x6c, 0x64, 0x12, 0x30, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x5f, 0x67, 0x75, 0x69, + 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x73, 0x2e, 0x4d, + 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x0c, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x47, 0x75, + 0x69, 0x6c, 0x64, 0x73, 0x22, 0x23, 0x0a, 0x0d, 0x43, 0x4d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x43, 0x0a, 0x0d, 0x53, 0x4d, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, - 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x10, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x64, 0x22, 0x2a, 0x0a, 0x0f, 0x53, 0x4d, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x55, 0x0a, - 0x0e, 0x43, 0x4d, 0x44, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x22, 0x29, 0x0a, 0x0e, 0x53, 0x4d, 0x44, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, - 0x26, 0x0a, 0x09, 0x43, 0x4d, 0x44, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x08, - 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x24, 0x0a, 0x09, 0x53, 0x4d, 0x44, 0x69, 0x73, - 0x62, 0x61, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x2a, 0x0a, - 0x0e, 0x43, 0x4d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, - 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x35, 0x0a, 0x0e, 0x53, 0x4d, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x06, 0x67, - 0x75, 0x69, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x73, - 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, - 0x22, 0x90, 0x01, 0x0a, 0x07, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x19, 0x0a, 0x08, - 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x2a, 0x22, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, - 0x65, 0x12, 0x14, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x10, 0xd1, 0xa2, 0xd5, 0xc4, 0x07, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x63, 0x73, + 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x2b, + 0x0a, 0x0e, 0x43, 0x4d, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, + 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x29, 0x0a, 0x0e, 0x53, + 0x4d, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x17, 0x0a, + 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x58, 0x0a, 0x09, 0x43, 0x4d, 0x41, 0x70, 0x70, 0x72, + 0x6f, 0x76, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x30, + 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, + 0x22, 0x24, 0x0a, 0x09, 0x53, 0x4d, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, 0x17, 0x0a, + 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x57, 0x0a, 0x08, 0x43, 0x4d, 0x52, 0x65, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x30, 0x0a, + 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x6e, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, + 0x23, 0x0a, 0x08, 0x53, 0x4d, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x65, + 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, + 0x72, 0x4d, 0x73, 0x67, 0x22, 0x29, 0x0a, 0x0c, 0x43, 0x4d, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x47, + 0x75, 0x69, 0x6c, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, + 0x27, 0x0a, 0x0c, 0x53, 0x4d, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, + 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x58, 0x0a, 0x0f, 0x43, 0x4d, 0x44, 0x69, + 0x73, 0x6d, 0x69, 0x73, 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x67, + 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, + 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x6d, 0x69, 0x73, + 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x64, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x22, 0x2a, 0x0a, 0x0f, 0x53, 0x4d, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x58, + 0x0a, 0x0f, 0x43, 0x4d, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, + 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x2a, 0x0a, 0x0f, 0x53, 0x4d, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x65, + 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, + 0x72, 0x4d, 0x73, 0x67, 0x22, 0x55, 0x0a, 0x0e, 0x43, 0x4d, 0x44, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, + 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x29, 0x0a, 0x0e, 0x53, + 0x4d, 0x44, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x17, 0x0a, + 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x26, 0x0a, 0x09, 0x43, 0x4d, 0x44, 0x69, 0x73, 0x62, + 0x61, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x24, + 0x0a, 0x09, 0x53, 0x4d, 0x44, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x65, + 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, + 0x72, 0x4d, 0x73, 0x67, 0x22, 0x2a, 0x0a, 0x0e, 0x43, 0x4d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, + 0x22, 0x35, 0x0a, 0x0e, 0x53, 0x4d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x47, 0x75, 0x69, 0x6c, + 0x64, 0x73, 0x12, 0x23, 0x0a, 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x63, 0x73, 0x2e, 0x4d, 0x46, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, + 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x07, 0x4d, 0x46, 0x47, 0x75, + 0x69, 0x6c, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, + 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x6d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2a, 0x22, 0x0a, 0x0a, 0x43, 0x6f, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x65, 0x12, 0x14, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0xd1, 0xa2, 0xd5, 0xc4, 0x07, 0x42, 0x06, + 0x5a, 0x04, 0x2e, 0x3b, 0x63, 0x73, } var ( @@ -3411,7 +3411,7 @@ var file_cs_proto_proto_goTypes = []interface{}{ var file_cs_proto_proto_depIdxs = []int32{ 34, // 0: cs.SMSearchUser.users:type_name -> cs.MFUser 34, // 1: cs.SMListFriend.users:type_name -> cs.MFUser - 57, // 2: cs.SMGuildInfo.curr_guild:type_name -> cs.MFGuild + 57, // 2: cs.SMGuildInfo.guild:type_name -> cs.MFGuild 57, // 3: cs.SMGuildInfo.random_guilds:type_name -> cs.MFGuild 57, // 4: cs.SMSearchGuilds.guilds:type_name -> cs.MFGuild 5, // [5:5] is the sub-list for method output_type diff --git a/server/imserver/guild.go b/server/imserver/guild.go index 4694def7..a83ee87d 100644 --- a/server/imserver/guild.go +++ b/server/imserver/guild.go @@ -1,6 +1,8 @@ package main -import "errors" +import ( + "fmt" +) // GuildMember 公会成员 type GuildMember struct { @@ -38,7 +40,7 @@ func (g *Guild) findMemberIndex(AccountId string) int { func (g *Guild) GetMember(accountId string) (*GuildMember, error) { index := g.findMemberIndex(accountId) if index == -1 { - return nil, errors.New("member not found") + return nil, fmt.Errorf("member[%s] not found", accountId) } return g.Members[index], nil @@ -53,7 +55,7 @@ func (g *Guild) isMember(accountId string) bool { // AddMember 添加成员 func (g *Guild) AddMember(member *GuildMember) error { if len(g.Members) >= g.MaxMembers { - return errors.New("guild is full") + return fmt.Errorf("guild is full") } g.Members = append(g.Members, member) return nil @@ -62,12 +64,12 @@ func (g *Guild) AddMember(member *GuildMember) error { // RemoveMember 移除成员 func (g *Guild) RemoveMember(accountId string) error { if accountId == g.LeaderId { - return errors.New("cannot remove leader") + return fmt.Errorf("cannot remove leader") } index := g.findMemberIndex(accountId) if index == -1 { - return errors.New("member not found") + return fmt.Errorf("member not found") } //g.Members = append(g.Members[:index], g.Members[index+1:]...) diff --git a/server/imserver/guilddbmgr.go b/server/imserver/guilddbmgr.go index 213f1652..40d1b4e9 100644 --- a/server/imserver/guilddbmgr.go +++ b/server/imserver/guilddbmgr.go @@ -2,7 +2,6 @@ package main import ( "f5" - "fmt" "q5" ) @@ -22,7 +21,7 @@ func (gm *GuildMgr) loadGuildFromDB() { } func (gm *GuildMgr) loadGuildFromDBResult(err error, rows *f5.DataSet) { if err != nil { - fmt.Printf("loadGuildFromDBResult err:%v \n", err) + f5.GetSysLog().Info("loadGuildFromDBResult err:%v \n", err) return } for rows.Next() { @@ -48,7 +47,6 @@ func (gm *GuildMgr) loadGuildFromDBResult(err error, rows *f5.DataSet) { // init pendingReqs gm.pendingReqs[guildId] = make(map[string]bool) } - fmt.Printf("loadGuildFromDB finished guilds:%d\n", len(gm.Guilds)) } // loadGuildMemberFromDB 加载公会成员 @@ -67,7 +65,7 @@ func (gm *GuildMgr) loadGuildMemberFromDB() { } func (gm *GuildMgr) loadGuildMemberFromDBResult(err error, rows *f5.DataSet) { if err != nil { - fmt.Printf("loadGuildFromDBResult err:%v \n", err) + f5.GetSysLog().Info("loadGuildMemberFromDBResult err:%v \n", err) return } for rows.Next() { @@ -97,7 +95,7 @@ func (gm *GuildMgr) loadGuildMemberFromDBResult(err error, rows *f5.DataSet) { func (gm *GuildMgr) loadPendingReqsFromDB() { fields := []string{"guild_id", "account_id"} where := [][]string{ - {"is_join_guild", "0"}, + {"is_join_guild", q5.ToString(PendingReqIsJoinGuildStatusDefault)}, } f5.GetJsStyleDb().Select( FRIEND_DB, @@ -109,7 +107,7 @@ func (gm *GuildMgr) loadPendingReqsFromDB() { } func (gm *GuildMgr) loadPendingReqsFromDBResult(err error, rows *f5.DataSet) { if err != nil { - fmt.Printf("loadPendingReqsFromDBResult err:%v \n", err) + f5.GetSysLog().Info("loadPendingReqsFromDBResult err:%v \n", err) return } for rows.Next() { @@ -123,6 +121,55 @@ func (gm *GuildMgr) loadPendingReqsFromDBResult(err error, rows *f5.DataSet) { } } +// loadGuildLogsFromDB 加载公会日志 +func (gm *GuildMgr) loadGuildLogsFromDB() { + var perPage int32 = 10 + var page int32 = 1 + sql := "SELECT `guild_id`, `account_id`, `log_type`, `content` FROM `t_guild_logs`" + var params []string + var filter f5.DbQueryFilter + orderBy := "ORDER BY `createtime` DESC" + f5.GetJsStyleDb().PageQuery( + FRIEND_DB, + perPage, + page, + sql, + params, + filter, + orderBy, + gm.loadGuildLogsFromDBResult, + ) +} +func (gm *GuildMgr) loadGuildLogsFromDBResult(err error, pagination *f5.Pagination) { + if err != nil { + f5.GetSysLog().Info("loadPendingReqsFromDBResult err:%v \n", err) + return + } + //total := pagination.Total + var ( + guildId int64 + accountId string + logType uint16 + content string + ) + gm.Logs[guildId] = make([]*GuildLog, DefaultLogs) + + for pagination.Rows.Next() { + guildId = q5.ToInt64(*pagination.Rows.GetByIndex(0)) + accountId = q5.ToString(*pagination.Rows.GetByIndex(1)) + logType = uint16(q5.ToInt32(*pagination.Rows.GetByIndex(2))) + content = q5.ToString(*pagination.Rows.GetByIndex(3)) + + guildLog := &GuildLog{ + GuildId: guildId, + AccountId: accountId, + LogType: logType, + Content: content, + } + gm.Logs[guildId] = append(gm.Logs[guildId], guildLog) + } +} + // createGuildDB 创建公会 func (gm *GuildMgr) createGuildDB(g *Guild) { fields := [][]string{ @@ -137,10 +184,10 @@ func (gm *GuildMgr) createGuildDB(g *Guild) { fields, func(err error, lastInsertId int64, rowsAffected int64) { if err != nil { - fmt.Printf("error:%v\n", err) + f5.GetSysLog().Info("error:%v\n", err) } - fmt.Printf("lastInsertId:%d\n", lastInsertId) - fmt.Printf("rowsAffected:%d\n", rowsAffected) + f5.GetSysLog().Info("lastInsertId:%d\n", lastInsertId) + f5.GetSysLog().Info("rowsAffected:%d\n", rowsAffected) }, ) } @@ -160,7 +207,7 @@ func (gm *GuildMgr) updateGuild(g *Guild, fields [][]string) { } // insertPendingReqs 添加申请加入公会记录, 存在则更新记录 -func (gm *GuildMgr) upsertPendingReqs(guildId int64, accountId string, isJoinGuild string) { +func (gm *GuildMgr) upsertPendingReqs(guildId int64, accountId string, isJoinGuild int) { where := [][]string{ {"guild_id", q5.ToString(guildId)}, {"account_id", accountId}, @@ -168,10 +215,10 @@ func (gm *GuildMgr) upsertPendingReqs(guildId int64, accountId string, isJoinGui insertKv := [][]string{ {"guild_id", q5.ToString(guildId)}, {"account_id", accountId}, - {"is_join_guild", "0"}, + {"is_join_guild", q5.ToString(isJoinGuild)}, } updateKv := [][]string{ - {"is_join_guild", isJoinGuild}, + {"is_join_guild", q5.ToString(isJoinGuild)}, } f5.GetJsStyleDb().Upsert( FRIEND_DB, @@ -181,10 +228,10 @@ func (gm *GuildMgr) upsertPendingReqs(guildId int64, accountId string, isJoinGui insertKv, func(err error, lastInsertId int64, rowsAffected int64) { if err != nil { - fmt.Printf("error:%v\n", err) + f5.GetSysLog().Info("error:%v\n", err) } - fmt.Printf("lastInsertId:%d\n", lastInsertId) - fmt.Printf("rowsAffected:%d\n", rowsAffected) + f5.GetSysLog().Info("lastInsertId:%d\n", lastInsertId) + f5.GetSysLog().Info("rowsAffected:%d\n", rowsAffected) }) } @@ -203,18 +250,18 @@ func (gm *GuildMgr) updateAllPendingReqs(guildId int64, isJoinGuild int) { where, func(err error, lastInsertId int64, rowsAffected int64) { if err != nil { - fmt.Printf("error:%v\n", err) + f5.GetSysLog().Info("error:%v\n", err) } - fmt.Printf("lastInsertId:%d\n", lastInsertId) - fmt.Printf("rowsAffected:%d\n", rowsAffected) + f5.GetSysLog().Info("lastInsertId:%d\n", lastInsertId) + f5.GetSysLog().Info("rowsAffected:%d\n", rowsAffected) }, ) } // updatePendingReqs 更新申请加入公会记录 -func (gm *GuildMgr) updatePendingReqs(guildId int64, accountId string, isJoinGuild string) { +func (gm *GuildMgr) updatePendingReqs(guildId int64, accountId string, isJoinGuild int) { fields := [][]string{ - {"is_join_guild", isJoinGuild}, + {"is_join_guild", q5.ToString(isJoinGuild)}, } where := [][]string{ {"guild_id", q5.ToString(guildId)}, @@ -227,10 +274,10 @@ func (gm *GuildMgr) updatePendingReqs(guildId int64, accountId string, isJoinGui where, func(err error, lastInsertId int64, rowsAffected int64) { if err != nil { - fmt.Printf("error:%v\n", err) + f5.GetSysLog().Info("error:%v\n", err) } - fmt.Printf("lastInsertId:%d\n", lastInsertId) - fmt.Printf("rowsAffected:%d\n", rowsAffected) + f5.GetSysLog().Info("lastInsertId:%d\n", lastInsertId) + f5.GetSysLog().Info("rowsAffected:%d\n", rowsAffected) }, ) } @@ -256,10 +303,10 @@ func (gm *GuildMgr) upsertGuildMember(guildId int64, member *GuildMember) { insertKv, func(err error, lastInsertId int64, rowsAffected int64) { if err != nil { - fmt.Printf("error:%v\n", err) + f5.GetSysLog().Info("error:%v\n", err) } - fmt.Printf("lastInsertId:%d\n", lastInsertId) - fmt.Printf("rowsAffected:%d\n", rowsAffected) + f5.GetSysLog().Info("lastInsertId:%d\n", lastInsertId) + f5.GetSysLog().Info("rowsAffected:%d\n", rowsAffected) }, ) } @@ -275,10 +322,10 @@ func (gm *GuildMgr) updateGuildMembers(g *Guild, fields [][]string) { where, func(err error, lastInsertId int64, rowsAffected int64) { if err != nil { - fmt.Printf("error:%v\n", err) + f5.GetSysLog().Info("error:%v\n", err) } - fmt.Printf("lastInsertId:%d\n", lastInsertId) - fmt.Printf("rowsAffected:%d\n", rowsAffected) + f5.GetSysLog().Info("lastInsertId:%d\n", lastInsertId) + f5.GetSysLog().Info("rowsAffected:%d\n", rowsAffected) }, ) } @@ -297,10 +344,10 @@ func (gm *GuildMgr) updateGuildMember(g *Guild, accountId string, fields [][]str where, func(err error, lastInsertId int64, rowsAffected int64) { if err != nil { - fmt.Printf("error:%v\n", err) + f5.GetSysLog().Info("error:%v\n", err) } - fmt.Printf("lastInsertId:%d\n", lastInsertId) - fmt.Printf("rowsAffected:%d\n", rowsAffected) + f5.GetSysLog().Info("lastInsertId:%d\n", lastInsertId) + f5.GetSysLog().Info("rowsAffected:%d\n", rowsAffected) }, ) } @@ -318,9 +365,9 @@ func (gm *GuildMgr) insertGuildLog(log *GuildLog) { fields, func(err error, lastInsertId int64, rowsAffected int64) { if err != nil { - fmt.Printf("error:%v\n", err) + f5.GetSysLog().Info("error:%v\n", err) } - fmt.Printf("lastInsertId:%d\n", lastInsertId) - fmt.Printf("rowsAffected:%d\n", rowsAffected) + f5.GetSysLog().Info("lastInsertId:%d\n", lastInsertId) + f5.GetSysLog().Info("rowsAffected:%d\n", rowsAffected) }) } diff --git a/server/imserver/guildmgr.go b/server/imserver/guildmgr.go index 12863aad..4948ab33 100644 --- a/server/imserver/guildmgr.go +++ b/server/imserver/guildmgr.go @@ -19,45 +19,53 @@ func NewGuildMgr() *GuildMgr { return &GuildMgr{ Guilds: make(map[int64]*Guild), pendingReqs: make(map[int64]map[string]bool), - Logs: make(map[int64][]*GuildLog, DefaultLogs), + Logs: make(map[int64][]*GuildLog), } } func (gm *GuildMgr) init() { - gm.pendingReqs = make(map[int64]map[string]bool) + gm.loadFromDB() +} + +func (gm *GuildMgr) loadFromDB() { // 加载公会 gm.loadGuildFromDB() // 加载公会成员 gm.loadGuildMemberFromDB() // 加载公会申请者列表 gm.loadPendingReqsFromDB() + // 加载公会日志 + gm.loadGuildLogsFromDB() } // CreateGuild 创建公会 -func (gm *GuildMgr) CreateGuild(name string, leaderID string) (int64, error) { - // Check joined guild - otherGuildId, isJoined := gm.checkJoinGuild(leaderID) - if isJoined { - errMsg := fmt.Sprintf("Player:%s has joined other guild:%d", leaderID, otherGuildId) - return 0, fmt.Errorf(errMsg) +func (gm *GuildMgr) CreateGuild(name string, leaderId string) (int64, error) { + _, err := gm.checkJoinGuild(leaderId) + if err != nil { + return 0, err } guildId := f5.GetApp().NewUuid() if _, exists := gm.Guilds[guildId]; exists { - return 0, fmt.Errorf("guild already exists") + return 0, fmt.Errorf("CreateGuild fail") } - maxMembers := 10 + guild := &Guild{ GuildId: guildId, Name: name, - LeaderId: leaderID, - MaxMembers: maxMembers, + LeaderId: leaderId, + MaxMembers: MaxMembers, } - gm.createGuildDB(guild) - newMember := GuildMember{AccountId: leaderID, Level: GuildMemberLevelLeader} - _ = guild.AddMember(&newMember) + newMember := GuildMember{AccountId: leaderId, Level: GuildMemberLevelLeader} + err = guild.AddMember(&newMember) + if err != nil { + return 0, err + } + + gm.createGuildDB(guild) gm.upsertGuildMember(guildId, &newMember) + gm.Guilds[guildId] = guild return guildId, nil @@ -68,20 +76,26 @@ func (gm *GuildMgr) ApplyToGuild(guildId int64, applicantAccountId string) error if _, exists := gm.Guilds[guildId]; !exists { return fmt.Errorf("guild not found") } + // check join guild - otherGuildId, isJoin := gm.checkJoinGuild(applicantAccountId) - if isJoin { - errMsg := fmt.Sprintf("Player:%s has joined other guild:%d", applicantAccountId, otherGuildId) - return fmt.Errorf(errMsg) + _, err := gm.checkJoinGuild(applicantAccountId) + if err != nil { + return err } guild := gm.Guilds[guildId] if len(guild.Members) >= guild.MaxMembers { return fmt.Errorf("guild is full") } - // IF exists, then replace it - gm.upsertPendingReqs(guildId, applicantAccountId, "0") - gm.pendingReqs[guildId][applicantAccountId] = true + + // IF exists, then replace it fields `isJoinGuild` is 0 + gm.upsertPendingReqs(guildId, applicantAccountId, PendingReqIsJoinGuildStatusDefault) + pendReq, exists := gm.pendingReqs[guildId] + if !exists { + pendReq = make(map[string]bool) + } + pendReq[applicantAccountId] = true + return nil } @@ -92,16 +106,20 @@ func (gm *GuildMgr) Approve(guildId int64, operatorAccountId, accountId string) return fmt.Errorf("guild not found") } - // 公会干部及以上仅可操作 - err := gm.checkOperatorPerm(guild, operatorAccountId, GuildMemberLevelCadre) + operatorMember, err := guild.GetMember(operatorAccountId) if err != nil { return err } - otherGuildId, isJoin := gm.checkJoinGuild(accountId) - if isJoin { - errMsg := fmt.Sprintf("Player:%s has joined other guild:%d", accountId, otherGuildId) - return fmt.Errorf(errMsg) + // 公会干部及以上仅可操作 + err = gm.checkOperatorPerm(operatorMember, GuildMemberLevelCadre) + if err != nil { + return err + } + + _, err = gm.checkJoinGuild(accountId) + if err != nil { + return err } _, exists = gm.pendingReqs[guildId][accountId] @@ -114,12 +132,13 @@ func (gm *GuildMgr) Approve(guildId int64, operatorAccountId, accountId string) if err != nil { return err } - gm.upsertGuildMember(guildId, &newMember) - delete(gm.pendingReqs[guildId], accountId) - gm.updatePendingReqs(guildId, accountId, "1") - logContent := fmt.Sprintf("Approve[%d-%s-%s]", guildId, operatorAccountId, accountId) + gm.upsertGuildMember(guildId, &newMember) + gm.updatePendingReqs(guildId, accountId, PendingReqIsJoinGuildStatusJoined) + + logContent := fmt.Sprintf("Approve[operator:%s]", operatorAccountId) gm.WriteLog(guildId, accountId, LogTypeApprove, logContent) + delete(gm.pendingReqs[guildId], accountId) return nil } @@ -131,9 +150,8 @@ func (gm *GuildMgr) Reject(guildId int64, applicantAccountId string) error { return fmt.Errorf("no pending applications for this guild") } - //delete(gm.pendingReqs[guildId], applicantAccountId) - gm.pendingReqs[guildId][applicantAccountId] = false - gm.updatePendingReqs(guildId, applicantAccountId, "2") + gm.updatePendingReqs(guildId, applicantAccountId, PendingReqIsJoinGuildStatusReject) + delete(gm.pendingReqs[guildId], applicantAccountId) return nil } @@ -157,7 +175,7 @@ func (gm *GuildMgr) JoinGuild(guildId int64, accountId string) error { gm.upsertGuildMember(guildId, &newMember) delete(gm.pendingReqs[guildId], accountId) - gm.updatePendingReqs(guildId, accountId, "1") + gm.updatePendingReqs(guildId, accountId, PendingReqIsJoinGuildStatusJoined) return nil } @@ -199,21 +217,27 @@ func (gm *GuildMgr) DismissMember(guildId int64, operatorAccountId, accountId st return fmt.Errorf("cannot dismiss the leader") } - // 公会干部及以上仅可操作 - err := gm.checkOperatorPerm(guild, operatorAccountId, GuildMemberLevelCadre) + if operatorAccountId == accountId { + return fmt.Errorf("cannot dismiss yourself") + } + + operatorMember, err := guild.GetMember(operatorAccountId) if err != nil { return err } - if operatorAccountId == accountId { - return fmt.Errorf("member not dismiss") + // 公会干部及以上仅可操作 + err = gm.checkOperatorPerm(operatorMember, GuildMemberLevelCadre) + if err != nil { + return err } dismissMember, err := guild.GetMember(accountId) if err != nil { return fmt.Errorf("member not found in the guild") } - if dismissMember.Level <= 2 { + + if dismissMember.Level <= operatorMember.Level { return fmt.Errorf("no permission") } @@ -238,16 +262,25 @@ func (gm *GuildMgr) PromoteMember(guildId int64, operatorAccountId, accountId st return fmt.Errorf("cannot promote the leader") } - // 会长仅可操作 - err := gm.checkOperatorPerm(guild, operatorAccountId, GuildMemberLevelLeader) + // 仅会长操作 + operatorMember, err := guild.GetMember(operatorAccountId) if err != nil { return err } + err = gm.checkOperatorPerm(operatorMember, GuildMemberLevelLeader) + if err != nil { + return err + } + + if operatorAccountId != guild.LeaderId { + return fmt.Errorf("PromoteMember: No, leader") + } member, err := guild.GetMember(accountId) if err != nil { return fmt.Errorf("member not found in the guild") } + if member.Level == GuildMemberLevelCadre { return nil } @@ -273,11 +306,19 @@ func (gm *GuildMgr) DemoteMember(guildId int64, operatorAccountId, accountId str return fmt.Errorf("cannot demote the leader") } - // 会长仅可操作 - err := gm.checkOperatorPerm(guild, operatorAccountId, GuildMemberLevelLeader) + // 仅会长操作 + operatorMember, err := guild.GetMember(operatorAccountId) if err != nil { return err } + err = gm.checkOperatorPerm(operatorMember, GuildMemberLevelLeader) + if err != nil { + return err + } + + if operatorAccountId != guild.LeaderId { + return fmt.Errorf("PromoteMember: No, leader") + } member, err := guild.GetMember(accountId) if err != nil { @@ -287,6 +328,7 @@ func (gm *GuildMgr) DemoteMember(guildId int64, operatorAccountId, accountId str if member.Level == GuildMemberLevelDefault { return nil } + member.Level = GuildMemberLevelDefault fields := [][]string{{"level", q5.ToString(GuildMemberLevelDefault)}} gm.updateGuildMember(guild, member.AccountId, fields) @@ -304,13 +346,11 @@ func (gm *GuildMgr) Disband(guildId int64, accountId string) error { return fmt.Errorf("guild not found") } - // 会长仅可操作 + // 仅会长可操作 if accountId != guild.LeaderId { return fmt.Errorf("cannot disband guild") } - guildName := guild.Name - guild.Members = nil updateFields := [][]string{ {"is_deleted", q5.ToString(1)}, @@ -320,11 +360,11 @@ func (gm *GuildMgr) Disband(guildId int64, accountId string) error { fields := [][]string{{"is_leave_guild", q5.ToString(1)}} gm.updateGuildMembers(guild, fields) - isJoinGuild := 3 - gm.updateAllPendingReqs(guildId, isJoinGuild) + gm.updateAllPendingReqs(guildId, PendingReqIsJoinGuildStatusDisband) - // 确保在删除之前没有其他地方引用了公会对象的指针, 以避免空指针异常 + guild.Members = nil gm.Guilds[guildId] = nil + gm.pendingReqs[guildId] = nil gm.Logs[guildId] = nil delete(gm.Guilds, guildId) @@ -409,6 +449,13 @@ func (gm *GuildMgr) GetGuildByAccountId(accountId string) *Guild { return nil } +func (gm *GuildMgr) getGuild(guildId int64) *Guild { + if guild, ok := gm.Guilds[guildId]; ok { + return guild + } + return nil +} + // Info 工会信息 func (gm *GuildMgr) Info(accountId string) (*Guild, map[string]bool, []*GuildLog) { guild := gm.GetGuildByAccountId(accountId) @@ -423,27 +470,20 @@ func (gm *GuildMgr) Info(accountId string) (*Guild, map[string]bool, []*GuildLog return guild, pendingReqs, guildLogs } -func (gm *GuildMgr) checkOperatorPerm(guild *Guild, operatorAccountId string, level int) error { - operatorMember, err := guild.GetMember(operatorAccountId) - if err != nil { - //return fmt.Errorf("checkOperatorPerm: no member") - return fmt.Errorf("checkOperatorPerm: no member[%s]", operatorAccountId) - } +func (gm *GuildMgr) checkOperatorPerm(operatorMember *GuildMember, level int) error { if operatorMember.Level > level { - return fmt.Errorf("checkOperatorPerm: no permission[%s-%d]", operatorAccountId, operatorMember.Level) + return fmt.Errorf("checkOperatorPerm: no permission[%s-%d]", operatorMember.AccountId, operatorMember.Level) } return nil } -func (gm *GuildMgr) checkJoinGuild(accountId string) (int64, bool) { - for guildId, guild := range gm.Guilds { - for _, member := range guild.Members { - if accountId == member.AccountId { - return guildId, true - } - } +func (gm *GuildMgr) checkJoinGuild(accountId string) (bool, error) { + guild := gm.GetGuildByAccountId(accountId) + if guild != nil { + errMsg := fmt.Sprintf("Player:%s has joined other GuildId:%d", accountId, guild.GuildId) + return true, fmt.Errorf(errMsg) } - return 0, false + return false, nil } func containsSubstring(s, substr string) bool { diff --git a/server/imserver/guildmgr_test.go b/server/imserver/guildmgr_test.go index e60b9ba2..7784719f 100644 --- a/server/imserver/guildmgr_test.go +++ b/server/imserver/guildmgr_test.go @@ -1,56 +1,49 @@ package main import ( + "f5" "fmt" + "q5" "testing" ) -func TestGuild(t *testing.T) { - guildMgr := NewGuildMgr() - leaderID := "apple" - memberID := "sony" +var ( + leaderId = "6513_2006_test134345" + member1Id = "6513_2006_111" + member2Id = "6513_2006_222" +) - guildID, err := guildMgr.CreateGuild("GuildWorld", leaderID) +var newGuildId int64 = 1148210928160867328 + +func TestCreateGuild(t *testing.T) { + f5.TestRun(app) + guildMgr := NewGuildMgr() + + guildName := randomGuildName() + guildId, err := guildMgr.CreateGuild(guildName, leaderId) if err != nil { fmt.Println("Error:", err) return } - fmt.Println("Created guild:", guildID) - err = guildMgr.ApplyToGuild(guildID, memberID) + newGuildId = guildId + + fmt.Println("Created guild:", guildId) +} + +func TestGuildMember(t *testing.T) { + f5.TestRun(app) + if newGuildId <= 0 { + t.Errorf("guildId error: %v", newGuildId) + } + err := guildMgr.ApplyToGuild(newGuildId, member1Id) if err != nil { - fmt.Println("Error:", err) + t.Errorf("Error:%s", err) return } fmt.Println("Applied to guild") - - err = guildMgr.Approve(guildID, memberID) - if err != nil { - fmt.Println("Error:", err) - return - } - fmt.Println("Approved application") - - err = guildMgr.PromoteMember(guildID, memberID, memberID) - if err != nil { - fmt.Println("Error:", err) - return - } - fmt.Println("Promoted member") - - err = guildMgr.LeaveGuild(guildID, memberID) - if err != nil { - fmt.Println("Error:", err) - return - } - fmt.Println("Left guild") - - err = guildMgr.DismissMember(guildID, memberID, memberID) - if err != nil { - fmt.Println("Error:", err) - return - } - fmt.Println("Dismissed member") - - fmt.Println("Guild logs:", guildMgr.Logs) +} + +func randomGuildName() string { + return q5.RandomString(6) } diff --git a/server/imserver/player.go b/server/imserver/player.go index be609279..1064302c 100644 --- a/server/imserver/player.go +++ b/server/imserver/player.go @@ -3,7 +3,6 @@ package main import ( "cs" "f5" - "fmt" "q5" ) @@ -230,43 +229,37 @@ func (p *Player) CMFriendInfo(hdr *f5.MsgHdr, msg *cs.CMFriendInfo) { func (p *Player) CMGuildInfo(hdr *f5.MsgHdr, msg *cs.CMGuildInfo) { rspMsg := new(cs.SMGuildInfo) g := guildMgr.GetGuildByAccountId(p.accountId) - if g != nil { - members := q5.ToInt32(len(g.Members)) - maxMembers := q5.ToInt32(g.MaxMembers) - currGuild := &cs.MFGuild{ - GuildId: &g.GuildId, - Name: &g.Name, - LeaderId: &g.LeaderId, - Members: &members, - MaxMembers: &maxMembers, - } - rspMsg.CurrGuild = currGuild - rspMsg.RandomGuilds = nil - } else { - rspMsg.CurrGuild = nil + if g == nil { + rspMsg.Guild = nil rspMsg.RandomGuilds = p.FillGuild(guildMgr.RandomGuilds()) + wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg) + return } - + members := q5.ToInt32(len(g.Members)) + maxMembers := q5.ToInt32(g.MaxMembers) + currGuild := &cs.MFGuild{ + GuildId: &g.GuildId, + Name: &g.Name, + LeaderId: &g.LeaderId, + Members: &members, + MaxMembers: &maxMembers, + } + rspMsg.Guild = currGuild + rspMsg.RandomGuilds = nil wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg) } // CMCreateGuild 创建公会 func (p *Player) CMCreateGuild(hdr *f5.MsgHdr, msg *cs.CMCreateGuild) { rspMsg := new(cs.SMCreateGuild) - guildId, err := guildMgr.CreateGuild( - *msg.Name, - p.accountId, - ) - fmt.Printf("new guildId:%v \n", guildId) + guildId, err := guildMgr.CreateGuild(*msg.Name, p.accountId) if err != nil { errMsg := err.Error() rspMsg.ErrMsg = &errMsg - f5.GetSysLog().Info("CMCreateGuild err:%s\n", errMsg) } else { rspMsg.GuildId = &guildId } - wspListener.sendProxyMsg(hdr.Conn, hdr.SocketHandle, rspMsg) } diff --git a/server/imserver/proto/cs_proto.proto b/server/imserver/proto/cs_proto.proto index 8831fd31..5cf7ddc5 100644 --- a/server/imserver/proto/cs_proto.proto +++ b/server/imserver/proto/cs_proto.proto @@ -271,7 +271,7 @@ message CMGuildInfo // 回复公会信息 message SMGuildInfo { - optional MFGuild curr_guild = 1; + optional MFGuild guild = 1; repeated MFGuild random_guilds = 2; }