复制项目

This commit is contained in:
kim.dev.6789
2026-01-14 22:35:45 +08:00
parent 305d526110
commit b7f8db7d08
297 changed files with 81784 additions and 0 deletions

109
pkg/rpclient/chat/admin.go Normal file
View File

@@ -0,0 +1,109 @@
// Copyright © 2023 OpenIM open source community. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package chat
import (
"context"
"git.imall.cloud/openim/chat/pkg/common/mctx"
"git.imall.cloud/openim/chat/pkg/eerrs"
"git.imall.cloud/openim/chat/pkg/protocol/admin"
)
func NewAdminClient(client admin.AdminClient) *AdminClient {
return &AdminClient{
client: client,
}
}
type AdminClient struct {
client admin.AdminClient
}
func (o *AdminClient) GetConfig(ctx context.Context) (map[string]string, error) {
conf, err := o.client.GetClientConfig(ctx, &admin.GetClientConfigReq{})
if err != nil {
return nil, err
}
if conf.Config == nil {
return map[string]string{}, nil
}
return conf.Config, nil
}
func (o *AdminClient) CheckInvitationCode(ctx context.Context, invitationCode string) error {
resp, err := o.client.FindInvitationCode(ctx, &admin.FindInvitationCodeReq{Codes: []string{invitationCode}})
if err != nil {
return err
}
if len(resp.Codes) == 0 {
return eerrs.ErrInvitationNotFound.Wrap()
}
if resp.Codes[0].UsedUserID != "" {
return eerrs.ErrInvitationCodeUsed.Wrap()
}
return nil
}
func (o *AdminClient) CheckRegister(ctx context.Context, ip string) error {
_, err := o.client.CheckRegisterForbidden(ctx, &admin.CheckRegisterForbiddenReq{Ip: ip})
return err
}
func (o *AdminClient) CheckLogin(ctx context.Context, userID string, ip string) error {
_, err := o.client.CheckLoginForbidden(ctx, &admin.CheckLoginForbiddenReq{Ip: ip, UserID: userID})
return err
}
func (o *AdminClient) UseInvitationCode(ctx context.Context, userID string, invitationCode string) error {
_, err := o.client.UseInvitationCode(ctx, &admin.UseInvitationCodeReq{UserID: userID, Code: invitationCode})
return err
}
func (o *AdminClient) CheckNilOrAdmin(ctx context.Context) (bool, error) {
if !mctx.HaveOpUser(ctx) {
return false, nil
}
_, err := mctx.CheckAdmin(ctx)
if err != nil {
return false, err
}
return true, nil
}
func (o *AdminClient) CreateToken(ctx context.Context, userID string, userType int32) (*admin.CreateTokenResp, error) {
return o.client.CreateToken(ctx, &admin.CreateTokenReq{UserID: userID, UserType: userType})
}
func (o *AdminClient) GetDefaultFriendUserID(ctx context.Context) ([]string, error) {
resp, err := o.client.FindDefaultFriend(ctx, &admin.FindDefaultFriendReq{})
if err != nil {
return nil, err
}
return resp.UserIDs, nil
}
func (o *AdminClient) GetDefaultGroupID(ctx context.Context) ([]string, error) {
resp, err := o.client.FindDefaultGroup(ctx, &admin.FindDefaultGroupReq{})
if err != nil {
return nil, err
}
return resp.GroupIDs, nil
}
func (o *AdminClient) InvalidateToken(ctx context.Context, userID string) error {
_, err := o.client.InvalidateToken(ctx, &admin.InvalidateTokenReq{UserID: userID})
return err
}

197
pkg/rpclient/chat/chat.go Normal file
View File

@@ -0,0 +1,197 @@
// Copyright © 2023 OpenIM open source community. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package chat
import (
"context"
"git.imall.cloud/openim/chat/pkg/protocol/chat"
"git.imall.cloud/openim/chat/pkg/protocol/common"
"github.com/openimsdk/tools/errs"
"github.com/openimsdk/tools/utils/datautil"
)
func NewChatClient(client chat.ChatClient) *ChatClient {
return &ChatClient{
client: client,
}
}
type ChatClient struct {
client chat.ChatClient
}
func (o *ChatClient) FindUserPublicInfo(ctx context.Context, userIDs []string) ([]*common.UserPublicInfo, error) {
if len(userIDs) == 0 {
return []*common.UserPublicInfo{}, nil
}
resp, err := o.client.FindUserPublicInfo(ctx, &chat.FindUserPublicInfoReq{UserIDs: userIDs})
if err != nil {
return nil, err
}
return resp.Users, nil
}
func (o *ChatClient) MapUserPublicInfo(ctx context.Context, userIDs []string) (map[string]*common.UserPublicInfo, error) {
users, err := o.FindUserPublicInfo(ctx, userIDs)
if err != nil {
return nil, err
}
return datautil.SliceToMap(users, func(user *common.UserPublicInfo) string {
return user.UserID
}), nil
}
func (o *ChatClient) FindUserFullInfo(ctx context.Context, userIDs []string) ([]*common.UserFullInfo, error) {
if len(userIDs) == 0 {
return []*common.UserFullInfo{}, nil
}
resp, err := o.client.FindUserFullInfo(ctx, &chat.FindUserFullInfoReq{UserIDs: userIDs})
if err != nil {
return nil, err
}
return resp.Users, nil
}
func (o *ChatClient) MapUserFullInfo(ctx context.Context, userIDs []string) (map[string]*common.UserFullInfo, error) {
users, err := o.FindUserFullInfo(ctx, userIDs)
if err != nil {
return nil, err
}
userMap := make(map[string]*common.UserFullInfo)
for i, user := range users {
userMap[user.UserID] = users[i]
}
return userMap, nil
}
func (o *ChatClient) GetUserFullInfo(ctx context.Context, userID string) (*common.UserFullInfo, error) {
users, err := o.FindUserFullInfo(ctx, []string{userID})
if err != nil {
return nil, err
}
if len(users) == 0 {
return nil, errs.ErrRecordNotFound.WrapMsg("user id not found")
}
return users[0], nil
}
func (o *ChatClient) GetUserPublicInfo(ctx context.Context, userID string) (*common.UserPublicInfo, error) {
users, err := o.FindUserPublicInfo(ctx, []string{userID})
if err != nil {
return nil, err
}
if len(users) == 0 {
return nil, errs.ErrRecordNotFound.WrapMsg("user id not found", "userID", userID)
}
return users[0], nil
}
func (o *ChatClient) UpdateUser(ctx context.Context, req *chat.UpdateUserInfoReq) error {
_, err := o.client.UpdateUserInfo(ctx, req)
return err
}
func (o *ChatClient) CheckUserExist(ctx context.Context, req *chat.CheckUserExistReq) (resp *chat.CheckUserExistResp, err error) {
resp, err = o.client.CheckUserExist(ctx, req)
return resp, err
}
func (o *ChatClient) DelUserAccount(ctx context.Context, req *chat.DelUserAccountReq) (resp *chat.DelUserAccountResp, err error) {
resp, err = o.client.DelUserAccount(ctx, req)
return resp, err
}
// ==================== 敏感词管理相关方法 ====================
func (o *ChatClient) AddSensitiveWord(ctx context.Context, req *chat.AddSensitiveWordReq) (*chat.AddSensitiveWordResp, error) {
return o.client.AddSensitiveWord(ctx, req)
}
func (o *ChatClient) UpdateSensitiveWord(ctx context.Context, req *chat.UpdateSensitiveWordReq) (*chat.UpdateSensitiveWordResp, error) {
return o.client.UpdateSensitiveWord(ctx, req)
}
func (o *ChatClient) DeleteSensitiveWord(ctx context.Context, req *chat.DeleteSensitiveWordReq) (*chat.DeleteSensitiveWordResp, error) {
return o.client.DeleteSensitiveWord(ctx, req)
}
func (o *ChatClient) GetSensitiveWord(ctx context.Context, req *chat.GetSensitiveWordReq) (*chat.GetSensitiveWordResp, error) {
return o.client.GetSensitiveWord(ctx, req)
}
func (o *ChatClient) SearchSensitiveWords(ctx context.Context, req *chat.SearchSensitiveWordsReq) (*chat.SearchSensitiveWordsResp, error) {
return o.client.SearchSensitiveWords(ctx, req)
}
func (o *ChatClient) BatchAddSensitiveWords(ctx context.Context, req *chat.BatchAddSensitiveWordsReq) (*chat.BatchAddSensitiveWordsResp, error) {
return o.client.BatchAddSensitiveWords(ctx, req)
}
func (o *ChatClient) BatchUpdateSensitiveWords(ctx context.Context, req *chat.BatchUpdateSensitiveWordsReq) (*chat.BatchUpdateSensitiveWordsResp, error) {
return o.client.BatchUpdateSensitiveWords(ctx, req)
}
func (o *ChatClient) BatchDeleteSensitiveWords(ctx context.Context, req *chat.BatchDeleteSensitiveWordsReq) (*chat.BatchDeleteSensitiveWordsResp, error) {
return o.client.BatchDeleteSensitiveWords(ctx, req)
}
func (o *ChatClient) AddSensitiveWordGroup(ctx context.Context, req *chat.AddSensitiveWordGroupReq) (*chat.AddSensitiveWordGroupResp, error) {
return o.client.AddSensitiveWordGroup(ctx, req)
}
func (o *ChatClient) UpdateSensitiveWordGroup(ctx context.Context, req *chat.UpdateSensitiveWordGroupReq) (*chat.UpdateSensitiveWordGroupResp, error) {
return o.client.UpdateSensitiveWordGroup(ctx, req)
}
func (o *ChatClient) DeleteSensitiveWordGroup(ctx context.Context, req *chat.DeleteSensitiveWordGroupReq) (*chat.DeleteSensitiveWordGroupResp, error) {
return o.client.DeleteSensitiveWordGroup(ctx, req)
}
func (o *ChatClient) GetSensitiveWordGroup(ctx context.Context, req *chat.GetSensitiveWordGroupReq) (*chat.GetSensitiveWordGroupResp, error) {
return o.client.GetSensitiveWordGroup(ctx, req)
}
func (o *ChatClient) GetAllSensitiveWordGroups(ctx context.Context, req *chat.GetAllSensitiveWordGroupsReq) (*chat.GetAllSensitiveWordGroupsResp, error) {
return o.client.GetAllSensitiveWordGroups(ctx, req)
}
func (o *ChatClient) GetSensitiveWordConfig(ctx context.Context, req *chat.GetSensitiveWordConfigReq) (*chat.GetSensitiveWordConfigResp, error) {
return o.client.GetSensitiveWordConfig(ctx, req)
}
func (o *ChatClient) UpdateSensitiveWordConfig(ctx context.Context, req *chat.UpdateSensitiveWordConfigReq) (*chat.UpdateSensitiveWordConfigResp, error) {
return o.client.UpdateSensitiveWordConfig(ctx, req)
}
func (o *ChatClient) GetSensitiveWordLogs(ctx context.Context, req *chat.GetSensitiveWordLogsReq) (*chat.GetSensitiveWordLogsResp, error) {
return o.client.GetSensitiveWordLogs(ctx, req)
}
func (o *ChatClient) DeleteSensitiveWordLogs(ctx context.Context, req *chat.DeleteSensitiveWordLogsReq) (*chat.DeleteSensitiveWordLogsResp, error) {
return o.client.DeleteSensitiveWordLogs(ctx, req)
}
func (o *ChatClient) GetSensitiveWordStats(ctx context.Context, req *chat.GetSensitiveWordStatsReq) (*chat.GetSensitiveWordStatsResp, error) {
return o.client.GetSensitiveWordStats(ctx, req)
}
func (o *ChatClient) GetSensitiveWordLogStats(ctx context.Context, req *chat.GetSensitiveWordLogStatsReq) (*chat.GetSensitiveWordLogStatsResp, error) {
return o.client.GetSensitiveWordLogStats(ctx, req)
}
func (o *ChatClient) GetUserLoginRecords(ctx context.Context, req *chat.GetUserLoginRecordsReq) (*chat.GetUserLoginRecordsResp, error) {
return o.client.GetUserLoginRecords(ctx, req)
}