mirror of
https://github.com/openimsdk/open-im-server.git
synced 2026-05-06 10:05:58 +08:00
Merge branch 'errcode' of github.com:OpenIMSDK/Open-IM-Server into errcode
This commit is contained in:
@@ -2,7 +2,7 @@ package controller
|
||||
|
||||
import (
|
||||
"Open_IM/pkg/common/db/cache"
|
||||
"Open_IM/pkg/common/db/mysql"
|
||||
"Open_IM/pkg/common/db/relation"
|
||||
"context"
|
||||
"errors"
|
||||
"gorm.io/gorm"
|
||||
|
||||
@@ -2,7 +2,6 @@ package controller
|
||||
|
||||
import (
|
||||
"Open_IM/pkg/common/db/cache"
|
||||
"Open_IM/pkg/common/db/mysql"
|
||||
"Open_IM/pkg/common/db/relation"
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
@@ -2,7 +2,7 @@ package controller
|
||||
|
||||
import (
|
||||
"Open_IM/pkg/common/db/cache"
|
||||
"Open_IM/pkg/common/db/mysql"
|
||||
"Open_IM/pkg/common/db/relation"
|
||||
"context"
|
||||
)
|
||||
|
||||
|
||||
@@ -14,12 +14,12 @@ import (
|
||||
|
||||
type GroupInterface interface {
|
||||
FindGroupsByID(ctx context.Context, groupIDs []string) (groups []*relation.Group, err error)
|
||||
CreateGroup(ctx context.Context, groups []*relation.Group) error
|
||||
CreateGroup(ctx context.Context, groups []*relation.Group, groupMember []*relation.GroupMember) error
|
||||
DeleteGroupByIDs(ctx context.Context, groupIDs []string) error
|
||||
TakeGroupByID(ctx context.Context, groupID string) (group *relation.Group, err error)
|
||||
|
||||
//mongo
|
||||
CreateSuperGroup(ctx context.Context, groupID string, initMemberIDList []string, memberNumCount int) error
|
||||
CreateSuperGroup(ctx context.Context, groupID string, initMemberIDList []string) error
|
||||
GetSuperGroupByID(ctx context.Context, groupID string) (superGroup *unrelation.SuperGroup, err error)
|
||||
}
|
||||
|
||||
@@ -36,8 +36,8 @@ func (g *GroupController) FindGroupsByID(ctx context.Context, groupIDs []string)
|
||||
return g.database.FindGroupsByID(ctx, groupIDs)
|
||||
}
|
||||
|
||||
func (g *GroupController) CreateGroup(ctx context.Context, groups []*relation.Group) error {
|
||||
return g.database.CreateGroup(ctx, groups)
|
||||
func (g *GroupController) CreateGroup(ctx context.Context, groups []*relation.Group, groupMember []*relation.GroupMember) error {
|
||||
return g.database.CreateGroup(ctx, groups, groupMember)
|
||||
}
|
||||
|
||||
func (g *GroupController) DeleteGroupByIDs(ctx context.Context, groupIDs []string) error {
|
||||
@@ -52,17 +52,17 @@ func (g *GroupController) GetSuperGroupByID(ctx context.Context, groupID string)
|
||||
return g.database.GetSuperGroupByID(ctx, groupID)
|
||||
}
|
||||
|
||||
func (g *GroupController) CreateSuperGroup(ctx context.Context, groupID string, initMemberIDList []string, memberNumCount int) error {
|
||||
return g.database.CreateSuperGroup(ctx, groupID, initMemberIDList, memberNumCount)
|
||||
func (g *GroupController) CreateSuperGroup(ctx context.Context, groupID string, initMemberIDList []string) error {
|
||||
return g.database.CreateSuperGroup(ctx, groupID, initMemberIDList)
|
||||
}
|
||||
|
||||
type DataBase interface {
|
||||
FindGroupsByID(ctx context.Context, groupIDs []string) (groups []*relation.Group, err error)
|
||||
CreateGroup(ctx context.Context, groups []*relation.Group) error
|
||||
CreateGroup(ctx context.Context, groups []*relation.Group, groupMember []*relation.GroupMember) error
|
||||
DeleteGroupByIDs(ctx context.Context, groupIDs []string) error
|
||||
TakeGroupByID(ctx context.Context, groupID string) (group *relation.Group, err error)
|
||||
GetSuperGroupByID(ctx context.Context, groupID string) (superGroup *unrelation.SuperGroup, err error)
|
||||
CreateSuperGroup(ctx context.Context, groupID string, initMemberIDList []string, memberNumCount int) error
|
||||
CreateSuperGroup(ctx context.Context, groupID string, initMemberIDList []string) error
|
||||
}
|
||||
|
||||
type GroupDataBase struct {
|
||||
@@ -100,8 +100,18 @@ func (g *GroupDataBase) FindGroupsByID(ctx context.Context, groupIDs []string) (
|
||||
return g.cache.GetGroupsInfo(ctx, groupIDs)
|
||||
}
|
||||
|
||||
func (g *GroupDataBase) CreateGroup(ctx context.Context, groups []*relation.Group) error {
|
||||
return g.groupDB.Create(ctx, groups)
|
||||
func (g *GroupDataBase) CreateGroup(ctx context.Context, groups []*relation.Group, groupMember []*relation.GroupMember) error {
|
||||
return g.db.Transaction(func(tx *gorm.DB) error {
|
||||
if err := g.groupDB.Create(ctx, groups, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
if len(groupMember) > 0 {
|
||||
if err := g.groupMemberDB.Create(ctx, groupMember, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func (g *GroupDataBase) DeleteGroupByIDs(ctx context.Context, groupIDs []string) error {
|
||||
@@ -136,14 +146,14 @@ func (g *GroupDataBase) Update(ctx context.Context, groups []*relation.Group) er
|
||||
})
|
||||
}
|
||||
|
||||
func (g *GroupDataBase) CreateSuperGroup(ctx context.Context, groupID string, initMemberIDList []string, memberNumCount int) error {
|
||||
func (g *GroupDataBase) CreateSuperGroup(ctx context.Context, groupID string, initMemberIDList []string) error {
|
||||
sess, err := g.mongoDB.MgoClient.StartSession()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer sess.EndSession(ctx)
|
||||
sCtx := mongo.NewSessionContext(ctx, sess)
|
||||
if err = g.mongoDB.CreateSuperGroup(sCtx, groupID, initMemberIDList, memberNumCount); err != nil {
|
||||
if err = g.mongoDB.CreateSuperGroup(sCtx, groupID, initMemberIDList); err != nil {
|
||||
_ = sess.AbortTransaction(ctx)
|
||||
return err
|
||||
}
|
||||
@@ -158,15 +168,3 @@ func (g *GroupDataBase) CreateSuperGroup(ctx context.Context, groupID string, in
|
||||
func (g *GroupDataBase) GetSuperGroupByID(ctx context.Context, groupID string) (superGroup *unrelation.SuperGroup, err error) {
|
||||
return g.mongoDB.GetSuperGroup(ctx, groupID)
|
||||
}
|
||||
|
||||
func (g *GroupDataBase) CreateGroupAndMember(ctx context.Context, groups []*relation.Group, groupMember []*relation.GroupMember) error {
|
||||
return g.db.Transaction(func(tx *gorm.DB) error {
|
||||
if err := g.groupDB.Create(ctx, groups, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := g.groupMemberDB.Create(ctx, groupMember, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,24 +1,69 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"Open_IM/pkg/common/db/mysql"
|
||||
"Open_IM/pkg/common/db/relation"
|
||||
"context"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type UserModel struct {
|
||||
db *relation.User
|
||||
type UserInterface interface {
|
||||
Find(ctx context.Context, userIDs []string) (users []*relation.User, err error)
|
||||
Create(ctx context.Context, users []*relation.User) error
|
||||
Take(ctx context.Context, userID string) (user *relation.User, err error)
|
||||
Update(ctx context.Context, users []*relation.User) (err error)
|
||||
}
|
||||
|
||||
func NewGroupUser(ctx context.Context) *UserModel {
|
||||
var userModel UserModel
|
||||
userModel.db = relation.NewUserDB()
|
||||
return &userModel
|
||||
type UserController struct {
|
||||
database UserDatabaseInterface
|
||||
}
|
||||
|
||||
func (u *UserModel) Find(ctx context.Context, userIDs []string) (users []*relation.User, err error) {
|
||||
return u.db.Find(ctx, userIDs)
|
||||
func (u *UserController) Find(ctx context.Context, userIDs []string) (users []*relation.User, err error) {
|
||||
return u.database.Find(ctx, userIDs)
|
||||
}
|
||||
func (u *UserController) Create(ctx context.Context, users []*relation.User) error {
|
||||
return u.database.Create(ctx, users)
|
||||
}
|
||||
func (u *UserController) Take(ctx context.Context, userID string) (user *relation.User, err error) {
|
||||
return u.database.Take(ctx, userID)
|
||||
}
|
||||
func (u *UserController) Update(ctx context.Context, users []*relation.User) (err error) {
|
||||
return u.database.Update(ctx, users)
|
||||
}
|
||||
|
||||
func (u *UserModel) Create(ctx context.Context, users []*relation.User) error {
|
||||
return u.db.Create(ctx, users)
|
||||
func NewUserController(db *gorm.DB) UserInterface {
|
||||
controller := &UserController{database: newUserDatabase(db)}
|
||||
return controller
|
||||
}
|
||||
|
||||
type UserDatabaseInterface interface {
|
||||
Find(ctx context.Context, userIDs []string) (users []*relation.User, err error)
|
||||
Create(ctx context.Context, users []*relation.User) error
|
||||
Take(ctx context.Context, userID string) (user *relation.User, err error)
|
||||
Update(ctx context.Context, users []*relation.User) (err error)
|
||||
}
|
||||
|
||||
type UserDatabase struct {
|
||||
sqlDB *relation.User
|
||||
}
|
||||
|
||||
func newUserDatabase(db *gorm.DB) UserDatabaseInterface {
|
||||
sqlDB := relation.NewUserDB(db)
|
||||
database := &UserDatabase{
|
||||
sqlDB: sqlDB,
|
||||
}
|
||||
return database
|
||||
}
|
||||
|
||||
func (u *UserDatabase) Find(ctx context.Context, userIDs []string) (users []*relation.User, err error) {
|
||||
return u.sqlDB.Find(ctx, userIDs)
|
||||
}
|
||||
|
||||
func (u *UserDatabase) Create(ctx context.Context, users []*relation.User) error {
|
||||
return u.sqlDB.Create(ctx, users)
|
||||
}
|
||||
func (u *UserDatabase) Take(ctx context.Context, userID string) (user *relation.User, err error) {
|
||||
return u.sqlDB.Take(ctx, userID)
|
||||
}
|
||||
func (u *UserDatabase) Update(ctx context.Context, users []*relation.User) (err error) {
|
||||
return u.sqlDB.Update(ctx, users)
|
||||
}
|
||||
|
||||
@@ -25,9 +25,9 @@ type User struct {
|
||||
DB *gorm.DB `gorm:"-" json:"-"`
|
||||
}
|
||||
|
||||
func NewUserDB() *User {
|
||||
func NewUserDB(db *gorm.DB) *User {
|
||||
var user User
|
||||
user.DB = initMysqlDB(&user)
|
||||
user.DB = db
|
||||
return &user
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ func NewSuperGroupMgoDB(mgoClient *mongo.Client) *SuperGroupMgoDB {
|
||||
return &SuperGroupMgoDB{MgoDB: mgoDB, MgoClient: mgoClient, superGroupCollection: mgoDB.Collection(cSuperGroup), userToSuperGroupCollection: mgoDB.Collection(cUserToSuperGroup)}
|
||||
}
|
||||
|
||||
func (db *SuperGroupMgoDB) CreateSuperGroup(sCtx mongo.SessionContext, groupID string, initMemberIDList []string, memberNumCount int) error {
|
||||
func (db *SuperGroupMgoDB) CreateSuperGroup(sCtx mongo.SessionContext, groupID string, initMemberIDList []string) error {
|
||||
superGroup := SuperGroup{
|
||||
GroupID: groupID,
|
||||
MemberIDList: initMemberIDList,
|
||||
|
||||
+20
-85
@@ -4,66 +4,48 @@ import "Open-IM-Server/pkg/proto/conversation/conversation.proto";
|
||||
option go_package = "Open_IM/pkg/proto/user;user";
|
||||
package user;
|
||||
|
||||
message CommonResp{
|
||||
int32 errCode = 1;
|
||||
string errMsg = 2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
message GetAllUserIDReq{
|
||||
string opUserID = 1;
|
||||
string operationID = 2;
|
||||
server_api_params.RequestPagination pagination = 1;
|
||||
}
|
||||
message GetAllUserIDResp{
|
||||
CommonResp CommonResp = 1;
|
||||
int32 total = 1;
|
||||
repeated string UserIDList = 2;
|
||||
}
|
||||
|
||||
|
||||
message AccountCheckReq{
|
||||
repeated string CheckUserIDList = 1;
|
||||
string OpUserID = 2;
|
||||
string OperationID = 3;
|
||||
|
||||
repeated string checkUserIDs = 1;
|
||||
}
|
||||
message AccountCheckResp{
|
||||
CommonResp commonResp = 1;
|
||||
message SingleUserStatus {
|
||||
string userID = 1;
|
||||
string accountStatus = 2;
|
||||
}
|
||||
repeated SingleUserStatus ResultList = 2;
|
||||
repeated SingleUserStatus results = 1;
|
||||
}
|
||||
|
||||
|
||||
message GetUserInfoReq{
|
||||
repeated string userIDList = 1;
|
||||
string OpUserID = 2;
|
||||
string OperationID = 3;
|
||||
message GetUsersInfoReq{
|
||||
repeated string userIDs = 1;
|
||||
}
|
||||
message GetUserInfoResp{
|
||||
CommonResp commonResp = 1;
|
||||
repeated server_api_params.UserInfo UserInfoList = 3;
|
||||
message GetUsersInfoResp{
|
||||
repeated server_api_params.UserInfo usersInfo = 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
message UpdateUserInfoReq{
|
||||
server_api_params.UserInfo UserInfo = 1;
|
||||
string OpUserID = 2;
|
||||
string operationID = 3;
|
||||
server_api_params.UserInfo userInfo = 1;
|
||||
}
|
||||
message UpdateUserInfoResp{
|
||||
CommonResp commonResp = 1;
|
||||
}
|
||||
|
||||
message SetGlobalRecvMessageOptReq{
|
||||
string userID = 1;
|
||||
string operationID = 2;
|
||||
int32 globalRecvMsgOpt = 3;
|
||||
}
|
||||
message SetGlobalRecvMessageOptResp{
|
||||
CommonResp commonResp = 1;
|
||||
}
|
||||
|
||||
message SetConversationReq{
|
||||
@@ -73,7 +55,7 @@ message SetConversationReq{
|
||||
}
|
||||
|
||||
message SetConversationResp{
|
||||
CommonResp commonResp = 1;
|
||||
|
||||
}
|
||||
|
||||
message SetRecvMsgOptReq {
|
||||
@@ -85,7 +67,7 @@ message SetRecvMsgOptReq {
|
||||
}
|
||||
|
||||
message SetRecvMsgOptResp {
|
||||
CommonResp commonResp = 1;
|
||||
|
||||
}
|
||||
|
||||
message GetConversationReq{
|
||||
@@ -95,7 +77,6 @@ message GetConversationReq{
|
||||
}
|
||||
|
||||
message GetConversationResp{
|
||||
CommonResp commonResp = 1;
|
||||
conversation.Conversation Conversation = 2;
|
||||
}
|
||||
|
||||
@@ -106,7 +87,6 @@ message GetConversationsReq{
|
||||
}
|
||||
|
||||
message GetConversationsResp{
|
||||
CommonResp commonResp = 1;
|
||||
repeated conversation.Conversation Conversations = 2;
|
||||
}
|
||||
|
||||
@@ -116,7 +96,6 @@ message GetAllConversationsReq{
|
||||
}
|
||||
|
||||
message GetAllConversationsResp{
|
||||
CommonResp commonResp = 1;
|
||||
repeated conversation.Conversation Conversations = 2;
|
||||
}
|
||||
|
||||
@@ -128,30 +107,21 @@ message BatchSetConversationsReq{
|
||||
}
|
||||
|
||||
message BatchSetConversationsResp{
|
||||
CommonResp commonResp = 1;
|
||||
repeated string Success = 2;
|
||||
repeated string Failed = 3;
|
||||
}
|
||||
|
||||
|
||||
message GetUsersReq {
|
||||
string operationID = 1;
|
||||
server_api_params.RequestPagination pagination = 2;
|
||||
string userName = 3;
|
||||
string userID = 4;
|
||||
string content = 5;
|
||||
}
|
||||
|
||||
message CmsUser {
|
||||
server_api_params.UserInfo user = 1;
|
||||
bool isBlock = 2;
|
||||
}
|
||||
|
||||
message GetUsersResp{
|
||||
CommonResp commonResp = 1;
|
||||
repeated CmsUser userList = 2;
|
||||
server_api_params.ResponsePagination Pagination = 3;
|
||||
int32 totalNums = 4;
|
||||
int32 total = 1;
|
||||
repeated server_api_params.UserInfo users = 2;
|
||||
}
|
||||
|
||||
message AddUserReq{
|
||||
@@ -160,29 +130,6 @@ message AddUserReq{
|
||||
}
|
||||
|
||||
message AddUserResp{
|
||||
CommonResp CommonResp = 1;
|
||||
}
|
||||
|
||||
|
||||
message BlockUserReq{
|
||||
string userID = 1;
|
||||
string endDisableTime = 2;
|
||||
string operationID = 3;
|
||||
string opUserID = 4;
|
||||
}
|
||||
|
||||
message BlockUserResp{
|
||||
CommonResp CommonResp = 1;
|
||||
}
|
||||
|
||||
message UnBlockUserReq{
|
||||
string userID = 1;
|
||||
string operationID = 2;
|
||||
string opUserID = 3;
|
||||
}
|
||||
|
||||
message UnBlockUserResp{
|
||||
CommonResp CommonResp = 1;
|
||||
}
|
||||
|
||||
message GetBlockUsersReq{
|
||||
@@ -199,7 +146,6 @@ message BlockUser {
|
||||
}
|
||||
|
||||
message GetBlockUsersResp{
|
||||
CommonResp CommonResp = 1;
|
||||
repeated BlockUser BlockUsers = 2;
|
||||
server_api_params.ResponsePagination Pagination = 3;
|
||||
int32 UserNums = 4;
|
||||
@@ -207,26 +153,15 @@ message GetBlockUsersResp{
|
||||
|
||||
|
||||
service user {
|
||||
rpc GetUserInfo(GetUserInfoReq) returns(GetUserInfoResp);
|
||||
//获取指定的用户信息 全字段
|
||||
rpc GetUsersInfo(GetUsersInfoReq) returns(GetUsersInfoResp);
|
||||
//更新用户信息
|
||||
rpc UpdateUserInfo(UpdateUserInfoReq) returns(UpdateUserInfoResp);
|
||||
//设置用户消息接收选项
|
||||
rpc SetGlobalRecvMessageOpt(SetGlobalRecvMessageOptReq) returns(SetGlobalRecvMessageOptResp);
|
||||
rpc GetAllUserID(GetAllUserIDReq)returns(GetAllUserIDResp);
|
||||
|
||||
//检查userID是否存在
|
||||
rpc AccountCheck(AccountCheckReq)returns(AccountCheckResp);
|
||||
rpc GetConversation(GetConversationReq)returns(GetConversationResp);
|
||||
rpc GetAllConversations(GetAllConversationsReq)returns(GetAllConversationsResp);
|
||||
rpc GetConversations(GetConversationsReq)returns(GetConversationsResp);
|
||||
rpc BatchSetConversations(BatchSetConversationsReq)returns(BatchSetConversationsResp);
|
||||
rpc SetConversation(SetConversationReq)returns(SetConversationResp);
|
||||
rpc SetRecvMsgOpt(SetRecvMsgOptReq)returns(SetRecvMsgOptResp);
|
||||
|
||||
|
||||
//翻页(或指定userID,昵称)拉取用户信息 全字段
|
||||
rpc GetUsers(GetUsersReq) returns (GetUsersResp);
|
||||
|
||||
rpc AddUser(AddUserReq) returns (AddUserResp);
|
||||
|
||||
rpc BlockUser(BlockUserReq) returns (BlockUserResp);
|
||||
rpc UnBlockUser(UnBlockUserReq) returns (UnBlockUserResp);
|
||||
rpc GetBlockUsers(GetBlockUsersReq) returns (GetBlockUsersResp);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user