This commit is contained in:
wangchuxiao 2022-05-27 16:13:44 +08:00
parent 16a56457ed
commit bbe8c46df9
3 changed files with 70 additions and 61 deletions

View File

@ -91,12 +91,6 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR
log.NewError(req.OperationID, "CheckAccess false ", req.OpUserID, req.OwnerUserID) log.NewError(req.OperationID, "CheckAccess false ", req.OpUserID, req.OwnerUserID)
return &pbGroup.CreateGroupResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil return &pbGroup.CreateGroupResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil
} }
canCreate, err := callbackBeforeCreateGroup(req)
if err != nil || !canCreate {
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "callbackBeforeCreateGroup failed")
}
}
groupId := req.GroupInfo.GroupID groupId := req.GroupInfo.GroupID
if groupId == "" { if groupId == "" {
@ -107,72 +101,82 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR
utils.CopyStructFields(&groupInfo, req.GroupInfo) utils.CopyStructFields(&groupInfo, req.GroupInfo)
groupInfo.CreatorUserID = req.OpUserID groupInfo.CreatorUserID = req.OpUserID
groupInfo.GroupID = groupId groupInfo.GroupID = groupId
err = imdb.InsertIntoGroup(groupInfo) err := imdb.InsertIntoGroup(groupInfo)
if err != nil { if err != nil {
log.NewError(req.OperationID, "InsertIntoGroup failed, ", err.Error(), groupInfo) log.NewError(req.OperationID, "InsertIntoGroup failed, ", err.Error(), groupInfo)
return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, http.WrapError(constant.ErrDB) return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, http.WrapError(constant.ErrDB)
} }
groupMember := db.GroupMember{}
us := &db.User{}
if req.OwnerUserID == "" {
goto initMemberList
}
us, err = imdb.GetUserByUserID(req.OwnerUserID)
if err != nil {
log.NewError(req.OperationID, "GetUserByUserID failed ", err.Error(), req.OwnerUserID)
return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, http.WrapError(constant.ErrDB)
}
//to group member
groupMember = db.GroupMember{GroupID: groupId, RoleLevel: constant.GroupOwner, OperatorUserID: req.OpUserID}
utils.CopyStructFields(&groupMember, us)
err = imdb.InsertIntoGroupMember(groupMember)
if err != nil {
log.NewError(req.OperationID, "InsertIntoGroupMember failed ", err.Error(), groupMember)
return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, http.WrapError(constant.ErrDB)
}
initMemberList:
var okUserIDList []string var okUserIDList []string
//to group member
for _, user := range req.InitMemberList { if req.GroupInfo.GroupType == constant.NormalGroup {
us, err := imdb.GetUserByUserID(user.UserID) groupMember := db.GroupMember{}
us := &db.User{}
if req.OwnerUserID == "" {
goto initMemberList
}
us, err = imdb.GetUserByUserID(req.OwnerUserID)
if err != nil { if err != nil {
log.NewError(req.OperationID, "GetUserByUserID failed ", err.Error(), user.UserID) log.NewError(req.OperationID, "GetUserByUserID failed ", err.Error(), req.OwnerUserID)
continue return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, http.WrapError(constant.ErrDB)
} }
if user.RoleLevel == constant.GroupOwner {
log.NewError(req.OperationID, "only one owner, failed ", user) //to group member
continue groupMember = db.GroupMember{GroupID: groupId, RoleLevel: constant.GroupOwner, OperatorUserID: req.OpUserID}
}
groupMember.RoleLevel = user.RoleLevel
utils.CopyStructFields(&groupMember, us) utils.CopyStructFields(&groupMember, us)
err = imdb.InsertIntoGroupMember(groupMember) err = imdb.InsertIntoGroupMember(groupMember)
if err != nil { if err != nil {
log.NewError(req.OperationID, "InsertIntoGroupMember failed ", err.Error(), groupMember) log.NewError(req.OperationID, "InsertIntoGroupMember failed ", err.Error(), groupMember)
continue return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, http.WrapError(constant.ErrDB)
} }
okUserIDList = append(okUserIDList, user.UserID)
} initMemberList:
resp := &pbGroup.CreateGroupResp{GroupInfo: &open_im_sdk.GroupInfo{}} var okUserIDList []string
group, err := imdb.GetGroupInfoByGroupID(groupId) //to group member
if err != nil { for _, user := range req.InitMemberList {
log.NewError(req.OperationID, "GetGroupInfoByGroupID failed ", err.Error(), groupId) us, err := imdb.GetUserByUserID(user.UserID)
resp.ErrCode = constant.ErrDB.ErrCode if err != nil {
resp.ErrMsg = err.Error() log.NewError(req.OperationID, "GetUserByUserID failed ", err.Error(), user.UserID)
return resp, nil continue
} }
utils.CopyStructFields(resp.GroupInfo, group) if user.RoleLevel == constant.GroupOwner {
resp.GroupInfo.MemberCount, err = imdb.GetGroupMemberNumByGroupID(groupId) log.NewError(req.OperationID, "only one owner, failed ", user)
if err != nil { continue
log.NewError(req.OperationID, "GetGroupMemberNumByGroupID failed ", err.Error(), groupId) }
resp.ErrCode = constant.ErrDB.ErrCode groupMember.RoleLevel = user.RoleLevel
resp.ErrMsg = err.Error() utils.CopyStructFields(&groupMember, us)
return resp, nil err = imdb.InsertIntoGroupMember(groupMember)
} if err != nil {
if req.OwnerUserID != "" { log.NewError(req.OperationID, "InsertIntoGroupMember failed ", err.Error(), groupMember)
resp.GroupInfo.OwnerUserID = req.OwnerUserID continue
okUserIDList = append(okUserIDList, req.OwnerUserID) }
okUserIDList = append(okUserIDList, user.UserID)
}
resp := &pbGroup.CreateGroupResp{GroupInfo: &open_im_sdk.GroupInfo{}}
group, err := imdb.GetGroupInfoByGroupID(groupId)
if err != nil {
log.NewError(req.OperationID, "GetGroupInfoByGroupID failed ", err.Error(), groupId)
resp.ErrCode = constant.ErrDB.ErrCode
resp.ErrMsg = err.Error()
return resp, nil
}
utils.CopyStructFields(resp.GroupInfo, group)
resp.GroupInfo.MemberCount, err = imdb.GetGroupMemberNumByGroupID(groupId)
if err != nil {
log.NewError(req.OperationID, "GetGroupMemberNumByGroupID failed ", err.Error(), groupId)
resp.ErrCode = constant.ErrDB.ErrCode
resp.ErrMsg = err.Error()
return resp, nil
}
if req.OwnerUserID != "" {
resp.GroupInfo.OwnerUserID = req.OwnerUserID
okUserIDList = append(okUserIDList, req.OwnerUserID)
}
} else if req.GroupInfo.GroupType == constant.SuperGroup {
for _, v := range req.InitMemberList {
okUserIDList = append(okUserIDList, v.UserID)
}
//memberCount := len(okUserIDList)
} }
if len(okUserIDList) != 0 { if len(okUserIDList) != 0 {

View File

@ -154,7 +154,8 @@ const (
//GroupType //GroupType
NormalGroup = 0 NormalGroup = 0
DepartmentGroup = 1 SuperGroup = 1
DepartmentGroup = 2
GroupBaned = 3 GroupBaned = 3
GroupBanPrivateChat = 4 GroupBanPrivateChat = 4

View File

@ -878,6 +878,10 @@ func (d *DataBases) GetUserFriendWorkMoments(showNumber, pageNumber int32, userI
return workMomentList, err return workMomentList, err
} }
func (d *DataBases) CreateSuperGroup() {
}
func generateTagID(tagName, userID string) string { func generateTagID(tagName, userID string) string {
return utils.Md5(tagName + userID + strconv.Itoa(rand.Int()) + time.Now().String()) return utils.Md5(tagName + userID + strconv.Itoa(rand.Int()) + time.Now().String())
} }