diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 8b6b70b818856290c6d8229d28e1ce912abb1e2b..bb592de318b0d53524d95325b295f0890b4dfb4f 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -38,26 +38,29 @@ func main() { friendRouterGroup.POST("/add_blacklist", friend.AddBlacklist) //1 friendRouterGroup.POST("/get_blacklist", friend.GetBlacklist) //1 friendRouterGroup.POST("/remove_blacklist", friend.RemoveBlacklist) //1 - friendRouterGroup.POST("/delete_friend", friend.DeleteFriend) - friendRouterGroup.POST("/add_friend_response", friend.AddFriendResponse) //1 - friendRouterGroup.POST("/set_friend_remark", friend.SetFriendRemark) //1 - friendRouterGroup.POST("/is_friend", friend.IsFriend) //1 - friendRouterGroup.POST("/import_friend", friend.ImportFriend) //1 + friendRouterGroup.POST("/delete_friend", friend.DeleteFriend) //1 + friendRouterGroup.POST("/add_friend_response", friend.AddFriendResponse) //1 + friendRouterGroup.POST("/set_friend_remark", friend.SetFriendRemark) //1 + friendRouterGroup.POST("/is_friend", friend.IsFriend) //1 + friendRouterGroup.POST("/import_friend", friend.ImportFriend) //1 } //group related routing group groupRouterGroup := r.Group("/group") { - groupRouterGroup.POST("/create_group", group.CreateGroup) //1 - groupRouterGroup.POST("/set_group_info", group.SetGroupInfo) //1 - groupRouterGroup.POST("join_group", group.JoinGroup) //1 - groupRouterGroup.POST("/quit_group", group.QuitGroup) //1 - groupRouterGroup.POST("/group_application_response", group.ApplicationGroupResponse) - groupRouterGroup.POST("/transfer_group", group.TransferGroupOwner) - groupRouterGroup.POST("/get_group_applicationList", group.GetGroupApplicationList) //1 - groupRouterGroup.POST("/get_groups_info", group.GetGroupsInfo) //1 - groupRouterGroup.POST("/kick_group", group.KickGroupMember) - groupRouterGroup.POST("/get_group_member_list", group.GetGroupMemberList) + groupRouterGroup.POST("/create_group", group.CreateGroup) //1 + groupRouterGroup.POST("/set_group_info", group.SetGroupInfo) //1 + groupRouterGroup.POST("join_group", group.JoinGroup) //1 + groupRouterGroup.POST("/quit_group", group.QuitGroup) //1 + groupRouterGroup.POST("/group_application_response", group.ApplicationGroupResponse) //1 + groupRouterGroup.POST("/transfer_group", group.TransferGroupOwner) //1 + groupRouterGroup.POST("/get_group_applicationList", group.GetGroupApplicationList) //1 + groupRouterGroup.POST("/get_groups_info", group.GetGroupsInfo) //1 + groupRouterGroup.POST("/kick_group", group.KickGroupMember) //1 + groupRouterGroup.POST("/get_group_member_list", group.GetGroupMemberList) //no use groupRouterGroup.POST("/get_group_all_member_list", group.GetGroupAllMember) + groupRouterGroup.POST("/get_group_members_info", group.GetGroupMembersInfo) + groupRouterGroup.POST("/invite_user_to_group", group.InviteUserToGroup) //1 + groupRouterGroup.POST("/get_joined_group_list", group.GetJoinedGroupList) groupRouterGroup.POST("/get_group_members_info", group.GetGroupMembersInfo) //1 groupRouterGroup.POST("/invite_user_to_group", group.InviteUserToGroup) groupRouterGroup.POST("/get_joined_group_list", group.GetJoinedGroupList) //1 diff --git a/cmd/rpc/open_im_auth/main.go b/cmd/rpc/open_im_auth/main.go index ed4656d358dab9903cb0f110f426cb8fd792bc8a..110ea05c637f4687ecf7026d53199321de481e94 100644 --- a/cmd/rpc/open_im_auth/main.go +++ b/cmd/rpc/open_im_auth/main.go @@ -10,4 +10,5 @@ func main() { flag.Parse() rpcServer := rpcAuth.NewRpcAuthServer(*rpcPort) rpcServer.Run() + } diff --git a/internal/api/group/group.go b/internal/api/group/group.go index c0998e0e4583fd6cfbeda1e3136cc38dcde97ab7..0d4987ec813fea6f7fa443d74f4d6cb8d11087e4 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -24,7 +24,7 @@ func KickGroupMember(c *gin.Context) { } req := &rpc.KickGroupMemberReq{} - utils.CopyStructFields(req, params) + utils.CopyStructFields(req, ¶ms) var ok bool ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token")) if !ok { @@ -39,7 +39,7 @@ func KickGroupMember(c *gin.Context) { client := rpc.NewGroupClient(etcdConn) RpcResp, err := client.KickGroupMember(context.Background(), req) if err != nil { - log.NewError(req.OperationID, "GetGroupMemberList failed ", err.Error()) + log.NewError(req.OperationID, "GetGroupMemberList failed ", err.Error(), req.String()) c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) return } @@ -48,8 +48,12 @@ func KickGroupMember(c *gin.Context) { memberListResp.ErrMsg = RpcResp.ErrMsg memberListResp.ErrCode = RpcResp.ErrCode for _, v := range RpcResp.Id2ResultList { - memberListResp.Data = append(memberListResp.Data, &api.Id2Result{UserID: v.UserID, Result: v.Result}) + memberListResp.UserIDResultList = append(memberListResp.UserIDResultList, &api.UserIDResult{UserID: v.UserID, Result: v.Result}) } + if len(memberListResp.UserIDResultList) == 0 { + memberListResp.UserIDResultList = []*api.UserIDResult{} + } + log.NewInfo(req.OperationID, "KickGroupMember api return ", memberListResp) c.JSON(http.StatusOK, memberListResp) } @@ -119,9 +123,22 @@ func GetGroupMemberList(c *gin.Context) { return } - memberListResp := api.GetGroupMemberListResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, Data: RpcResp.MemberList, NextSeq: RpcResp.NextSeq} - c.JSON(http.StatusOK, memberListResp) + memberListResp := api.GetGroupMemberListResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, MemberList: RpcResp.MemberList, NextSeq: RpcResp.NextSeq} + if len(memberListResp.MemberList) == 0 { + memberListResp.MemberList = []*open_im_sdk.GroupMemberFullInfo{} + } + /* + jsm := &jsonpb.Marshaler{ + OrigName: true, + EnumsAsInts: false, + EmitDefaults: true, + } + + var b bytes.Buffer + err = jsm.MarshalToString(memberListResp.MemberList[0]) + */ log.NewInfo(req.OperationID, "GetGroupMemberList api return ", memberListResp) + c.JSON(http.StatusOK, memberListResp) } func GetGroupAllMember(c *gin.Context) { @@ -132,7 +149,7 @@ func GetGroupAllMember(c *gin.Context) { return } req := &rpc.GetGroupAllMemberReq{} - utils.CopyStructFields(req, params) + utils.CopyStructFields(req, ¶ms) var ok bool ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token")) if !ok { @@ -151,9 +168,12 @@ func GetGroupAllMember(c *gin.Context) { return } - memberListResp := api.GetGroupAllMemberResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, Data: RpcResp.MemberList} - c.JSON(http.StatusOK, memberListResp) + memberListResp := api.GetGroupAllMemberResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, MemberList: RpcResp.MemberList} + if len(memberListResp.MemberList) == 0 { + memberListResp.MemberList = []*open_im_sdk.GroupMemberFullInfo{} + } log.NewInfo(req.OperationID, "GetGroupAllMember api return ", memberListResp) + c.JSON(http.StatusOK, memberListResp) } func GetJoinedGroupList(c *gin.Context) { @@ -199,7 +219,7 @@ func InviteUserToGroup(c *gin.Context) { return } req := &rpc.InviteUserToGroupReq{} - utils.CopyStructFields(req, params) + utils.CopyStructFields(req, ¶ms) var ok bool ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token")) if !ok { @@ -218,12 +238,12 @@ func InviteUserToGroup(c *gin.Context) { return } - Resp := api.InviteUserToGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} + resp := api.InviteUserToGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} for _, v := range RpcResp.Id2ResultList { - Resp.Data = append(Resp.Data, api.Id2Result{UserID: v.UserID, Result: v.Result}) + resp.UserIDResultList = append(resp.UserIDResultList, api.UserIDResult{UserID: v.UserID, Result: v.Result}) } - c.JSON(http.StatusOK, Resp) - log.NewInfo(req.OperationID, "InviteUserToGroup api return ", Resp) + c.JSON(http.StatusOK, resp) + log.NewInfo(req.OperationID, "InviteUserToGroup api return ", resp) } func CreateGroup(c *gin.Context) { @@ -470,7 +490,7 @@ func TransferGroupOwner(c *gin.Context) { return } req := &rpc.TransferGroupOwnerReq{} - utils.CopyStructFields(req, params) + utils.CopyStructFields(req, ¶ms) var ok bool ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token")) if !ok { @@ -488,7 +508,9 @@ func TransferGroupOwner(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) return } - resp := api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg} - c.JSON(http.StatusOK, resp) + + resp := api.TransferGroupOwnerResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}} log.NewInfo(req.OperationID, "TransferGroupOwner api return ", resp) + c.JSON(http.StatusOK, resp) + } diff --git a/internal/rpc/friend/firend.go b/internal/rpc/friend/firend.go index 378f3a911c99ec24e2ec7daa5e03500dc0267d33..f548a21b6a4a47a466549828e81a95d25243ba6c 100644 --- a/internal/rpc/friend/firend.go +++ b/internal/rpc/friend/firend.go @@ -146,7 +146,7 @@ func (s *friendServer) AddFriend(ctx context.Context, req *pbFriend.AddFriendReq utils.CopyStructFields(&friendRequest, req.CommID) // {openIM001 openIM002 0 test add friend 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC }] log.NewDebug(req.CommID.OperationID, "UpdateFriendApplication args ", friendRequest) - err := imdb.UpdateFriendApplication(&friendRequest) + err := imdb.InsertFriendApplication(&friendRequest) if err != nil { log.NewError(req.CommID.OperationID, "UpdateFriendApplication failed ", err.Error(), friendRequest) return &pbFriend.AddFriendResp{CommonResp: &pbFriend.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index e737fb16384b0bde50130ce8eedff6703098b78e..2af77fa97af733a11ff4614ab2d085306d239a86 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -95,7 +95,7 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR } //to group member - groupMember := imdb.GroupMember{GroupID: groupId, RoleLevel: constant.GroupOwner} + groupMember := imdb.GroupMember{GroupID: groupId, RoleLevel: constant.GroupOwner, OperatorUserID: req.OpUserID} utils.CopyStructFields(&groupMember, us) err = im_mysql_model.InsertIntoGroupMember(groupMember) if err != nil { @@ -226,6 +226,7 @@ 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 err = imdb.InsertIntoGroupMember(toInsertInfo) if err != nil { log.NewError(req.OperationID, "InsertIntoGroupMember failed ", req.GroupID, toUserInfo.UserID, toUserInfo.Nickname, toUserInfo.FaceUrl) @@ -260,7 +261,7 @@ func (s *groupServer) GetGroupAllMember(ctx context.Context, req *pbGroup.GetGro for _, v := range memberList { var node open_im_sdk.GroupMemberFullInfo - utils.CopyStructFields(node, v) + utils.CopyStructFields(&node, &v) resp.MemberList = append(resp.MemberList, &node) } log.NewInfo(req.OperationID, "GetGroupAllMember rpc return ", resp.String()) @@ -268,7 +269,7 @@ func (s *groupServer) GetGroupAllMember(ctx context.Context, req *pbGroup.GetGro } func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbGroup.GetGroupMemberListReq) (*pbGroup.GetGroupMemberListResp, error) { - log.NewInfo(req.OperationID, "GetGroupMemberList, args ", req.String()) + log.NewInfo(req.OperationID, "GetGroupMemberList args ", req.String()) var resp pbGroup.GetGroupMemberListResp memberList, err := imdb.GetGroupMemberByGroupID(req.GroupID, req.Filter, req.NextSeq, 30) if err != nil { @@ -280,7 +281,7 @@ func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbGroup.GetGr for _, v := range memberList { var node open_im_sdk.GroupMemberFullInfo - utils.CopyStructFields(&node, v) + utils.CopyStructFields(&node, &v) resp.MemberList = append(resp.MemberList, &node) } //db operate get db sorted by join time @@ -300,7 +301,7 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou ownerList, err := imdb.GetOwnerManagerByGroupID(req.GroupID) if err != nil { log.NewError(req.OperationID, "GetOwnerManagerByGroupId failed ", err.Error(), req.GroupID) - return &pbGroup.KickGroupMemberResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil + return &pbGroup.KickGroupMemberResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil } //op is group owner? var flag = 0 @@ -352,6 +353,7 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou log.NewError(req.OperationID, "RemoveGroupMember failed ", err.Error(), req.GroupID, v) resp.Id2ResultList = append(resp.Id2ResultList, &pbGroup.Id2Result{UserID: v, Result: -1}) } else { + log.NewDebug(req.OperationID, "kicked ", v) resp.Id2ResultList = append(resp.Id2ResultList, &pbGroup.Id2Result{UserID: v, Result: 0}) okUserIDList = append(okUserIDList, v) } @@ -435,13 +437,40 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G utils.CopyStructFields(&groupRequest, req) groupRequest.UserID = req.FromUserID groupRequest.HandleUserID = req.OpUserID + groupRequest.HandledTime = time.Now() + if !token_verify.IsMangerUserID(req.OpUserID) && !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) { + log.NewError(req.OperationID, "IsMangerUserID IsGroupOwnerAdmin false ", req.GroupID, req.OpUserID) + return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil + } err := imdb.UpdateGroupRequest(groupRequest) if err != nil { - log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), req.String()) + //{openIM002 7836e478bc43ce1d3b8889cac983f59b 1 ok 0001-01-01 00:00:00 +0000 UTC openIM001 0001-01-01 00:00:00 +0000 UTC } + log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), groupRequest) return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } chat.ApplicationProcessedNotification(req) if req.HandleResult == constant.GroupResponseAgree { + + if req.HandleResult == constant.GroupResponseAgree { + user, err := imdb.GetUserByUserID(req.FromUserID) + if err != nil { + log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), req.FromUserID) + return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil + } + member := imdb.GroupMember{} + member.GroupID = req.GroupID + member.UserID = req.FromUserID + member.RoleLevel = constant.GroupOrdinaryUsers + member.OperatorUserID = req.OpUserID + member.FaceUrl = user.FaceUrl + member.Nickname = user.Nickname + + err = imdb.InsertIntoGroupMember(member) + if err != nil { + log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), member) + return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil + } + } chat.MemberEnterNotification(req) } @@ -462,7 +491,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) groupRequest.ReqMsg = req.ReqMessage groupRequest.GroupID = req.GroupID - err = imdb.UpdateGroupRequest(groupRequest) + err = imdb.InsertIntoGroupRequest(groupRequest) if err != nil { log.NewError(req.OperationID, "UpdateGroupRequest ", err.Error(), groupRequest) return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil @@ -568,17 +597,19 @@ func (s *groupServer) TransferGroupOwner(_ context.Context, req *pbGroup.Transfe log.NewInfo(req.OperationID, "TransferGroupOwner ", req.String()) if req.OldOwnerUserID == req.NewOwnerUserID { - log.NewError(req.OperationID, "same owner ", req.String()) + log.NewError(req.OperationID, "same owner ", req.OldOwnerUserID, req.NewOwnerUserID) return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrArgs.ErrCode, ErrMsg: constant.ErrArgs.ErrMsg}}, nil } - groupMemberInfo := imdb.GroupMember{GroupID: req.GroupID, UserID: req.OldOwnerUserID, RoleLevel: 0} + groupMemberInfo := imdb.GroupMember{GroupID: req.GroupID, UserID: req.OldOwnerUserID, RoleLevel: constant.GroupOrdinaryUsers} err := imdb.UpdateGroupMemberInfo(groupMemberInfo) if err != nil { + log.NewError(req.OperationID, "UpdateGroupMemberInfo failed ", groupMemberInfo) return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } - groupMemberInfo = imdb.GroupMember{GroupID: req.GroupID, UserID: req.NewOwnerUserID, RoleLevel: 1} + groupMemberInfo = imdb.GroupMember{GroupID: req.GroupID, UserID: req.NewOwnerUserID, RoleLevel: constant.GroupOwner} err = imdb.UpdateGroupMemberInfo(groupMemberInfo) if err != nil { + log.NewError(req.OperationID, "UpdateGroupMemberInfo failed ", groupMemberInfo) return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } changedType := int32(1) << 4 diff --git a/pkg/base_info/group_api_struct.go b/pkg/base_info/group_api_struct.go index f6a5ef86f9a8ae7a604adf644aa1b4f012b46715..a602b790f5c532e37206e3dbe6ae2605161792ae 100644 --- a/pkg/base_info/group_api_struct.go +++ b/pkg/base_info/group_api_struct.go @@ -9,10 +9,6 @@ type CommResp struct { ErrCode int32 `json:"errCode"` ErrMsg string `json:"errMsg"` } -type Id2Result struct { - UserID string `json:"userID"` - Result int32 `json:"result"` -} type KickGroupMemberReq struct { GroupID string `json:"groupID" binding:"required"` @@ -22,7 +18,7 @@ type KickGroupMemberReq struct { } type KickGroupMemberResp struct { CommResp - Data []*Id2Result `json:"data"` + UserIDResultList []*UserIDResult `json:"data"` } type GetGroupMembersInfoReq struct { @@ -37,13 +33,13 @@ type GetGroupMembersInfoResp struct { type InviteUserToGroupReq struct { GroupID string `json:"groupID" binding:"required"` - InvitedUserIDList []string `json:"uidList" binding:"required"` + InvitedUserIDList []string `json:"invitedUserIDList" binding:"required"` Reason string `json:"reason"` OperationID string `json:"operationID" binding:"required"` } type InviteUserToGroupResp struct { CommResp - Data []Id2Result `json:"data"` + UserIDResultList []UserIDResult `json:"data"` } type GetJoinedGroupListReq struct { @@ -52,7 +48,7 @@ type GetJoinedGroupListReq struct { } type GetJoinedGroupListResp struct { CommResp - Data []*open_im_sdk.GroupInfo `json:"data"` + GroupInfoList []*open_im_sdk.GroupInfo `json:"data"` } type GetGroupMemberListReq struct { @@ -63,8 +59,8 @@ type GetGroupMemberListReq struct { } type GetGroupMemberListResp struct { CommResp - NextSeq int32 `json:"nextSeq"` - Data []*open_im_sdk.GroupMemberFullInfo `json:"data"` + NextSeq int32 `json:"nextSeq"` + MemberList []*open_im_sdk.GroupMemberFullInfo `json:"data"` } type GetGroupAllMemberReq struct { @@ -73,7 +69,7 @@ type GetGroupAllMemberReq struct { } type GetGroupAllMemberResp struct { CommResp - Data []*open_im_sdk.GroupMemberFullInfo `json:"data"` + MemberList []*open_im_sdk.GroupMemberFullInfo `json:"data"` } type CreateGroupReq struct { @@ -112,7 +108,7 @@ type ApplicationGroupResponseReq struct { GroupID string `json:"groupID" binding:"required"` FromUserID string `json:"fromUserID" binding:"required"` //application from FromUserID HandledMsg string `json:"handledMsg"` - HandleResult int32 `json:"handleResult" binding:"required, oneof=-1 1"` + HandleResult int32 `json:"handleResult" binding:"required,oneof=-1 1"` } type ApplicationGroupResponseResp struct { CommResp @@ -149,3 +145,6 @@ type TransferGroupOwnerReq struct { NewOwnerUserID string `json:"newOwnerUserID" binding:"required"` OperationID string `json:"operationID" binding:"required"` } +type TransferGroupOwnerResp struct { + CommResp +} diff --git a/pkg/common/db/mysql_model/im_mysql_model/friend_request_model.go b/pkg/common/db/mysql_model/im_mysql_model/friend_request_model.go index a8973c2e2ec6897643aa50cd5f3d9b65d6412211..5e99dcf5def304b9c5717fab38ca4c6cdcf265f8 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/friend_request_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/friend_request_model.go @@ -66,12 +66,9 @@ func UpdateFriendApplication(friendRequest *FriendRequest) error { return err } friendRequest.CreateTime = time.Now() - if dbConn.Table("friend_request").Where("from_user_id=? and to_user_id=?", - friendRequest.FromUserID, friendRequest.ToUserID).Update(&friendRequest).RowsAffected == 0 { - return InsertFriendApplication(friendRequest) - } else { - return nil - } + + return dbConn.Table("friend_request").Where("from_user_id=? and to_user_id=?", + friendRequest.FromUserID, friendRequest.ToUserID).Update(&friendRequest).Error } func InsertFriendApplication(friendRequest *FriendRequest) error { diff --git a/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go b/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go index 7e4afb40212a13418fa42e34a143514e8c88d908..95f4c5723b4b9dd76b9b5020427766b2f60598b7 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go @@ -210,6 +210,19 @@ func GetJoinedGroupIDListByUserID(userID string) ([]string, error) { return groupIDList, nil } +func IsGroupOwnerAdmin(groupID, UserID string) bool { + groupMemberList, err := GetOwnerManagerByGroupID(groupID) + if err != nil { + return false + } + for _, v := range groupMemberList { + if v.UserID == UserID && v.RoleLevel > constant.GroupOrdinaryUsers { + return true + } + } + return false +} + // //func SelectGroupList(groupID string) ([]string, error) { // var groupUserID string 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 5c7d3000b429b2bae22d43832687f66a9188ee5e..9ccffeaba641ae8b1fe48b68b3a8d8303c270776 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 @@ -24,17 +24,10 @@ func UpdateGroupRequest(groupRequest GroupRequest) error { if err != nil { return err } - if groupRequest.HandledTime.Unix() < 0 { groupRequest.HandledTime = utils.UnixSecondToTime(0) } - - //RowsAffected - if dbConn.Table("group_request").Where("group_id=? and user_id=?", groupRequest.GroupID, groupRequest.UserID).Update(&groupRequest).RowsAffected == 0 { - return InsertIntoGroupRequest(groupRequest) - } else { - return nil - } + return dbConn.Table("group_request").Where("group_id=? and user_id=?", groupRequest.GroupID, groupRequest.UserID).Update(&groupRequest).Error } func InsertIntoGroupRequest(toInsertInfo GroupRequest) error {