From 2c7f7f27d3838a46f5fa66c608dffe6a61ddfe0a Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 9 Jan 2023 18:01:41 +0800 Subject: [PATCH] group rpc --- cmd/open_im_api/main.go | 328 ++++++++++++++++++------------------ go.mod | 1 + internal/api/group/group.go | 205 +++++++++++----------- internal/api_to_rpc/api.go | 5 +- pkg/utils/getcd.go | 34 ++++ 5 files changed, 309 insertions(+), 264 deletions(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index c99094c83..b2d211f5e 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -60,175 +60,175 @@ func main() { r.GET("/metrics", promePkg.PrometheusHandler()) } // user routing group, which handles user registration and login services - userRouterGroup := r.Group("/user") - { - userRouterGroup.POST("/update_user_info", user.UpdateUserInfo) //1 - userRouterGroup.POST("/set_global_msg_recv_opt", user.SetGlobalRecvMessageOpt) - userRouterGroup.POST("/get_users_info", user.GetUsersPublicInfo) //1 - userRouterGroup.POST("/get_self_user_info", user.GetSelfUserInfo) //1 - userRouterGroup.POST("/get_users_online_status", user.GetUsersOnlineStatus) //1 - userRouterGroup.POST("/get_users_info_from_cache", user.GetUsersInfoFromCache) - userRouterGroup.POST("/get_user_friend_from_cache", user.GetFriendIDListFromCache) - userRouterGroup.POST("/get_black_list_from_cache", user.GetBlackIDListFromCache) - userRouterGroup.POST("/get_all_users_uid", manage.GetAllUsersUid) //1 - userRouterGroup.POST("/account_check", manage.AccountCheck) //1 - // userRouterGroup.POST("/get_users_online_status", manage.GetUsersOnlineStatus) //1 - userRouterGroup.POST("/get_users", user.GetUsers) - } - //friend routing group - friendRouterGroup := r.Group("/friend") - { - // friendRouterGroup.POST("/get_friends_info", friend.GetFriendsInfo) - friendRouterGroup.POST("/add_friend", friend.AddFriend) //1 - friendRouterGroup.POST("/delete_friend", friend.DeleteFriend) //1 - friendRouterGroup.POST("/get_friend_apply_list", friend.GetFriendApplyList) //1 - friendRouterGroup.POST("/get_self_friend_apply_list", friend.GetSelfFriendApplyList) //1 - friendRouterGroup.POST("/get_friend_list", friend.GetFriendList) //1 - friendRouterGroup.POST("/add_friend_response", friend.AddFriendResponse) //1 - friendRouterGroup.POST("/set_friend_remark", friend.SetFriendRemark) //1 - - friendRouterGroup.POST("/add_black", friend.AddBlack) //1 - friendRouterGroup.POST("/get_black_list", friend.GetBlacklist) //1 - friendRouterGroup.POST("/remove_black", friend.RemoveBlack) //1 - - friendRouterGroup.POST("/import_friend", friend.ImportFriend) //1 - friendRouterGroup.POST("/is_friend", friend.IsFriend) //1 - } + //userRouterGroup := r.Group("/user") + //{ + // userRouterGroup.POST("/update_user_info", user.UpdateUserInfo) //1 + // userRouterGroup.POST("/set_global_msg_recv_opt", user.SetGlobalRecvMessageOpt) + // userRouterGroup.POST("/get_users_info", user.GetUsersPublicInfo) //1 + // userRouterGroup.POST("/get_self_user_info", user.GetSelfUserInfo) //1 + // userRouterGroup.POST("/get_users_online_status", user.GetUsersOnlineStatus) //1 + // userRouterGroup.POST("/get_users_info_from_cache", user.GetUsersInfoFromCache) + // userRouterGroup.POST("/get_user_friend_from_cache", user.GetFriendIDListFromCache) + // userRouterGroup.POST("/get_black_list_from_cache", user.GetBlackIDListFromCache) + // userRouterGroup.POST("/get_all_users_uid", manage.GetAllUsersUid) //1 + // userRouterGroup.POST("/account_check", manage.AccountCheck) //1 + // // userRouterGroup.POST("/get_users_online_status", manage.GetUsersOnlineStatus) //1 + // userRouterGroup.POST("/get_users", user.GetUsers) + //} + ////friend routing group + //friendRouterGroup := r.Group("/friend") + //{ + // // friendRouterGroup.POST("/get_friends_info", friend.GetFriendsInfo) + // friendRouterGroup.POST("/add_friend", friend.AddFriend) //1 + // friendRouterGroup.POST("/delete_friend", friend.DeleteFriend) //1 + // friendRouterGroup.POST("/get_friend_apply_list", friend.GetFriendApplyList) //1 + // friendRouterGroup.POST("/get_self_friend_apply_list", friend.GetSelfFriendApplyList) //1 + // friendRouterGroup.POST("/get_friend_list", friend.GetFriendList) //1 + // friendRouterGroup.POST("/add_friend_response", friend.AddFriendResponse) //1 + // friendRouterGroup.POST("/set_friend_remark", friend.SetFriendRemark) //1 + // + // friendRouterGroup.POST("/add_black", friend.AddBlack) //1 + // friendRouterGroup.POST("/get_black_list", friend.GetBlacklist) //1 + // friendRouterGroup.POST("/remove_black", friend.RemoveBlack) //1 + // + // friendRouterGroup.POST("/import_friend", friend.ImportFriend) //1 + // friendRouterGroup.POST("/is_friend", friend.IsFriend) //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) //1 - groupRouterGroup.POST("/transfer_group", group.TransferGroupOwner) //1 - groupRouterGroup.POST("/get_recv_group_applicationList", group.GetRecvGroupApplicationList) //1 - groupRouterGroup.POST("/get_user_req_group_applicationList", group.GetUserReqGroupApplicationList) - 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.GetGroupAllMemberList) //1 - groupRouterGroup.POST("/get_group_members_info", group.GetGroupMembersInfo) //1 - groupRouterGroup.POST("/invite_user_to_group", group.InviteUserToGroup) //1 - groupRouterGroup.POST("/get_joined_group_list", group.GetJoinedGroupList) - groupRouterGroup.POST("/dismiss_group", group.DismissGroup) // - groupRouterGroup.POST("/mute_group_member", group.MuteGroupMember) - groupRouterGroup.POST("/cancel_mute_group_member", group.CancelMuteGroupMember) //MuteGroup - groupRouterGroup.POST("/mute_group", group.MuteGroup) - groupRouterGroup.POST("/cancel_mute_group", group.CancelMuteGroup) - groupRouterGroup.POST("/set_group_member_nickname", group.SetGroupMemberNickname) - groupRouterGroup.POST("/set_group_member_info", group.SetGroupMemberInfo) - groupRouterGroup.POST("/get_group_abstract_info", group.GetGroupAbstractInfo) + groupRouterGroup.POST("/create_group", group.NewCreateGroup) //1 + groupRouterGroup.POST("/set_group_info", group.NewSetGroupInfo) //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_recv_group_applicationList", group.GetRecvGroupApplicationList) //1 + //groupRouterGroup.POST("/get_user_req_group_applicationList", group.GetUserReqGroupApplicationList) + //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.GetGroupAllMemberList) //1 + //groupRouterGroup.POST("/get_group_members_info", group.GetGroupMembersInfo) //1 + //groupRouterGroup.POST("/invite_user_to_group", group.InviteUserToGroup) //1 + //groupRouterGroup.POST("/get_joined_group_list", group.GetJoinedGroupList) + //groupRouterGroup.POST("/dismiss_group", group.DismissGroup) // + //groupRouterGroup.POST("/mute_group_member", group.MuteGroupMember) + //groupRouterGroup.POST("/cancel_mute_group_member", group.CancelMuteGroupMember) //MuteGroup + //groupRouterGroup.POST("/mute_group", group.MuteGroup) + //groupRouterGroup.POST("/cancel_mute_group", group.CancelMuteGroup) + //groupRouterGroup.POST("/set_group_member_nickname", group.SetGroupMemberNickname) + //groupRouterGroup.POST("/set_group_member_info", group.SetGroupMemberInfo) + //groupRouterGroup.POST("/get_group_abstract_info", group.GetGroupAbstractInfo) //groupRouterGroup.POST("/get_group_all_member_list_by_split", group.GetGroupAllMemberListBySplit) } - superGroupRouterGroup := r.Group("/super_group") - { - superGroupRouterGroup.POST("/get_joined_group_list", group.GetJoinedSuperGroupList) - superGroupRouterGroup.POST("/get_groups_info", group.GetSuperGroupsInfo) - } - //certificate - authRouterGroup := r.Group("/auth") - { - authRouterGroup.POST("/user_register", apiAuth.UserRegister) //1 - authRouterGroup.POST("/user_token", apiAuth.UserToken) //1 - authRouterGroup.POST("/parse_token", apiAuth.ParseToken) //1 - authRouterGroup.POST("/force_logout", apiAuth.ForceLogout) //1 - } - //Third service - thirdGroup := r.Group("/third") - { - thirdGroup.POST("/tencent_cloud_storage_credential", apiThird.TencentCloudStorageCredential) - thirdGroup.POST("/ali_oss_credential", apiThird.AliOSSCredential) - thirdGroup.POST("/minio_storage_credential", apiThird.MinioStorageCredential) - thirdGroup.POST("/minio_upload", apiThird.MinioUploadFile) - thirdGroup.POST("/upload_update_app", apiThird.UploadUpdateApp) - thirdGroup.POST("/get_download_url", apiThird.GetDownloadURL) - thirdGroup.POST("/get_rtc_invitation_info", apiThird.GetRTCInvitationInfo) - thirdGroup.POST("/get_rtc_invitation_start_app", apiThird.GetRTCInvitationInfoStartApp) - thirdGroup.POST("/fcm_update_token", apiThird.FcmUpdateToken) - thirdGroup.POST("/aws_storage_credential", apiThird.AwsStorageCredential) - thirdGroup.POST("/set_app_badge", apiThird.SetAppBadge) - } - //Message - chatGroup := r.Group("/msg") - { - chatGroup.POST("/newest_seq", apiChat.GetSeq) - chatGroup.POST("/send_msg", apiChat.SendMsg) - chatGroup.POST("/pull_msg_by_seq", apiChat.PullMsgBySeqList) - chatGroup.POST("/del_msg", apiChat.DelMsg) - chatGroup.POST("/del_super_group_msg", apiChat.DelSuperGroupMsg) - chatGroup.POST("/clear_msg", apiChat.ClearMsg) - chatGroup.POST("/manage_send_msg", manage.ManagementSendMsg) - chatGroup.POST("/batch_send_msg", manage.ManagementBatchSendMsg) - chatGroup.POST("/check_msg_is_send_success", manage.CheckMsgIsSendSuccess) - chatGroup.POST("/set_msg_min_seq", apiChat.SetMsgMinSeq) - - chatGroup.POST("/set_message_reaction_extensions", apiChat.SetMessageReactionExtensions) - chatGroup.POST("/get_message_list_reaction_extensions", apiChat.GetMessageListReactionExtensions) - chatGroup.POST("/add_message_reaction_extensions", apiChat.AddMessageReactionExtensions) - chatGroup.POST("/delete_message_reaction_extensions", apiChat.DeleteMessageReactionExtensions) - } - //Conversation - conversationGroup := r.Group("/conversation") - { //1 - conversationGroup.POST("/get_all_conversations", conversation.GetAllConversations) - conversationGroup.POST("/get_conversation", conversation.GetConversation) - conversationGroup.POST("/get_conversations", conversation.GetConversations) - conversationGroup.POST("/set_conversation", conversation.SetConversation) - conversationGroup.POST("/batch_set_conversation", conversation.BatchSetConversations) - conversationGroup.POST("/set_recv_msg_opt", conversation.SetRecvMsgOpt) - conversationGroup.POST("/modify_conversation_field", conversation.ModifyConversationField) - } - // office - officeGroup := r.Group("/office") - { - officeGroup.POST("/get_user_tags", office.GetUserTags) - officeGroup.POST("/get_user_tag_by_id", office.GetUserTagByID) - officeGroup.POST("/create_tag", office.CreateTag) - officeGroup.POST("/delete_tag", office.DeleteTag) - officeGroup.POST("/set_tag", office.SetTag) - officeGroup.POST("/send_msg_to_tag", office.SendMsg2Tag) - officeGroup.POST("/get_send_tag_log", office.GetTagSendLogs) - - officeGroup.POST("/create_one_work_moment", office.CreateOneWorkMoment) - officeGroup.POST("/delete_one_work_moment", office.DeleteOneWorkMoment) - officeGroup.POST("/like_one_work_moment", office.LikeOneWorkMoment) - officeGroup.POST("/comment_one_work_moment", office.CommentOneWorkMoment) - officeGroup.POST("/get_work_moment_by_id", office.GetWorkMomentByID) - officeGroup.POST("/get_user_work_moments", office.GetUserWorkMoments) - officeGroup.POST("/get_user_friend_work_moments", office.GetUserFriendWorkMoments) - officeGroup.POST("/set_user_work_moments_level", office.SetUserWorkMomentsLevel) - officeGroup.POST("/delete_comment", office.DeleteComment) - } - - organizationGroup := r.Group("/organization") - { - organizationGroup.POST("/create_department", organization.CreateDepartment) - organizationGroup.POST("/update_department", organization.UpdateDepartment) - organizationGroup.POST("/get_sub_department", organization.GetSubDepartment) - organizationGroup.POST("/delete_department", organization.DeleteDepartment) - organizationGroup.POST("/get_all_department", organization.GetAllDepartment) - - organizationGroup.POST("/create_organization_user", organization.CreateOrganizationUser) - organizationGroup.POST("/update_organization_user", organization.UpdateOrganizationUser) - organizationGroup.POST("/delete_organization_user", organization.DeleteOrganizationUser) - - organizationGroup.POST("/create_department_member", organization.CreateDepartmentMember) - organizationGroup.POST("/get_user_in_department", organization.GetUserInDepartment) - organizationGroup.POST("/update_user_in_department", organization.UpdateUserInDepartment) - - organizationGroup.POST("/get_department_member", organization.GetDepartmentMember) - organizationGroup.POST("/delete_user_in_department", organization.DeleteUserInDepartment) - organizationGroup.POST("/get_user_in_organization", organization.GetUserInOrganization) - } - - initGroup := r.Group("/init") - { - initGroup.POST("/set_client_config", clientInit.SetClientInitConfig) - initGroup.POST("/get_client_config", clientInit.GetClientInitConfig) - } - go getcdv3.RegisterConf() + //superGroupRouterGroup := r.Group("/super_group") + //{ + // superGroupRouterGroup.POST("/get_joined_group_list", group.GetJoinedSuperGroupList) + // superGroupRouterGroup.POST("/get_groups_info", group.GetSuperGroupsInfo) + //} + ////certificate + //authRouterGroup := r.Group("/auth") + //{ + // authRouterGroup.POST("/user_register", apiAuth.UserRegister) //1 + // authRouterGroup.POST("/user_token", apiAuth.UserToken) //1 + // authRouterGroup.POST("/parse_token", apiAuth.ParseToken) //1 + // authRouterGroup.POST("/force_logout", apiAuth.ForceLogout) //1 + //} + ////Third service + //thirdGroup := r.Group("/third") + //{ + // thirdGroup.POST("/tencent_cloud_storage_credential", apiThird.TencentCloudStorageCredential) + // thirdGroup.POST("/ali_oss_credential", apiThird.AliOSSCredential) + // thirdGroup.POST("/minio_storage_credential", apiThird.MinioStorageCredential) + // thirdGroup.POST("/minio_upload", apiThird.MinioUploadFile) + // thirdGroup.POST("/upload_update_app", apiThird.UploadUpdateApp) + // thirdGroup.POST("/get_download_url", apiThird.GetDownloadURL) + // thirdGroup.POST("/get_rtc_invitation_info", apiThird.GetRTCInvitationInfo) + // thirdGroup.POST("/get_rtc_invitation_start_app", apiThird.GetRTCInvitationInfoStartApp) + // thirdGroup.POST("/fcm_update_token", apiThird.FcmUpdateToken) + // thirdGroup.POST("/aws_storage_credential", apiThird.AwsStorageCredential) + // thirdGroup.POST("/set_app_badge", apiThird.SetAppBadge) + //} + ////Message + //chatGroup := r.Group("/msg") + //{ + // chatGroup.POST("/newest_seq", apiChat.GetSeq) + // chatGroup.POST("/send_msg", apiChat.SendMsg) + // chatGroup.POST("/pull_msg_by_seq", apiChat.PullMsgBySeqList) + // chatGroup.POST("/del_msg", apiChat.DelMsg) + // chatGroup.POST("/del_super_group_msg", apiChat.DelSuperGroupMsg) + // chatGroup.POST("/clear_msg", apiChat.ClearMsg) + // chatGroup.POST("/manage_send_msg", manage.ManagementSendMsg) + // chatGroup.POST("/batch_send_msg", manage.ManagementBatchSendMsg) + // chatGroup.POST("/check_msg_is_send_success", manage.CheckMsgIsSendSuccess) + // chatGroup.POST("/set_msg_min_seq", apiChat.SetMsgMinSeq) + // + // chatGroup.POST("/set_message_reaction_extensions", apiChat.SetMessageReactionExtensions) + // chatGroup.POST("/get_message_list_reaction_extensions", apiChat.GetMessageListReactionExtensions) + // chatGroup.POST("/add_message_reaction_extensions", apiChat.AddMessageReactionExtensions) + // chatGroup.POST("/delete_message_reaction_extensions", apiChat.DeleteMessageReactionExtensions) + //} + ////Conversation + //conversationGroup := r.Group("/conversation") + //{ //1 + // conversationGroup.POST("/get_all_conversations", conversation.GetAllConversations) + // conversationGroup.POST("/get_conversation", conversation.GetConversation) + // conversationGroup.POST("/get_conversations", conversation.GetConversations) + // conversationGroup.POST("/set_conversation", conversation.SetConversation) + // conversationGroup.POST("/batch_set_conversation", conversation.BatchSetConversations) + // conversationGroup.POST("/set_recv_msg_opt", conversation.SetRecvMsgOpt) + // conversationGroup.POST("/modify_conversation_field", conversation.ModifyConversationField) + //} + //// office + //officeGroup := r.Group("/office") + //{ + // officeGroup.POST("/get_user_tags", office.GetUserTags) + // officeGroup.POST("/get_user_tag_by_id", office.GetUserTagByID) + // officeGroup.POST("/create_tag", office.CreateTag) + // officeGroup.POST("/delete_tag", office.DeleteTag) + // officeGroup.POST("/set_tag", office.SetTag) + // officeGroup.POST("/send_msg_to_tag", office.SendMsg2Tag) + // officeGroup.POST("/get_send_tag_log", office.GetTagSendLogs) + // + // officeGroup.POST("/create_one_work_moment", office.CreateOneWorkMoment) + // officeGroup.POST("/delete_one_work_moment", office.DeleteOneWorkMoment) + // officeGroup.POST("/like_one_work_moment", office.LikeOneWorkMoment) + // officeGroup.POST("/comment_one_work_moment", office.CommentOneWorkMoment) + // officeGroup.POST("/get_work_moment_by_id", office.GetWorkMomentByID) + // officeGroup.POST("/get_user_work_moments", office.GetUserWorkMoments) + // officeGroup.POST("/get_user_friend_work_moments", office.GetUserFriendWorkMoments) + // officeGroup.POST("/set_user_work_moments_level", office.SetUserWorkMomentsLevel) + // officeGroup.POST("/delete_comment", office.DeleteComment) + //} + // + //organizationGroup := r.Group("/organization") + //{ + // organizationGroup.POST("/create_department", organization.CreateDepartment) + // organizationGroup.POST("/update_department", organization.UpdateDepartment) + // organizationGroup.POST("/get_sub_department", organization.GetSubDepartment) + // organizationGroup.POST("/delete_department", organization.DeleteDepartment) + // organizationGroup.POST("/get_all_department", organization.GetAllDepartment) + // + // organizationGroup.POST("/create_organization_user", organization.CreateOrganizationUser) + // organizationGroup.POST("/update_organization_user", organization.UpdateOrganizationUser) + // organizationGroup.POST("/delete_organization_user", organization.DeleteOrganizationUser) + // + // organizationGroup.POST("/create_department_member", organization.CreateDepartmentMember) + // organizationGroup.POST("/get_user_in_department", organization.GetUserInDepartment) + // organizationGroup.POST("/update_user_in_department", organization.UpdateUserInDepartment) + // + // organizationGroup.POST("/get_department_member", organization.GetDepartmentMember) + // organizationGroup.POST("/delete_user_in_department", organization.DeleteUserInDepartment) + // organizationGroup.POST("/get_user_in_organization", organization.GetUserInOrganization) + //} + // + //initGroup := r.Group("/init") + //{ + // initGroup.POST("/set_client_config", clientInit.SetClientInitConfig) + // initGroup.POST("/get_client_config", clientInit.GetClientInitConfig) + //} + go utils.RegisterConf() go apiThird.MinioInit() defaultPorts := config.Config.Api.GinPort ginPort := flag.Int("port", defaultPorts[0], "get ginServerPort from cmd,default 10002 as port") diff --git a/go.mod b/go.mod index c4f0e5dee..8453a0ae2 100644 --- a/go.mod +++ b/go.mod @@ -49,6 +49,7 @@ require ( github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.428 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.428 github.com/tencentyun/qcloud-cos-sts-sdk v0.0.0-20210325043845-84a0811633ca + go.etcd.io/etcd/client/v3 v3.5.5 // indirect go.mongodb.org/mongo-driver v1.8.3 go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.7.0 // indirect diff --git a/internal/api/group/group.go b/internal/api/group/group.go index 64a52ddbb..be4596b6f 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -64,7 +64,7 @@ func KickGroupMember(c *gin.Context) { log.NewInfo(req.OperationID, "KickGroupMember args ", req.String()) - etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) if etcdConn == nil { errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" log.NewError(req.OperationID, errMsg) @@ -385,64 +385,69 @@ func InviteUserToGroup(c *gin.Context) { // @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" // @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" // @Router /group/create_group [post] -func CreateGroup(c *gin.Context) { - params := api.CreateGroupReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } +//func CreateGroup(c *gin.Context) { +// params := api.CreateGroupReq{} +// if err := c.BindJSON(¶ms); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// +// if len(params.MemberList) > constant.MaxNotificationNum { +// errMsg := params.OperationID + " too many members " + utils.Int32ToString(int32(len(params.MemberList))) +// log.Error(params.OperationID, errMsg) +// c.JSON(http.StatusOK, gin.H{"errCode": 400, "errMsg": errMsg}) +// return +// } +// req := &rpc.CreateGroupReq{GroupInfo: &open_im_sdk.GroupInfo{}} +// utils.CopyStructFields(req.GroupInfo, ¶ms) +// +// for _, v := range params.MemberList { +// req.InitMemberList = append(req.InitMemberList, &rpc.GroupAddMemberInfo{UserID: v.UserID, RoleLevel: v.RoleLevel}) +// } +// +// var ok bool +// var errInfo string +// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": errMsg}) +// return +// } +// +// req.OwnerUserID = params.OwnerUserID +// req.OperationID = params.OperationID +// +// log.NewInfo(req.OperationID, "CreateGroup args ", req.String()) +// +// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// RpcResp, err := client.CreateGroup(context.Background(), req) +// if err != nil { +// log.NewError(req.OperationID, "CreateGroup failed ", err.Error(), req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"}) +// return +// } +// +// resp := api.CreateGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} +// if RpcResp.ErrCode == 0 { +// utils.CopyStructFields(&resp.GroupInfo, RpcResp.GroupInfo) +// resp.Data = jsonData.JsonDataOne(&resp.GroupInfo) +// } +// log.NewInfo(req.OperationID, "CreateGroup api return ", resp) +// c.JSON(http.StatusOK, resp) +//} - if len(params.MemberList) > constant.MaxNotificationNum { - errMsg := params.OperationID + " too many members " + utils.Int32ToString(int32(len(params.MemberList))) - log.Error(params.OperationID, errMsg) - c.JSON(http.StatusOK, gin.H{"errCode": 400, "errMsg": errMsg}) - return - } - req := &rpc.CreateGroupReq{GroupInfo: &open_im_sdk.GroupInfo{}} - utils.CopyStructFields(req.GroupInfo, ¶ms) - - for _, v := range params.MemberList { - req.InitMemberList = append(req.InitMemberList, &rpc.GroupAddMemberInfo{UserID: v.UserID, RoleLevel: v.RoleLevel}) - } - - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": errMsg}) - return - } - - req.OwnerUserID = params.OwnerUserID - req.OperationID = params.OperationID - - log.NewInfo(req.OperationID, "CreateGroup args ", req.String()) - - etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - RpcResp, err := client.CreateGroup(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, "CreateGroup failed ", err.Error(), req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"}) - return - } - - resp := api.CreateGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} - if RpcResp.ErrCode == 0 { - utils.CopyStructFields(&resp.GroupInfo, RpcResp.GroupInfo) - resp.Data = jsonData.JsonDataOne(&resp.GroupInfo) - } - log.NewInfo(req.OperationID, "CreateGroup api return ", resp) - c.JSON(http.StatusOK, resp) +func NewCreateGroup(c *gin.Context) { + common.ApiToRpc(c, &api.CreateGroupReq{}, &api.CreateGroupResp{}, + config.Config.RpcRegisterName.OpenImGroupName, rpc.NewGroupClient, "CreateGroup", token_verify.ParseUserIDFromToken) } // @Summary 获取用户收到的加群信息列表 @@ -756,47 +761,53 @@ func QuitGroup(c *gin.Context) { // @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误" // @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等" // @Router /group/set_group_info [post] -func SetGroupInfo(c *gin.Context) { - params := api.SetGroupInfoReq{} - if err := c.BindJSON(¶ms); err != nil { - log.NewError("0", "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - req := &rpc.SetGroupInfoReq{GroupInfoForSet: &open_im_sdk.GroupInfoForSet{}} - utils.CopyStructFields(req.GroupInfoForSet, ¶ms) - req.OperationID = params.OperationID - argsHandle(¶ms, req) - var ok bool - var errInfo string - ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) - if !ok { - errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } +//func SetGroupInfo(c *gin.Context) { +// params := api.SetGroupInfoReq{} +// if err := c.BindJSON(¶ms); err != nil { +// log.NewError("0", "BindJSON failed ", err.Error()) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) +// return +// } +// req := &rpc.SetGroupInfoReq{GroupInfoForSet: &open_im_sdk.GroupInfoForSet{}} +// utils.CopyStructFields(req.GroupInfoForSet, ¶ms) +// req.OperationID = params.OperationID +// argsHandle(¶ms, req) +// var ok bool +// var errInfo string +// ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) +// if !ok { +// errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// +// log.NewInfo(req.OperationID, "SetGroupInfo args ", req.String()) +// +// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) +// if etcdConn == nil { +// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" +// log.NewError(req.OperationID, errMsg) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) +// return +// } +// client := rpc.NewGroupClient(etcdConn) +// RpcResp, err := client.SetGroupInfo(context.Background(), req) +// if err != nil { +// log.NewError(req.OperationID, "SetGroupInfo failed ", err.Error(), req.String()) +// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"}) +// return +// } +// resp := api.SetGroupInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}} +// c.JSON(http.StatusOK, resp) +// log.NewInfo(req.OperationID, "SetGroupInfo api return ", resp) +//} - log.NewInfo(req.OperationID, "SetGroupInfo args ", req.String()) - - etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName, req.OperationID) - if etcdConn == nil { - errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil" - log.NewError(req.OperationID, errMsg) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - client := rpc.NewGroupClient(etcdConn) - RpcResp, err := client.SetGroupInfo(context.Background(), req) - if err != nil { - log.NewError(req.OperationID, "SetGroupInfo failed ", err.Error(), req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"}) - return - } - resp := api.SetGroupInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}} - c.JSON(http.StatusOK, resp) - log.NewInfo(req.OperationID, "SetGroupInfo api return ", resp) +func NewSetGroupInfo(c *gin.Context) { + common.ApiToRpc(c, &api.SetGroupInfoReq{}, &api.SetGroupInfoResp{}, + config.Config.RpcRegisterName.OpenImGroupName, rpc.NewGroupClient, "SetGroupInfo", token_verify.ParseUserIDFromToken) } + func argsHandle(params *api.SetGroupInfoReq, req *rpc.SetGroupInfoReq) { if params.NeedVerification != nil { req.GroupInfoForSet.NeedVerification = &wrappers.Int32Value{Value: *params.NeedVerification} diff --git a/internal/api_to_rpc/api.go b/internal/api_to_rpc/api.go index 071b30955..43cbc9d48 100644 --- a/internal/api_to_rpc/api.go +++ b/internal/api_to_rpc/api.go @@ -4,6 +4,7 @@ import ( "Open_IM/internal/fault_tolerant" "Open_IM/pkg/common/constant" "Open_IM/pkg/common/trace_log" + utils2 "Open_IM/pkg/utils" "context" utils "github.com/OpenIMSDK/open_utils" "github.com/gin-gonic/gin" @@ -20,10 +21,8 @@ func ApiToRpc(c *gin.Context, apiReq, apiResp interface{}, rpcName string, fn in reqValue := reflect.ValueOf(apiReq).Elem() operationID := reqValue.FieldByName("OperationID").String() trace_log.SetOperationID(nCtx, operationID) - trace_log.SetContextInfo(nCtx, "BindJSON", nil, "params", apiReq) - - etcdConn, err := fault_tolerant.GetDefaultConn(rpcName, operationID) + etcdConn, err := utils2.GetConn(c, rpcName) if err != nil { trace_log.WriteErrorResponse(nCtx, "GetDefaultConn", err) return diff --git a/pkg/utils/getcd.go b/pkg/utils/getcd.go index fda41429a..dd90f031c 100644 --- a/pkg/utils/getcd.go +++ b/pkg/utils/getcd.go @@ -5,9 +5,13 @@ import ( "Open_IM/pkg/common/constant" "Open_IM/pkg/common/trace_log" "context" + "fmt" "github.com/OpenIMSDK/getcdv3" + clientv3 "go.etcd.io/etcd/client/v3" + "time" "google.golang.org/grpc" + "gopkg.in/yaml.v3" "strings" ) @@ -22,3 +26,33 @@ func GetConn(ctx context.Context, serviceName string) (conn *grpc.ClientConn, er } return conn, nil } + +func registerConf(key, conf string) { + etcdAddr := strings.Join(config.Config.Etcd.EtcdAddr, ",") + cli, err := clientv3.New(clientv3.Config{ + Endpoints: strings.Split(etcdAddr, ","), DialTimeout: 5 * time.Second}) + + if err != nil { + panic(err.Error()) + } + //lease + if _, err := cli.Put(context.Background(), key, conf); err != nil { + fmt.Println("panic, params: ") + panic(err.Error()) + } +} + +func RegisterConf() { + bytes, err := yaml.Marshal(config.Config) + if err != nil { + panic(err.Error()) + } + secretMD5 := Md5(config.Config.Etcd.Secret) + confBytes, err := AesEncrypt(bytes, []byte(secretMD5[0:16])) + if err != nil { + panic(err.Error()) + } + fmt.Println("start register", secretMD5, getcdv3.GetPrefix(config.Config.Etcd.EtcdSchema, config.ConfName)) + registerConf(getcdv3.GetPrefix(config.Config.Etcd.EtcdSchema, config.ConfName), string(confBytes)) + fmt.Println("etcd register conf ok") +}