Merge branch 'errcode' of github.com:OpenIMSDK/Open-IM-Server into errcode

This commit is contained in:
wangchuxiao
2023-01-29 15:01:27 +08:00
10 changed files with 184 additions and 295 deletions
+1 -1
View File
@@ -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"
-1
View File
@@ -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"
+1 -1
View File
@@ -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"
)
+22 -24
View File
@@ -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
})
}
+56 -11
View File
@@ -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)
}
+2 -2
View File
@@ -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
}
+1 -1
View File
@@ -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
View File
@@ -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);
}