diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 9ef0b1667..016fbd637 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -134,17 +134,17 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR userIDs = append(userIDs, req.OwnerUserID) } if groupOwnerNum != 1 { - return nil, utils.Wrap(constant.ErrArgs, "") + return nil, constant.ErrArgs.Wrap("groupOwnerNum != 1") } if utils.IsRepeatStringSlice(userIDs) { - return nil, utils.Wrap(constant.ErrArgs, "") + return nil, constant.ErrArgs.Wrap("group member is repeated") } users, err := rocksCache.GetUserInfoFromCacheBatch(ctx, userIDs) if err != nil { return nil, err } if len(users) != len(userIDs) { - return nil, utils.Wrap(constant.ErrArgs, "") + return nil, constant.ErrDatabase.Wrap("len(users from cache) != len(userIDs)") } userMap := make(map[string]*imdb.User) for i, user := range users { @@ -158,14 +158,14 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR } groupId := req.GroupInfo.GroupID if groupId == "" { - groupId = utils.Md5(req.OperationID + strconv.FormatInt(time.Now().UnixNano(), 10)) + groupId = utils.Md5(tools.OperationID(ctx) + strconv.FormatInt(time.Now().UnixNano(), 10)) bi := big.NewInt(0) bi.SetString(groupId[0:8], 16) groupId = bi.String() } groupInfo := imdb.Group{} utils.CopyStructFields(&groupInfo, req.GroupInfo) - groupInfo.CreatorUserID = req.OpUserID + groupInfo.CreatorUserID = tools.OpUserID(ctx) groupInfo.GroupID = groupId groupInfo.CreateTime = time.Now() if groupInfo.NotificationUpdateTime.Unix() < 0 { @@ -174,10 +174,10 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR if req.GroupInfo.GroupType != constant.SuperGroup { var groupMembers []*imdb.GroupMember joinGroup := func(userID string, roleLevel int32) error { - groupMember := &imdb.GroupMember{GroupID: groupId, RoleLevel: roleLevel, OperatorUserID: req.OpUserID, JoinSource: constant.JoinByInvitation, InviterUserID: req.OpUserID} + groupMember := &imdb.GroupMember{GroupID: groupId, RoleLevel: roleLevel, OperatorUserID: tools.OpUserID(ctx), JoinSource: constant.JoinByInvitation, InviterUserID: tools.OpUserID(ctx)} user := userMap[userID] utils.CopyStructFields(&groupMember, user) - if err := CallbackBeforeMemberJoinGroup(ctx, req.OperationID, groupMember, groupInfo.Ex); err != nil { + if err := CallbackBeforeMemberJoinGroup(ctx, tools.OperationID(ctx), groupMember, groupInfo.Ex); err != nil { return err } groupMembers = append(groupMembers, groupMember) @@ -207,7 +207,7 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR utils.CopyStructFields(resp.GroupInfo, groupInfo) resp.GroupInfo.MemberCount = uint32(len(userIDs)) if req.GroupInfo.GroupType != constant.SuperGroup { - chat.GroupCreatedNotification(req.OperationID, req.OpUserID, groupId, userIDs) + chat.GroupCreatedNotification(tools.OperationID(ctx), tools.OpUserID(ctx), groupId, userIDs) } else { for _, userID := range userIDs { if err := rocksCache.DelJoinedSuperGroupIDListFromCache(ctx, userID); err != nil { @@ -216,7 +216,7 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR } go func() { for _, v := range userIDs { - chat.SuperGroupNotification(req.OperationID, v, v) + chat.SuperGroupNotification(tools.OperationID(ctx), v, v) } }() } @@ -237,7 +237,7 @@ func (s *groupServer) GetJoinedGroupList(ctx context.Context, req *pbGroup.GetJo var groupNode open_im_sdk.GroupInfo num, err := rocksCache.GetGroupMemberNumFromCache(ctx, groupID) if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), groupID) + log.NewError(tools.OperationID(ctx), utils.GetSelfFuncName(), err.Error(), groupID) continue } owner, err := (*imdb.GroupMember)(nil).TakeOwnerInfo(ctx, groupID) @@ -285,14 +285,14 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite return nil, utils.Wrap(constant.ErrDismissedAlready, "") } if groupInfo.NeedVerification == constant.AllNeedVerification && - !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) && !token_verify.IsManagerUserID(req.OpUserID) { + !imdb.IsGroupOwnerAdmin(req.GroupID, tools.OpUserID(ctx)) && !token_verify.IsManagerUserID(tools.OpUserID(ctx)) { joinReq := pbGroup.JoinGroupReq{} for _, v := range req.InvitedUserIDList { var groupRequest imdb.GroupRequest groupRequest.UserID = v groupRequest.GroupID = req.GroupID groupRequest.JoinSource = constant.JoinByInvitation - groupRequest.InviterUserID = req.OpUserID + groupRequest.InviterUserID = tools.OpUserID(ctx) err = imdb.InsertIntoGroupRequest(groupRequest) if err != nil { var resultNode pbGroup.Id2Result @@ -306,10 +306,8 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite resultNode.UserID = v resp.Id2ResultList = append(resp.Id2ResultList, &resultNode) joinReq.GroupID = req.GroupID - joinReq.OperationID = req.OperationID - joinReq.OpUserID = v resp.Id2ResultList = append(resp.Id2ResultList, &resultNode) - chat.JoinGroupApplicationNotification(&joinReq) + chat.JoinGroupApplicationNotification(ctx, &joinReq) } } return resp, nil @@ -343,10 +341,10 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite utils.CopyStructFields(&toInsertInfo, toUserInfo) toInsertInfo.GroupID = req.GroupID toInsertInfo.RoleLevel = constant.GroupOrdinaryUsers - toInsertInfo.OperatorUserID = req.OpUserID - toInsertInfo.InviterUserID = req.OpUserID + toInsertInfo.OperatorUserID = tools.OpUserID(ctx) + toInsertInfo.InviterUserID = tools.OpUserID(ctx) toInsertInfo.JoinSource = constant.JoinByInvitation - if err := CallbackBeforeMemberJoinGroup(ctx, req.OperationID, &toInsertInfo, groupInfo.Ex); err != nil { + if err := CallbackBeforeMemberJoinGroup(ctx, tools.OperationID(ctx), &toInsertInfo, groupInfo.Ex); err != nil { return nil, err } err = imdb.InsertIntoGroupMember(toInsertInfo) @@ -371,7 +369,7 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite } if groupInfo.GroupType != constant.SuperGroup { - chat.MemberInvitedNotification(req.OperationID, req.GroupID, req.OpUserID, req.Reason, okUserIDList) + chat.MemberInvitedNotification(tools.OperationID(ctx), req.GroupID, tools.OpUserID(ctx), req.Reason, okUserIDList) } else { for _, userID := range req.InvitedUserIDList { if err := rocksCache.DelJoinedSuperGroupIDListFromCache(ctx, userID); err != nil { @@ -379,7 +377,7 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite } } for _, v := range req.InvitedUserIDList { - chat.SuperGroupNotification(req.OperationID, v, v) + chat.SuperGroupNotification(tools.OperationID(ctx), v, v) } } return resp, nil @@ -458,10 +456,9 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou var okUserIDList []string if groupInfo.GroupType != constant.SuperGroup { opFlag := 0 - if !token_verify.IsManagerUserID(req.OpUserID) { - opInfo, err := rocksCache.GetGroupMemberInfoFromCache(ctx, req.GroupID, req.OpUserID) + if !token_verify.IsManagerUserID(tools.OpUserID(ctx)) { + opInfo, err := rocksCache.GetGroupMemberInfoFromCache(ctx, req.GroupID, tools.OpUserID(ctx)) if err != nil { - constant.SetErrorForResp(err, resp.CommonResp) return nil, err } if opInfo.RoleLevel == constant.GroupOrdinaryUsers { @@ -507,7 +504,7 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou err = imdb.DeleteGroupMemberByGroupIDAndUserID(req.GroupID, v) trace_log.SetCtxInfo(ctx, "RemoveGroupMember", err, "groupID", req.GroupID, "userID", v) if err != nil { - log.NewError(req.OperationID, "RemoveGroupMember failed ", err.Error(), req.GroupID, v) + log.NewError(tools.OperationID(ctx), "RemoveGroupMember failed ", err.Error(), req.GroupID, v) resp.Id2ResultList = append(resp.Id2ResultList, &pbGroup.Id2Result{UserID: v, Result: -1}) } else { resp.Id2ResultList = append(resp.Id2ResultList, &pbGroup.Id2Result{UserID: v, Result: 0}) @@ -517,7 +514,7 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou var reqPb pbUser.SetConversationReq var c pbConversation.Conversation for _, v := range okUserIDList { - reqPb.OperationID = req.OperationID + reqPb.OperationID = tools.OperationID(ctx) c.OwnerUserID = v c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType) c.ConversationType = constant.GroupChatType @@ -554,7 +551,7 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou } go func() { for _, v := range req.KickedUserIDList { - chat.SuperGroupNotification(req.OperationID, v, v) + chat.SuperGroupNotification(tools.OperationID(ctx), v, v) } }() @@ -611,7 +608,7 @@ func (s *groupServer) GetGroupApplicationList(ctx context.Context, req *pbGroup. trace_log.SetCtxInfo(ctx, "GetRecvGroupApplicationList", nil, " FromUserID: ", req.FromUserID, "GroupApplicationList: ", reply) for _, v := range reply { node := open_im_sdk.GroupRequest{UserInfo: &open_im_sdk.PublicUserInfo{}, GroupInfo: &open_im_sdk.GroupInfo{}} - err := FillGroupInfoByGroupID(req.OperationID, v.GroupID, node.GroupInfo) + err := FillGroupInfoByGroupID(tools.OperationID(ctx), v.GroupID, node.GroupInfo) if err != nil { if !errors.Is(errors.Unwrap(err), constant.ErrDismissedAlready) { errResult = err @@ -619,7 +616,7 @@ func (s *groupServer) GetGroupApplicationList(ctx context.Context, req *pbGroup. continue } trace_log.SetCtxInfo(ctx, "FillGroupInfoByGroupID ", nil, " groupID: ", v.GroupID, " groupInfo: ", node.GroupInfo) - err = FillPublicUserInfoByUserID(req.OperationID, v.UserID, node.UserInfo) + err = FillPublicUserInfoByUserID(tools.OperationID(ctx), v.UserID, node.UserInfo) if err != nil { errResult = err continue @@ -640,7 +637,6 @@ func (s *groupServer) GetGroupsInfo(ctx context.Context, req *pbGroup.GetGroupsI for _, groupID := range req.GroupIDList { groupInfoFromRedis, err := rocksCache.GetGroupInfoFromCache(ctx, groupID) if err != nil { - constant.SetErrorForResp(err, resp.CommonResp) continue } var groupInfo open_im_sdk.GroupInfo @@ -665,13 +661,13 @@ func CheckPermission(ctx context.Context, groupID string, userID string) (err er func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup.GroupApplicationResponseReq) (*pbGroup.GroupApplicationResponseResp, error) { resp := &pbGroup.GroupApplicationResponseResp{} - if err := CheckPermission(ctx, req.GroupID, req.OpUserID); err != nil { + if err := CheckPermission(ctx, req.GroupID, tools.OpUserID(ctx)); err != nil { return nil, err } groupRequest := imdb.GroupRequest{} utils.CopyStructFields(&groupRequest, req) groupRequest.UserID = req.FromUserID - groupRequest.HandleUserID = req.OpUserID + groupRequest.HandleUserID = tools.OpUserID(ctx) groupRequest.HandledTime = time.Now() if err := (&imdb.GroupRequest{}).Update(ctx, []*imdb.GroupRequest{&groupRequest}); err != nil { return nil, err @@ -693,13 +689,13 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup member.GroupID = req.GroupID member.UserID = req.FromUserID member.RoleLevel = constant.GroupOrdinaryUsers - member.OperatorUserID = req.OpUserID + member.OperatorUserID = tools.OpUserID(ctx) member.FaceURL = user.FaceURL member.Nickname = user.Nickname member.JoinSource = request.JoinSource member.InviterUserID = request.InviterUserID member.MuteEndTime = time.Unix(int64(time.Now().Second()), 0) - err = CallbackBeforeMemberJoinGroup(ctx, req.OperationID, &member, groupInfo.Ex) + err = CallbackBeforeMemberJoinGroup(ctx, tools.OperationID(ctx), &member, groupInfo.Ex) if err != nil { return nil, err } @@ -708,12 +704,12 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup if err != nil { return nil, err } - etcdCacheConn, err := fault_tolerant.GetDefaultConn(config.Config.RpcRegisterName.OpenImCacheName, req.OperationID) + etcdCacheConn, err := fault_tolerant.GetDefaultConn(config.Config.RpcRegisterName.OpenImCacheName, tools.OperationID(ctx)) if err != nil { return nil, err } cacheClient := pbCache.NewCacheClient(etcdCacheConn) - cacheResp, err := cacheClient.DelGroupMemberIDListFromCache(context.Background(), &pbCache.DelGroupMemberIDListFromCacheReq{OperationID: req.OperationID, GroupID: req.GroupID}) + cacheResp, err := cacheClient.DelGroupMemberIDListFromCache(context.Background(), &pbCache.DelGroupMemberIDListFromCacheReq{OperationID: tools.OperationID(ctx), GroupID: req.GroupID}) if err != nil { return nil, err } @@ -740,7 +736,7 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) (*pbGroup.JoinGroupResp, error) { resp := &pbGroup.JoinGroupResp{} - if _, err := imdb.GetUserByUserID(req.OpUserID); err != nil { + if _, err := imdb.GetUserByUserID(tools.OpUserID(ctx)); err != nil { return nil, err } groupInfo, err := rocksCache.GetGroupInfoFromCache(ctx, req.GroupID) @@ -748,23 +744,22 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) return nil, err } if groupInfo.Status == constant.GroupStatusDismissed { - constant.SetErrorForResp(constant.ErrDismissedAlready, resp.CommonResp) return nil, utils.Wrap(constant.ErrDismissedAlready, "") } if groupInfo.NeedVerification == constant.Directly { if groupInfo.GroupType != constant.SuperGroup { - us, err := imdb.GetUserByUserID(req.OpUserID) + us, err := imdb.GetUserByUserID(tools.OpUserID(ctx)) if err != nil { return nil, err } //to group member - groupMember := imdb.GroupMember{GroupID: req.GroupID, RoleLevel: constant.GroupOrdinaryUsers, OperatorUserID: req.OpUserID} + groupMember := imdb.GroupMember{GroupID: req.GroupID, RoleLevel: constant.GroupOrdinaryUsers, OperatorUserID: tools.OpUserID(ctx)} utils.CopyStructFields(&groupMember, us) - if err := CallbackBeforeMemberJoinGroup(ctx, req.OperationID, &groupMember, groupInfo.Ex); err != nil { + if err := CallbackBeforeMemberJoinGroup(ctx, tools.OperationID(ctx), &groupMember, groupInfo.Ex); err != nil { return nil, err } - if err := s.DelGroupAndUserCache(ctx, req.GroupID, []string{req.OpUserID}); err != nil { + if err := s.DelGroupAndUserCache(ctx, req.GroupID, []string{tools.OpUserID(ctx)}); err != nil { return nil, err } err = imdb.InsertIntoGroupMember(groupMember) @@ -780,8 +775,8 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) } var reqPb pbUser.SetConversationReq var c pbConversation.Conversation - reqPb.OperationID = req.OperationID - c.OwnerUserID = req.OpUserID + reqPb.OperationID = tools.OperationID(ctx) + c.OwnerUserID = tools.OpUserID(ctx) c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, sessionType) c.ConversationType = int32(sessionType) c.GroupID = req.GroupID @@ -795,7 +790,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) client := pbUser.NewUserClient(etcdConn) respPb, err := client.SetConversation(context.Background(), &reqPb) trace_log.SetCtxInfo(ctx, "SetConversation", err, "req", reqPb, "resp", respPb) - chat.MemberEnterDirectlyNotification(req.GroupID, req.OpUserID, req.OperationID) + chat.MemberEnterDirectlyNotification(req.GroupID, tools.OpUserID(ctx), tools.OperationID(ctx)) return resp, nil } else { constant.SetErrorForResp(constant.ErrGroupTypeNotSupport, resp.CommonResp) @@ -803,7 +798,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) } } var groupRequest imdb.GroupRequest - groupRequest.UserID = req.OpUserID + groupRequest.UserID = tools.OpUserID(ctx) groupRequest.ReqMsg = req.ReqMessage groupRequest.GroupID = req.GroupID groupRequest.JoinSource = req.JoinSource @@ -811,7 +806,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) if err != nil { return nil, err } - chat.JoinGroupApplicationNotification(req) + chat.JoinGroupApplicationNotification(ctx, req) return resp, nil } @@ -823,50 +818,35 @@ func (s *groupServer) QuitGroup(ctx context.Context, req *pbGroup.QuitGroupReq) return nil, err } if groupInfo.GroupType != constant.SuperGroup { - _, err = rocksCache.GetGroupMemberInfoFromCache(ctx, req.GroupID, req.OpUserID) + _, err = rocksCache.GetGroupMemberInfoFromCache(ctx, req.GroupID, tools.OpUserID(ctx)) if err != nil { return nil, err } - if err := s.DelGroupAndUserCache(ctx, req.GroupID, []string{req.OpUserID}); err != nil { + if err := s.DelGroupAndUserCache(ctx, req.GroupID, []string{tools.OpUserID(ctx)}); err != nil { return nil, err } - err = imdb.DeleteGroupMemberByGroupIDAndUserID(req.GroupID, req.OpUserID) + err = imdb.DeleteGroupMemberByGroupIDAndUserID(req.GroupID, tools.OpUserID(ctx)) if err != nil { return nil, err } } else { - okUserIDList := []string{req.OpUserID} + okUserIDList := []string{tools.OpUserID(ctx)} if err := db.DB.RemoverUserFromSuperGroup(req.GroupID, okUserIDList); err != nil { return nil, err } } if groupInfo.GroupType != constant.SuperGroup { - _ = rocksCache.DelGroupMemberInfoFromCache(ctx, req.GroupID, req.OpUserID) + _ = rocksCache.DelGroupMemberInfoFromCache(ctx, req.GroupID, tools.OpUserID(ctx)) chat.MemberQuitNotification(req) } else { - _ = rocksCache.DelJoinedSuperGroupIDListFromCache(ctx, req.OpUserID) + _ = rocksCache.DelJoinedSuperGroupIDListFromCache(ctx, tools.OpUserID(ctx)) _ = rocksCache.DelGroupMemberListHashFromCache(ctx, req.GroupID) - chat.SuperGroupNotification(req.OperationID, req.OpUserID, req.OpUserID) + chat.SuperGroupNotification(tools.OperationID(ctx), tools.OpUserID(ctx), tools.OpUserID(ctx)) } return resp, nil } -func hasAccess(req *pbGroup.SetGroupInfoReq) bool { - if utils.IsContain(req.OpUserID, config.Config.Manager.AppManagerUid) { - return true - } - groupUserInfo, err := imdb.GetGroupMemberInfoByGroupIDAndUserID(req.GroupInfoForSet.GroupID, req.OpUserID) - if err != nil { - log.NewError(req.OperationID, "GetGroupMemberInfoByGroupIDAndUserID failed, ", err.Error(), req.GroupInfoForSet.GroupID, req.OpUserID) - return false - } - if groupUserInfo.RoleLevel == constant.GroupOwner || groupUserInfo.RoleLevel == constant.GroupAdmin { - return true - } - return false -} - func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInfoReq) (*pbGroup.SetGroupInfoResp, error) { resp := &pbGroup.SetGroupInfoResp{} @@ -931,7 +911,7 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInf var groupInfo imdb.Group utils.CopyStructFields(&groupInfo, req.GroupInfoForSet) if req.GroupInfoForSet.Notification != "" { - groupInfo.NotificationUserID = req.OpUserID + groupInfo.NotificationUserID = tools.OpUserID(ctx) groupInfo.NotificationUpdateTime = time.Now() } if err := rocksCache.DelGroupInfoFromCache(ctx, req.GroupInfoForSet.GroupID); err != nil { @@ -942,11 +922,11 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInf return nil, err } if changedType != 0 { - chat.GroupInfoSetNotification(req.OperationID, req.OpUserID, req.GroupInfoForSet.GroupID, groupName, notification, introduction, faceURL, req.GroupInfoForSet.NeedVerification) + chat.GroupInfoSetNotification(tools.OperationID(ctx), tools.OpUserID(ctx), req.GroupInfoForSet.GroupID, groupName, notification, introduction, faceURL, req.GroupInfoForSet.NeedVerification) } if req.GroupInfoForSet.Notification != "" { //get group member user id - getGroupMemberIDListFromCacheReq := &pbCache.GetGroupMemberIDListFromCacheReq{OperationID: req.OperationID, GroupID: req.GroupInfoForSet.GroupID} + getGroupMemberIDListFromCacheReq := &pbCache.GetGroupMemberIDListFromCacheReq{OperationID: tools.OperationID(ctx), GroupID: req.GroupInfoForSet.GroupID} etcdConn, err := getcdv3.GetConn(ctx, config.Config.RpcRegisterName.OpenImCacheName) if err != nil { return nil, err @@ -961,13 +941,13 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInf } var conversationReq pbConversation.ModifyConversationFieldReq conversation := pbConversation.Conversation{ - OwnerUserID: req.OpUserID, + OwnerUserID: tools.OpUserID(ctx), ConversationID: utils.GetConversationIDBySessionType(req.GroupInfoForSet.GroupID, constant.GroupChatType), ConversationType: constant.GroupChatType, GroupID: req.GroupInfoForSet.GroupID, } conversationReq.Conversation = &conversation - conversationReq.OperationID = req.OperationID + conversationReq.OperationID = tools.OperationID(ctx) conversationReq.FieldType = constant.FieldGroupAtType conversation.GroupAtType = constant.GroupNotification conversationReq.UserIDList = cacheResp.UserIDList @@ -1080,7 +1060,7 @@ func (s *groupServer) GetGroupMembersCMS(ctx context.Context, req *pbGroup.GetGr if err != nil { return nil, err } - log.NewInfo(req.OperationID, groupMembersCount) + log.NewInfo(tools.OperationID(ctx), groupMembersCount) resp.MemberNums = int32(groupMembersCount) for _, groupMember := range groupMembers { member := open_im_sdk.GroupMemberFullInfo{} @@ -1125,7 +1105,7 @@ func (s *groupServer) GetUserReqApplicationList(ctx context.Context, req *pbGrou func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGroupReq) (*pbGroup.DismissGroupResp, error) { resp := &pbGroup.DismissGroupResp{} - if !token_verify.IsManagerUserID(req.OpUserID) && !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) { + if !token_verify.IsManagerUserID(tools.OpUserID(ctx)) && !imdb.IsGroupOwnerAdmin(req.GroupID, tools.OpUserID(ctx)) { return nil, utils.Wrap(constant.ErrIdentity, "") } @@ -1153,7 +1133,7 @@ func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGrou var reqPb pbUser.SetConversationReq var c pbConversation.Conversation for _, v := range memberList { - reqPb.OperationID = req.OperationID + reqPb.OperationID = tools.OperationID(ctx) c.OwnerUserID = v.UserID c.ConversationID = utils.GetConversationIDBySessionType(req.GroupID, constant.GroupChatType) c.ConversationType = constant.GroupChatType @@ -1182,7 +1162,7 @@ func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGrou func (s *groupServer) MuteGroupMember(ctx context.Context, req *pbGroup.MuteGroupMemberReq) (*pbGroup.MuteGroupMemberResp, error) { resp := &pbGroup.MuteGroupMemberResp{} - opFlag, err := s.getGroupUserLevel(req.GroupID, req.OpUserID) + opFlag, err := s.getGroupUserLevel(req.GroupID, tools.OpUserID(ctx)) if err != nil { return nil, err } @@ -1210,14 +1190,14 @@ func (s *groupServer) MuteGroupMember(ctx context.Context, req *pbGroup.MuteGrou if err != nil { return nil, err } - chat.GroupMemberMutedNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID, req.MutedSeconds) + chat.GroupMemberMutedNotification(tools.OperationID(ctx), tools.OpUserID(ctx), req.GroupID, req.UserID, req.MutedSeconds) return resp, nil } func (s *groupServer) CancelMuteGroupMember(ctx context.Context, req *pbGroup.CancelMuteGroupMemberReq) (*pbGroup.CancelMuteGroupMemberResp, error) { resp := &pbGroup.CancelMuteGroupMemberResp{} - opFlag, err := s.getGroupUserLevel(req.GroupID, req.OpUserID) + opFlag, err := s.getGroupUserLevel(req.GroupID, tools.OpUserID(ctx)) if err != nil { return nil, err } @@ -1245,14 +1225,14 @@ func (s *groupServer) CancelMuteGroupMember(ctx context.Context, req *pbGroup.Ca if err != nil { return nil, err } - chat.GroupMemberCancelMutedNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID) + chat.GroupMemberCancelMutedNotification(tools.OperationID(ctx), tools.OpUserID(ctx), req.GroupID, req.UserID) return resp, nil } func (s *groupServer) MuteGroup(ctx context.Context, req *pbGroup.MuteGroupReq) (*pbGroup.MuteGroupResp, error) { resp := &pbGroup.MuteGroupResp{} - opFlag, err := s.getGroupUserLevel(req.GroupID, req.OpUserID) + opFlag, err := s.getGroupUserLevel(req.GroupID, tools.OpUserID(ctx)) if err != nil { return nil, err } @@ -1285,14 +1265,14 @@ func (s *groupServer) MuteGroup(ctx context.Context, req *pbGroup.MuteGroupReq) return nil, err } - chat.GroupMutedNotification(req.OperationID, req.OpUserID, req.GroupID) + chat.GroupMutedNotification(tools.OperationID(ctx), tools.OpUserID(ctx), req.GroupID) return resp, nil } func (s *groupServer) CancelMuteGroup(ctx context.Context, req *pbGroup.CancelMuteGroupReq) (*pbGroup.CancelMuteGroupResp, error) { resp := &pbGroup.CancelMuteGroupResp{} - opFlag, err := s.getGroupUserLevel(req.GroupID, req.OpUserID) + opFlag, err := s.getGroupUserLevel(req.GroupID, tools.OpUserID(ctx)) if err != nil { return nil, err } @@ -1312,7 +1292,7 @@ func (s *groupServer) CancelMuteGroup(ctx context.Context, req *pbGroup.CancelMu // errMsg := req.OperationID + " mutedInfo.RoleLevel == constant.GroupAdmin " + req.GroupID + req.OpUserID + err.Error() // return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil //} - log.Debug(req.OperationID, "UpdateGroupInfoDefaultZero ", req.GroupID, map[string]interface{}{"status": constant.GroupOk}) + log.Debug(tools.OperationID(ctx), "UpdateGroupInfoDefaultZero ", req.GroupID, map[string]interface{}{"status": constant.GroupOk}) if err := rocksCache.DelGroupInfoFromCache(ctx, req.GroupID); err != nil { return nil, err } @@ -1320,22 +1300,20 @@ func (s *groupServer) CancelMuteGroup(ctx context.Context, req *pbGroup.CancelMu if err != nil { return nil, err } - chat.GroupCancelMutedNotification(req.OperationID, req.OpUserID, req.GroupID) + chat.GroupCancelMutedNotification(tools.OperationID(ctx), tools.OpUserID(ctx), req.GroupID) return resp, nil } func (s *groupServer) SetGroupMemberNickname(ctx context.Context, req *pbGroup.SetGroupMemberNicknameReq) (*pbGroup.SetGroupMemberNicknameResp, error) { resp := &pbGroup.SetGroupMemberNicknameResp{} - if req.OpUserID != req.UserID && !token_verify.IsManagerUserID(req.OpUserID) { + if tools.OpUserID(ctx) != req.UserID && !token_verify.IsManagerUserID(tools.OpUserID(ctx)) { return nil, utils.Wrap(constant.ErrIdentity, "") } cbReq := &pbGroup.SetGroupMemberInfoReq{ - GroupID: req.GroupID, - UserID: req.UserID, - OperationID: req.OperationID, - OpUserID: req.OpUserID, - Nickname: &wrapperspb.StringValue{Value: req.Nickname}, + GroupID: req.GroupID, + UserID: req.UserID, + Nickname: &wrapperspb.StringValue{Value: req.Nickname}, } if err := CallbackBeforeSetGroupMemberInfo(ctx, cbReq); err != nil { return nil, err @@ -1361,7 +1339,7 @@ func (s *groupServer) SetGroupMemberNickname(ctx context.Context, req *pbGroup.S if err := imdb.UpdateGroupMemberInfo(groupMemberInfo); err != nil { return nil, err } - chat.GroupMemberInfoSetNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID) + chat.GroupMemberInfoSetNotification(tools.OperationID(ctx), tools.OpUserID(ctx), req.GroupID, req.UserID) return resp, nil } @@ -1400,13 +1378,13 @@ func (s *groupServer) SetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGr switch req.RoleLevel.Value { case constant.GroupOrdinaryUsers: //msg.GroupMemberRoleLevelChangeNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID, constant.GroupMemberSetToOrdinaryUserNotification) - chat.GroupMemberInfoSetNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID) + chat.GroupMemberInfoSetNotification(tools.OperationID(ctx), tools.OpUserID(ctx), req.GroupID, req.UserID) case constant.GroupAdmin, constant.GroupOwner: //msg.GroupMemberRoleLevelChangeNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID, constant.GroupMemberSetToAdminNotification) - chat.GroupMemberInfoSetNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID) + chat.GroupMemberInfoSetNotification(tools.OperationID(ctx), tools.OpUserID(ctx), req.GroupID, req.UserID) } } else { - chat.GroupMemberInfoSetNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID) + chat.GroupMemberInfoSetNotification(tools.OperationID(ctx), tools.OpUserID(ctx), req.GroupID, req.UserID) } return resp, nil } diff --git a/internal/rpc/msg/group_notification.go b/internal/rpc/msg/group_notification.go index 82255b5b0..ea5e14db2 100644 --- a/internal/rpc/msg/group_notification.go +++ b/internal/rpc/msg/group_notification.go @@ -6,10 +6,12 @@ import ( imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model" "Open_IM/pkg/common/log" "Open_IM/pkg/common/token_verify" + "Open_IM/pkg/common/tools" utils2 "Open_IM/pkg/common/utils" pbGroup "Open_IM/pkg/proto/group" open_im_sdk "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" + "context" "github.com/golang/protobuf/jsonpb" "github.com/golang/protobuf/proto" "google.golang.org/protobuf/types/known/wrapperspb" @@ -208,7 +210,7 @@ func groupNotification(contentType int32, m proto.Message, sendID, groupID, recv Notification(&n) } -//创建群后调用 +// 创建群后调用 func GroupCreatedNotification(operationID, opUserID, groupID string, initMemberList []string) { GroupCreatedTips := open_im_sdk.GroupCreatedTips{Group: &open_im_sdk.GroupInfo{}, OpUser: &open_im_sdk.GroupMemberFullInfo{}, GroupOwnerUser: &open_im_sdk.GroupMemberFullInfo{}} @@ -240,8 +242,9 @@ func GroupCreatedNotification(operationID, opUserID, groupID string, initMemberL groupNotification(constant.GroupCreatedNotification, &GroupCreatedTips, opUserID, groupID, "", operationID) } -//群信息改变后掉用 -//groupName := "" +// 群信息改变后掉用 +// groupName := "" +// // notification := "" // introduction := "" // faceURL := "" @@ -371,36 +374,38 @@ func GroupMemberCancelMutedNotification(operationID, opUserID, groupID, groupMem groupNotification(constant.GroupMemberCancelMutedNotification, &tips, opUserID, groupID, "", operationID) } -//message ReceiveJoinApplicationTips{ -// GroupInfo Group = 1; -// PublicUserInfo Applicant = 2; -// string Reason = 3; -//} apply->all managers GroupID string `protobuf:"bytes,1,opt,name=GroupID" json:"GroupID,omitempty"` +// message ReceiveJoinApplicationTips{ +// GroupInfo Group = 1; +// PublicUserInfo Applicant = 2; +// string Reason = 3; +// } apply->all managers GroupID string `protobuf:"bytes,1,opt,name=GroupID" json:"GroupID,omitempty"` +// // ReqMessage string `protobuf:"bytes,2,opt,name=ReqMessage" json:"ReqMessage,omitempty"` // OpUserID string `protobuf:"bytes,3,opt,name=OpUserID" json:"OpUserID,omitempty"` // OperationID string `protobuf:"bytes,4,opt,name=OperationID" json:"OperationID,omitempty"` -//申请进群后调用 -func JoinGroupApplicationNotification(req *pbGroup.JoinGroupReq) { +// +// 申请进群后调用 +func JoinGroupApplicationNotification(ctx context.Context, req *pbGroup.JoinGroupReq) { JoinGroupApplicationTips := open_im_sdk.JoinGroupApplicationTips{Group: &open_im_sdk.GroupInfo{}, Applicant: &open_im_sdk.PublicUserInfo{}} err := setGroupInfo(req.GroupID, JoinGroupApplicationTips.Group) if err != nil { - log.Error(req.OperationID, "setGroupInfo failed ", err.Error(), req.GroupID) + log.Error(tools.OperationID(ctx), "setGroupInfo failed ", err.Error(), req.GroupID) return } - if err = setPublicUserInfo(req.OpUserID, JoinGroupApplicationTips.Applicant); err != nil { - log.Error(req.OperationID, "setPublicUserInfo failed ", err.Error(), req.OpUserID) + if err = setPublicUserInfo(tools.OpUserID(ctx), JoinGroupApplicationTips.Applicant); err != nil { + log.Error(tools.OperationID(ctx), "setPublicUserInfo failed ", err.Error(), tools.OpUserID(ctx)) return } JoinGroupApplicationTips.ReqMsg = req.ReqMessage managerList, err := imdb.GetOwnerManagerByGroupID(req.GroupID) if err != nil { - log.NewError(req.OperationID, "GetOwnerManagerByGroupId failed ", err.Error(), req.GroupID) + log.NewError(tools.OperationID(ctx), "GetOwnerManagerByGroupId failed ", err.Error(), req.GroupID) return } for _, v := range managerList { - groupNotification(constant.JoinGroupApplicationNotification, &JoinGroupApplicationTips, req.OpUserID, "", v.UserID, req.OperationID) - log.NewInfo(req.OperationID, "Notification ", v) + groupNotification(constant.JoinGroupApplicationNotification, &JoinGroupApplicationTips, tools.OpUserID(ctx), "", v.UserID, tools.OperationID(ctx)) + log.NewInfo(tools.OperationID(ctx), "Notification ", v) } } @@ -418,13 +423,14 @@ func MemberQuitNotification(req *pbGroup.QuitGroupReq) { groupNotification(constant.MemberQuitNotification, &MemberQuitTips, req.OpUserID, req.GroupID, "", req.OperationID) } -//message ApplicationProcessedTips{ -// GroupInfo Group = 1; -// GroupMemberFullInfo OpUser = 2; -// int32 Result = 3; -// string Reason = 4; -//} -//处理进群请求后调用 +// message ApplicationProcessedTips{ +// GroupInfo Group = 1; +// GroupMemberFullInfo OpUser = 2; +// int32 Result = 3; +// string Reason = 4; +// } +// +// 处理进群请求后调用 func GroupApplicationAcceptedNotification(req *pbGroup.GroupApplicationResponseReq) { GroupApplicationAcceptedTips := open_im_sdk.GroupApplicationAcceptedTips{Group: &open_im_sdk.GroupInfo{}, OpUser: &open_im_sdk.GroupMemberFullInfo{}, HandleMsg: req.HandledMsg} if err := setGroupInfo(req.GroupID, GroupApplicationAcceptedTips.Group); err != nil { @@ -506,13 +512,14 @@ func GroupDismissedNotification(req *pbGroup.DismissGroupReq) { groupNotification(constant.GroupDismissedNotification, &tips, req.OpUserID, req.GroupID, "", req.OperationID) } -//message MemberKickedTips{ -// GroupInfo Group = 1; -// GroupMemberFullInfo OpUser = 2; -// GroupMemberFullInfo KickedUser = 3; -// uint64 OperationTime = 4; -//} -//被踢后调用 +// message MemberKickedTips{ +// GroupInfo Group = 1; +// GroupMemberFullInfo OpUser = 2; +// GroupMemberFullInfo KickedUser = 3; +// uint64 OperationTime = 4; +// } +// +// 被踢后调用 func MemberKickedNotification(req *pbGroup.KickGroupMemberReq, kickedUserIDList []string) { MemberKickedTips := open_im_sdk.MemberKickedTips{Group: &open_im_sdk.GroupInfo{}, OpUser: &open_im_sdk.GroupMemberFullInfo{}} if err := setGroupInfo(req.GroupID, MemberKickedTips.Group); err != nil { @@ -538,13 +545,14 @@ func MemberKickedNotification(req *pbGroup.KickGroupMemberReq, kickedUserIDList //} } -//message MemberInvitedTips{ -// GroupInfo Group = 1; -// GroupMemberFullInfo OpUser = 2; -// GroupMemberFullInfo InvitedUser = 3; -// uint64 OperationTime = 4; -//} -//被邀请进群后调用 +// message MemberInvitedTips{ +// GroupInfo Group = 1; +// GroupMemberFullInfo OpUser = 2; +// GroupMemberFullInfo InvitedUser = 3; +// uint64 OperationTime = 4; +// } +// +// 被邀请进群后调用 func MemberInvitedNotification(operationID, groupID, opUserID, reason string, invitedUserIDList []string) { MemberInvitedTips := open_im_sdk.MemberInvitedTips{Group: &open_im_sdk.GroupInfo{}, OpUser: &open_im_sdk.GroupMemberFullInfo{}} if err := setGroupInfo(groupID, MemberInvitedTips.Group); err != nil { @@ -580,12 +588,13 @@ func MemberInvitedNotification(operationID, groupID, opUserID, reason string, in //群成员退群后调用 -//message MemberEnterTips{ -// GroupInfo Group = 1; -// GroupMemberFullInfo EntrantUser = 2; -// uint64 OperationTime = 3; -//} -//群成员主动申请进群,管理员同意后调用, +// message MemberEnterTips{ +// GroupInfo Group = 1; +// GroupMemberFullInfo EntrantUser = 2; +// uint64 OperationTime = 3; +// } +// +// 群成员主动申请进群,管理员同意后调用, func MemberEnterNotification(req *pbGroup.GroupApplicationResponseReq) { MemberEnterTips := open_im_sdk.MemberEnterTips{Group: &open_im_sdk.GroupInfo{}, EntrantUser: &open_im_sdk.GroupMemberFullInfo{}} if err := setGroupInfo(req.GroupID, MemberEnterTips.Group); err != nil { diff --git a/pkg/common/db/mysql_model/im_mysql_model/friend_model_k.go b/pkg/common/db/mysql_model/im_mysql_model/friend_model_k.go index 2f7433fcc..14384dff9 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/friend_model_k.go +++ b/pkg/common/db/mysql_model/im_mysql_model/friend_model_k.go @@ -58,9 +58,9 @@ func (*Friend) Find(ctx context.Context, ownerUserID string) (friends []*Friend, return friends, err } -func (*Friend) Take(ctx context.Context, ownerUserID, friendUserID string) (group *Group, err error) { - group = &Group{} - defer trace_log.SetCtxDebug(ctx, utils.GetSelfFuncName(), err, "ownerUserID", ownerUserID, "friendUserID", friendUserID, "group", *group) - err = utils.Wrap(FriendDB.Where("owner_user_id = ? and friend_user_id", ownerUserID, friendUserID).Take(group).Error, "") - return group, err +func (*Friend) Take(ctx context.Context, ownerUserID, friendUserID string) (friend *Friend, err error) { + friend = &Friend{} + defer trace_log.SetCtxDebug(ctx, utils.GetSelfFuncName(), err, "ownerUserID", ownerUserID, "friendUserID", friendUserID, "group", *friend) + err = utils.Wrap(FriendDB.Where("owner_user_id = ? and friend_user_id", ownerUserID, friendUserID).Take(friend).Error, "") + return friend, err } diff --git a/pkg/common/db/mysql_model/im_mysql_model/group_model_k.go b/pkg/common/db/mysql_model/im_mysql_model/group_model_k.go index 60eab444e..213347758 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/group_model_k.go +++ b/pkg/common/db/mysql_model/im_mysql_model/group_model_k.go @@ -57,12 +57,12 @@ func (*Group) Update(ctx context.Context, groups []*Group) (err error) { return utils.Wrap(GroupDB.Updates(&groups).Error, "") } -func (*Group) Find(ctx context.Context, groupIDs []string) (groupList []*Group, err error) { +func (*Group) Find(ctx context.Context, groupIDs []string) (groups []*Group, err error) { defer func() { - trace_log.SetCtxDebug(ctx, utils.GetFuncName(1), err, "groupIDList", groupIDs, "groupList", groupList) + trace_log.SetCtxDebug(ctx, utils.GetFuncName(1), err, "groupIDs", groupIDs, "groups", groups) }() - err = utils.Wrap(GroupDB.Where("group_id in (?)", groupIDs).Find(&groupList).Error, "") - return groupList, err + err = utils.Wrap(GroupDB.Where("group_id in (?)", groupIDs).Find(&groups).Error, "") + return groups, err } func (*Group) Take(ctx context.Context, groupID string) (group *Group, err error) { diff --git a/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go b/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go index 7236cf382..06a09f16a 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/group_request_model.go @@ -1,24 +1,13 @@ package im_mysql_model -//type GroupRequest struct { -// UserID string `gorm:"column:user_id;primaryKey;"` -// GroupID string `gorm:"column:group_id;primaryKey;"` -// HandleResult int32 `gorm:"column:handle_result"` -// ReqMsg string `gorm:"column:req_msg"` -// HandledMsg string `gorm:"column:handled_msg"` -// ReqTime time.Time `gorm:"column:req_time"` -// HandleUserID string `gorm:"column:handle_user_id"` -// HandledTime time.Time `gorm:"column:handle_time"` -// Ex string `gorm:"column:ex"` -//} - +// //func UpdateGroupRequest(groupRequest GroupRequest) error { // if groupRequest.HandledTime.Unix() < 0 { // groupRequest.HandledTime = utils.UnixSecondToTime(0) // } // return db.DB.MysqlDB.DefaultGormDB().Table("group_requests").Where("group_id=? and user_id=?", groupRequest.GroupID, groupRequest.UserID).Updates(&groupRequest).Error //} - +// //func InsertIntoGroupRequest(toInsertInfo GroupRequest) error { // DelGroupRequestByGroupIDAndUserID(toInsertInfo.GroupID, toInsertInfo.UserID) // if toInsertInfo.HandledTime.Unix() < 0 { @@ -40,7 +29,7 @@ package im_mysql_model // } // return nil //} - +// //func GetGroupRequestByGroupIDAndUserID(groupID, userID string) (*GroupRequest, error) { // var groupRequest GroupRequest // err := db.DB.MysqlDB.DefaultGormDB().Table("group_requests").Where("user_id=? and group_id=?", userID, groupID).Take(&groupRequest).Error @@ -49,7 +38,7 @@ package im_mysql_model // } // return &groupRequest, nil //} - +// //func DelGroupRequestByGroupIDAndUserID(groupID, userID string) error { // return db.DB.MysqlDB.DefaultGormDB().Table("group_requests").Where("group_id=? and user_id=?", groupID, userID).Delete(GroupRequest{}).Error //} @@ -62,8 +51,8 @@ package im_mysql_model // } // return groupRequestList, nil //} - -// received +// +//received //func GetRecvGroupApplicationList(userID string) ([]GroupRequest, error) { // var groupRequestList []GroupRequest // memberList, err := GetGroupMemberListByUserID(userID) @@ -87,7 +76,7 @@ package im_mysql_model // err := db.DB.MysqlDB.DefaultGormDB().Table("group_requests").Where("user_id=?", userID).Find(&groupRequestList).Error // return groupRequestList, err //} - +// // //func GroupApplicationResponse(pb *group.GroupApplicationResponseReq) (*group.CommonResp, error) { // @@ -149,7 +138,7 @@ package im_mysql_model // // return &group.GroupApplicationResponseResp{}, nil //} - +// //func FindGroupBeInvitedRequestInfoByUidAndGroupID(groupId, uid string) (*GroupRequest, error) { // dbConn, err := db.DB.MysqlDB.DefaultGormDB() // if err != nil { @@ -163,7 +152,7 @@ package im_mysql_model // return &beInvitedRequestUserInfo, nil // //} - +// //func InsertGroupRequest(groupId, fromUser, fromUserNickName, fromUserFaceUrl, toUser, requestMsg, handledMsg string, handleStatus int) error { // return nil //} diff --git a/pkg/common/db/mysql_model/im_mysql_model/group_request_model_k.go b/pkg/common/db/mysql_model/im_mysql_model/group_request_model_k.go index 2cda93fee..441eb6d64 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/group_request_model_k.go +++ b/pkg/common/db/mysql_model/im_mysql_model/group_request_model_k.go @@ -1,7 +1,6 @@ package im_mysql_model import ( - "Open_IM/pkg/common/constant" "Open_IM/pkg/common/trace_log" "Open_IM/pkg/utils" "context" @@ -27,35 +26,35 @@ type GroupRequest struct { func (*GroupRequest) Create(ctx context.Context, groupRequests []*GroupRequest) (err error) { defer func() { - trace_log.SetCtxDebug(ctx, utils.GetSelfFuncName(), err, "groupRequests", groupRequests) + trace_log.SetCtxDebug(ctx, utils.GetFuncName(1), err, "groupRequests", groupRequests) }() return utils.Wrap(GroupRequestDB.Create(&groupRequests).Error, utils.GetSelfFuncName()) } func (*GroupRequest) Delete(ctx context.Context, groupRequests []*GroupRequest) (err error) { defer func() { - trace_log.SetCtxDebug(ctx, utils.GetSelfFuncName(), err, "groupRequests", groupRequests) + trace_log.SetCtxDebug(ctx, utils.GetFuncName(1), err, "groupRequests", groupRequests) }() return utils.Wrap(GroupRequestDB.Delete(&groupRequests).Error, utils.GetSelfFuncName()) } func (*GroupRequest) UpdateByMap(ctx context.Context, groupID string, userID string, args map[string]interface{}) (err error) { defer func() { - trace_log.SetCtxDebug(ctx, utils.GetSelfFuncName(), err, "groupID", groupID, "userID", userID, "args", args) + trace_log.SetCtxDebug(ctx, utils.GetFuncName(1), err, "groupID", groupID, "userID", userID, "args", args) }() return utils.Wrap(GroupRequestDB.Where("group_id = ? and user_id = ? ", groupID, userID).Updates(args).Error, utils.GetSelfFuncName()) } func (*GroupRequest) Update(ctx context.Context, groupRequests []*GroupRequest) (err error) { defer func() { - trace_log.SetCtxDebug(ctx, utils.GetSelfFuncName(), err, "groupRequests", groupRequests) + trace_log.SetCtxDebug(ctx, utils.GetFuncName(1), err, "groupRequests", groupRequests) }() return utils.Wrap(GroupRequestDB.Updates(&groupRequests).Error, utils.GetSelfFuncName()) } func (*GroupRequest) Find(ctx context.Context, groupRequests []*GroupRequest) (resultGroupRequests []*GroupRequest, err error) { defer func() { - trace_log.SetCtxDebug(ctx, utils.GetSelfFuncName(), err, "groupRequests", groupRequests, "resultGroupRequests", resultGroupRequests) + trace_log.SetCtxDebug(ctx, utils.GetFuncName(1), err, "groupRequests", groupRequests, "resultGroupRequests", resultGroupRequests) }() var where [][]interface{} for _, groupMember := range groupRequests { @@ -67,163 +66,7 @@ func (*GroupRequest) Find(ctx context.Context, groupRequests []*GroupRequest) (r func (*GroupRequest) Take(ctx context.Context, groupID string, userID string) (groupRequest *GroupRequest, err error) { groupRequest = &GroupRequest{} defer func() { - trace_log.SetCtxDebug(ctx, utils.GetSelfFuncName(), err, "groupID", groupID, "userID", userID, "groupRequest", *groupRequest) + trace_log.SetCtxDebug(ctx, utils.GetFuncName(1), err, "groupID", groupID, "userID", userID, "groupRequest", *groupRequest) }() return groupRequest, utils.Wrap(GroupRequestDB.Where("group_id = ? and user_id = ? ", groupID, userID).Take(groupRequest).Error, utils.GetSelfFuncName()) } - -//func UpdateGroupRequest(groupRequest GroupRequest) error { -// if groupRequest.HandledTime.Unix() < 0 { -// groupRequest.HandledTime = utils.UnixSecondToTime(0) -// } -// return db.DB.MysqlDB.DefaultGormDB().Table("group_requests").Where("group_id=? and user_id=?", groupRequest.GroupID, groupRequest.UserID).Updates(&groupRequest).Error -//} - -func InsertIntoGroupRequest(toInsertInfo GroupRequest) error { - DelGroupRequestByGroupIDAndUserID(toInsertInfo.GroupID, toInsertInfo.UserID) - if toInsertInfo.HandledTime.Unix() < 0 { - toInsertInfo.HandledTime = utils.UnixSecondToTime(0) - } - u := GroupRequestDB.Table("group_requests").Where("group_id=? and user_id=?", toInsertInfo.GroupID, toInsertInfo.UserID).Updates(&toInsertInfo) - if u.RowsAffected != 0 { - return nil - } - - toInsertInfo.ReqTime = time.Now() - if toInsertInfo.HandledTime.Unix() < 0 { - toInsertInfo.HandledTime = utils.UnixSecondToTime(0) - } - - err := GroupRequestDB.Create(&toInsertInfo).Error - if err != nil { - return err - } - return nil -} - -func GetGroupRequestByGroupIDAndUserID(groupID, userID string) (*GroupRequest, error) { - var groupRequest GroupRequest - err := GroupRequestDB.Where("user_id=? and group_id=?", userID, groupID).Take(&groupRequest).Error - if err != nil { - return nil, err - } - return &groupRequest, nil -} - -func DelGroupRequestByGroupIDAndUserID(groupID, userID string) error { - return GroupRequestDB.Table("group_requests").Where("group_id=? and user_id=?", groupID, userID).Delete(GroupRequest{}).Error -} - -func GetGroupRequestByGroupID(groupID string) ([]GroupRequest, error) { - var groupRequestList []GroupRequest - err := GroupRequestDB.Table("group_requests").Where("group_id=?", groupID).Find(&groupRequestList).Error - if err != nil { - return nil, err - } - return groupRequestList, nil -} - -// received -func GetRecvGroupApplicationList(userID string) ([]GroupRequest, error) { - var groupRequestList []GroupRequest - memberList, err := GetGroupMemberListByUserID(userID) - if err != nil { - return nil, utils.Wrap(err, utils.GetSelfFuncName()) - } - for _, v := range memberList { - if v.RoleLevel > constant.GroupOrdinaryUsers { - list, err := GetGroupRequestByGroupID(v.GroupID) - if err != nil { - continue - } - groupRequestList = append(groupRequestList, list...) - } - } - return groupRequestList, nil -} - -func GetUserReqGroupByUserID(userID string) ([]GroupRequest, error) { - var groupRequestList []GroupRequest - err := GroupRequestDB.Table("group_requests").Where("user_id=?", userID).Find(&groupRequestList).Error - return groupRequestList, err -} - -// -//func GroupApplicationResponse(pb *group.GroupApplicationResponseReq) (*group.CommonResp, error) { -// -// ownerUser, err := FindGroupMemberInfoByGroupIdAndUserId(pb.GroupID, pb.OwnerID) -// if err != nil { -// log.ErrorByKv("FindGroupMemberInfoByGroupIdAndUserId failed", pb.OperationID, "groupId", pb.GroupID, "ownerID", pb.OwnerID) -// return nil, err -// } -// if ownerUser.AdministratorLevel <= 0 { -// return nil, errors.New("insufficient permissions") -// } -// -// dbConn, err := db.DB.MysqlDB.DefaultGormDB() -// if err != nil { -// return nil, err -// } -// var groupRequest GroupRequest -// err = dbConn.Raw("select * from `group_request` where handled_user = ? and group_id = ? and from_user_id = ? and to_user_id = ?", -// "", pb.GroupID, pb.FromUserID, pb.ToUserID).Scan(&groupRequest).Error -// if err != nil { -// log.ErrorByKv("find group_request info failed", pb.OperationID, "groupId", pb.GroupID, "fromUserId", pb.FromUserID, "toUserId", pb.OwnerID) -// return nil, err -// } -// -// if groupRequest.Flag != 0 { -// return nil, errors.New("application has already handle") -// } -// -// var saveFlag int -// if pb.HandleResult == 0 { -// saveFlag = -1 -// } else if pb.HandleResult == 1 { -// saveFlag = 1 -// } else { -// return nil, errors.New("parma HandleResult error") -// } -// err = dbConn.Exec("update `group_request` set flag = ?, handled_msg = ?, handled_user = ? where group_id = ? and from_user_id = ? and to_user_id = ?", -// saveFlag, pb.HandledMsg, pb.OwnerID, groupRequest.GroupID, groupRequest.FromUserID, groupRequest.ToUserID).Error -// if err != nil { -// log.ErrorByKv("update group request failed", pb.OperationID, "groupID", pb.GroupID, "flag", saveFlag, "ownerId", pb.OwnerID, "fromUserId", pb.FromUserID, "toUserID", pb.ToUserID) -// return nil, err -// } -// -// if saveFlag == 1 { -// if groupRequest.ToUserID == "0" { -// err = InsertIntoGroupMember(pb.GroupID, pb.FromUserID, groupRequest.FromUserNickname, groupRequest.FromUserFaceUrl, 0) -// if err != nil { -// log.ErrorByKv("InsertIntoGroupMember failed", pb.OperationID, "groupID", pb.GroupID, "fromUserId", pb.FromUserID) -// return nil, err -// } -// } else { -// err = InsertIntoGroupMember(pb.GroupID, pb.ToUserID, groupRequest.ToUserNickname, groupRequest.ToUserFaceUrl, 0) -// if err != nil { -// log.ErrorByKv("InsertIntoGroupMember failed", pb.OperationID, "groupID", pb.GroupID, "fromUserId", pb.FromUserID) -// return nil, err -// } -// } -// } -// -// return &group.GroupApplicationResponseResp{}, nil -//} - -//func FindGroupBeInvitedRequestInfoByUidAndGroupID(groupId, uid string) (*GroupRequest, error) { -// dbConn, err := db.DB.MysqlDB.DefaultGormDB() -// if err != nil { -// return nil, err -// } -// var beInvitedRequestUserInfo GroupRequest -// err = dbConn.Table("group_request").Where("to_user_id=? and group_id=?", uid, groupId).Find(&beInvitedRequestUserInfo).Error -// if err != nil { -// return nil, err -// } -// return &beInvitedRequestUserInfo, nil -// -//} - -//func InsertGroupRequest(groupId, fromUser, fromUserNickName, fromUserFaceUrl, toUser, requestMsg, handledMsg string, handleStatus int) error { -// return nil -//} diff --git a/pkg/common/db/mysql_model/im_mysql_model/user_model.go b/pkg/common/db/mysql_model/im_mysql_model/user_model.go index 9d8a1ba64..21d68d003 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/user_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/user_model.go @@ -20,22 +20,6 @@ type BlackList struct { EndDisableTime time.Time `gorm:"column:end_disable_time"` } -type User struct { - UserID string `gorm:"column:user_id;primary_key;size:64"` - Nickname string `gorm:"column:name;size:255"` - FaceURL string `gorm:"column:face_url;size:255"` - Gender int32 `gorm:"column:gender"` - PhoneNumber string `gorm:"column:phone_number;size:32"` - Birth time.Time `gorm:"column:birth"` - Email string `gorm:"column:email;size:64"` - Ex string `gorm:"column:ex;size:1024"` - CreateTime time.Time `gorm:"column:create_time;index:create_time"` - AppMangerLevel int32 `gorm:"column:app_manger_level"` - GlobalRecvMsgOpt int32 `gorm:"column:global_recv_msg_opt"` - - status int32 `gorm:"column:status"` -} - func UserRegister(user User) error { user.CreateTime = time.Now() if user.AppMangerLevel == 0 { diff --git a/pkg/common/db/mysql_model/im_mysql_model/user_model_k.go b/pkg/common/db/mysql_model/im_mysql_model/user_model_k.go new file mode 100644 index 000000000..5c0e6e26b --- /dev/null +++ b/pkg/common/db/mysql_model/im_mysql_model/user_model_k.go @@ -0,0 +1,66 @@ +package im_mysql_model + +import ( + "Open_IM/pkg/common/trace_log" + "Open_IM/pkg/utils" + "context" + "gorm.io/gorm" + "time" +) + +var userDB *gorm.DB + +type User struct { + UserID string `gorm:"column:user_id;primary_key;size:64"` + Nickname string `gorm:"column:name;size:255"` + FaceURL string `gorm:"column:face_url;size:255"` + Gender int32 `gorm:"column:gender"` + PhoneNumber string `gorm:"column:phone_number;size:32"` + Birth time.Time `gorm:"column:birth"` + Email string `gorm:"column:email;size:64"` + Ex string `gorm:"column:ex;size:1024"` + CreateTime time.Time `gorm:"column:create_time;index:create_time"` + AppMangerLevel int32 `gorm:"column:app_manger_level"` + GlobalRecvMsgOpt int32 `gorm:"column:global_recv_msg_opt"` + + status int32 `gorm:"column:status"` +} + +func (*User) Create(ctx context.Context, users []*User) (err error) { + defer func() { + trace_log.SetCtxDebug(ctx, utils.GetFuncName(1), err, "users", users) + }() + err = utils.Wrap(userDB.Create(&users).Error, "") + return err +} + +func (*User) UpdateByMap(ctx context.Context, userID string, args map[string]interface{}) (err error) { + defer func() { + trace_log.SetCtxDebug(ctx, utils.GetFuncName(1), err, "userID", userID, "args", args) + }() + return utils.Wrap(userDB.Where("user_id = ?", userID).Updates(args).Error, "") +} + +func (*User) Update(ctx context.Context, users []*User) (err error) { + defer func() { + trace_log.SetCtxDebug(ctx, utils.GetFuncName(1), err, "users", users) + }() + return utils.Wrap(userDB.Updates(&users).Error, "") +} + +func (*User) Find(ctx context.Context, userIDs []string) (users []*User, err error) { + defer func() { + trace_log.SetCtxDebug(ctx, utils.GetFuncName(1), err, "userIDs", userIDs, "users", users) + }() + err = utils.Wrap(userDB.Where("user_id in (?)", userIDs).Find(&users).Error, "") + return users, err +} + +func (*User) Take(ctx context.Context, userID string) (user *User, err error) { + user = &User{} + defer func() { + trace_log.SetCtxDebug(ctx, utils.GetFuncName(1), err, "userID", userID, "user", *user) + }() + err = utils.Wrap(userDB.Where("user_id = ?", userID).Take(&user).Error, "") + return user, err +}