From 4a631753a0e1efb73430ed7935d72fd2d526c835 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 1 May 2022 12:04:31 +0800 Subject: [PATCH 001/143] add msgToMQSingle && msgToMQGroup --- cmd/Open-IM-SDK-Core | 2 +- internal/rpc/msg/send_msg.go | 60 +++++++++++++++++++----------------- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index b0897aa3a..fddfa3034 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit b0897aa3abe719729c2ce099404f08806917bfe3 +Subproject commit fddfa30348d77fe7d5767ef410b1f30d042062bf diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 4ea631b07..013ee16cc 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -146,7 +146,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S // return returnMsg(&replay, pb, http.StatusUnauthorized, "token validate err,not authorized", "", 0) rpc.encapsulateMsgData(pb.MsgData) log.Info("", "this is a test MsgData ", pb.MsgData) - msgToMQ := pbChat.MsgDataToMQ{Token: pb.Token, OperationID: pb.OperationID, MsgData: pb.MsgData} + msgToMQSingle := pbChat.MsgDataToMQ{Token: pb.Token, OperationID: pb.OperationID, MsgData: pb.MsgData} //options := utils.JsonStringToMap(pbData.Options) isHistory := utils.GetSwitchFromOptions(pb.MsgData.Options, constant.IsHistory) mReq := MsgCallBackReq{ @@ -186,18 +186,18 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S } isSend := modifyMessageByUserMessageReceiveOpt(pb.MsgData.RecvID, pb.MsgData.SendID, constant.SingleChatType, pb) if isSend { - msgToMQ.MsgData = pb.MsgData - log.NewInfo(msgToMQ.OperationID, msgToMQ) - err1 := rpc.sendMsgToKafka(&msgToMQ, msgToMQ.MsgData.RecvID) + msgToMQSingle.MsgData = pb.MsgData + log.NewInfo(msgToMQSingle.OperationID, msgToMQSingle) + err1 := rpc.sendMsgToKafka(&msgToMQSingle, msgToMQSingle.MsgData.RecvID) if err1 != nil { - log.NewError(msgToMQ.OperationID, "kafka send msg err:RecvID", msgToMQ.MsgData.RecvID, msgToMQ.String()) + log.NewError(msgToMQSingle.OperationID, "kafka send msg err:RecvID", msgToMQSingle.MsgData.RecvID, msgToMQSingle.String()) return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) } } - if msgToMQ.MsgData.SendID != msgToMQ.MsgData.RecvID { //Filter messages sent to yourself - err2 := rpc.sendMsgToKafka(&msgToMQ, msgToMQ.MsgData.SendID) + if msgToMQSingle.MsgData.SendID != msgToMQSingle.MsgData.RecvID { //Filter messages sent to yourself + err2 := rpc.sendMsgToKafka(&msgToMQSingle, msgToMQSingle.MsgData.SendID) if err2 != nil { - log.NewError(msgToMQ.OperationID, "kafka send msg err:SendID", msgToMQ.MsgData.SendID, msgToMQ.String()) + log.NewError(msgToMQSingle.OperationID, "kafka send msg err:SendID", msgToMQSingle.MsgData.SendID, msgToMQSingle.String()) return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) } } @@ -205,7 +205,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S if err := callbackAfterSendSingleMsg(pb); err != nil { log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackAfterSendSingleMsg failed", err.Error()) } - return returnMsg(&replay, pb, 0, "", msgToMQ.MsgData.ServerMsgID, msgToMQ.MsgData.SendTime) + return returnMsg(&replay, pb, 0, "", msgToMQSingle.MsgData.ServerMsgID, msgToMQSingle.MsgData.SendTime) case constant.GroupChatType: // callback canSend, err := callbackBeforeSendGroupMsg(pb) @@ -268,14 +268,15 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S for i := 0; i < len(memberUserIDList)/split; i++ { wg.Add(1) go func(list []string) { + msgToMQGroup := pbChat.MsgDataToMQ{Token: pb.Token, OperationID: pb.OperationID, MsgData: pb.MsgData} for _, v := range list { pb.MsgData.RecvID = v isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, pb) if isSend { - msgToMQ.MsgData = pb.MsgData - err := rpc.sendMsgToKafka(&msgToMQ, v) + msgToMQGroup.MsgData = pb.MsgData + err := rpc.sendMsgToKafka(&msgToMQGroup, v) if err != nil { - log.NewError(msgToMQ.OperationID, "kafka send msg err:UserId", v, msgToMQ.String()) + log.NewError(msgToMQGroup.OperationID, "kafka send msg err:UserId", v, msgToMQGroup.String()) } else { sendTag = true } @@ -288,13 +289,14 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S wg.Add(1) go func(list []string) { for _, v := range list { + msgToMQGroup := pbChat.MsgDataToMQ{Token: pb.Token, OperationID: pb.OperationID, MsgData: pb.MsgData} pb.MsgData.RecvID = v isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, pb) if isSend { - msgToMQ.MsgData = pb.MsgData - err := rpc.sendMsgToKafka(&msgToMQ, v) + msgToMQGroup.MsgData = pb.MsgData + err := rpc.sendMsgToKafka(&msgToMQGroup, v) if err != nil { - log.NewError(msgToMQ.OperationID, "kafka send msg err:UserId", v, msgToMQ.String()) + log.NewError(msgToMQGroup.OperationID, "kafka send msg err:UserId", v, msgToMQGroup.String()) } else { sendTag = true } @@ -305,16 +307,16 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S } wg.Wait() - log.Info(msgToMQ.OperationID, "addUidList", addUidList) + log.Info(msgToMQSingle.OperationID, "addUidList", addUidList) for _, v := range addUidList { pb.MsgData.RecvID = v isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, pb) - log.Info(msgToMQ.OperationID, "isSend", isSend) + log.Info(msgToMQSingle.OperationID, "isSend", isSend) if isSend { - msgToMQ.MsgData = pb.MsgData - err := rpc.sendMsgToKafka(&msgToMQ, v) + msgToMQSingle.MsgData = pb.MsgData + err := rpc.sendMsgToKafka(&msgToMQSingle, v) if err != nil { - log.NewError(msgToMQ.OperationID, "kafka send msg err:UserId", v, msgToMQ.String()) + log.NewError(msgToMQSingle.OperationID, "kafka send msg err:UserId", v, msgToMQSingle.String()) } else { sendTag = true } @@ -378,26 +380,26 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S } }() } - return returnMsg(&replay, pb, 0, "", msgToMQ.MsgData.ServerMsgID, msgToMQ.MsgData.SendTime) + return returnMsg(&replay, pb, 0, "", msgToMQSingle.MsgData.ServerMsgID, msgToMQSingle.MsgData.SendTime) } case constant.NotificationChatType: - msgToMQ.MsgData = pb.MsgData - log.NewInfo(msgToMQ.OperationID, msgToMQ) - err1 := rpc.sendMsgToKafka(&msgToMQ, msgToMQ.MsgData.RecvID) + msgToMQSingle.MsgData = pb.MsgData + log.NewInfo(msgToMQSingle.OperationID, msgToMQSingle) + err1 := rpc.sendMsgToKafka(&msgToMQSingle, msgToMQSingle.MsgData.RecvID) if err1 != nil { - log.NewError(msgToMQ.OperationID, "kafka send msg err:RecvID", msgToMQ.MsgData.RecvID, msgToMQ.String()) + log.NewError(msgToMQSingle.OperationID, "kafka send msg err:RecvID", msgToMQSingle.MsgData.RecvID, msgToMQSingle.String()) return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) } - if msgToMQ.MsgData.SendID != msgToMQ.MsgData.RecvID { //Filter messages sent to yourself - err2 := rpc.sendMsgToKafka(&msgToMQ, msgToMQ.MsgData.SendID) + if msgToMQSingle.MsgData.SendID != msgToMQSingle.MsgData.RecvID { //Filter messages sent to yourself + err2 := rpc.sendMsgToKafka(&msgToMQSingle, msgToMQSingle.MsgData.SendID) if err2 != nil { - log.NewError(msgToMQ.OperationID, "kafka send msg err:SendID", msgToMQ.MsgData.SendID, msgToMQ.String()) + log.NewError(msgToMQSingle.OperationID, "kafka send msg err:SendID", msgToMQSingle.MsgData.SendID, msgToMQSingle.String()) return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) } } - return returnMsg(&replay, pb, 0, "", msgToMQ.MsgData.ServerMsgID, msgToMQ.MsgData.SendTime) + return returnMsg(&replay, pb, 0, "", msgToMQSingle.MsgData.ServerMsgID, msgToMQSingle.MsgData.SendTime) default: return returnMsg(&replay, pb, 203, "unkonwn sessionType", "", 0) } From 62dd559b7ca53102270ad7be599004f9f5332909 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Sun, 1 May 2022 13:08:46 +0800 Subject: [PATCH 002/143] cache bug fix --- internal/rpc/cache/cache.go | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/internal/rpc/cache/cache.go b/internal/rpc/cache/cache.go index 9954cef2e..e73242afb 100644 --- a/internal/rpc/cache/cache.go +++ b/internal/rpc/cache/cache.go @@ -11,10 +11,11 @@ import ( commonPb "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" "context" - "google.golang.org/grpc" "net" "strconv" "strings" + + "google.golang.org/grpc" ) type cacheServer struct { @@ -127,8 +128,12 @@ func updateAllGroupMemberListToCache() error { continue } log.NewDebug("", utils.GetSelfFuncName(), "groupMemberIDList", groupMemberIDList) - if err := db.DB.AddGroupMemberToCache(groupID, groupMemberIDList...); err != nil { - log.NewError("", utils.GetSelfFuncName(), "AddGroupMemberToCache", err.Error()) + if len(groupMemberIDList) > 0 { + if err := db.DB.AddGroupMemberToCache(groupID, groupMemberIDList...); err != nil { + log.NewError("", utils.GetSelfFuncName(), "AddGroupMemberToCache", err.Error()) + } + } else { + log.NewInfo("0", groupID, groupMemberIDList) } } log.NewInfo("0", utils.GetSelfFuncName(), "ok") @@ -143,9 +148,14 @@ func updateAllFriendToCache(userList []db.User) error { log.NewError("0", utils.GetSelfFuncName(), err.Error()) continue } - if err := db.DB.AddFriendToCache(user.UserID, friendIDList...); err != nil { - log.NewError("0", utils.GetSelfFuncName(), err.Error()) + if len(friendIDList) > 0 { + if err := db.DB.AddFriendToCache(user.UserID, friendIDList...); err != nil { + log.NewError("0", utils.GetSelfFuncName(), err.Error(), friendIDList, user.UserID) + } + } else { + log.NewInfo("0", user.UserID, friendIDList) } + } log.NewInfo("0", utils.GetSelfFuncName(), "ok") return nil @@ -159,8 +169,12 @@ func updateAllBlackListToCache(userList []db.User) error { log.NewError("", utils.GetSelfFuncName(), err.Error()) continue } - if err := db.DB.AddBlackUserToCache(user.UserID, blackIDList...); err != nil { - log.NewError("0", utils.GetSelfFuncName(), err.Error()) + if len(blackIDList) > 0 { + if err := db.DB.AddBlackUserToCache(user.UserID, blackIDList...); err != nil { + log.NewError("0", utils.GetSelfFuncName(), err.Error()) + } + } else { + log.NewInfo("0", utils.GetSelfFuncName(), user.UserID, blackIDList) } } log.NewInfo("0", utils.GetSelfFuncName(), "ok") From e7fdc318f11750e8e3e179a88f20fb77948cf348 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Sun, 1 May 2022 13:27:52 +0800 Subject: [PATCH 003/143] cache bug fix --- internal/rpc/cache/cache.go | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/internal/rpc/cache/cache.go b/internal/rpc/cache/cache.go index e73242afb..5fb32a2d3 100644 --- a/internal/rpc/cache/cache.go +++ b/internal/rpc/cache/cache.go @@ -132,8 +132,6 @@ func updateAllGroupMemberListToCache() error { if err := db.DB.AddGroupMemberToCache(groupID, groupMemberIDList...); err != nil { log.NewError("", utils.GetSelfFuncName(), "AddGroupMemberToCache", err.Error()) } - } else { - log.NewInfo("0", groupID, groupMemberIDList) } } log.NewInfo("0", utils.GetSelfFuncName(), "ok") @@ -148,14 +146,12 @@ func updateAllFriendToCache(userList []db.User) error { log.NewError("0", utils.GetSelfFuncName(), err.Error()) continue } + log.NewDebug("", utils.GetSelfFuncName(), "friendIDList", user.UserID, friendIDList) if len(friendIDList) > 0 { if err := db.DB.AddFriendToCache(user.UserID, friendIDList...); err != nil { log.NewError("0", utils.GetSelfFuncName(), err.Error(), friendIDList, user.UserID) } - } else { - log.NewInfo("0", user.UserID, friendIDList) } - } log.NewInfo("0", utils.GetSelfFuncName(), "ok") return nil @@ -169,12 +165,11 @@ func updateAllBlackListToCache(userList []db.User) error { log.NewError("", utils.GetSelfFuncName(), err.Error()) continue } + log.NewDebug("", utils.GetSelfFuncName(), "updateAllBlackListToCache", user.UserID, blackIDList) if len(blackIDList) > 0 { if err := db.DB.AddBlackUserToCache(user.UserID, blackIDList...); err != nil { log.NewError("0", utils.GetSelfFuncName(), err.Error()) } - } else { - log.NewInfo("0", utils.GetSelfFuncName(), user.UserID, blackIDList) } } log.NewInfo("0", utils.GetSelfFuncName(), "ok") From a2e62c9fb529b70e974f9a7d9a6676027e9e29fe Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sun, 1 May 2022 16:21:28 +0800 Subject: [PATCH 004/143] fix bug: group chat share pb --- internal/rpc/msg/send_msg.go | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 013ee16cc..c33c46caf 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -268,12 +268,16 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S for i := 0; i < len(memberUserIDList)/split; i++ { wg.Add(1) go func(list []string) { - msgToMQGroup := pbChat.MsgDataToMQ{Token: pb.Token, OperationID: pb.OperationID, MsgData: pb.MsgData} + groupPB := pbChat.SendMsgReq{MsgData: &sdk_ws.MsgData{OfflinePushInfo: &sdk_ws.OfflinePushInfo{}}} + groupPB = *pb + *groupPB.MsgData = *pb.MsgData + *groupPB.MsgData.OfflinePushInfo = *pb.MsgData.OfflinePushInfo + msgToMQGroup := pbChat.MsgDataToMQ{Token: groupPB.Token, OperationID: groupPB.OperationID, MsgData: groupPB.MsgData} for _, v := range list { - pb.MsgData.RecvID = v - isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, pb) + groupPB.MsgData.RecvID = v + isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, &groupPB) if isSend { - msgToMQGroup.MsgData = pb.MsgData + msgToMQGroup.MsgData = groupPB.MsgData err := rpc.sendMsgToKafka(&msgToMQGroup, v) if err != nil { log.NewError(msgToMQGroup.OperationID, "kafka send msg err:UserId", v, msgToMQGroup.String()) @@ -288,12 +292,16 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S if remain > 0 { wg.Add(1) go func(list []string) { + groupPB := pbChat.SendMsgReq{MsgData: &sdk_ws.MsgData{OfflinePushInfo: &sdk_ws.OfflinePushInfo{}}} + groupPB = *pb + *groupPB.MsgData = *pb.MsgData + *groupPB.MsgData.OfflinePushInfo = *pb.MsgData.OfflinePushInfo + msgToMQGroup := pbChat.MsgDataToMQ{Token: groupPB.Token, OperationID: groupPB.OperationID, MsgData: groupPB.MsgData} for _, v := range list { - msgToMQGroup := pbChat.MsgDataToMQ{Token: pb.Token, OperationID: pb.OperationID, MsgData: pb.MsgData} - pb.MsgData.RecvID = v - isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, pb) + groupPB.MsgData.RecvID = v + isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, &groupPB) if isSend { - msgToMQGroup.MsgData = pb.MsgData + msgToMQGroup.MsgData = groupPB.MsgData err := rpc.sendMsgToKafka(&msgToMQGroup, v) if err != nil { log.NewError(msgToMQGroup.OperationID, "kafka send msg err:UserId", v, msgToMQGroup.String()) From de2956ec3c9ae570d617c202c3ce1ce4937141f1 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 2 May 2022 08:47:21 +0800 Subject: [PATCH 005/143] group chat log --- internal/rpc/msg/send_msg.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index c33c46caf..dbcb18f65 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -237,6 +237,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S } return result }(reply.MemberList) + log.Debug(pb.OperationID, "GetGroupAllMember userID list", memberUserIDList) var addUidList []string switch pb.MsgData.ContentType { case constant.MemberKickedNotification: @@ -277,6 +278,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S groupPB.MsgData.RecvID = v isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, &groupPB) if isSend { + log.Debug(groupPB.OperationID, "sendMsgToKafka, ", v, groupID) msgToMQGroup.MsgData = groupPB.MsgData err := rpc.sendMsgToKafka(&msgToMQGroup, v) if err != nil { @@ -284,6 +286,8 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S } else { sendTag = true } + } else { + log.Debug(groupPB.OperationID, "not sendMsgToKafka, ", v) } } wg.Done() @@ -301,6 +305,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S groupPB.MsgData.RecvID = v isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, &groupPB) if isSend { + log.Debug(groupPB.OperationID, "sendMsgToKafka, ", v, groupID) msgToMQGroup.MsgData = groupPB.MsgData err := rpc.sendMsgToKafka(&msgToMQGroup, v) if err != nil { @@ -308,6 +313,8 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S } else { sendTag = true } + } else { + log.Debug(groupPB.OperationID, "not sendMsgToKafka, ", v) } } wg.Done() From eae3a50435689bfe291d46409dece830d4d68fde Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 2 May 2022 19:16:00 +0800 Subject: [PATCH 006/143] group chat log --- internal/rpc/msg/send_msg.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index dbcb18f65..0652d70e5 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -264,7 +264,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S //split parallel send var wg sync.WaitGroup var sendTag bool - var split = 50 + var split = 10 remain := len(memberUserIDList) % split for i := 0; i < len(memberUserIDList)/split; i++ { wg.Add(1) From ca4bf13569123c82beb9372c641645b840977ad7 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 2 May 2022 19:23:26 +0800 Subject: [PATCH 007/143] group chat log --- internal/rpc/msg/send_msg.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 0652d70e5..05206b2a2 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -269,6 +269,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S for i := 0; i < len(memberUserIDList)/split; i++ { wg.Add(1) go func(list []string) { + log.Debug(pb.OperationID, "split userID ", list) groupPB := pbChat.SendMsgReq{MsgData: &sdk_ws.MsgData{OfflinePushInfo: &sdk_ws.OfflinePushInfo{}}} groupPB = *pb *groupPB.MsgData = *pb.MsgData @@ -296,6 +297,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S if remain > 0 { wg.Add(1) go func(list []string) { + log.Debug(pb.OperationID, "split userID ", list) groupPB := pbChat.SendMsgReq{MsgData: &sdk_ws.MsgData{OfflinePushInfo: &sdk_ws.OfflinePushInfo{}}} groupPB = *pb *groupPB.MsgData = *pb.MsgData From b06550e2cbe2259afa54be64297eb98c7357f165 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 2 May 2022 19:43:22 +0800 Subject: [PATCH 008/143] group chat log --- internal/rpc/msg/send_msg.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 05206b2a2..0a8f10dcf 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -279,7 +279,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S groupPB.MsgData.RecvID = v isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, &groupPB) if isSend { - log.Debug(groupPB.OperationID, "sendMsgToKafka, ", v, groupID) + log.Debug(groupPB.OperationID, "sendMsgToKafka, ", v, groupID, groupPB.String()) msgToMQGroup.MsgData = groupPB.MsgData err := rpc.sendMsgToKafka(&msgToMQGroup, v) if err != nil { From 59e5cfb04d081fc51d3a7bfccb6f984f9f78614e Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 2 May 2022 19:45:32 +0800 Subject: [PATCH 009/143] group chat log --- internal/rpc/msg/send_msg.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 0a8f10dcf..f27a03476 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -279,8 +279,8 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S groupPB.MsgData.RecvID = v isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, &groupPB) if isSend { - log.Debug(groupPB.OperationID, "sendMsgToKafka, ", v, groupID, groupPB.String()) msgToMQGroup.MsgData = groupPB.MsgData + log.Debug(groupPB.OperationID, "sendMsgToKafka, ", v, groupID, msgToMQGroup.String()) err := rpc.sendMsgToKafka(&msgToMQGroup, v) if err != nil { log.NewError(msgToMQGroup.OperationID, "kafka send msg err:UserId", v, msgToMQGroup.String()) From 1c80b820cb3fd415440293e673cbd041df276f1b Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 2 May 2022 20:00:09 +0800 Subject: [PATCH 010/143] group chat log --- internal/rpc/msg/send_msg.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index f27a03476..17f0035c6 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -270,8 +270,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S wg.Add(1) go func(list []string) { log.Debug(pb.OperationID, "split userID ", list) - groupPB := pbChat.SendMsgReq{MsgData: &sdk_ws.MsgData{OfflinePushInfo: &sdk_ws.OfflinePushInfo{}}} - groupPB = *pb + groupPB := pbChat.SendMsgReq{Token: pb.Token, OperationID: pb.OperationID, MsgData: &sdk_ws.MsgData{OfflinePushInfo: &sdk_ws.OfflinePushInfo{}}} *groupPB.MsgData = *pb.MsgData *groupPB.MsgData.OfflinePushInfo = *pb.MsgData.OfflinePushInfo msgToMQGroup := pbChat.MsgDataToMQ{Token: groupPB.Token, OperationID: groupPB.OperationID, MsgData: groupPB.MsgData} @@ -298,8 +297,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S wg.Add(1) go func(list []string) { log.Debug(pb.OperationID, "split userID ", list) - groupPB := pbChat.SendMsgReq{MsgData: &sdk_ws.MsgData{OfflinePushInfo: &sdk_ws.OfflinePushInfo{}}} - groupPB = *pb + groupPB := pbChat.SendMsgReq{Token: pb.Token, OperationID: pb.OperationID, MsgData: &sdk_ws.MsgData{OfflinePushInfo: &sdk_ws.OfflinePushInfo{}}} *groupPB.MsgData = *pb.MsgData *groupPB.MsgData.OfflinePushInfo = *pb.MsgData.OfflinePushInfo msgToMQGroup := pbChat.MsgDataToMQ{Token: groupPB.Token, OperationID: groupPB.OperationID, MsgData: groupPB.MsgData} @@ -307,8 +305,8 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S groupPB.MsgData.RecvID = v isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, &groupPB) if isSend { - log.Debug(groupPB.OperationID, "sendMsgToKafka, ", v, groupID) msgToMQGroup.MsgData = groupPB.MsgData + log.Debug(groupPB.OperationID, "sendMsgToKafka, ", v, groupID, msgToMQGroup.String()) err := rpc.sendMsgToKafka(&msgToMQGroup, v) if err != nil { log.NewError(msgToMQGroup.OperationID, "kafka send msg err:UserId", v, msgToMQGroup.String()) From 700483dd48240569916a1456caee11ff75e81822 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 2 May 2022 20:03:13 +0800 Subject: [PATCH 011/143] group chat log --- internal/rpc/msg/send_msg.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 17f0035c6..b38345c56 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -264,12 +264,12 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S //split parallel send var wg sync.WaitGroup var sendTag bool - var split = 10 + var split = 50 remain := len(memberUserIDList) % split for i := 0; i < len(memberUserIDList)/split; i++ { wg.Add(1) go func(list []string) { - log.Debug(pb.OperationID, "split userID ", list) + // log.Debug(pb.OperationID, "split userID ", list) groupPB := pbChat.SendMsgReq{Token: pb.Token, OperationID: pb.OperationID, MsgData: &sdk_ws.MsgData{OfflinePushInfo: &sdk_ws.OfflinePushInfo{}}} *groupPB.MsgData = *pb.MsgData *groupPB.MsgData.OfflinePushInfo = *pb.MsgData.OfflinePushInfo @@ -279,7 +279,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, &groupPB) if isSend { msgToMQGroup.MsgData = groupPB.MsgData - log.Debug(groupPB.OperationID, "sendMsgToKafka, ", v, groupID, msgToMQGroup.String()) + // log.Debug(groupPB.OperationID, "sendMsgToKafka, ", v, groupID, msgToMQGroup.String()) err := rpc.sendMsgToKafka(&msgToMQGroup, v) if err != nil { log.NewError(msgToMQGroup.OperationID, "kafka send msg err:UserId", v, msgToMQGroup.String()) @@ -296,7 +296,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S if remain > 0 { wg.Add(1) go func(list []string) { - log.Debug(pb.OperationID, "split userID ", list) + // log.Debug(pb.OperationID, "split userID ", list) groupPB := pbChat.SendMsgReq{Token: pb.Token, OperationID: pb.OperationID, MsgData: &sdk_ws.MsgData{OfflinePushInfo: &sdk_ws.OfflinePushInfo{}}} *groupPB.MsgData = *pb.MsgData *groupPB.MsgData.OfflinePushInfo = *pb.MsgData.OfflinePushInfo @@ -306,7 +306,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, &groupPB) if isSend { msgToMQGroup.MsgData = groupPB.MsgData - log.Debug(groupPB.OperationID, "sendMsgToKafka, ", v, groupID, msgToMQGroup.String()) + // log.Debug(groupPB.OperationID, "sendMsgToKafka, ", v, groupID, msgToMQGroup.String()) err := rpc.sendMsgToKafka(&msgToMQGroup, v) if err != nil { log.NewError(msgToMQGroup.OperationID, "kafka send msg err:UserId", v, msgToMQGroup.String()) From d9e74a78f0d7924084b0cd1c1bc03f01f42154ee Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Wed, 4 May 2022 18:02:24 +0800 Subject: [PATCH 012/143] delete msg by index --- internal/rpc/msg/del_msg.go | 10 +++- pkg/common/db/mongoModel.go | 100 +++++++++++++++++++++++++++++++++++- 2 files changed, 108 insertions(+), 2 deletions(-) diff --git a/internal/rpc/msg/del_msg.go b/internal/rpc/msg/del_msg.go index daacb8533..d8b28b847 100644 --- a/internal/rpc/msg/del_msg.go +++ b/internal/rpc/msg/del_msg.go @@ -12,12 +12,20 @@ import ( func (rpc *rpcChat) DelMsgList(_ context.Context, req *commonPb.DelMsgListReq) (*commonPb.DelMsgListResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &commonPb.DelMsgListResp{} - if err := db.DB.DelMsgLogic(req.UserID, req.SeqList, req.OperationID); err != nil { + //if err := db.DB.DelMsgLogic(req.UserID, req.SeqList, req.OperationID); err != nil { + // log.NewError(req.OperationID, utils.GetSelfFuncName(), "DelMsg failed", err.Error()) + // resp.ErrMsg = constant.ErrDB.ErrMsg + // resp.ErrCode = constant.ErrDB.ErrCode + // return resp, nil + //} + + if err := db.DB.DelMsgBySeqList(req.UserID, req.SeqList, req.OperationID); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "DelMsg failed", err.Error()) resp.ErrMsg = constant.ErrDB.ErrMsg resp.ErrCode = constant.ErrDB.ErrCode return resp, nil } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) return resp, nil } diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 51ad1c324..5b1ac2a1c 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -13,6 +13,7 @@ import ( "github.com/gogo/protobuf/sortkeys" "go.mongodb.org/mongo-driver/mongo/options" "math/rand" + "sync" //"github.com/garyburd/redigo/redis" "github.com/golang/protobuf/proto" @@ -79,6 +80,51 @@ func (d *DataBases) GetMinSeqFromMongo2(uid string) (MinSeq uint32, err error) { return 1, nil } +// deleteMsgByLogic +func (d *DataBases) DelMsgBySeqList(userID string, seqList []uint32, operationID string) (err error) { + sortkeys.Uint32s(seqList) + suffixUserID2SubSeqList := func(uid string, seqList []uint32) map[string][]uint32 { + t := make(map[string][]uint32) + for i := 0; i < len(seqList); i++ { + seqUid := getSeqUid(uid, seqList[i]) + if value, ok := t[seqUid]; !ok { + var temp []uint32 + t[seqUid] = append(temp, seqList[i]) + } else { + t[seqUid] = append(value, seqList[i]) + } + } + return t + }(userID, seqList) + + var wg sync.WaitGroup + wg.Add(len(suffixUserID2SubSeqList)) + for k, v := range suffixUserID2SubSeqList { + go func(suffixUserID string, subSeqList []uint32, operationID string) { + if e := d.DelMsgBySeqListInOneDoc(suffixUserID, subSeqList, operationID); e != nil { + log.Error(operationID, "DelMsgBySeqListInOneDoc failed ", e.Error(), suffixUserID, subSeqList) + err = e + } + wg.Done() + }(k, v, operationID) + } + wg.Wait() + return err +} + +func (d *DataBases) DelMsgBySeqListInOneDoc(suffixUserID string, seqList []uint32, operationID string) error { + seqMsgList, indexList, err := d.GetMsgAndIndexBySeqListInOneMongo2(suffixUserID, seqList, operationID) + if err != nil { + return utils.Wrap(err, "") + } + for i, v := range seqMsgList { + if err := d.ReplaceMsgByIndex(suffixUserID, v, operationID, indexList[i]); err != nil { + return utils.Wrap(err, "") + } + } + return nil +} + // deleteMsgByLogic func (d *DataBases) DelMsgLogic(uid string, seqList []uint32, operationID string) error { sortkeys.Uint32s(seqList) @@ -96,6 +142,27 @@ func (d *DataBases) DelMsgLogic(uid string, seqList []uint32, operationID string return nil } +func (d *DataBases) ReplaceMsgByIndex(suffixUserID string, msg *open_im_sdk.MsgData, operationID string, seqIndex int) error { + log.NewInfo(operationID, utils.GetSelfFuncName(), suffixUserID, *msg) + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cChat) + s := fmt.Sprintf("msg.%d.msg", seqIndex) + log.NewDebug(operationID, utils.GetSelfFuncName(), seqIndex, s) + msg.Status = constant.MsgDeleted + bytes, err := proto.Marshal(msg) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), "proto marshal failed ", err.Error(), msg.String()) + return utils.Wrap(err, "") + } + updateResult, err := c.UpdateOne(ctx, bson.M{"uid": suffixUserID}, bson.M{"$set": bson.M{s: bytes}}) + log.NewInfo(operationID, utils.GetSelfFuncName(), updateResult) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), "UpdateOne", err.Error()) + return utils.Wrap(err, "") + } + return nil +} + func (d *DataBases) ReplaceMsgBySeq(uid string, msg *open_im_sdk.MsgData, operationID string) error { log.NewInfo(operationID, utils.GetSelfFuncName(), uid, *msg) ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) @@ -109,6 +176,7 @@ func (d *DataBases) ReplaceMsgBySeq(uid string, msg *open_im_sdk.MsgData, operat log.NewError(operationID, utils.GetSelfFuncName(), "proto marshal", err.Error()) return utils.Wrap(err, "") } + updateResult, err := c.UpdateOne( ctx, bson.M{"uid": uid}, bson.M{"$set": bson.M{s: bytes}}) @@ -228,6 +296,36 @@ func (d *DataBases) GetMsgBySeqListMongo2(uid string, seqList []uint32, operatio return seqMsg, nil } +func (d *DataBases) GetMsgAndIndexBySeqListInOneMongo2(suffixUserID string, seqList []uint32, operationID string) (seqMsg []*open_im_sdk.MsgData, indexList []int, err error) { + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cChat) + sChat := UserChat{} + if err = c.FindOne(ctx, bson.M{"uid": suffixUserID}).Decode(&sChat); err != nil { + log.NewError(operationID, "not find seqUid", suffixUserID, err.Error()) + return nil, nil, utils.Wrap(err, "") + } + singleCount := 0 + var hasSeqList []uint32 + for i := 0; i < len(sChat.Msg); i++ { + msg := new(open_im_sdk.MsgData) + if err = proto.Unmarshal(sChat.Msg[i].Msg, msg); err != nil { + log.NewError(operationID, "Unmarshal err", msg.String(), err.Error()) + return nil, nil, err + } + if isContainInt32(msg.Seq, seqList) { + indexList = append(indexList, i) + seqMsg = append(seqMsg, msg) + hasSeqList = append(hasSeqList, msg.Seq) + singleCount++ + if singleCount == len(seqList) { + break + } + } + } + + return seqMsg, indexList, nil +} + func genExceptionMessageBySeqList(seqList []uint32) (exceptionMsg []*open_im_sdk.MsgData) { for _, v := range seqList { msg := new(open_im_sdk.MsgData) @@ -741,7 +839,7 @@ func getMsgIndex(seq uint32) int { seqSuffix := seq / singleGocMsgNum var index uint32 if seqSuffix == 0 { - index = (seq - seqSuffix*5000) - 1 + index = (seq - seqSuffix*singleGocMsgNum) - 1 } else { index = seq - seqSuffix*singleGocMsgNum } From 185e0dce6e3284b69443169705d882a7b77d9777 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Wed, 4 May 2022 18:35:13 +0800 Subject: [PATCH 013/143] delete msg by index --- pkg/common/db/mongoModel.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 5b1ac2a1c..a196e984a 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -82,6 +82,7 @@ func (d *DataBases) GetMinSeqFromMongo2(uid string) (MinSeq uint32, err error) { // deleteMsgByLogic func (d *DataBases) DelMsgBySeqList(userID string, seqList []uint32, operationID string) (err error) { + log.Debug(operationID, utils.GetSelfFuncName(), "args ", userID, seqList) sortkeys.Uint32s(seqList) suffixUserID2SubSeqList := func(uid string, seqList []uint32) map[string][]uint32 { t := make(map[string][]uint32) @@ -113,6 +114,7 @@ func (d *DataBases) DelMsgBySeqList(userID string, seqList []uint32, operationID } func (d *DataBases) DelMsgBySeqListInOneDoc(suffixUserID string, seqList []uint32, operationID string) error { + log.Debug(operationID, utils.GetSelfFuncName(), "args ", suffixUserID, seqList) seqMsgList, indexList, err := d.GetMsgAndIndexBySeqListInOneMongo2(suffixUserID, seqList, operationID) if err != nil { return utils.Wrap(err, "") From d75eb456dc0e2d9048b946bea024b90ff6666388 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 5 May 2022 11:58:48 +0800 Subject: [PATCH 014/143] office --- cmd/open_im_api/main.go | 1 + internal/api/office/work_moments.go | 40 + internal/rpc/office/office.go | 14 + pkg/base_info/work_moments_struct.go | 9 + pkg/common/db/mongoModel.go | 12 + pkg/proto/office/office.pb.go | 3104 -------------------------- pkg/proto/office/office.proto | 12 + 7 files changed, 88 insertions(+), 3104 deletions(-) delete mode 100644 pkg/proto/office/office.pb.go diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 83501019e..18d210b58 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -153,6 +153,7 @@ func main() { 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") diff --git a/internal/api/office/work_moments.go b/internal/api/office/work_moments.go index 0535feee5..2e3304836 100644 --- a/internal/api/office/work_moments.go +++ b/internal/api/office/work_moments.go @@ -168,6 +168,44 @@ func CommentOneWorkMoment(c *gin.Context) { c.JSON(http.StatusOK, resp) } +func DeleteComment(c *gin.Context) { + var ( + req apiStruct.DeleteCommentReq + resp apiStruct.DeleteCommentResp + reqPb pbOffice.DeleteCommentReq + respPb *pbOffice.DeleteCommentResp + ) + if err := c.BindJSON(&req); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) + if err := utils.CopyStructFields(&reqPb, req); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), err.Error()) + } + var ok bool + ok, reqPb.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + if !ok { + log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + return + } + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) + client := pbOffice.NewOfficeServiceClient(etcdConn) + respPb, err := client.DeleteComment(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "DeleteComment rpc failed", err.Error()) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "DeleteComment rpc server failed" + err.Error()}) + return + } + if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) + c.JSON(http.StatusOK, resp) +} + func GetWorkMomentByID(c *gin.Context) { var ( req apiStruct.GetWorkMomentByIDReq @@ -261,6 +299,7 @@ func GetUserWorkMoments(c *gin.Context) { Comments: make([]*apiStruct.Comment, len(v.Comments)), LikeUserList: make([]*apiStruct.WorkMomentUser, len(v.LikeUserList)), AtUserList: make([]*apiStruct.WorkMomentUser, len(v.AtUserList)), + Permission: v.Permission, } for i, comment := range v.Comments { workMoment.Comments[i] = &apiStruct.Comment{ @@ -344,6 +383,7 @@ func GetUserFriendWorkMoments(c *gin.Context) { Comments: make([]*apiStruct.Comment, len(v.Comments)), LikeUserList: make([]*apiStruct.WorkMomentUser, len(v.LikeUserList)), AtUserList: make([]*apiStruct.WorkMomentUser, len(v.AtUserList)), + Permission: v.Permission, } for i, comment := range v.Comments { workMoment.Comments[i] = &apiStruct.Comment{ diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index fcf735412..0f9f989c0 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -311,6 +311,20 @@ func (s *officeServer) CreateOneWorkMoment(_ context.Context, req *pbOffice.Crea return resp, nil } +func (s *officeServer) DeleteComment(_ context.Context, req *pbOffice.DeleteCommentReq) (resp *pbOffice.DeleteCommentResp, err error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp = &pbOffice.DeleteCommentResp{CommonResp: &pbOffice.CommonResp{}} + err = db.DB.DeleteComment(req.WorkMomentID, req.ContentID, req.OpUserID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetWorkMomentByID failed", err.Error()) + resp.CommonResp.ErrMsg = constant.ErrDB.ErrMsg + resp.CommonResp.ErrCode = constant.ErrDB.ErrCode + return resp, nil + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + return resp, nil +} + // count and distinct permission users func (s *officeServer) getPermissionUserIDList(operationID string, groupList []*pbOffice.PermissionGroup, userList []*pbOffice.WorkMomentUser) []string { var permissionUserIDList []string diff --git a/pkg/base_info/work_moments_struct.go b/pkg/base_info/work_moments_struct.go index d27493261..503bfc489 100644 --- a/pkg/base_info/work_moments_struct.go +++ b/pkg/base_info/work_moments_struct.go @@ -34,6 +34,14 @@ type CommentOneWorkMomentResp struct { CommResp } +type DeleteCommentReq struct { + office.DeleteCommentReq +} + +type DeleteCommentResp struct { + CommResp +} + type WorkMomentsUserCommonReq struct { PageNumber int32 `json:"pageNumber" binding:"required"` ShowNumber int32 `json:"showNumber" binding:"required"` @@ -54,6 +62,7 @@ type WorkMoment struct { UserName string `json:"userName"` AtUserList []*WorkMomentUser `json:"atUsers"` CreateTime int32 `json:"createTime"` + Permission int32 `json:"permission"` } type WorkMomentUser struct { diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index a196e984a..2423280e6 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -716,6 +716,18 @@ func (d *DataBases) DeleteOneWorkMoment(workMomentID string) error { return err } +func (d *DataBases) DeleteComment(workMomentID, contentID, opUserID string) error { + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cWorkMoment) + _, err := c.UpdateOne(ctx, bson.D{{"work_moment_id", workMomentID}, + {"$or", bson.A{ + bson.D{{"user_id", opUserID}}, + bson.D{{"comments", bson.M{"$elemMatch": bson.M{"user_id": opUserID}}}}, + }, + }}, bson.M{"$pull": bson.M{"comments": bson.M{"content_id": contentID}}}) + return err +} + func (d *DataBases) GetWorkMomentByID(workMomentID string) (*WorkMoment, error) { ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cWorkMoment) diff --git a/pkg/proto/office/office.pb.go b/pkg/proto/office/office.pb.go deleted file mode 100644 index 3c5ff4bf5..000000000 --- a/pkg/proto/office/office.pb.go +++ /dev/null @@ -1,3104 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: office/office.proto - -package office // import "./office" - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import sdk_ws "Open_IM/pkg/proto/sdk_ws" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type CommonResp struct { - ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CommonResp) Reset() { *m = CommonResp{} } -func (m *CommonResp) String() string { return proto.CompactTextString(m) } -func (*CommonResp) ProtoMessage() {} -func (*CommonResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{0} -} -func (m *CommonResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommonResp.Unmarshal(m, b) -} -func (m *CommonResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommonResp.Marshal(b, m, deterministic) -} -func (dst *CommonResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommonResp.Merge(dst, src) -} -func (m *CommonResp) XXX_Size() int { - return xxx_messageInfo_CommonResp.Size(m) -} -func (m *CommonResp) XXX_DiscardUnknown() { - xxx_messageInfo_CommonResp.DiscardUnknown(m) -} - -var xxx_messageInfo_CommonResp proto.InternalMessageInfo - -func (m *CommonResp) GetErrCode() int32 { - if m != nil { - return m.ErrCode - } - return 0 -} - -func (m *CommonResp) GetErrMsg() string { - if m != nil { - return m.ErrMsg - } - return "" -} - -type TagUser struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - UserName string `protobuf:"bytes,2,opt,name=userName" json:"userName,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *TagUser) Reset() { *m = TagUser{} } -func (m *TagUser) String() string { return proto.CompactTextString(m) } -func (*TagUser) ProtoMessage() {} -func (*TagUser) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{1} -} -func (m *TagUser) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TagUser.Unmarshal(m, b) -} -func (m *TagUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TagUser.Marshal(b, m, deterministic) -} -func (dst *TagUser) XXX_Merge(src proto.Message) { - xxx_messageInfo_TagUser.Merge(dst, src) -} -func (m *TagUser) XXX_Size() int { - return xxx_messageInfo_TagUser.Size(m) -} -func (m *TagUser) XXX_DiscardUnknown() { - xxx_messageInfo_TagUser.DiscardUnknown(m) -} - -var xxx_messageInfo_TagUser proto.InternalMessageInfo - -func (m *TagUser) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *TagUser) GetUserName() string { - if m != nil { - return m.UserName - } - return "" -} - -type Tag struct { - TagID string `protobuf:"bytes,1,opt,name=tagID" json:"tagID,omitempty"` - TagName string `protobuf:"bytes,2,opt,name=tagName" json:"tagName,omitempty"` - UserList []*TagUser `protobuf:"bytes,3,rep,name=userList" json:"userList,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Tag) Reset() { *m = Tag{} } -func (m *Tag) String() string { return proto.CompactTextString(m) } -func (*Tag) ProtoMessage() {} -func (*Tag) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{2} -} -func (m *Tag) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Tag.Unmarshal(m, b) -} -func (m *Tag) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Tag.Marshal(b, m, deterministic) -} -func (dst *Tag) XXX_Merge(src proto.Message) { - xxx_messageInfo_Tag.Merge(dst, src) -} -func (m *Tag) XXX_Size() int { - return xxx_messageInfo_Tag.Size(m) -} -func (m *Tag) XXX_DiscardUnknown() { - xxx_messageInfo_Tag.DiscardUnknown(m) -} - -var xxx_messageInfo_Tag proto.InternalMessageInfo - -func (m *Tag) GetTagID() string { - if m != nil { - return m.TagID - } - return "" -} - -func (m *Tag) GetTagName() string { - if m != nil { - return m.TagName - } - return "" -} - -func (m *Tag) GetUserList() []*TagUser { - if m != nil { - return m.UserList - } - return nil -} - -type GetUserTagsReq struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetUserTagsReq) Reset() { *m = GetUserTagsReq{} } -func (m *GetUserTagsReq) String() string { return proto.CompactTextString(m) } -func (*GetUserTagsReq) ProtoMessage() {} -func (*GetUserTagsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{3} -} -func (m *GetUserTagsReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetUserTagsReq.Unmarshal(m, b) -} -func (m *GetUserTagsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetUserTagsReq.Marshal(b, m, deterministic) -} -func (dst *GetUserTagsReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetUserTagsReq.Merge(dst, src) -} -func (m *GetUserTagsReq) XXX_Size() int { - return xxx_messageInfo_GetUserTagsReq.Size(m) -} -func (m *GetUserTagsReq) XXX_DiscardUnknown() { - xxx_messageInfo_GetUserTagsReq.DiscardUnknown(m) -} - -var xxx_messageInfo_GetUserTagsReq proto.InternalMessageInfo - -func (m *GetUserTagsReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *GetUserTagsReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -type GetUserTagsResp struct { - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - Tags []*Tag `protobuf:"bytes,2,rep,name=tags" json:"tags,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetUserTagsResp) Reset() { *m = GetUserTagsResp{} } -func (m *GetUserTagsResp) String() string { return proto.CompactTextString(m) } -func (*GetUserTagsResp) ProtoMessage() {} -func (*GetUserTagsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{4} -} -func (m *GetUserTagsResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetUserTagsResp.Unmarshal(m, b) -} -func (m *GetUserTagsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetUserTagsResp.Marshal(b, m, deterministic) -} -func (dst *GetUserTagsResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetUserTagsResp.Merge(dst, src) -} -func (m *GetUserTagsResp) XXX_Size() int { - return xxx_messageInfo_GetUserTagsResp.Size(m) -} -func (m *GetUserTagsResp) XXX_DiscardUnknown() { - xxx_messageInfo_GetUserTagsResp.DiscardUnknown(m) -} - -var xxx_messageInfo_GetUserTagsResp proto.InternalMessageInfo - -func (m *GetUserTagsResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - -func (m *GetUserTagsResp) GetTags() []*Tag { - if m != nil { - return m.Tags - } - return nil -} - -type CreateTagReq struct { - TagName string `protobuf:"bytes,1,opt,name=tagName" json:"tagName,omitempty"` - UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` - UserIDList []string `protobuf:"bytes,3,rep,name=userIDList" json:"userIDList,omitempty"` - OperationID string `protobuf:"bytes,4,opt,name=operationID" json:"operationID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CreateTagReq) Reset() { *m = CreateTagReq{} } -func (m *CreateTagReq) String() string { return proto.CompactTextString(m) } -func (*CreateTagReq) ProtoMessage() {} -func (*CreateTagReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{5} -} -func (m *CreateTagReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateTagReq.Unmarshal(m, b) -} -func (m *CreateTagReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateTagReq.Marshal(b, m, deterministic) -} -func (dst *CreateTagReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateTagReq.Merge(dst, src) -} -func (m *CreateTagReq) XXX_Size() int { - return xxx_messageInfo_CreateTagReq.Size(m) -} -func (m *CreateTagReq) XXX_DiscardUnknown() { - xxx_messageInfo_CreateTagReq.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateTagReq proto.InternalMessageInfo - -func (m *CreateTagReq) GetTagName() string { - if m != nil { - return m.TagName - } - return "" -} - -func (m *CreateTagReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *CreateTagReq) GetUserIDList() []string { - if m != nil { - return m.UserIDList - } - return nil -} - -func (m *CreateTagReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -type CreateTagResp struct { - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CreateTagResp) Reset() { *m = CreateTagResp{} } -func (m *CreateTagResp) String() string { return proto.CompactTextString(m) } -func (*CreateTagResp) ProtoMessage() {} -func (*CreateTagResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{6} -} -func (m *CreateTagResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateTagResp.Unmarshal(m, b) -} -func (m *CreateTagResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateTagResp.Marshal(b, m, deterministic) -} -func (dst *CreateTagResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateTagResp.Merge(dst, src) -} -func (m *CreateTagResp) XXX_Size() int { - return xxx_messageInfo_CreateTagResp.Size(m) -} -func (m *CreateTagResp) XXX_DiscardUnknown() { - xxx_messageInfo_CreateTagResp.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateTagResp proto.InternalMessageInfo - -func (m *CreateTagResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - -type DeleteTagReq struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - TagID string `protobuf:"bytes,2,opt,name=tagID" json:"tagID,omitempty"` - OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DeleteTagReq) Reset() { *m = DeleteTagReq{} } -func (m *DeleteTagReq) String() string { return proto.CompactTextString(m) } -func (*DeleteTagReq) ProtoMessage() {} -func (*DeleteTagReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{7} -} -func (m *DeleteTagReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteTagReq.Unmarshal(m, b) -} -func (m *DeleteTagReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteTagReq.Marshal(b, m, deterministic) -} -func (dst *DeleteTagReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteTagReq.Merge(dst, src) -} -func (m *DeleteTagReq) XXX_Size() int { - return xxx_messageInfo_DeleteTagReq.Size(m) -} -func (m *DeleteTagReq) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteTagReq.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteTagReq proto.InternalMessageInfo - -func (m *DeleteTagReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *DeleteTagReq) GetTagID() string { - if m != nil { - return m.TagID - } - return "" -} - -func (m *DeleteTagReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -type DeleteTagResp struct { - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DeleteTagResp) Reset() { *m = DeleteTagResp{} } -func (m *DeleteTagResp) String() string { return proto.CompactTextString(m) } -func (*DeleteTagResp) ProtoMessage() {} -func (*DeleteTagResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{8} -} -func (m *DeleteTagResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteTagResp.Unmarshal(m, b) -} -func (m *DeleteTagResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteTagResp.Marshal(b, m, deterministic) -} -func (dst *DeleteTagResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteTagResp.Merge(dst, src) -} -func (m *DeleteTagResp) XXX_Size() int { - return xxx_messageInfo_DeleteTagResp.Size(m) -} -func (m *DeleteTagResp) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteTagResp.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteTagResp proto.InternalMessageInfo - -func (m *DeleteTagResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - -type SetTagReq struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - TagID string `protobuf:"bytes,2,opt,name=tagID" json:"tagID,omitempty"` - NewName string `protobuf:"bytes,3,opt,name=newName" json:"newName,omitempty"` - IncreaseUserIDList []string `protobuf:"bytes,4,rep,name=increaseUserIDList" json:"increaseUserIDList,omitempty"` - ReduceUserIDList []string `protobuf:"bytes,5,rep,name=reduceUserIDList" json:"reduceUserIDList,omitempty"` - OperationID string `protobuf:"bytes,6,opt,name=operationID" json:"operationID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SetTagReq) Reset() { *m = SetTagReq{} } -func (m *SetTagReq) String() string { return proto.CompactTextString(m) } -func (*SetTagReq) ProtoMessage() {} -func (*SetTagReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{9} -} -func (m *SetTagReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetTagReq.Unmarshal(m, b) -} -func (m *SetTagReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetTagReq.Marshal(b, m, deterministic) -} -func (dst *SetTagReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetTagReq.Merge(dst, src) -} -func (m *SetTagReq) XXX_Size() int { - return xxx_messageInfo_SetTagReq.Size(m) -} -func (m *SetTagReq) XXX_DiscardUnknown() { - xxx_messageInfo_SetTagReq.DiscardUnknown(m) -} - -var xxx_messageInfo_SetTagReq proto.InternalMessageInfo - -func (m *SetTagReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *SetTagReq) GetTagID() string { - if m != nil { - return m.TagID - } - return "" -} - -func (m *SetTagReq) GetNewName() string { - if m != nil { - return m.NewName - } - return "" -} - -func (m *SetTagReq) GetIncreaseUserIDList() []string { - if m != nil { - return m.IncreaseUserIDList - } - return nil -} - -func (m *SetTagReq) GetReduceUserIDList() []string { - if m != nil { - return m.ReduceUserIDList - } - return nil -} - -func (m *SetTagReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -type SetTagResp struct { - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SetTagResp) Reset() { *m = SetTagResp{} } -func (m *SetTagResp) String() string { return proto.CompactTextString(m) } -func (*SetTagResp) ProtoMessage() {} -func (*SetTagResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{10} -} -func (m *SetTagResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetTagResp.Unmarshal(m, b) -} -func (m *SetTagResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetTagResp.Marshal(b, m, deterministic) -} -func (dst *SetTagResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetTagResp.Merge(dst, src) -} -func (m *SetTagResp) XXX_Size() int { - return xxx_messageInfo_SetTagResp.Size(m) -} -func (m *SetTagResp) XXX_DiscardUnknown() { - xxx_messageInfo_SetTagResp.DiscardUnknown(m) -} - -var xxx_messageInfo_SetTagResp proto.InternalMessageInfo - -func (m *SetTagResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - -type SendMsg2TagReq struct { - TagList []string `protobuf:"bytes,1,rep,name=tagList" json:"tagList,omitempty"` - UserList []string `protobuf:"bytes,2,rep,name=UserList" json:"UserList,omitempty"` - GroupList []string `protobuf:"bytes,3,rep,name=GroupList" json:"GroupList,omitempty"` - SendID string `protobuf:"bytes,4,opt,name=sendID" json:"sendID,omitempty"` - SenderPlatformID int32 `protobuf:"varint,5,opt,name=senderPlatformID" json:"senderPlatformID,omitempty"` - Content string `protobuf:"bytes,6,opt,name=content" json:"content,omitempty"` - OperationID string `protobuf:"bytes,7,opt,name=operationID" json:"operationID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SendMsg2TagReq) Reset() { *m = SendMsg2TagReq{} } -func (m *SendMsg2TagReq) String() string { return proto.CompactTextString(m) } -func (*SendMsg2TagReq) ProtoMessage() {} -func (*SendMsg2TagReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{11} -} -func (m *SendMsg2TagReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SendMsg2TagReq.Unmarshal(m, b) -} -func (m *SendMsg2TagReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SendMsg2TagReq.Marshal(b, m, deterministic) -} -func (dst *SendMsg2TagReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_SendMsg2TagReq.Merge(dst, src) -} -func (m *SendMsg2TagReq) XXX_Size() int { - return xxx_messageInfo_SendMsg2TagReq.Size(m) -} -func (m *SendMsg2TagReq) XXX_DiscardUnknown() { - xxx_messageInfo_SendMsg2TagReq.DiscardUnknown(m) -} - -var xxx_messageInfo_SendMsg2TagReq proto.InternalMessageInfo - -func (m *SendMsg2TagReq) GetTagList() []string { - if m != nil { - return m.TagList - } - return nil -} - -func (m *SendMsg2TagReq) GetUserList() []string { - if m != nil { - return m.UserList - } - return nil -} - -func (m *SendMsg2TagReq) GetGroupList() []string { - if m != nil { - return m.GroupList - } - return nil -} - -func (m *SendMsg2TagReq) GetSendID() string { - if m != nil { - return m.SendID - } - return "" -} - -func (m *SendMsg2TagReq) GetSenderPlatformID() int32 { - if m != nil { - return m.SenderPlatformID - } - return 0 -} - -func (m *SendMsg2TagReq) GetContent() string { - if m != nil { - return m.Content - } - return "" -} - -func (m *SendMsg2TagReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -type SendMsg2TagResp struct { - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SendMsg2TagResp) Reset() { *m = SendMsg2TagResp{} } -func (m *SendMsg2TagResp) String() string { return proto.CompactTextString(m) } -func (*SendMsg2TagResp) ProtoMessage() {} -func (*SendMsg2TagResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{12} -} -func (m *SendMsg2TagResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SendMsg2TagResp.Unmarshal(m, b) -} -func (m *SendMsg2TagResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SendMsg2TagResp.Marshal(b, m, deterministic) -} -func (dst *SendMsg2TagResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_SendMsg2TagResp.Merge(dst, src) -} -func (m *SendMsg2TagResp) XXX_Size() int { - return xxx_messageInfo_SendMsg2TagResp.Size(m) -} -func (m *SendMsg2TagResp) XXX_DiscardUnknown() { - xxx_messageInfo_SendMsg2TagResp.DiscardUnknown(m) -} - -var xxx_messageInfo_SendMsg2TagResp proto.InternalMessageInfo - -func (m *SendMsg2TagResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - -type GetTagSendLogsReq struct { - Pagination *sdk_ws.RequestPagination `protobuf:"bytes,1,opt,name=Pagination" json:"Pagination,omitempty"` - UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` - OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetTagSendLogsReq) Reset() { *m = GetTagSendLogsReq{} } -func (m *GetTagSendLogsReq) String() string { return proto.CompactTextString(m) } -func (*GetTagSendLogsReq) ProtoMessage() {} -func (*GetTagSendLogsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{13} -} -func (m *GetTagSendLogsReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetTagSendLogsReq.Unmarshal(m, b) -} -func (m *GetTagSendLogsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetTagSendLogsReq.Marshal(b, m, deterministic) -} -func (dst *GetTagSendLogsReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetTagSendLogsReq.Merge(dst, src) -} -func (m *GetTagSendLogsReq) XXX_Size() int { - return xxx_messageInfo_GetTagSendLogsReq.Size(m) -} -func (m *GetTagSendLogsReq) XXX_DiscardUnknown() { - xxx_messageInfo_GetTagSendLogsReq.DiscardUnknown(m) -} - -var xxx_messageInfo_GetTagSendLogsReq proto.InternalMessageInfo - -func (m *GetTagSendLogsReq) GetPagination() *sdk_ws.RequestPagination { - if m != nil { - return m.Pagination - } - return nil -} - -func (m *GetTagSendLogsReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *GetTagSendLogsReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -type TagSendLog struct { - UserList []*TagUser `protobuf:"bytes,1,rep,name=userList" json:"userList,omitempty"` - Content string `protobuf:"bytes,2,opt,name=content" json:"content,omitempty"` - SendTime int64 `protobuf:"varint,3,opt,name=sendTime" json:"sendTime,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *TagSendLog) Reset() { *m = TagSendLog{} } -func (m *TagSendLog) String() string { return proto.CompactTextString(m) } -func (*TagSendLog) ProtoMessage() {} -func (*TagSendLog) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{14} -} -func (m *TagSendLog) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TagSendLog.Unmarshal(m, b) -} -func (m *TagSendLog) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TagSendLog.Marshal(b, m, deterministic) -} -func (dst *TagSendLog) XXX_Merge(src proto.Message) { - xxx_messageInfo_TagSendLog.Merge(dst, src) -} -func (m *TagSendLog) XXX_Size() int { - return xxx_messageInfo_TagSendLog.Size(m) -} -func (m *TagSendLog) XXX_DiscardUnknown() { - xxx_messageInfo_TagSendLog.DiscardUnknown(m) -} - -var xxx_messageInfo_TagSendLog proto.InternalMessageInfo - -func (m *TagSendLog) GetUserList() []*TagUser { - if m != nil { - return m.UserList - } - return nil -} - -func (m *TagSendLog) GetContent() string { - if m != nil { - return m.Content - } - return "" -} - -func (m *TagSendLog) GetSendTime() int64 { - if m != nil { - return m.SendTime - } - return 0 -} - -type GetTagSendLogsResp struct { - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - Pagination *sdk_ws.ResponsePagination `protobuf:"bytes,2,opt,name=Pagination" json:"Pagination,omitempty"` - TagSendLogs []*TagSendLog `protobuf:"bytes,3,rep,name=tagSendLogs" json:"tagSendLogs,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetTagSendLogsResp) Reset() { *m = GetTagSendLogsResp{} } -func (m *GetTagSendLogsResp) String() string { return proto.CompactTextString(m) } -func (*GetTagSendLogsResp) ProtoMessage() {} -func (*GetTagSendLogsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{15} -} -func (m *GetTagSendLogsResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetTagSendLogsResp.Unmarshal(m, b) -} -func (m *GetTagSendLogsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetTagSendLogsResp.Marshal(b, m, deterministic) -} -func (dst *GetTagSendLogsResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetTagSendLogsResp.Merge(dst, src) -} -func (m *GetTagSendLogsResp) XXX_Size() int { - return xxx_messageInfo_GetTagSendLogsResp.Size(m) -} -func (m *GetTagSendLogsResp) XXX_DiscardUnknown() { - xxx_messageInfo_GetTagSendLogsResp.DiscardUnknown(m) -} - -var xxx_messageInfo_GetTagSendLogsResp proto.InternalMessageInfo - -func (m *GetTagSendLogsResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - -func (m *GetTagSendLogsResp) GetPagination() *sdk_ws.ResponsePagination { - if m != nil { - return m.Pagination - } - return nil -} - -func (m *GetTagSendLogsResp) GetTagSendLogs() []*TagSendLog { - if m != nil { - return m.TagSendLogs - } - return nil -} - -type GetUserTagByIDReq struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - TagID string `protobuf:"bytes,2,opt,name=tagID" json:"tagID,omitempty"` - OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetUserTagByIDReq) Reset() { *m = GetUserTagByIDReq{} } -func (m *GetUserTagByIDReq) String() string { return proto.CompactTextString(m) } -func (*GetUserTagByIDReq) ProtoMessage() {} -func (*GetUserTagByIDReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{16} -} -func (m *GetUserTagByIDReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetUserTagByIDReq.Unmarshal(m, b) -} -func (m *GetUserTagByIDReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetUserTagByIDReq.Marshal(b, m, deterministic) -} -func (dst *GetUserTagByIDReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetUserTagByIDReq.Merge(dst, src) -} -func (m *GetUserTagByIDReq) XXX_Size() int { - return xxx_messageInfo_GetUserTagByIDReq.Size(m) -} -func (m *GetUserTagByIDReq) XXX_DiscardUnknown() { - xxx_messageInfo_GetUserTagByIDReq.DiscardUnknown(m) -} - -var xxx_messageInfo_GetUserTagByIDReq proto.InternalMessageInfo - -func (m *GetUserTagByIDReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *GetUserTagByIDReq) GetTagID() string { - if m != nil { - return m.TagID - } - return "" -} - -func (m *GetUserTagByIDReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -type GetUserTagByIDResp struct { - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - Tag *Tag `protobuf:"bytes,2,opt,name=tag" json:"tag,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetUserTagByIDResp) Reset() { *m = GetUserTagByIDResp{} } -func (m *GetUserTagByIDResp) String() string { return proto.CompactTextString(m) } -func (*GetUserTagByIDResp) ProtoMessage() {} -func (*GetUserTagByIDResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{17} -} -func (m *GetUserTagByIDResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetUserTagByIDResp.Unmarshal(m, b) -} -func (m *GetUserTagByIDResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetUserTagByIDResp.Marshal(b, m, deterministic) -} -func (dst *GetUserTagByIDResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetUserTagByIDResp.Merge(dst, src) -} -func (m *GetUserTagByIDResp) XXX_Size() int { - return xxx_messageInfo_GetUserTagByIDResp.Size(m) -} -func (m *GetUserTagByIDResp) XXX_DiscardUnknown() { - xxx_messageInfo_GetUserTagByIDResp.DiscardUnknown(m) -} - -var xxx_messageInfo_GetUserTagByIDResp proto.InternalMessageInfo - -func (m *GetUserTagByIDResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - -func (m *GetUserTagByIDResp) GetTag() *Tag { - if m != nil { - return m.Tag - } - return nil -} - -type LikeUser struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - UserName string `protobuf:"bytes,2,opt,name=userName" json:"userName,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *LikeUser) Reset() { *m = LikeUser{} } -func (m *LikeUser) String() string { return proto.CompactTextString(m) } -func (*LikeUser) ProtoMessage() {} -func (*LikeUser) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{18} -} -func (m *LikeUser) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LikeUser.Unmarshal(m, b) -} -func (m *LikeUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LikeUser.Marshal(b, m, deterministic) -} -func (dst *LikeUser) XXX_Merge(src proto.Message) { - xxx_messageInfo_LikeUser.Merge(dst, src) -} -func (m *LikeUser) XXX_Size() int { - return xxx_messageInfo_LikeUser.Size(m) -} -func (m *LikeUser) XXX_DiscardUnknown() { - xxx_messageInfo_LikeUser.DiscardUnknown(m) -} - -var xxx_messageInfo_LikeUser proto.InternalMessageInfo - -func (m *LikeUser) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *LikeUser) GetUserName() string { - if m != nil { - return m.UserName - } - return "" -} - -type NotificationUser struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - UserName string `protobuf:"bytes,2,opt,name=userName" json:"userName,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *NotificationUser) Reset() { *m = NotificationUser{} } -func (m *NotificationUser) String() string { return proto.CompactTextString(m) } -func (*NotificationUser) ProtoMessage() {} -func (*NotificationUser) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{19} -} -func (m *NotificationUser) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_NotificationUser.Unmarshal(m, b) -} -func (m *NotificationUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_NotificationUser.Marshal(b, m, deterministic) -} -func (dst *NotificationUser) XXX_Merge(src proto.Message) { - xxx_messageInfo_NotificationUser.Merge(dst, src) -} -func (m *NotificationUser) XXX_Size() int { - return xxx_messageInfo_NotificationUser.Size(m) -} -func (m *NotificationUser) XXX_DiscardUnknown() { - xxx_messageInfo_NotificationUser.DiscardUnknown(m) -} - -var xxx_messageInfo_NotificationUser proto.InternalMessageInfo - -func (m *NotificationUser) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *NotificationUser) GetUserName() string { - if m != nil { - return m.UserName - } - return "" -} - -type Comment struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - UserName string `protobuf:"bytes,2,opt,name=userName" json:"userName,omitempty"` - FaceURL string `protobuf:"bytes,3,opt,name=faceURL" json:"faceURL,omitempty"` - ReplyUserID string `protobuf:"bytes,4,opt,name=replyUserID" json:"replyUserID,omitempty"` - ReplyUserName string `protobuf:"bytes,5,opt,name=replyUserName" json:"replyUserName,omitempty"` - ContentID string `protobuf:"bytes,6,opt,name=contentID" json:"contentID,omitempty"` - Content string `protobuf:"bytes,7,opt,name=content" json:"content,omitempty"` - CreateTime int32 `protobuf:"varint,8,opt,name=createTime" json:"createTime,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Comment) Reset() { *m = Comment{} } -func (m *Comment) String() string { return proto.CompactTextString(m) } -func (*Comment) ProtoMessage() {} -func (*Comment) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{20} -} -func (m *Comment) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Comment.Unmarshal(m, b) -} -func (m *Comment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Comment.Marshal(b, m, deterministic) -} -func (dst *Comment) XXX_Merge(src proto.Message) { - xxx_messageInfo_Comment.Merge(dst, src) -} -func (m *Comment) XXX_Size() int { - return xxx_messageInfo_Comment.Size(m) -} -func (m *Comment) XXX_DiscardUnknown() { - xxx_messageInfo_Comment.DiscardUnknown(m) -} - -var xxx_messageInfo_Comment proto.InternalMessageInfo - -func (m *Comment) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *Comment) GetUserName() string { - if m != nil { - return m.UserName - } - return "" -} - -func (m *Comment) GetFaceURL() string { - if m != nil { - return m.FaceURL - } - return "" -} - -func (m *Comment) GetReplyUserID() string { - if m != nil { - return m.ReplyUserID - } - return "" -} - -func (m *Comment) GetReplyUserName() string { - if m != nil { - return m.ReplyUserName - } - return "" -} - -func (m *Comment) GetContentID() string { - if m != nil { - return m.ContentID - } - return "" -} - -func (m *Comment) GetContent() string { - if m != nil { - return m.Content - } - return "" -} - -func (m *Comment) GetCreateTime() int32 { - if m != nil { - return m.CreateTime - } - return 0 -} - -type PermissionGroup struct { - GroupName string `protobuf:"bytes,1,opt,name=groupName" json:"groupName,omitempty"` - GroupID string `protobuf:"bytes,2,opt,name=groupID" json:"groupID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *PermissionGroup) Reset() { *m = PermissionGroup{} } -func (m *PermissionGroup) String() string { return proto.CompactTextString(m) } -func (*PermissionGroup) ProtoMessage() {} -func (*PermissionGroup) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{21} -} -func (m *PermissionGroup) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PermissionGroup.Unmarshal(m, b) -} -func (m *PermissionGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PermissionGroup.Marshal(b, m, deterministic) -} -func (dst *PermissionGroup) XXX_Merge(src proto.Message) { - xxx_messageInfo_PermissionGroup.Merge(dst, src) -} -func (m *PermissionGroup) XXX_Size() int { - return xxx_messageInfo_PermissionGroup.Size(m) -} -func (m *PermissionGroup) XXX_DiscardUnknown() { - xxx_messageInfo_PermissionGroup.DiscardUnknown(m) -} - -var xxx_messageInfo_PermissionGroup proto.InternalMessageInfo - -func (m *PermissionGroup) GetGroupName() string { - if m != nil { - return m.GroupName - } - return "" -} - -func (m *PermissionGroup) GetGroupID() string { - if m != nil { - return m.GroupID - } - return "" -} - -type WorkMomentUser struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - UserName string `protobuf:"bytes,2,opt,name=userName" json:"userName,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *WorkMomentUser) Reset() { *m = WorkMomentUser{} } -func (m *WorkMomentUser) String() string { return proto.CompactTextString(m) } -func (*WorkMomentUser) ProtoMessage() {} -func (*WorkMomentUser) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{22} -} -func (m *WorkMomentUser) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WorkMomentUser.Unmarshal(m, b) -} -func (m *WorkMomentUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WorkMomentUser.Marshal(b, m, deterministic) -} -func (dst *WorkMomentUser) XXX_Merge(src proto.Message) { - xxx_messageInfo_WorkMomentUser.Merge(dst, src) -} -func (m *WorkMomentUser) XXX_Size() int { - return xxx_messageInfo_WorkMomentUser.Size(m) -} -func (m *WorkMomentUser) XXX_DiscardUnknown() { - xxx_messageInfo_WorkMomentUser.DiscardUnknown(m) -} - -var xxx_messageInfo_WorkMomentUser proto.InternalMessageInfo - -func (m *WorkMomentUser) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *WorkMomentUser) GetUserName() string { - if m != nil { - return m.UserName - } - return "" -} - -type WorkMoment struct { - WorkMomentID string `protobuf:"bytes,1,opt,name=workMomentID" json:"workMomentID,omitempty"` - UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` - UserName string `protobuf:"bytes,3,opt,name=userName" json:"userName,omitempty"` - FaceURL string `protobuf:"bytes,4,opt,name=faceURL" json:"faceURL,omitempty"` - Content string `protobuf:"bytes,5,opt,name=content" json:"content,omitempty"` - LikeUserList []*WorkMomentUser `protobuf:"bytes,6,rep,name=likeUserList" json:"likeUserList,omitempty"` - Comments []*Comment `protobuf:"bytes,7,rep,name=comments" json:"comments,omitempty"` - Permission int32 `protobuf:"varint,8,opt,name=permission" json:"permission,omitempty"` - PermissionUserList []*WorkMomentUser `protobuf:"bytes,9,rep,name=permissionUserList" json:"permissionUserList,omitempty"` - PermissionGroupList []*PermissionGroup `protobuf:"bytes,10,rep,name=permissionGroupList" json:"permissionGroupList,omitempty"` - AtUserList []*WorkMomentUser `protobuf:"bytes,11,rep,name=atUserList" json:"atUserList,omitempty"` - CreateTime int32 `protobuf:"varint,12,opt,name=createTime" json:"createTime,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *WorkMoment) Reset() { *m = WorkMoment{} } -func (m *WorkMoment) String() string { return proto.CompactTextString(m) } -func (*WorkMoment) ProtoMessage() {} -func (*WorkMoment) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{23} -} -func (m *WorkMoment) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WorkMoment.Unmarshal(m, b) -} -func (m *WorkMoment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WorkMoment.Marshal(b, m, deterministic) -} -func (dst *WorkMoment) XXX_Merge(src proto.Message) { - xxx_messageInfo_WorkMoment.Merge(dst, src) -} -func (m *WorkMoment) XXX_Size() int { - return xxx_messageInfo_WorkMoment.Size(m) -} -func (m *WorkMoment) XXX_DiscardUnknown() { - xxx_messageInfo_WorkMoment.DiscardUnknown(m) -} - -var xxx_messageInfo_WorkMoment proto.InternalMessageInfo - -func (m *WorkMoment) GetWorkMomentID() string { - if m != nil { - return m.WorkMomentID - } - return "" -} - -func (m *WorkMoment) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *WorkMoment) GetUserName() string { - if m != nil { - return m.UserName - } - return "" -} - -func (m *WorkMoment) GetFaceURL() string { - if m != nil { - return m.FaceURL - } - return "" -} - -func (m *WorkMoment) GetContent() string { - if m != nil { - return m.Content - } - return "" -} - -func (m *WorkMoment) GetLikeUserList() []*WorkMomentUser { - if m != nil { - return m.LikeUserList - } - return nil -} - -func (m *WorkMoment) GetComments() []*Comment { - if m != nil { - return m.Comments - } - return nil -} - -func (m *WorkMoment) GetPermission() int32 { - if m != nil { - return m.Permission - } - return 0 -} - -func (m *WorkMoment) GetPermissionUserList() []*WorkMomentUser { - if m != nil { - return m.PermissionUserList - } - return nil -} - -func (m *WorkMoment) GetPermissionGroupList() []*PermissionGroup { - if m != nil { - return m.PermissionGroupList - } - return nil -} - -func (m *WorkMoment) GetAtUserList() []*WorkMomentUser { - if m != nil { - return m.AtUserList - } - return nil -} - -func (m *WorkMoment) GetCreateTime() int32 { - if m != nil { - return m.CreateTime - } - return 0 -} - -type CreateOneWorkMomentReq struct { - WorkMoment *WorkMoment `protobuf:"bytes,1,opt,name=workMoment" json:"workMoment,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CreateOneWorkMomentReq) Reset() { *m = CreateOneWorkMomentReq{} } -func (m *CreateOneWorkMomentReq) String() string { return proto.CompactTextString(m) } -func (*CreateOneWorkMomentReq) ProtoMessage() {} -func (*CreateOneWorkMomentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{24} -} -func (m *CreateOneWorkMomentReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateOneWorkMomentReq.Unmarshal(m, b) -} -func (m *CreateOneWorkMomentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateOneWorkMomentReq.Marshal(b, m, deterministic) -} -func (dst *CreateOneWorkMomentReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateOneWorkMomentReq.Merge(dst, src) -} -func (m *CreateOneWorkMomentReq) XXX_Size() int { - return xxx_messageInfo_CreateOneWorkMomentReq.Size(m) -} -func (m *CreateOneWorkMomentReq) XXX_DiscardUnknown() { - xxx_messageInfo_CreateOneWorkMomentReq.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateOneWorkMomentReq proto.InternalMessageInfo - -func (m *CreateOneWorkMomentReq) GetWorkMoment() *WorkMoment { - if m != nil { - return m.WorkMoment - } - return nil -} - -func (m *CreateOneWorkMomentReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -type CreateOneWorkMomentResp struct { - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CreateOneWorkMomentResp) Reset() { *m = CreateOneWorkMomentResp{} } -func (m *CreateOneWorkMomentResp) String() string { return proto.CompactTextString(m) } -func (*CreateOneWorkMomentResp) ProtoMessage() {} -func (*CreateOneWorkMomentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{25} -} -func (m *CreateOneWorkMomentResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateOneWorkMomentResp.Unmarshal(m, b) -} -func (m *CreateOneWorkMomentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateOneWorkMomentResp.Marshal(b, m, deterministic) -} -func (dst *CreateOneWorkMomentResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateOneWorkMomentResp.Merge(dst, src) -} -func (m *CreateOneWorkMomentResp) XXX_Size() int { - return xxx_messageInfo_CreateOneWorkMomentResp.Size(m) -} -func (m *CreateOneWorkMomentResp) XXX_DiscardUnknown() { - xxx_messageInfo_CreateOneWorkMomentResp.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateOneWorkMomentResp proto.InternalMessageInfo - -func (m *CreateOneWorkMomentResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - -type DeleteOneWorkMomentReq struct { - WorkMomentID string `protobuf:"bytes,1,opt,name=workMomentID" json:"workMomentID,omitempty"` - UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` - OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DeleteOneWorkMomentReq) Reset() { *m = DeleteOneWorkMomentReq{} } -func (m *DeleteOneWorkMomentReq) String() string { return proto.CompactTextString(m) } -func (*DeleteOneWorkMomentReq) ProtoMessage() {} -func (*DeleteOneWorkMomentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{26} -} -func (m *DeleteOneWorkMomentReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteOneWorkMomentReq.Unmarshal(m, b) -} -func (m *DeleteOneWorkMomentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteOneWorkMomentReq.Marshal(b, m, deterministic) -} -func (dst *DeleteOneWorkMomentReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteOneWorkMomentReq.Merge(dst, src) -} -func (m *DeleteOneWorkMomentReq) XXX_Size() int { - return xxx_messageInfo_DeleteOneWorkMomentReq.Size(m) -} -func (m *DeleteOneWorkMomentReq) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteOneWorkMomentReq.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteOneWorkMomentReq proto.InternalMessageInfo - -func (m *DeleteOneWorkMomentReq) GetWorkMomentID() string { - if m != nil { - return m.WorkMomentID - } - return "" -} - -func (m *DeleteOneWorkMomentReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *DeleteOneWorkMomentReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -type DeleteOneWorkMomentResp struct { - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DeleteOneWorkMomentResp) Reset() { *m = DeleteOneWorkMomentResp{} } -func (m *DeleteOneWorkMomentResp) String() string { return proto.CompactTextString(m) } -func (*DeleteOneWorkMomentResp) ProtoMessage() {} -func (*DeleteOneWorkMomentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{27} -} -func (m *DeleteOneWorkMomentResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteOneWorkMomentResp.Unmarshal(m, b) -} -func (m *DeleteOneWorkMomentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteOneWorkMomentResp.Marshal(b, m, deterministic) -} -func (dst *DeleteOneWorkMomentResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteOneWorkMomentResp.Merge(dst, src) -} -func (m *DeleteOneWorkMomentResp) XXX_Size() int { - return xxx_messageInfo_DeleteOneWorkMomentResp.Size(m) -} -func (m *DeleteOneWorkMomentResp) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteOneWorkMomentResp.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteOneWorkMomentResp proto.InternalMessageInfo - -func (m *DeleteOneWorkMomentResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - -type LikeOneWorkMomentReq struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - WorkMomentID string `protobuf:"bytes,2,opt,name=WorkMomentID" json:"WorkMomentID,omitempty"` - OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *LikeOneWorkMomentReq) Reset() { *m = LikeOneWorkMomentReq{} } -func (m *LikeOneWorkMomentReq) String() string { return proto.CompactTextString(m) } -func (*LikeOneWorkMomentReq) ProtoMessage() {} -func (*LikeOneWorkMomentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{28} -} -func (m *LikeOneWorkMomentReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LikeOneWorkMomentReq.Unmarshal(m, b) -} -func (m *LikeOneWorkMomentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LikeOneWorkMomentReq.Marshal(b, m, deterministic) -} -func (dst *LikeOneWorkMomentReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_LikeOneWorkMomentReq.Merge(dst, src) -} -func (m *LikeOneWorkMomentReq) XXX_Size() int { - return xxx_messageInfo_LikeOneWorkMomentReq.Size(m) -} -func (m *LikeOneWorkMomentReq) XXX_DiscardUnknown() { - xxx_messageInfo_LikeOneWorkMomentReq.DiscardUnknown(m) -} - -var xxx_messageInfo_LikeOneWorkMomentReq proto.InternalMessageInfo - -func (m *LikeOneWorkMomentReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *LikeOneWorkMomentReq) GetWorkMomentID() string { - if m != nil { - return m.WorkMomentID - } - return "" -} - -func (m *LikeOneWorkMomentReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -type LikeOneWorkMomentResp struct { - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *LikeOneWorkMomentResp) Reset() { *m = LikeOneWorkMomentResp{} } -func (m *LikeOneWorkMomentResp) String() string { return proto.CompactTextString(m) } -func (*LikeOneWorkMomentResp) ProtoMessage() {} -func (*LikeOneWorkMomentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{29} -} -func (m *LikeOneWorkMomentResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LikeOneWorkMomentResp.Unmarshal(m, b) -} -func (m *LikeOneWorkMomentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_LikeOneWorkMomentResp.Marshal(b, m, deterministic) -} -func (dst *LikeOneWorkMomentResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_LikeOneWorkMomentResp.Merge(dst, src) -} -func (m *LikeOneWorkMomentResp) XXX_Size() int { - return xxx_messageInfo_LikeOneWorkMomentResp.Size(m) -} -func (m *LikeOneWorkMomentResp) XXX_DiscardUnknown() { - xxx_messageInfo_LikeOneWorkMomentResp.DiscardUnknown(m) -} - -var xxx_messageInfo_LikeOneWorkMomentResp proto.InternalMessageInfo - -func (m *LikeOneWorkMomentResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - -type CommentOneWorkMomentReq struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - WorkMomentID string `protobuf:"bytes,2,opt,name=workMomentID" json:"workMomentID,omitempty"` - ReplyUserID string `protobuf:"bytes,3,opt,name=replyUserID" json:"replyUserID,omitempty"` - Content string `protobuf:"bytes,4,opt,name=content" json:"content,omitempty"` - OperationID string `protobuf:"bytes,5,opt,name=operationID" json:"operationID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CommentOneWorkMomentReq) Reset() { *m = CommentOneWorkMomentReq{} } -func (m *CommentOneWorkMomentReq) String() string { return proto.CompactTextString(m) } -func (*CommentOneWorkMomentReq) ProtoMessage() {} -func (*CommentOneWorkMomentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{30} -} -func (m *CommentOneWorkMomentReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommentOneWorkMomentReq.Unmarshal(m, b) -} -func (m *CommentOneWorkMomentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommentOneWorkMomentReq.Marshal(b, m, deterministic) -} -func (dst *CommentOneWorkMomentReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommentOneWorkMomentReq.Merge(dst, src) -} -func (m *CommentOneWorkMomentReq) XXX_Size() int { - return xxx_messageInfo_CommentOneWorkMomentReq.Size(m) -} -func (m *CommentOneWorkMomentReq) XXX_DiscardUnknown() { - xxx_messageInfo_CommentOneWorkMomentReq.DiscardUnknown(m) -} - -var xxx_messageInfo_CommentOneWorkMomentReq proto.InternalMessageInfo - -func (m *CommentOneWorkMomentReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *CommentOneWorkMomentReq) GetWorkMomentID() string { - if m != nil { - return m.WorkMomentID - } - return "" -} - -func (m *CommentOneWorkMomentReq) GetReplyUserID() string { - if m != nil { - return m.ReplyUserID - } - return "" -} - -func (m *CommentOneWorkMomentReq) GetContent() string { - if m != nil { - return m.Content - } - return "" -} - -func (m *CommentOneWorkMomentReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -type CommentOneWorkMomentResp struct { - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CommentOneWorkMomentResp) Reset() { *m = CommentOneWorkMomentResp{} } -func (m *CommentOneWorkMomentResp) String() string { return proto.CompactTextString(m) } -func (*CommentOneWorkMomentResp) ProtoMessage() {} -func (*CommentOneWorkMomentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{31} -} -func (m *CommentOneWorkMomentResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommentOneWorkMomentResp.Unmarshal(m, b) -} -func (m *CommentOneWorkMomentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommentOneWorkMomentResp.Marshal(b, m, deterministic) -} -func (dst *CommentOneWorkMomentResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommentOneWorkMomentResp.Merge(dst, src) -} -func (m *CommentOneWorkMomentResp) XXX_Size() int { - return xxx_messageInfo_CommentOneWorkMomentResp.Size(m) -} -func (m *CommentOneWorkMomentResp) XXX_DiscardUnknown() { - xxx_messageInfo_CommentOneWorkMomentResp.DiscardUnknown(m) -} - -var xxx_messageInfo_CommentOneWorkMomentResp proto.InternalMessageInfo - -func (m *CommentOneWorkMomentResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - -type GetWorkMomentByIDReq struct { - WorkMomentID string `protobuf:"bytes,1,opt,name=workMomentID" json:"workMomentID,omitempty"` - OpUserID string `protobuf:"bytes,2,opt,name=opUserID" json:"opUserID,omitempty"` - OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetWorkMomentByIDReq) Reset() { *m = GetWorkMomentByIDReq{} } -func (m *GetWorkMomentByIDReq) String() string { return proto.CompactTextString(m) } -func (*GetWorkMomentByIDReq) ProtoMessage() {} -func (*GetWorkMomentByIDReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{32} -} -func (m *GetWorkMomentByIDReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetWorkMomentByIDReq.Unmarshal(m, b) -} -func (m *GetWorkMomentByIDReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetWorkMomentByIDReq.Marshal(b, m, deterministic) -} -func (dst *GetWorkMomentByIDReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetWorkMomentByIDReq.Merge(dst, src) -} -func (m *GetWorkMomentByIDReq) XXX_Size() int { - return xxx_messageInfo_GetWorkMomentByIDReq.Size(m) -} -func (m *GetWorkMomentByIDReq) XXX_DiscardUnknown() { - xxx_messageInfo_GetWorkMomentByIDReq.DiscardUnknown(m) -} - -var xxx_messageInfo_GetWorkMomentByIDReq proto.InternalMessageInfo - -func (m *GetWorkMomentByIDReq) GetWorkMomentID() string { - if m != nil { - return m.WorkMomentID - } - return "" -} - -func (m *GetWorkMomentByIDReq) GetOpUserID() string { - if m != nil { - return m.OpUserID - } - return "" -} - -func (m *GetWorkMomentByIDReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -type GetWorkMomentByIDResp struct { - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - WorkMoment *WorkMoment `protobuf:"bytes,2,opt,name=workMoment" json:"workMoment,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetWorkMomentByIDResp) Reset() { *m = GetWorkMomentByIDResp{} } -func (m *GetWorkMomentByIDResp) String() string { return proto.CompactTextString(m) } -func (*GetWorkMomentByIDResp) ProtoMessage() {} -func (*GetWorkMomentByIDResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{33} -} -func (m *GetWorkMomentByIDResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetWorkMomentByIDResp.Unmarshal(m, b) -} -func (m *GetWorkMomentByIDResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetWorkMomentByIDResp.Marshal(b, m, deterministic) -} -func (dst *GetWorkMomentByIDResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetWorkMomentByIDResp.Merge(dst, src) -} -func (m *GetWorkMomentByIDResp) XXX_Size() int { - return xxx_messageInfo_GetWorkMomentByIDResp.Size(m) -} -func (m *GetWorkMomentByIDResp) XXX_DiscardUnknown() { - xxx_messageInfo_GetWorkMomentByIDResp.DiscardUnknown(m) -} - -var xxx_messageInfo_GetWorkMomentByIDResp proto.InternalMessageInfo - -func (m *GetWorkMomentByIDResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - -func (m *GetWorkMomentByIDResp) GetWorkMoment() *WorkMoment { - if m != nil { - return m.WorkMoment - } - return nil -} - -type ChangeWorkMomentPermissionReq struct { - WorkMomentID string `protobuf:"bytes,1,opt,name=workMomentID" json:"workMomentID,omitempty"` - OpUserID string `protobuf:"bytes,2,opt,name=opUserID" json:"opUserID,omitempty"` - Permission int32 `protobuf:"varint,3,opt,name=permission" json:"permission,omitempty"` - PermissionUserIDList []string `protobuf:"bytes,4,rep,name=permissionUserIDList" json:"permissionUserIDList,omitempty"` - OperationID string `protobuf:"bytes,5,opt,name=operationID" json:"operationID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ChangeWorkMomentPermissionReq) Reset() { *m = ChangeWorkMomentPermissionReq{} } -func (m *ChangeWorkMomentPermissionReq) String() string { return proto.CompactTextString(m) } -func (*ChangeWorkMomentPermissionReq) ProtoMessage() {} -func (*ChangeWorkMomentPermissionReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{34} -} -func (m *ChangeWorkMomentPermissionReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ChangeWorkMomentPermissionReq.Unmarshal(m, b) -} -func (m *ChangeWorkMomentPermissionReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ChangeWorkMomentPermissionReq.Marshal(b, m, deterministic) -} -func (dst *ChangeWorkMomentPermissionReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_ChangeWorkMomentPermissionReq.Merge(dst, src) -} -func (m *ChangeWorkMomentPermissionReq) XXX_Size() int { - return xxx_messageInfo_ChangeWorkMomentPermissionReq.Size(m) -} -func (m *ChangeWorkMomentPermissionReq) XXX_DiscardUnknown() { - xxx_messageInfo_ChangeWorkMomentPermissionReq.DiscardUnknown(m) -} - -var xxx_messageInfo_ChangeWorkMomentPermissionReq proto.InternalMessageInfo - -func (m *ChangeWorkMomentPermissionReq) GetWorkMomentID() string { - if m != nil { - return m.WorkMomentID - } - return "" -} - -func (m *ChangeWorkMomentPermissionReq) GetOpUserID() string { - if m != nil { - return m.OpUserID - } - return "" -} - -func (m *ChangeWorkMomentPermissionReq) GetPermission() int32 { - if m != nil { - return m.Permission - } - return 0 -} - -func (m *ChangeWorkMomentPermissionReq) GetPermissionUserIDList() []string { - if m != nil { - return m.PermissionUserIDList - } - return nil -} - -func (m *ChangeWorkMomentPermissionReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -type ChangeWorkMomentPermissionResp struct { - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ChangeWorkMomentPermissionResp) Reset() { *m = ChangeWorkMomentPermissionResp{} } -func (m *ChangeWorkMomentPermissionResp) String() string { return proto.CompactTextString(m) } -func (*ChangeWorkMomentPermissionResp) ProtoMessage() {} -func (*ChangeWorkMomentPermissionResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{35} -} -func (m *ChangeWorkMomentPermissionResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ChangeWorkMomentPermissionResp.Unmarshal(m, b) -} -func (m *ChangeWorkMomentPermissionResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ChangeWorkMomentPermissionResp.Marshal(b, m, deterministic) -} -func (dst *ChangeWorkMomentPermissionResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_ChangeWorkMomentPermissionResp.Merge(dst, src) -} -func (m *ChangeWorkMomentPermissionResp) XXX_Size() int { - return xxx_messageInfo_ChangeWorkMomentPermissionResp.Size(m) -} -func (m *ChangeWorkMomentPermissionResp) XXX_DiscardUnknown() { - xxx_messageInfo_ChangeWorkMomentPermissionResp.DiscardUnknown(m) -} - -var xxx_messageInfo_ChangeWorkMomentPermissionResp proto.InternalMessageInfo - -func (m *ChangeWorkMomentPermissionResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - -type GetUserWorkMomentsReq struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - OpUserID string `protobuf:"bytes,2,opt,name=opUserID" json:"opUserID,omitempty"` - Pagination *sdk_ws.RequestPagination `protobuf:"bytes,3,opt,name=Pagination" json:"Pagination,omitempty"` - OperationID string `protobuf:"bytes,4,opt,name=operationID" json:"operationID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetUserWorkMomentsReq) Reset() { *m = GetUserWorkMomentsReq{} } -func (m *GetUserWorkMomentsReq) String() string { return proto.CompactTextString(m) } -func (*GetUserWorkMomentsReq) ProtoMessage() {} -func (*GetUserWorkMomentsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{36} -} -func (m *GetUserWorkMomentsReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetUserWorkMomentsReq.Unmarshal(m, b) -} -func (m *GetUserWorkMomentsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetUserWorkMomentsReq.Marshal(b, m, deterministic) -} -func (dst *GetUserWorkMomentsReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetUserWorkMomentsReq.Merge(dst, src) -} -func (m *GetUserWorkMomentsReq) XXX_Size() int { - return xxx_messageInfo_GetUserWorkMomentsReq.Size(m) -} -func (m *GetUserWorkMomentsReq) XXX_DiscardUnknown() { - xxx_messageInfo_GetUserWorkMomentsReq.DiscardUnknown(m) -} - -var xxx_messageInfo_GetUserWorkMomentsReq proto.InternalMessageInfo - -func (m *GetUserWorkMomentsReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *GetUserWorkMomentsReq) GetOpUserID() string { - if m != nil { - return m.OpUserID - } - return "" -} - -func (m *GetUserWorkMomentsReq) GetPagination() *sdk_ws.RequestPagination { - if m != nil { - return m.Pagination - } - return nil -} - -func (m *GetUserWorkMomentsReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -type GetUserWorkMomentsResp struct { - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - WorkMoments []*WorkMoment `protobuf:"bytes,2,rep,name=workMoments" json:"workMoments,omitempty"` - Pagination *sdk_ws.ResponsePagination `protobuf:"bytes,3,opt,name=Pagination" json:"Pagination,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetUserWorkMomentsResp) Reset() { *m = GetUserWorkMomentsResp{} } -func (m *GetUserWorkMomentsResp) String() string { return proto.CompactTextString(m) } -func (*GetUserWorkMomentsResp) ProtoMessage() {} -func (*GetUserWorkMomentsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{37} -} -func (m *GetUserWorkMomentsResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetUserWorkMomentsResp.Unmarshal(m, b) -} -func (m *GetUserWorkMomentsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetUserWorkMomentsResp.Marshal(b, m, deterministic) -} -func (dst *GetUserWorkMomentsResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetUserWorkMomentsResp.Merge(dst, src) -} -func (m *GetUserWorkMomentsResp) XXX_Size() int { - return xxx_messageInfo_GetUserWorkMomentsResp.Size(m) -} -func (m *GetUserWorkMomentsResp) XXX_DiscardUnknown() { - xxx_messageInfo_GetUserWorkMomentsResp.DiscardUnknown(m) -} - -var xxx_messageInfo_GetUserWorkMomentsResp proto.InternalMessageInfo - -func (m *GetUserWorkMomentsResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - -func (m *GetUserWorkMomentsResp) GetWorkMoments() []*WorkMoment { - if m != nil { - return m.WorkMoments - } - return nil -} - -func (m *GetUserWorkMomentsResp) GetPagination() *sdk_ws.ResponsePagination { - if m != nil { - return m.Pagination - } - return nil -} - -type GetUserFriendWorkMomentsReq struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - Pagination *sdk_ws.RequestPagination `protobuf:"bytes,2,opt,name=Pagination" json:"Pagination,omitempty"` - OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetUserFriendWorkMomentsReq) Reset() { *m = GetUserFriendWorkMomentsReq{} } -func (m *GetUserFriendWorkMomentsReq) String() string { return proto.CompactTextString(m) } -func (*GetUserFriendWorkMomentsReq) ProtoMessage() {} -func (*GetUserFriendWorkMomentsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{38} -} -func (m *GetUserFriendWorkMomentsReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetUserFriendWorkMomentsReq.Unmarshal(m, b) -} -func (m *GetUserFriendWorkMomentsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetUserFriendWorkMomentsReq.Marshal(b, m, deterministic) -} -func (dst *GetUserFriendWorkMomentsReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetUserFriendWorkMomentsReq.Merge(dst, src) -} -func (m *GetUserFriendWorkMomentsReq) XXX_Size() int { - return xxx_messageInfo_GetUserFriendWorkMomentsReq.Size(m) -} -func (m *GetUserFriendWorkMomentsReq) XXX_DiscardUnknown() { - xxx_messageInfo_GetUserFriendWorkMomentsReq.DiscardUnknown(m) -} - -var xxx_messageInfo_GetUserFriendWorkMomentsReq proto.InternalMessageInfo - -func (m *GetUserFriendWorkMomentsReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *GetUserFriendWorkMomentsReq) GetPagination() *sdk_ws.RequestPagination { - if m != nil { - return m.Pagination - } - return nil -} - -func (m *GetUserFriendWorkMomentsReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -type GetUserFriendWorkMomentsResp struct { - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - WorkMoments []*WorkMoment `protobuf:"bytes,2,rep,name=workMoments" json:"workMoments,omitempty"` - Pagination *sdk_ws.ResponsePagination `protobuf:"bytes,3,opt,name=Pagination" json:"Pagination,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetUserFriendWorkMomentsResp) Reset() { *m = GetUserFriendWorkMomentsResp{} } -func (m *GetUserFriendWorkMomentsResp) String() string { return proto.CompactTextString(m) } -func (*GetUserFriendWorkMomentsResp) ProtoMessage() {} -func (*GetUserFriendWorkMomentsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{39} -} -func (m *GetUserFriendWorkMomentsResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetUserFriendWorkMomentsResp.Unmarshal(m, b) -} -func (m *GetUserFriendWorkMomentsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetUserFriendWorkMomentsResp.Marshal(b, m, deterministic) -} -func (dst *GetUserFriendWorkMomentsResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetUserFriendWorkMomentsResp.Merge(dst, src) -} -func (m *GetUserFriendWorkMomentsResp) XXX_Size() int { - return xxx_messageInfo_GetUserFriendWorkMomentsResp.Size(m) -} -func (m *GetUserFriendWorkMomentsResp) XXX_DiscardUnknown() { - xxx_messageInfo_GetUserFriendWorkMomentsResp.DiscardUnknown(m) -} - -var xxx_messageInfo_GetUserFriendWorkMomentsResp proto.InternalMessageInfo - -func (m *GetUserFriendWorkMomentsResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - -func (m *GetUserFriendWorkMomentsResp) GetWorkMoments() []*WorkMoment { - if m != nil { - return m.WorkMoments - } - return nil -} - -func (m *GetUserFriendWorkMomentsResp) GetPagination() *sdk_ws.ResponsePagination { - if m != nil { - return m.Pagination - } - return nil -} - -type WorkMomentNotificationMsg struct { - NotificationMsgType int32 `protobuf:"varint,1,opt,name=notificationMsgType" json:"notificationMsgType,omitempty"` - ReplyUserName string `protobuf:"bytes,2,opt,name=replyUserName" json:"replyUserName,omitempty"` - ReplyUserID string `protobuf:"bytes,3,opt,name=replyUserID" json:"replyUserID,omitempty"` - Content string `protobuf:"bytes,4,opt,name=content" json:"content,omitempty"` - ContentID string `protobuf:"bytes,5,opt,name=contentID" json:"contentID,omitempty"` - WorkMomentID string `protobuf:"bytes,6,opt,name=workMomentID" json:"workMomentID,omitempty"` - UserID string `protobuf:"bytes,7,opt,name=userID" json:"userID,omitempty"` - UserName string `protobuf:"bytes,8,opt,name=userName" json:"userName,omitempty"` - FaceURL string `protobuf:"bytes,9,opt,name=faceURL" json:"faceURL,omitempty"` - WorkMomentContent string `protobuf:"bytes,10,opt,name=workMomentContent" json:"workMomentContent,omitempty"` - CreateTime int32 `protobuf:"varint,11,opt,name=createTime" json:"createTime,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *WorkMomentNotificationMsg) Reset() { *m = WorkMomentNotificationMsg{} } -func (m *WorkMomentNotificationMsg) String() string { return proto.CompactTextString(m) } -func (*WorkMomentNotificationMsg) ProtoMessage() {} -func (*WorkMomentNotificationMsg) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{40} -} -func (m *WorkMomentNotificationMsg) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WorkMomentNotificationMsg.Unmarshal(m, b) -} -func (m *WorkMomentNotificationMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WorkMomentNotificationMsg.Marshal(b, m, deterministic) -} -func (dst *WorkMomentNotificationMsg) XXX_Merge(src proto.Message) { - xxx_messageInfo_WorkMomentNotificationMsg.Merge(dst, src) -} -func (m *WorkMomentNotificationMsg) XXX_Size() int { - return xxx_messageInfo_WorkMomentNotificationMsg.Size(m) -} -func (m *WorkMomentNotificationMsg) XXX_DiscardUnknown() { - xxx_messageInfo_WorkMomentNotificationMsg.DiscardUnknown(m) -} - -var xxx_messageInfo_WorkMomentNotificationMsg proto.InternalMessageInfo - -func (m *WorkMomentNotificationMsg) GetNotificationMsgType() int32 { - if m != nil { - return m.NotificationMsgType - } - return 0 -} - -func (m *WorkMomentNotificationMsg) GetReplyUserName() string { - if m != nil { - return m.ReplyUserName - } - return "" -} - -func (m *WorkMomentNotificationMsg) GetReplyUserID() string { - if m != nil { - return m.ReplyUserID - } - return "" -} - -func (m *WorkMomentNotificationMsg) GetContent() string { - if m != nil { - return m.Content - } - return "" -} - -func (m *WorkMomentNotificationMsg) GetContentID() string { - if m != nil { - return m.ContentID - } - return "" -} - -func (m *WorkMomentNotificationMsg) GetWorkMomentID() string { - if m != nil { - return m.WorkMomentID - } - return "" -} - -func (m *WorkMomentNotificationMsg) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *WorkMomentNotificationMsg) GetUserName() string { - if m != nil { - return m.UserName - } - return "" -} - -func (m *WorkMomentNotificationMsg) GetFaceURL() string { - if m != nil { - return m.FaceURL - } - return "" -} - -func (m *WorkMomentNotificationMsg) GetWorkMomentContent() string { - if m != nil { - return m.WorkMomentContent - } - return "" -} - -func (m *WorkMomentNotificationMsg) GetCreateTime() int32 { - if m != nil { - return m.CreateTime - } - return 0 -} - -type SetUserWorkMomentsLevelReq struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - Level int32 `protobuf:"varint,2,opt,name=level" json:"level,omitempty"` - OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SetUserWorkMomentsLevelReq) Reset() { *m = SetUserWorkMomentsLevelReq{} } -func (m *SetUserWorkMomentsLevelReq) String() string { return proto.CompactTextString(m) } -func (*SetUserWorkMomentsLevelReq) ProtoMessage() {} -func (*SetUserWorkMomentsLevelReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{41} -} -func (m *SetUserWorkMomentsLevelReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetUserWorkMomentsLevelReq.Unmarshal(m, b) -} -func (m *SetUserWorkMomentsLevelReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetUserWorkMomentsLevelReq.Marshal(b, m, deterministic) -} -func (dst *SetUserWorkMomentsLevelReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetUserWorkMomentsLevelReq.Merge(dst, src) -} -func (m *SetUserWorkMomentsLevelReq) XXX_Size() int { - return xxx_messageInfo_SetUserWorkMomentsLevelReq.Size(m) -} -func (m *SetUserWorkMomentsLevelReq) XXX_DiscardUnknown() { - xxx_messageInfo_SetUserWorkMomentsLevelReq.DiscardUnknown(m) -} - -var xxx_messageInfo_SetUserWorkMomentsLevelReq proto.InternalMessageInfo - -func (m *SetUserWorkMomentsLevelReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *SetUserWorkMomentsLevelReq) GetLevel() int32 { - if m != nil { - return m.Level - } - return 0 -} - -func (m *SetUserWorkMomentsLevelReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -type SetUserWorkMomentsLevelResp struct { - CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *SetUserWorkMomentsLevelResp) Reset() { *m = SetUserWorkMomentsLevelResp{} } -func (m *SetUserWorkMomentsLevelResp) String() string { return proto.CompactTextString(m) } -func (*SetUserWorkMomentsLevelResp) ProtoMessage() {} -func (*SetUserWorkMomentsLevelResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_45d86d1784e03bf7, []int{42} -} -func (m *SetUserWorkMomentsLevelResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetUserWorkMomentsLevelResp.Unmarshal(m, b) -} -func (m *SetUserWorkMomentsLevelResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetUserWorkMomentsLevelResp.Marshal(b, m, deterministic) -} -func (dst *SetUserWorkMomentsLevelResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetUserWorkMomentsLevelResp.Merge(dst, src) -} -func (m *SetUserWorkMomentsLevelResp) XXX_Size() int { - return xxx_messageInfo_SetUserWorkMomentsLevelResp.Size(m) -} -func (m *SetUserWorkMomentsLevelResp) XXX_DiscardUnknown() { - xxx_messageInfo_SetUserWorkMomentsLevelResp.DiscardUnknown(m) -} - -var xxx_messageInfo_SetUserWorkMomentsLevelResp proto.InternalMessageInfo - -func (m *SetUserWorkMomentsLevelResp) GetCommonResp() *CommonResp { - if m != nil { - return m.CommonResp - } - return nil -} - -func init() { - proto.RegisterType((*CommonResp)(nil), "office.CommonResp") - proto.RegisterType((*TagUser)(nil), "office.TagUser") - proto.RegisterType((*Tag)(nil), "office.Tag") - proto.RegisterType((*GetUserTagsReq)(nil), "office.GetUserTagsReq") - proto.RegisterType((*GetUserTagsResp)(nil), "office.GetUserTagsResp") - proto.RegisterType((*CreateTagReq)(nil), "office.CreateTagReq") - proto.RegisterType((*CreateTagResp)(nil), "office.CreateTagResp") - proto.RegisterType((*DeleteTagReq)(nil), "office.DeleteTagReq") - proto.RegisterType((*DeleteTagResp)(nil), "office.DeleteTagResp") - proto.RegisterType((*SetTagReq)(nil), "office.SetTagReq") - proto.RegisterType((*SetTagResp)(nil), "office.SetTagResp") - proto.RegisterType((*SendMsg2TagReq)(nil), "office.SendMsg2TagReq") - proto.RegisterType((*SendMsg2TagResp)(nil), "office.SendMsg2TagResp") - proto.RegisterType((*GetTagSendLogsReq)(nil), "office.GetTagSendLogsReq") - proto.RegisterType((*TagSendLog)(nil), "office.TagSendLog") - proto.RegisterType((*GetTagSendLogsResp)(nil), "office.GetTagSendLogsResp") - proto.RegisterType((*GetUserTagByIDReq)(nil), "office.GetUserTagByIDReq") - proto.RegisterType((*GetUserTagByIDResp)(nil), "office.GetUserTagByIDResp") - proto.RegisterType((*LikeUser)(nil), "office.LikeUser") - proto.RegisterType((*NotificationUser)(nil), "office.NotificationUser") - proto.RegisterType((*Comment)(nil), "office.Comment") - proto.RegisterType((*PermissionGroup)(nil), "office.PermissionGroup") - proto.RegisterType((*WorkMomentUser)(nil), "office.WorkMomentUser") - proto.RegisterType((*WorkMoment)(nil), "office.WorkMoment") - proto.RegisterType((*CreateOneWorkMomentReq)(nil), "office.CreateOneWorkMomentReq") - proto.RegisterType((*CreateOneWorkMomentResp)(nil), "office.CreateOneWorkMomentResp") - proto.RegisterType((*DeleteOneWorkMomentReq)(nil), "office.DeleteOneWorkMomentReq") - proto.RegisterType((*DeleteOneWorkMomentResp)(nil), "office.DeleteOneWorkMomentResp") - proto.RegisterType((*LikeOneWorkMomentReq)(nil), "office.LikeOneWorkMomentReq") - proto.RegisterType((*LikeOneWorkMomentResp)(nil), "office.LikeOneWorkMomentResp") - proto.RegisterType((*CommentOneWorkMomentReq)(nil), "office.CommentOneWorkMomentReq") - proto.RegisterType((*CommentOneWorkMomentResp)(nil), "office.CommentOneWorkMomentResp") - proto.RegisterType((*GetWorkMomentByIDReq)(nil), "office.GetWorkMomentByIDReq") - proto.RegisterType((*GetWorkMomentByIDResp)(nil), "office.GetWorkMomentByIDResp") - proto.RegisterType((*ChangeWorkMomentPermissionReq)(nil), "office.ChangeWorkMomentPermissionReq") - proto.RegisterType((*ChangeWorkMomentPermissionResp)(nil), "office.ChangeWorkMomentPermissionResp") - proto.RegisterType((*GetUserWorkMomentsReq)(nil), "office.GetUserWorkMomentsReq") - proto.RegisterType((*GetUserWorkMomentsResp)(nil), "office.GetUserWorkMomentsResp") - proto.RegisterType((*GetUserFriendWorkMomentsReq)(nil), "office.GetUserFriendWorkMomentsReq") - proto.RegisterType((*GetUserFriendWorkMomentsResp)(nil), "office.GetUserFriendWorkMomentsResp") - proto.RegisterType((*WorkMomentNotificationMsg)(nil), "office.WorkMomentNotificationMsg") - proto.RegisterType((*SetUserWorkMomentsLevelReq)(nil), "office.SetUserWorkMomentsLevelReq") - proto.RegisterType((*SetUserWorkMomentsLevelResp)(nil), "office.SetUserWorkMomentsLevelResp") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for OfficeService service - -type OfficeServiceClient interface { - GetUserTags(ctx context.Context, in *GetUserTagsReq, opts ...grpc.CallOption) (*GetUserTagsResp, error) - CreateTag(ctx context.Context, in *CreateTagReq, opts ...grpc.CallOption) (*CreateTagResp, error) - DeleteTag(ctx context.Context, in *DeleteTagReq, opts ...grpc.CallOption) (*DeleteTagResp, error) - SetTag(ctx context.Context, in *SetTagReq, opts ...grpc.CallOption) (*SetTagResp, error) - SendMsg2Tag(ctx context.Context, in *SendMsg2TagReq, opts ...grpc.CallOption) (*SendMsg2TagResp, error) - GetTagSendLogs(ctx context.Context, in *GetTagSendLogsReq, opts ...grpc.CallOption) (*GetTagSendLogsResp, error) - GetUserTagByID(ctx context.Context, in *GetUserTagByIDReq, opts ...grpc.CallOption) (*GetUserTagByIDResp, error) - CreateOneWorkMoment(ctx context.Context, in *CreateOneWorkMomentReq, opts ...grpc.CallOption) (*CreateOneWorkMomentResp, error) - DeleteOneWorkMoment(ctx context.Context, in *DeleteOneWorkMomentReq, opts ...grpc.CallOption) (*DeleteOneWorkMomentResp, error) - LikeOneWorkMoment(ctx context.Context, in *LikeOneWorkMomentReq, opts ...grpc.CallOption) (*LikeOneWorkMomentResp, error) - CommentOneWorkMoment(ctx context.Context, in *CommentOneWorkMomentReq, opts ...grpc.CallOption) (*CommentOneWorkMomentResp, error) - GetWorkMomentByID(ctx context.Context, in *GetWorkMomentByIDReq, opts ...grpc.CallOption) (*GetWorkMomentByIDResp, error) - ChangeWorkMomentPermission(ctx context.Context, in *ChangeWorkMomentPermissionReq, opts ...grpc.CallOption) (*ChangeWorkMomentPermissionResp, error) - // / user self - GetUserWorkMoments(ctx context.Context, in *GetUserWorkMomentsReq, opts ...grpc.CallOption) (*GetUserWorkMomentsResp, error) - // / users friend - GetUserFriendWorkMoments(ctx context.Context, in *GetUserFriendWorkMomentsReq, opts ...grpc.CallOption) (*GetUserFriendWorkMomentsResp, error) - SetUserWorkMomentsLevel(ctx context.Context, in *SetUserWorkMomentsLevelReq, opts ...grpc.CallOption) (*SetUserWorkMomentsLevelResp, error) -} - -type officeServiceClient struct { - cc *grpc.ClientConn -} - -func NewOfficeServiceClient(cc *grpc.ClientConn) OfficeServiceClient { - return &officeServiceClient{cc} -} - -func (c *officeServiceClient) GetUserTags(ctx context.Context, in *GetUserTagsReq, opts ...grpc.CallOption) (*GetUserTagsResp, error) { - out := new(GetUserTagsResp) - err := grpc.Invoke(ctx, "/office.OfficeService/GetUserTags", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *officeServiceClient) CreateTag(ctx context.Context, in *CreateTagReq, opts ...grpc.CallOption) (*CreateTagResp, error) { - out := new(CreateTagResp) - err := grpc.Invoke(ctx, "/office.OfficeService/CreateTag", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *officeServiceClient) DeleteTag(ctx context.Context, in *DeleteTagReq, opts ...grpc.CallOption) (*DeleteTagResp, error) { - out := new(DeleteTagResp) - err := grpc.Invoke(ctx, "/office.OfficeService/DeleteTag", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *officeServiceClient) SetTag(ctx context.Context, in *SetTagReq, opts ...grpc.CallOption) (*SetTagResp, error) { - out := new(SetTagResp) - err := grpc.Invoke(ctx, "/office.OfficeService/SetTag", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *officeServiceClient) SendMsg2Tag(ctx context.Context, in *SendMsg2TagReq, opts ...grpc.CallOption) (*SendMsg2TagResp, error) { - out := new(SendMsg2TagResp) - err := grpc.Invoke(ctx, "/office.OfficeService/SendMsg2Tag", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *officeServiceClient) GetTagSendLogs(ctx context.Context, in *GetTagSendLogsReq, opts ...grpc.CallOption) (*GetTagSendLogsResp, error) { - out := new(GetTagSendLogsResp) - err := grpc.Invoke(ctx, "/office.OfficeService/GetTagSendLogs", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *officeServiceClient) GetUserTagByID(ctx context.Context, in *GetUserTagByIDReq, opts ...grpc.CallOption) (*GetUserTagByIDResp, error) { - out := new(GetUserTagByIDResp) - err := grpc.Invoke(ctx, "/office.OfficeService/GetUserTagByID", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *officeServiceClient) CreateOneWorkMoment(ctx context.Context, in *CreateOneWorkMomentReq, opts ...grpc.CallOption) (*CreateOneWorkMomentResp, error) { - out := new(CreateOneWorkMomentResp) - err := grpc.Invoke(ctx, "/office.OfficeService/CreateOneWorkMoment", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *officeServiceClient) DeleteOneWorkMoment(ctx context.Context, in *DeleteOneWorkMomentReq, opts ...grpc.CallOption) (*DeleteOneWorkMomentResp, error) { - out := new(DeleteOneWorkMomentResp) - err := grpc.Invoke(ctx, "/office.OfficeService/DeleteOneWorkMoment", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *officeServiceClient) LikeOneWorkMoment(ctx context.Context, in *LikeOneWorkMomentReq, opts ...grpc.CallOption) (*LikeOneWorkMomentResp, error) { - out := new(LikeOneWorkMomentResp) - err := grpc.Invoke(ctx, "/office.OfficeService/LikeOneWorkMoment", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *officeServiceClient) CommentOneWorkMoment(ctx context.Context, in *CommentOneWorkMomentReq, opts ...grpc.CallOption) (*CommentOneWorkMomentResp, error) { - out := new(CommentOneWorkMomentResp) - err := grpc.Invoke(ctx, "/office.OfficeService/CommentOneWorkMoment", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *officeServiceClient) GetWorkMomentByID(ctx context.Context, in *GetWorkMomentByIDReq, opts ...grpc.CallOption) (*GetWorkMomentByIDResp, error) { - out := new(GetWorkMomentByIDResp) - err := grpc.Invoke(ctx, "/office.OfficeService/GetWorkMomentByID", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *officeServiceClient) ChangeWorkMomentPermission(ctx context.Context, in *ChangeWorkMomentPermissionReq, opts ...grpc.CallOption) (*ChangeWorkMomentPermissionResp, error) { - out := new(ChangeWorkMomentPermissionResp) - err := grpc.Invoke(ctx, "/office.OfficeService/ChangeWorkMomentPermission", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *officeServiceClient) GetUserWorkMoments(ctx context.Context, in *GetUserWorkMomentsReq, opts ...grpc.CallOption) (*GetUserWorkMomentsResp, error) { - out := new(GetUserWorkMomentsResp) - err := grpc.Invoke(ctx, "/office.OfficeService/GetUserWorkMoments", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *officeServiceClient) GetUserFriendWorkMoments(ctx context.Context, in *GetUserFriendWorkMomentsReq, opts ...grpc.CallOption) (*GetUserFriendWorkMomentsResp, error) { - out := new(GetUserFriendWorkMomentsResp) - err := grpc.Invoke(ctx, "/office.OfficeService/GetUserFriendWorkMoments", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *officeServiceClient) SetUserWorkMomentsLevel(ctx context.Context, in *SetUserWorkMomentsLevelReq, opts ...grpc.CallOption) (*SetUserWorkMomentsLevelResp, error) { - out := new(SetUserWorkMomentsLevelResp) - err := grpc.Invoke(ctx, "/office.OfficeService/SetUserWorkMomentsLevel", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for OfficeService service - -type OfficeServiceServer interface { - GetUserTags(context.Context, *GetUserTagsReq) (*GetUserTagsResp, error) - CreateTag(context.Context, *CreateTagReq) (*CreateTagResp, error) - DeleteTag(context.Context, *DeleteTagReq) (*DeleteTagResp, error) - SetTag(context.Context, *SetTagReq) (*SetTagResp, error) - SendMsg2Tag(context.Context, *SendMsg2TagReq) (*SendMsg2TagResp, error) - GetTagSendLogs(context.Context, *GetTagSendLogsReq) (*GetTagSendLogsResp, error) - GetUserTagByID(context.Context, *GetUserTagByIDReq) (*GetUserTagByIDResp, error) - CreateOneWorkMoment(context.Context, *CreateOneWorkMomentReq) (*CreateOneWorkMomentResp, error) - DeleteOneWorkMoment(context.Context, *DeleteOneWorkMomentReq) (*DeleteOneWorkMomentResp, error) - LikeOneWorkMoment(context.Context, *LikeOneWorkMomentReq) (*LikeOneWorkMomentResp, error) - CommentOneWorkMoment(context.Context, *CommentOneWorkMomentReq) (*CommentOneWorkMomentResp, error) - GetWorkMomentByID(context.Context, *GetWorkMomentByIDReq) (*GetWorkMomentByIDResp, error) - ChangeWorkMomentPermission(context.Context, *ChangeWorkMomentPermissionReq) (*ChangeWorkMomentPermissionResp, error) - // / user self - GetUserWorkMoments(context.Context, *GetUserWorkMomentsReq) (*GetUserWorkMomentsResp, error) - // / users friend - GetUserFriendWorkMoments(context.Context, *GetUserFriendWorkMomentsReq) (*GetUserFriendWorkMomentsResp, error) - SetUserWorkMomentsLevel(context.Context, *SetUserWorkMomentsLevelReq) (*SetUserWorkMomentsLevelResp, error) -} - -func RegisterOfficeServiceServer(s *grpc.Server, srv OfficeServiceServer) { - s.RegisterService(&_OfficeService_serviceDesc, srv) -} - -func _OfficeService_GetUserTags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetUserTagsReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).GetUserTags(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/GetUserTags", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).GetUserTags(ctx, req.(*GetUserTagsReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _OfficeService_CreateTag_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateTagReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).CreateTag(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/CreateTag", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).CreateTag(ctx, req.(*CreateTagReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _OfficeService_DeleteTag_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteTagReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).DeleteTag(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/DeleteTag", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).DeleteTag(ctx, req.(*DeleteTagReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _OfficeService_SetTag_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetTagReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).SetTag(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/SetTag", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).SetTag(ctx, req.(*SetTagReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _OfficeService_SendMsg2Tag_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SendMsg2TagReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).SendMsg2Tag(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/SendMsg2Tag", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).SendMsg2Tag(ctx, req.(*SendMsg2TagReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _OfficeService_GetTagSendLogs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTagSendLogsReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).GetTagSendLogs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/GetTagSendLogs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).GetTagSendLogs(ctx, req.(*GetTagSendLogsReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _OfficeService_GetUserTagByID_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetUserTagByIDReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).GetUserTagByID(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/GetUserTagByID", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).GetUserTagByID(ctx, req.(*GetUserTagByIDReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _OfficeService_CreateOneWorkMoment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateOneWorkMomentReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).CreateOneWorkMoment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/CreateOneWorkMoment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).CreateOneWorkMoment(ctx, req.(*CreateOneWorkMomentReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _OfficeService_DeleteOneWorkMoment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteOneWorkMomentReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).DeleteOneWorkMoment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/DeleteOneWorkMoment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).DeleteOneWorkMoment(ctx, req.(*DeleteOneWorkMomentReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _OfficeService_LikeOneWorkMoment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(LikeOneWorkMomentReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).LikeOneWorkMoment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/LikeOneWorkMoment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).LikeOneWorkMoment(ctx, req.(*LikeOneWorkMomentReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _OfficeService_CommentOneWorkMoment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CommentOneWorkMomentReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).CommentOneWorkMoment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/CommentOneWorkMoment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).CommentOneWorkMoment(ctx, req.(*CommentOneWorkMomentReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _OfficeService_GetWorkMomentByID_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetWorkMomentByIDReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).GetWorkMomentByID(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/GetWorkMomentByID", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).GetWorkMomentByID(ctx, req.(*GetWorkMomentByIDReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _OfficeService_ChangeWorkMomentPermission_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ChangeWorkMomentPermissionReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).ChangeWorkMomentPermission(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/ChangeWorkMomentPermission", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).ChangeWorkMomentPermission(ctx, req.(*ChangeWorkMomentPermissionReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _OfficeService_GetUserWorkMoments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetUserWorkMomentsReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).GetUserWorkMoments(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/GetUserWorkMoments", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).GetUserWorkMoments(ctx, req.(*GetUserWorkMomentsReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _OfficeService_GetUserFriendWorkMoments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetUserFriendWorkMomentsReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).GetUserFriendWorkMoments(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/GetUserFriendWorkMoments", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).GetUserFriendWorkMoments(ctx, req.(*GetUserFriendWorkMomentsReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _OfficeService_SetUserWorkMomentsLevel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetUserWorkMomentsLevelReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OfficeServiceServer).SetUserWorkMomentsLevel(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/office.OfficeService/SetUserWorkMomentsLevel", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OfficeServiceServer).SetUserWorkMomentsLevel(ctx, req.(*SetUserWorkMomentsLevelReq)) - } - return interceptor(ctx, in, info, handler) -} - -var _OfficeService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "office.OfficeService", - HandlerType: (*OfficeServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetUserTags", - Handler: _OfficeService_GetUserTags_Handler, - }, - { - MethodName: "CreateTag", - Handler: _OfficeService_CreateTag_Handler, - }, - { - MethodName: "DeleteTag", - Handler: _OfficeService_DeleteTag_Handler, - }, - { - MethodName: "SetTag", - Handler: _OfficeService_SetTag_Handler, - }, - { - MethodName: "SendMsg2Tag", - Handler: _OfficeService_SendMsg2Tag_Handler, - }, - { - MethodName: "GetTagSendLogs", - Handler: _OfficeService_GetTagSendLogs_Handler, - }, - { - MethodName: "GetUserTagByID", - Handler: _OfficeService_GetUserTagByID_Handler, - }, - { - MethodName: "CreateOneWorkMoment", - Handler: _OfficeService_CreateOneWorkMoment_Handler, - }, - { - MethodName: "DeleteOneWorkMoment", - Handler: _OfficeService_DeleteOneWorkMoment_Handler, - }, - { - MethodName: "LikeOneWorkMoment", - Handler: _OfficeService_LikeOneWorkMoment_Handler, - }, - { - MethodName: "CommentOneWorkMoment", - Handler: _OfficeService_CommentOneWorkMoment_Handler, - }, - { - MethodName: "GetWorkMomentByID", - Handler: _OfficeService_GetWorkMomentByID_Handler, - }, - { - MethodName: "ChangeWorkMomentPermission", - Handler: _OfficeService_ChangeWorkMomentPermission_Handler, - }, - { - MethodName: "GetUserWorkMoments", - Handler: _OfficeService_GetUserWorkMoments_Handler, - }, - { - MethodName: "GetUserFriendWorkMoments", - Handler: _OfficeService_GetUserFriendWorkMoments_Handler, - }, - { - MethodName: "SetUserWorkMomentsLevel", - Handler: _OfficeService_SetUserWorkMomentsLevel_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "office/office.proto", -} - -func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_45d86d1784e03bf7) } - -var fileDescriptor_office_45d86d1784e03bf7 = []byte{ - // 1621 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0x4f, 0x6f, 0xdc, 0x44, - 0x14, 0x97, 0x77, 0xb3, 0xd9, 0xec, 0xdb, 0xb4, 0x69, 0x26, 0xff, 0xb6, 0x6e, 0x93, 0x06, 0xb7, - 0x45, 0x15, 0xa0, 0x04, 0x85, 0x0a, 0x21, 0x10, 0x15, 0x6a, 0xb6, 0x8d, 0x16, 0xb2, 0x6d, 0x70, - 0x12, 0x2a, 0x38, 0x10, 0xb9, 0x9b, 0x89, 0xb1, 0xb2, 0xb1, 0x5d, 0x8f, 0x93, 0xd0, 0x13, 0x52, - 0xcf, 0x70, 0xe2, 0xcc, 0xa7, 0xe0, 0x33, 0x70, 0xe0, 0x84, 0x38, 0xf0, 0x0d, 0xf8, 0x0e, 0x5c, - 0xd1, 0x8c, 0xed, 0xf9, 0x63, 0x8f, 0x77, 0x17, 0x17, 0x0e, 0x9c, 0xd6, 0xef, 0xcd, 0x9b, 0x37, - 0xef, 0xfd, 0xe6, 0xcd, 0x9b, 0x37, 0x6f, 0x61, 0x21, 0x38, 0x39, 0xf1, 0x06, 0x78, 0x33, 0xf9, - 0xd9, 0x08, 0xa3, 0x20, 0x0e, 0xd0, 0x74, 0x42, 0x99, 0x6f, 0x3c, 0x0d, 0xb1, 0x7f, 0xd4, 0xeb, - 0x6f, 0x86, 0xa7, 0xee, 0x26, 0x1b, 0xda, 0x24, 0xc7, 0xa7, 0x47, 0x97, 0x64, 0xf3, 0x92, 0x24, - 0xa2, 0xd6, 0x03, 0x80, 0xed, 0xe0, 0xec, 0x2c, 0xf0, 0x6d, 0x4c, 0x42, 0xd4, 0x81, 0x26, 0x8e, - 0xa2, 0xed, 0xe0, 0x18, 0x77, 0x8c, 0x75, 0xe3, 0x5e, 0xc3, 0xce, 0x48, 0xb4, 0x0c, 0xd3, 0x38, - 0x8a, 0xfa, 0xc4, 0xed, 0xd4, 0xd6, 0x8d, 0x7b, 0x2d, 0x3b, 0xa5, 0xac, 0x8f, 0xa1, 0x79, 0xe0, - 0xb8, 0x87, 0x04, 0x47, 0x54, 0xe4, 0x9c, 0xe0, 0xa8, 0xd7, 0x65, 0x73, 0x5b, 0x76, 0x4a, 0x21, - 0x13, 0x66, 0xe8, 0xd7, 0x13, 0xe7, 0x0c, 0xa7, 0x93, 0x39, 0x6d, 0x3d, 0x87, 0xfa, 0x81, 0xe3, - 0xa2, 0x45, 0x68, 0xc4, 0x8e, 0xcb, 0x67, 0x26, 0x04, 0xb5, 0x26, 0x76, 0x5c, 0x69, 0x5e, 0x46, - 0xa2, 0xb7, 0x13, 0x95, 0xbb, 0x1e, 0x89, 0x3b, 0xf5, 0xf5, 0xfa, 0xbd, 0xf6, 0xd6, 0xdc, 0x46, - 0x8a, 0x40, 0x6a, 0x8d, 0xcd, 0x05, 0xac, 0x4f, 0xe1, 0xea, 0x0e, 0x8e, 0x29, 0xf3, 0xc0, 0x71, - 0x89, 0x8d, 0x5f, 0x94, 0x5a, 0xba, 0x0e, 0xed, 0x20, 0xc4, 0x91, 0x13, 0x7b, 0x81, 0xdf, 0xeb, - 0xa6, 0x8b, 0xca, 0x2c, 0xeb, 0x04, 0xe6, 0x14, 0x5d, 0x24, 0x44, 0x5b, 0x00, 0x03, 0x8e, 0x20, - 0x53, 0xd8, 0xde, 0x42, 0x99, 0x35, 0x02, 0x5b, 0x5b, 0x92, 0x42, 0xb7, 0x60, 0x2a, 0x76, 0x5c, - 0xd2, 0xa9, 0x31, 0xdb, 0xdb, 0x92, 0xed, 0x36, 0x1b, 0xb0, 0x5e, 0x19, 0x30, 0xbb, 0x1d, 0x61, - 0x27, 0xc6, 0x94, 0x87, 0x5f, 0xc8, 0x58, 0x18, 0x2a, 0x16, 0xc2, 0x99, 0x9a, 0xe2, 0xcc, 0x1a, - 0x40, 0xf2, 0xc5, 0x51, 0x6a, 0xd9, 0x12, 0x27, 0xef, 0xec, 0x54, 0xd1, 0xd9, 0x6d, 0xb8, 0x22, - 0xd9, 0x50, 0xcd, 0x55, 0xeb, 0x6b, 0x98, 0xed, 0xe2, 0x21, 0xe6, 0x8e, 0x94, 0x61, 0xcf, 0x43, - 0xa0, 0x26, 0x87, 0x40, 0xce, 0xc8, 0xba, 0xd6, 0x48, 0x49, 0x7f, 0x45, 0x23, 0x7f, 0x37, 0xa0, - 0xb5, 0x8f, 0xe3, 0x4a, 0x26, 0x76, 0xa0, 0xe9, 0xe3, 0x4b, 0xb6, 0x33, 0x89, 0x79, 0x19, 0x89, - 0x36, 0x00, 0x79, 0xfe, 0x20, 0xc2, 0x0e, 0xc1, 0x87, 0x62, 0x27, 0xa6, 0xd8, 0x4e, 0x68, 0x46, - 0xd0, 0x5b, 0x70, 0x2d, 0xc2, 0xc7, 0xe7, 0x03, 0x59, 0xba, 0xc1, 0xa4, 0x0b, 0xfc, 0x3c, 0x30, - 0xd3, 0x45, 0x60, 0x3e, 0x01, 0xc8, 0x5c, 0xaa, 0x88, 0xca, 0x9f, 0x06, 0x5c, 0xdd, 0xc7, 0xfe, - 0x71, 0x9f, 0xb8, 0x5b, 0x4a, 0x18, 0x32, 0xcb, 0x0c, 0x66, 0x59, 0x46, 0xd2, 0x53, 0x7e, 0x98, - 0x1d, 0xc9, 0x1a, 0x1b, 0xe2, 0x34, 0xba, 0x09, 0xad, 0x9d, 0x28, 0x38, 0x0f, 0xa5, 0x48, 0x14, - 0x0c, 0x0a, 0x37, 0xc1, 0xfe, 0x31, 0x8f, 0xc1, 0x94, 0xa2, 0x70, 0xd0, 0x2f, 0x1c, 0xed, 0x0d, - 0x9d, 0xf8, 0x24, 0x88, 0xce, 0x7a, 0xdd, 0x4e, 0x83, 0x65, 0xa5, 0x02, 0x9f, 0xda, 0x35, 0x08, - 0xfc, 0x18, 0xfb, 0x71, 0x0a, 0x45, 0x46, 0xe6, 0x81, 0x6a, 0x16, 0x81, 0x7a, 0x04, 0x73, 0x8a, - 0x97, 0x15, 0xd1, 0xfa, 0xd1, 0x80, 0xf9, 0x1d, 0x06, 0x38, 0xd5, 0xb6, 0x1b, 0x24, 0xa9, 0xa6, - 0x0b, 0xb0, 0xe7, 0xb8, 0x9e, 0xcf, 0x16, 0x4b, 0x35, 0xdd, 0xd9, 0x20, 0x38, 0xba, 0xc0, 0xd1, - 0x91, 0x13, 0x7a, 0x47, 0xa1, 0x13, 0x39, 0x67, 0x64, 0xc3, 0xc6, 0x2f, 0xce, 0x31, 0x89, 0x85, - 0xac, 0x2d, 0xcd, 0x2b, 0x3d, 0xe3, 0xe3, 0x8f, 0x47, 0x00, 0x20, 0x2c, 0x52, 0xf2, 0xa6, 0x31, - 0x26, 0x6f, 0xca, 0x98, 0xd6, 0x54, 0x4c, 0x4d, 0x98, 0xa1, 0x3b, 0x70, 0xe0, 0xa5, 0x31, 0x5f, - 0xb7, 0x39, 0x6d, 0xfd, 0x62, 0x00, 0xca, 0xc3, 0x50, 0x31, 0x4b, 0x3e, 0x52, 0xb0, 0xab, 0xb1, - 0x39, 0x77, 0xb5, 0xd8, 0x91, 0x30, 0xf0, 0x09, 0x2e, 0x01, 0xef, 0x3e, 0xb4, 0x63, 0x61, 0x4d, - 0x7a, 0x5f, 0x20, 0xc9, 0xef, 0x74, 0xc8, 0x96, 0xc5, 0xac, 0x01, 0xdb, 0xcd, 0x34, 0xd3, 0x3f, - 0x7c, 0xd9, 0xeb, 0xfe, 0x17, 0xc9, 0xcb, 0x65, 0x58, 0x29, 0x8b, 0x54, 0xc4, 0x6a, 0x15, 0xea, - 0xb1, 0xe3, 0xa6, 0x20, 0x29, 0x17, 0x0a, 0xe5, 0x5b, 0x0f, 0x60, 0x66, 0xd7, 0x3b, 0xc5, 0x95, - 0xef, 0xe9, 0xc7, 0x70, 0xed, 0x49, 0x10, 0x7b, 0x27, 0xde, 0x80, 0x99, 0x5e, 0x59, 0xcf, 0x5f, - 0x06, 0x34, 0xa9, 0x07, 0x34, 0x8a, 0x2a, 0xcc, 0xa7, 0x31, 0x79, 0xe2, 0x0c, 0xf0, 0xa1, 0xbd, - 0x9b, 0x25, 0xdb, 0x94, 0xa4, 0x60, 0x47, 0x38, 0x1c, 0xbe, 0x4c, 0x72, 0x64, 0x76, 0x9d, 0x49, - 0x2c, 0x74, 0x07, 0xae, 0x70, 0x92, 0x29, 0x6f, 0x30, 0x19, 0x95, 0x49, 0x73, 0x55, 0x1a, 0xe6, - 0x3c, 0xad, 0x0a, 0x86, 0x7c, 0x26, 0x9a, 0xea, 0x99, 0x58, 0x03, 0x18, 0x24, 0x97, 0x25, 0x3d, - 0x15, 0x33, 0x2c, 0x4f, 0x49, 0x1c, 0xab, 0x07, 0x73, 0x7b, 0x38, 0x3a, 0xf3, 0x08, 0xf1, 0x02, - 0x9f, 0x25, 0x3f, 0xba, 0x94, 0x4b, 0x3f, 0xa4, 0x5b, 0x5d, 0x30, 0xe8, 0x52, 0x8c, 0xe0, 0x51, - 0x95, 0x91, 0x56, 0x17, 0xae, 0x3e, 0x0b, 0xa2, 0xd3, 0x7e, 0x40, 0x61, 0xac, 0xbc, 0x15, 0xdf, - 0x4f, 0x01, 0x08, 0x35, 0xc8, 0x82, 0xd9, 0x4b, 0x4e, 0x71, 0x45, 0x0a, 0xaf, 0x34, 0x0d, 0xc9, - 0xcb, 0xd4, 0xcb, 0x77, 0x6c, 0x4a, 0xdd, 0x31, 0x09, 0xcb, 0x86, 0x8a, 0xe5, 0x87, 0x30, 0x3b, - 0x4c, 0xa3, 0x95, 0xa5, 0xaa, 0x69, 0x76, 0x64, 0x97, 0xb3, 0xa8, 0x56, 0x9d, 0xb7, 0x15, 0x59, - 0x9a, 0xe2, 0x06, 0x49, 0x80, 0x91, 0x4e, 0x53, 0x4d, 0x71, 0x69, 0xe0, 0xd9, 0x5c, 0x80, 0x6e, - 0x5a, 0xc8, 0x37, 0x25, 0xdb, 0x34, 0xc1, 0x41, 0x8f, 0x01, 0x09, 0x8a, 0x9b, 0xd3, 0x1a, 0x69, - 0x8e, 0x66, 0x06, 0xea, 0xc1, 0x42, 0xa8, 0x6e, 0x3e, 0x53, 0x04, 0x4c, 0xd1, 0x4a, 0xa6, 0x28, - 0x17, 0x1f, 0xb6, 0x6e, 0x0e, 0x7a, 0x1f, 0xc0, 0x89, 0xb9, 0x29, 0xed, 0x91, 0xa6, 0x48, 0x92, - 0xb9, 0xf8, 0x9c, 0x2d, 0xc4, 0xa7, 0x0f, 0xcb, 0x49, 0xb1, 0xf7, 0xd4, 0xc7, 0x42, 0x0d, 0x4d, - 0x7a, 0x5b, 0x00, 0x22, 0x0a, 0xf2, 0xe9, 0x48, 0x12, 0x95, 0xa4, 0x26, 0xa8, 0xa4, 0xfb, 0xb0, - 0xa2, 0x5d, 0xaf, 0xe2, 0xed, 0x7b, 0x01, 0xcb, 0x49, 0x19, 0x58, 0x30, 0xff, 0x75, 0x02, 0x7b, - 0x7c, 0x06, 0xef, 0xc3, 0x8a, 0x76, 0xdd, 0x8a, 0x6e, 0xc4, 0xb0, 0x48, 0xf3, 0x74, 0xc1, 0x89, - 0xb2, 0x03, 0x6e, 0xc1, 0xec, 0x33, 0xd9, 0xb9, 0xc4, 0x7c, 0x85, 0x37, 0x81, 0x13, 0x9f, 0xc1, - 0x92, 0x66, 0xd5, 0x8a, 0x2e, 0xfc, 0x6c, 0xc0, 0x4a, 0x7a, 0xd2, 0xfe, 0x89, 0x1b, 0x97, 0x1a, - 0x37, 0x2e, 0x73, 0x6e, 0xc8, 0x09, 0xbe, 0x5e, 0x4c, 0xf0, 0x52, 0x42, 0x99, 0x1a, 0x59, 0x04, - 0x36, 0x8a, 0x10, 0x3c, 0x81, 0x8e, 0xde, 0xe8, 0x8a, 0x28, 0x7c, 0x0b, 0x8b, 0x3b, 0x38, 0x16, - 0x8a, 0xb2, 0x0a, 0x62, 0x92, 0x68, 0x34, 0x61, 0x26, 0x08, 0x0f, 0xe5, 0x78, 0xe4, 0xf4, 0x04, - 0x9b, 0xf9, 0x1d, 0x2c, 0x69, 0x56, 0xae, 0x58, 0x56, 0xa8, 0x67, 0xbf, 0x36, 0xc9, 0xd9, 0xb7, - 0xfe, 0x30, 0x60, 0x75, 0xfb, 0x1b, 0xc7, 0x77, 0x25, 0x1c, 0x45, 0x6a, 0xfb, 0x37, 0x40, 0x50, - 0xd3, 0x76, 0xbd, 0x90, 0xb6, 0xb7, 0x60, 0x51, 0x4d, 0xc2, 0xca, 0xd3, 0x4b, 0x3b, 0x36, 0x41, - 0x88, 0x1c, 0xc0, 0xda, 0x28, 0xb7, 0xaa, 0x1f, 0x97, 0xa5, 0xb4, 0x06, 0x14, 0x7a, 0x47, 0x76, - 0x29, 0x46, 0x21, 0xa3, 0x3e, 0x37, 0xea, 0x15, 0x9f, 0x1b, 0xe3, 0x5b, 0x03, 0xbf, 0x1a, 0xb0, - 0xac, 0xb3, 0xba, 0x62, 0x98, 0xdd, 0x87, 0xb6, 0xd8, 0xfc, 0xac, 0x2d, 0xa2, 0x8b, 0x33, 0x59, - 0x2c, 0xf7, 0x3e, 0xa8, 0x57, 0x7c, 0x1f, 0x58, 0x3f, 0x19, 0x70, 0x23, 0xf5, 0xe5, 0x71, 0xe4, - 0x61, 0xff, 0x78, 0xc2, 0x7d, 0xe8, 0x6a, 0x9e, 0x27, 0xaf, 0x8d, 0xb5, 0xe6, 0x40, 0xff, 0x66, - 0xc0, 0xcd, 0x72, 0xfb, 0xfe, 0x8f, 0x88, 0xff, 0x50, 0x87, 0xeb, 0x62, 0x09, 0xf9, 0x61, 0xd1, - 0x27, 0x2e, 0x7a, 0x17, 0x16, 0x7c, 0x95, 0x75, 0xf0, 0x32, 0xcc, 0x1a, 0x92, 0xba, 0xa1, 0x62, - 0x65, 0x5f, 0xd3, 0x55, 0xf6, 0xaf, 0x73, 0x81, 0x28, 0xaf, 0x82, 0x46, 0xfe, 0x55, 0x90, 0xcf, - 0x67, 0xd3, 0x23, 0x4b, 0x8c, 0x66, 0x69, 0xed, 0x3c, 0x53, 0x5e, 0x3b, 0xb7, 0xd4, 0xda, 0xf9, - 0x1d, 0x98, 0x17, 0xda, 0xb7, 0x53, 0x9b, 0x81, 0xc9, 0x14, 0x07, 0x72, 0xb5, 0x5f, 0xbb, 0x50, - 0xfb, 0x0d, 0xc1, 0xdc, 0x2f, 0x1c, 0xe6, 0x5d, 0x7c, 0x81, 0x87, 0x63, 0x1e, 0xbd, 0x43, 0x2a, - 0xc3, 0xd0, 0x6e, 0xd8, 0x09, 0x31, 0x41, 0x3c, 0x7f, 0x0e, 0x37, 0x4a, 0x57, 0xab, 0x16, 0xcd, - 0x5b, 0xaf, 0x00, 0xae, 0x3c, 0x65, 0x12, 0xfb, 0x38, 0xba, 0xf0, 0x06, 0x18, 0x3d, 0x80, 0xb6, - 0xd4, 0xa8, 0x45, 0xbc, 0x42, 0x56, 0x3b, 0xc1, 0xe6, 0x8a, 0x96, 0x4f, 0x42, 0xf4, 0x01, 0xb4, - 0x78, 0xef, 0x13, 0x2d, 0xf2, 0xe5, 0xa5, 0x96, 0xac, 0xb9, 0xa4, 0xe1, 0x26, 0x33, 0x79, 0x43, - 0x52, 0xcc, 0x94, 0x7b, 0xa0, 0x62, 0xa6, 0xda, 0xb9, 0xdc, 0x84, 0xe9, 0xa4, 0x63, 0x87, 0xe6, - 0x33, 0x01, 0xde, 0x94, 0x34, 0x51, 0x9e, 0x45, 0x42, 0xea, 0xa4, 0xd4, 0xb9, 0x12, 0x4e, 0xaa, - 0x4d, 0x3b, 0xe1, 0x64, 0xbe, 0xcd, 0xb5, 0xc3, 0x3a, 0xe3, 0x52, 0xab, 0x06, 0x5d, 0x97, 0xf0, - 0x50, 0x3b, 0x59, 0xa6, 0x59, 0x36, 0xc4, 0x15, 0x49, 0x7d, 0x0c, 0x45, 0x91, 0xda, 0x44, 0x51, - 0x14, 0xe5, 0x5b, 0x1f, 0x5f, 0xc0, 0x82, 0xe6, 0x55, 0x80, 0xd6, 0x54, 0xa8, 0xf3, 0x75, 0xa5, - 0x79, 0x6b, 0xe4, 0x78, 0xa2, 0x57, 0x53, 0xa6, 0x0b, 0xbd, 0xfa, 0xb7, 0x83, 0xd0, 0x5b, 0x56, - 0xe3, 0xef, 0xc1, 0x7c, 0xa1, 0x72, 0x46, 0x37, 0xb3, 0x59, 0xba, 0x52, 0xde, 0x5c, 0x1d, 0x31, - 0x4a, 0x42, 0xf4, 0x25, 0x2c, 0xea, 0x0a, 0x51, 0x74, 0x2b, 0xf7, 0x8a, 0x2d, 0xe8, 0x5d, 0x1f, - 0x2d, 0x90, 0x18, 0x5b, 0xa8, 0x0c, 0x85, 0xb1, 0xba, 0x72, 0x55, 0x18, 0xab, 0x2f, 0x29, 0x4f, - 0xc1, 0x2c, 0x2f, 0x89, 0xd0, 0x5d, 0x6e, 0xd1, 0xa8, 0x6a, 0xd0, 0x7c, 0x73, 0x12, 0x31, 0x12, - 0xa2, 0x7d, 0xde, 0x2c, 0x93, 0xf2, 0x06, 0x5a, 0xcd, 0x45, 0x93, 0x7a, 0x79, 0x9b, 0x6b, 0xa3, - 0x86, 0x49, 0x88, 0x30, 0x74, 0xca, 0xee, 0x56, 0x74, 0x3b, 0x37, 0x57, 0x57, 0x1d, 0x98, 0x77, - 0xc6, 0x0b, 0x91, 0x10, 0x3d, 0x87, 0x95, 0x92, 0x9c, 0x87, 0x2c, 0xe9, 0x60, 0x97, 0xa4, 0x60, - 0xf3, 0xf6, 0x58, 0x19, 0x12, 0x3e, 0x9c, 0xff, 0x6a, 0x6e, 0x23, 0xfd, 0x1f, 0xf0, 0xa3, 0xe4, - 0xe7, 0xf9, 0x34, 0xfb, 0x93, 0xef, 0xbd, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x01, 0xfa, 0xac, - 0xd6, 0x26, 0x1c, 0x00, 0x00, -} diff --git a/pkg/proto/office/office.proto b/pkg/proto/office/office.proto index 04ead1788..78e1e3517 100644 --- a/pkg/proto/office/office.proto +++ b/pkg/proto/office/office.proto @@ -195,6 +195,17 @@ message CommentOneWorkMomentResp { CommonResp commonResp = 1; } +message DeleteCommentReq { + string workMomentID = 1; + string contentID = 2; + string opUserID = 3; + string operationID = 4; +} + +message DeleteCommentResp { + CommonResp commonResp = 1; +} + message GetWorkMomentByIDReq { string workMomentID = 1; string opUserID = 2; @@ -280,6 +291,7 @@ service OfficeService { rpc DeleteOneWorkMoment(DeleteOneWorkMomentReq) returns(DeleteOneWorkMomentResp); rpc LikeOneWorkMoment(LikeOneWorkMomentReq) returns(LikeOneWorkMomentResp); rpc CommentOneWorkMoment(CommentOneWorkMomentReq) returns(CommentOneWorkMomentResp); + rpc DeleteComment(DeleteCommentReq) returns(DeleteCommentResp); rpc GetWorkMomentByID(GetWorkMomentByIDReq) returns(GetWorkMomentByIDResp); rpc ChangeWorkMomentPermission(ChangeWorkMomentPermissionReq) returns(ChangeWorkMomentPermissionResp); /// user self From 3a06617a7d89f975ab4a8d9922859147cd0f5bda Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 5 May 2022 11:59:44 +0800 Subject: [PATCH 015/143] office --- pkg/proto/office/office.pb.go | 3242 +++++++++++++++++++++++++++++++++ 1 file changed, 3242 insertions(+) create mode 100644 pkg/proto/office/office.pb.go diff --git a/pkg/proto/office/office.pb.go b/pkg/proto/office/office.pb.go new file mode 100644 index 000000000..d8df0cee4 --- /dev/null +++ b/pkg/proto/office/office.pb.go @@ -0,0 +1,3242 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: office/office.proto + +package office // import "./office" + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import sdk_ws "Open_IM/pkg/proto/sdk_ws" + +import ( + context "golang.org/x/net/context" + grpc "google.golang.org/grpc" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +type CommonResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CommonResp) Reset() { *m = CommonResp{} } +func (m *CommonResp) String() string { return proto.CompactTextString(m) } +func (*CommonResp) ProtoMessage() {} +func (*CommonResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{0} +} +func (m *CommonResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommonResp.Unmarshal(m, b) +} +func (m *CommonResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommonResp.Marshal(b, m, deterministic) +} +func (dst *CommonResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommonResp.Merge(dst, src) +} +func (m *CommonResp) XXX_Size() int { + return xxx_messageInfo_CommonResp.Size(m) +} +func (m *CommonResp) XXX_DiscardUnknown() { + xxx_messageInfo_CommonResp.DiscardUnknown(m) +} + +var xxx_messageInfo_CommonResp proto.InternalMessageInfo + +func (m *CommonResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *CommonResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type TagUser struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=userName" json:"userName,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *TagUser) Reset() { *m = TagUser{} } +func (m *TagUser) String() string { return proto.CompactTextString(m) } +func (*TagUser) ProtoMessage() {} +func (*TagUser) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{1} +} +func (m *TagUser) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_TagUser.Unmarshal(m, b) +} +func (m *TagUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_TagUser.Marshal(b, m, deterministic) +} +func (dst *TagUser) XXX_Merge(src proto.Message) { + xxx_messageInfo_TagUser.Merge(dst, src) +} +func (m *TagUser) XXX_Size() int { + return xxx_messageInfo_TagUser.Size(m) +} +func (m *TagUser) XXX_DiscardUnknown() { + xxx_messageInfo_TagUser.DiscardUnknown(m) +} + +var xxx_messageInfo_TagUser proto.InternalMessageInfo + +func (m *TagUser) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *TagUser) GetUserName() string { + if m != nil { + return m.UserName + } + return "" +} + +type Tag struct { + TagID string `protobuf:"bytes,1,opt,name=tagID" json:"tagID,omitempty"` + TagName string `protobuf:"bytes,2,opt,name=tagName" json:"tagName,omitempty"` + UserList []*TagUser `protobuf:"bytes,3,rep,name=userList" json:"userList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Tag) Reset() { *m = Tag{} } +func (m *Tag) String() string { return proto.CompactTextString(m) } +func (*Tag) ProtoMessage() {} +func (*Tag) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{2} +} +func (m *Tag) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Tag.Unmarshal(m, b) +} +func (m *Tag) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Tag.Marshal(b, m, deterministic) +} +func (dst *Tag) XXX_Merge(src proto.Message) { + xxx_messageInfo_Tag.Merge(dst, src) +} +func (m *Tag) XXX_Size() int { + return xxx_messageInfo_Tag.Size(m) +} +func (m *Tag) XXX_DiscardUnknown() { + xxx_messageInfo_Tag.DiscardUnknown(m) +} + +var xxx_messageInfo_Tag proto.InternalMessageInfo + +func (m *Tag) GetTagID() string { + if m != nil { + return m.TagID + } + return "" +} + +func (m *Tag) GetTagName() string { + if m != nil { + return m.TagName + } + return "" +} + +func (m *Tag) GetUserList() []*TagUser { + if m != nil { + return m.UserList + } + return nil +} + +type GetUserTagsReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserTagsReq) Reset() { *m = GetUserTagsReq{} } +func (m *GetUserTagsReq) String() string { return proto.CompactTextString(m) } +func (*GetUserTagsReq) ProtoMessage() {} +func (*GetUserTagsReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{3} +} +func (m *GetUserTagsReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserTagsReq.Unmarshal(m, b) +} +func (m *GetUserTagsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserTagsReq.Marshal(b, m, deterministic) +} +func (dst *GetUserTagsReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserTagsReq.Merge(dst, src) +} +func (m *GetUserTagsReq) XXX_Size() int { + return xxx_messageInfo_GetUserTagsReq.Size(m) +} +func (m *GetUserTagsReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserTagsReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserTagsReq proto.InternalMessageInfo + +func (m *GetUserTagsReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *GetUserTagsReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type GetUserTagsResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + Tags []*Tag `protobuf:"bytes,2,rep,name=tags" json:"tags,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserTagsResp) Reset() { *m = GetUserTagsResp{} } +func (m *GetUserTagsResp) String() string { return proto.CompactTextString(m) } +func (*GetUserTagsResp) ProtoMessage() {} +func (*GetUserTagsResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{4} +} +func (m *GetUserTagsResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserTagsResp.Unmarshal(m, b) +} +func (m *GetUserTagsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserTagsResp.Marshal(b, m, deterministic) +} +func (dst *GetUserTagsResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserTagsResp.Merge(dst, src) +} +func (m *GetUserTagsResp) XXX_Size() int { + return xxx_messageInfo_GetUserTagsResp.Size(m) +} +func (m *GetUserTagsResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserTagsResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserTagsResp proto.InternalMessageInfo + +func (m *GetUserTagsResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +func (m *GetUserTagsResp) GetTags() []*Tag { + if m != nil { + return m.Tags + } + return nil +} + +type CreateTagReq struct { + TagName string `protobuf:"bytes,1,opt,name=tagName" json:"tagName,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` + UserIDList []string `protobuf:"bytes,3,rep,name=userIDList" json:"userIDList,omitempty"` + OperationID string `protobuf:"bytes,4,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateTagReq) Reset() { *m = CreateTagReq{} } +func (m *CreateTagReq) String() string { return proto.CompactTextString(m) } +func (*CreateTagReq) ProtoMessage() {} +func (*CreateTagReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{5} +} +func (m *CreateTagReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateTagReq.Unmarshal(m, b) +} +func (m *CreateTagReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateTagReq.Marshal(b, m, deterministic) +} +func (dst *CreateTagReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateTagReq.Merge(dst, src) +} +func (m *CreateTagReq) XXX_Size() int { + return xxx_messageInfo_CreateTagReq.Size(m) +} +func (m *CreateTagReq) XXX_DiscardUnknown() { + xxx_messageInfo_CreateTagReq.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateTagReq proto.InternalMessageInfo + +func (m *CreateTagReq) GetTagName() string { + if m != nil { + return m.TagName + } + return "" +} + +func (m *CreateTagReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *CreateTagReq) GetUserIDList() []string { + if m != nil { + return m.UserIDList + } + return nil +} + +func (m *CreateTagReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type CreateTagResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateTagResp) Reset() { *m = CreateTagResp{} } +func (m *CreateTagResp) String() string { return proto.CompactTextString(m) } +func (*CreateTagResp) ProtoMessage() {} +func (*CreateTagResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{6} +} +func (m *CreateTagResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateTagResp.Unmarshal(m, b) +} +func (m *CreateTagResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateTagResp.Marshal(b, m, deterministic) +} +func (dst *CreateTagResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateTagResp.Merge(dst, src) +} +func (m *CreateTagResp) XXX_Size() int { + return xxx_messageInfo_CreateTagResp.Size(m) +} +func (m *CreateTagResp) XXX_DiscardUnknown() { + xxx_messageInfo_CreateTagResp.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateTagResp proto.InternalMessageInfo + +func (m *CreateTagResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +type DeleteTagReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + TagID string `protobuf:"bytes,2,opt,name=tagID" json:"tagID,omitempty"` + OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteTagReq) Reset() { *m = DeleteTagReq{} } +func (m *DeleteTagReq) String() string { return proto.CompactTextString(m) } +func (*DeleteTagReq) ProtoMessage() {} +func (*DeleteTagReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{7} +} +func (m *DeleteTagReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteTagReq.Unmarshal(m, b) +} +func (m *DeleteTagReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteTagReq.Marshal(b, m, deterministic) +} +func (dst *DeleteTagReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteTagReq.Merge(dst, src) +} +func (m *DeleteTagReq) XXX_Size() int { + return xxx_messageInfo_DeleteTagReq.Size(m) +} +func (m *DeleteTagReq) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteTagReq.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteTagReq proto.InternalMessageInfo + +func (m *DeleteTagReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *DeleteTagReq) GetTagID() string { + if m != nil { + return m.TagID + } + return "" +} + +func (m *DeleteTagReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type DeleteTagResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteTagResp) Reset() { *m = DeleteTagResp{} } +func (m *DeleteTagResp) String() string { return proto.CompactTextString(m) } +func (*DeleteTagResp) ProtoMessage() {} +func (*DeleteTagResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{8} +} +func (m *DeleteTagResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteTagResp.Unmarshal(m, b) +} +func (m *DeleteTagResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteTagResp.Marshal(b, m, deterministic) +} +func (dst *DeleteTagResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteTagResp.Merge(dst, src) +} +func (m *DeleteTagResp) XXX_Size() int { + return xxx_messageInfo_DeleteTagResp.Size(m) +} +func (m *DeleteTagResp) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteTagResp.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteTagResp proto.InternalMessageInfo + +func (m *DeleteTagResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +type SetTagReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + TagID string `protobuf:"bytes,2,opt,name=tagID" json:"tagID,omitempty"` + NewName string `protobuf:"bytes,3,opt,name=newName" json:"newName,omitempty"` + IncreaseUserIDList []string `protobuf:"bytes,4,rep,name=increaseUserIDList" json:"increaseUserIDList,omitempty"` + ReduceUserIDList []string `protobuf:"bytes,5,rep,name=reduceUserIDList" json:"reduceUserIDList,omitempty"` + OperationID string `protobuf:"bytes,6,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SetTagReq) Reset() { *m = SetTagReq{} } +func (m *SetTagReq) String() string { return proto.CompactTextString(m) } +func (*SetTagReq) ProtoMessage() {} +func (*SetTagReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{9} +} +func (m *SetTagReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SetTagReq.Unmarshal(m, b) +} +func (m *SetTagReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SetTagReq.Marshal(b, m, deterministic) +} +func (dst *SetTagReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetTagReq.Merge(dst, src) +} +func (m *SetTagReq) XXX_Size() int { + return xxx_messageInfo_SetTagReq.Size(m) +} +func (m *SetTagReq) XXX_DiscardUnknown() { + xxx_messageInfo_SetTagReq.DiscardUnknown(m) +} + +var xxx_messageInfo_SetTagReq proto.InternalMessageInfo + +func (m *SetTagReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *SetTagReq) GetTagID() string { + if m != nil { + return m.TagID + } + return "" +} + +func (m *SetTagReq) GetNewName() string { + if m != nil { + return m.NewName + } + return "" +} + +func (m *SetTagReq) GetIncreaseUserIDList() []string { + if m != nil { + return m.IncreaseUserIDList + } + return nil +} + +func (m *SetTagReq) GetReduceUserIDList() []string { + if m != nil { + return m.ReduceUserIDList + } + return nil +} + +func (m *SetTagReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type SetTagResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SetTagResp) Reset() { *m = SetTagResp{} } +func (m *SetTagResp) String() string { return proto.CompactTextString(m) } +func (*SetTagResp) ProtoMessage() {} +func (*SetTagResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{10} +} +func (m *SetTagResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SetTagResp.Unmarshal(m, b) +} +func (m *SetTagResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SetTagResp.Marshal(b, m, deterministic) +} +func (dst *SetTagResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetTagResp.Merge(dst, src) +} +func (m *SetTagResp) XXX_Size() int { + return xxx_messageInfo_SetTagResp.Size(m) +} +func (m *SetTagResp) XXX_DiscardUnknown() { + xxx_messageInfo_SetTagResp.DiscardUnknown(m) +} + +var xxx_messageInfo_SetTagResp proto.InternalMessageInfo + +func (m *SetTagResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +type SendMsg2TagReq struct { + TagList []string `protobuf:"bytes,1,rep,name=tagList" json:"tagList,omitempty"` + UserList []string `protobuf:"bytes,2,rep,name=UserList" json:"UserList,omitempty"` + GroupList []string `protobuf:"bytes,3,rep,name=GroupList" json:"GroupList,omitempty"` + SendID string `protobuf:"bytes,4,opt,name=sendID" json:"sendID,omitempty"` + SenderPlatformID int32 `protobuf:"varint,5,opt,name=senderPlatformID" json:"senderPlatformID,omitempty"` + Content string `protobuf:"bytes,6,opt,name=content" json:"content,omitempty"` + OperationID string `protobuf:"bytes,7,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SendMsg2TagReq) Reset() { *m = SendMsg2TagReq{} } +func (m *SendMsg2TagReq) String() string { return proto.CompactTextString(m) } +func (*SendMsg2TagReq) ProtoMessage() {} +func (*SendMsg2TagReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{11} +} +func (m *SendMsg2TagReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SendMsg2TagReq.Unmarshal(m, b) +} +func (m *SendMsg2TagReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SendMsg2TagReq.Marshal(b, m, deterministic) +} +func (dst *SendMsg2TagReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_SendMsg2TagReq.Merge(dst, src) +} +func (m *SendMsg2TagReq) XXX_Size() int { + return xxx_messageInfo_SendMsg2TagReq.Size(m) +} +func (m *SendMsg2TagReq) XXX_DiscardUnknown() { + xxx_messageInfo_SendMsg2TagReq.DiscardUnknown(m) +} + +var xxx_messageInfo_SendMsg2TagReq proto.InternalMessageInfo + +func (m *SendMsg2TagReq) GetTagList() []string { + if m != nil { + return m.TagList + } + return nil +} + +func (m *SendMsg2TagReq) GetUserList() []string { + if m != nil { + return m.UserList + } + return nil +} + +func (m *SendMsg2TagReq) GetGroupList() []string { + if m != nil { + return m.GroupList + } + return nil +} + +func (m *SendMsg2TagReq) GetSendID() string { + if m != nil { + return m.SendID + } + return "" +} + +func (m *SendMsg2TagReq) GetSenderPlatformID() int32 { + if m != nil { + return m.SenderPlatformID + } + return 0 +} + +func (m *SendMsg2TagReq) GetContent() string { + if m != nil { + return m.Content + } + return "" +} + +func (m *SendMsg2TagReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type SendMsg2TagResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SendMsg2TagResp) Reset() { *m = SendMsg2TagResp{} } +func (m *SendMsg2TagResp) String() string { return proto.CompactTextString(m) } +func (*SendMsg2TagResp) ProtoMessage() {} +func (*SendMsg2TagResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{12} +} +func (m *SendMsg2TagResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SendMsg2TagResp.Unmarshal(m, b) +} +func (m *SendMsg2TagResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SendMsg2TagResp.Marshal(b, m, deterministic) +} +func (dst *SendMsg2TagResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_SendMsg2TagResp.Merge(dst, src) +} +func (m *SendMsg2TagResp) XXX_Size() int { + return xxx_messageInfo_SendMsg2TagResp.Size(m) +} +func (m *SendMsg2TagResp) XXX_DiscardUnknown() { + xxx_messageInfo_SendMsg2TagResp.DiscardUnknown(m) +} + +var xxx_messageInfo_SendMsg2TagResp proto.InternalMessageInfo + +func (m *SendMsg2TagResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +type GetTagSendLogsReq struct { + Pagination *sdk_ws.RequestPagination `protobuf:"bytes,1,opt,name=Pagination" json:"Pagination,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` + OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetTagSendLogsReq) Reset() { *m = GetTagSendLogsReq{} } +func (m *GetTagSendLogsReq) String() string { return proto.CompactTextString(m) } +func (*GetTagSendLogsReq) ProtoMessage() {} +func (*GetTagSendLogsReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{13} +} +func (m *GetTagSendLogsReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetTagSendLogsReq.Unmarshal(m, b) +} +func (m *GetTagSendLogsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetTagSendLogsReq.Marshal(b, m, deterministic) +} +func (dst *GetTagSendLogsReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetTagSendLogsReq.Merge(dst, src) +} +func (m *GetTagSendLogsReq) XXX_Size() int { + return xxx_messageInfo_GetTagSendLogsReq.Size(m) +} +func (m *GetTagSendLogsReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetTagSendLogsReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetTagSendLogsReq proto.InternalMessageInfo + +func (m *GetTagSendLogsReq) GetPagination() *sdk_ws.RequestPagination { + if m != nil { + return m.Pagination + } + return nil +} + +func (m *GetTagSendLogsReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *GetTagSendLogsReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type TagSendLog struct { + UserList []*TagUser `protobuf:"bytes,1,rep,name=userList" json:"userList,omitempty"` + Content string `protobuf:"bytes,2,opt,name=content" json:"content,omitempty"` + SendTime int64 `protobuf:"varint,3,opt,name=sendTime" json:"sendTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *TagSendLog) Reset() { *m = TagSendLog{} } +func (m *TagSendLog) String() string { return proto.CompactTextString(m) } +func (*TagSendLog) ProtoMessage() {} +func (*TagSendLog) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{14} +} +func (m *TagSendLog) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_TagSendLog.Unmarshal(m, b) +} +func (m *TagSendLog) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_TagSendLog.Marshal(b, m, deterministic) +} +func (dst *TagSendLog) XXX_Merge(src proto.Message) { + xxx_messageInfo_TagSendLog.Merge(dst, src) +} +func (m *TagSendLog) XXX_Size() int { + return xxx_messageInfo_TagSendLog.Size(m) +} +func (m *TagSendLog) XXX_DiscardUnknown() { + xxx_messageInfo_TagSendLog.DiscardUnknown(m) +} + +var xxx_messageInfo_TagSendLog proto.InternalMessageInfo + +func (m *TagSendLog) GetUserList() []*TagUser { + if m != nil { + return m.UserList + } + return nil +} + +func (m *TagSendLog) GetContent() string { + if m != nil { + return m.Content + } + return "" +} + +func (m *TagSendLog) GetSendTime() int64 { + if m != nil { + return m.SendTime + } + return 0 +} + +type GetTagSendLogsResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + Pagination *sdk_ws.ResponsePagination `protobuf:"bytes,2,opt,name=Pagination" json:"Pagination,omitempty"` + TagSendLogs []*TagSendLog `protobuf:"bytes,3,rep,name=tagSendLogs" json:"tagSendLogs,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetTagSendLogsResp) Reset() { *m = GetTagSendLogsResp{} } +func (m *GetTagSendLogsResp) String() string { return proto.CompactTextString(m) } +func (*GetTagSendLogsResp) ProtoMessage() {} +func (*GetTagSendLogsResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{15} +} +func (m *GetTagSendLogsResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetTagSendLogsResp.Unmarshal(m, b) +} +func (m *GetTagSendLogsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetTagSendLogsResp.Marshal(b, m, deterministic) +} +func (dst *GetTagSendLogsResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetTagSendLogsResp.Merge(dst, src) +} +func (m *GetTagSendLogsResp) XXX_Size() int { + return xxx_messageInfo_GetTagSendLogsResp.Size(m) +} +func (m *GetTagSendLogsResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetTagSendLogsResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetTagSendLogsResp proto.InternalMessageInfo + +func (m *GetTagSendLogsResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +func (m *GetTagSendLogsResp) GetPagination() *sdk_ws.ResponsePagination { + if m != nil { + return m.Pagination + } + return nil +} + +func (m *GetTagSendLogsResp) GetTagSendLogs() []*TagSendLog { + if m != nil { + return m.TagSendLogs + } + return nil +} + +type GetUserTagByIDReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + TagID string `protobuf:"bytes,2,opt,name=tagID" json:"tagID,omitempty"` + OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserTagByIDReq) Reset() { *m = GetUserTagByIDReq{} } +func (m *GetUserTagByIDReq) String() string { return proto.CompactTextString(m) } +func (*GetUserTagByIDReq) ProtoMessage() {} +func (*GetUserTagByIDReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{16} +} +func (m *GetUserTagByIDReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserTagByIDReq.Unmarshal(m, b) +} +func (m *GetUserTagByIDReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserTagByIDReq.Marshal(b, m, deterministic) +} +func (dst *GetUserTagByIDReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserTagByIDReq.Merge(dst, src) +} +func (m *GetUserTagByIDReq) XXX_Size() int { + return xxx_messageInfo_GetUserTagByIDReq.Size(m) +} +func (m *GetUserTagByIDReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserTagByIDReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserTagByIDReq proto.InternalMessageInfo + +func (m *GetUserTagByIDReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *GetUserTagByIDReq) GetTagID() string { + if m != nil { + return m.TagID + } + return "" +} + +func (m *GetUserTagByIDReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type GetUserTagByIDResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + Tag *Tag `protobuf:"bytes,2,opt,name=tag" json:"tag,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserTagByIDResp) Reset() { *m = GetUserTagByIDResp{} } +func (m *GetUserTagByIDResp) String() string { return proto.CompactTextString(m) } +func (*GetUserTagByIDResp) ProtoMessage() {} +func (*GetUserTagByIDResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{17} +} +func (m *GetUserTagByIDResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserTagByIDResp.Unmarshal(m, b) +} +func (m *GetUserTagByIDResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserTagByIDResp.Marshal(b, m, deterministic) +} +func (dst *GetUserTagByIDResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserTagByIDResp.Merge(dst, src) +} +func (m *GetUserTagByIDResp) XXX_Size() int { + return xxx_messageInfo_GetUserTagByIDResp.Size(m) +} +func (m *GetUserTagByIDResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserTagByIDResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserTagByIDResp proto.InternalMessageInfo + +func (m *GetUserTagByIDResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +func (m *GetUserTagByIDResp) GetTag() *Tag { + if m != nil { + return m.Tag + } + return nil +} + +type LikeUser struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=userName" json:"userName,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *LikeUser) Reset() { *m = LikeUser{} } +func (m *LikeUser) String() string { return proto.CompactTextString(m) } +func (*LikeUser) ProtoMessage() {} +func (*LikeUser) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{18} +} +func (m *LikeUser) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_LikeUser.Unmarshal(m, b) +} +func (m *LikeUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_LikeUser.Marshal(b, m, deterministic) +} +func (dst *LikeUser) XXX_Merge(src proto.Message) { + xxx_messageInfo_LikeUser.Merge(dst, src) +} +func (m *LikeUser) XXX_Size() int { + return xxx_messageInfo_LikeUser.Size(m) +} +func (m *LikeUser) XXX_DiscardUnknown() { + xxx_messageInfo_LikeUser.DiscardUnknown(m) +} + +var xxx_messageInfo_LikeUser proto.InternalMessageInfo + +func (m *LikeUser) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *LikeUser) GetUserName() string { + if m != nil { + return m.UserName + } + return "" +} + +type NotificationUser struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=userName" json:"userName,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *NotificationUser) Reset() { *m = NotificationUser{} } +func (m *NotificationUser) String() string { return proto.CompactTextString(m) } +func (*NotificationUser) ProtoMessage() {} +func (*NotificationUser) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{19} +} +func (m *NotificationUser) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_NotificationUser.Unmarshal(m, b) +} +func (m *NotificationUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_NotificationUser.Marshal(b, m, deterministic) +} +func (dst *NotificationUser) XXX_Merge(src proto.Message) { + xxx_messageInfo_NotificationUser.Merge(dst, src) +} +func (m *NotificationUser) XXX_Size() int { + return xxx_messageInfo_NotificationUser.Size(m) +} +func (m *NotificationUser) XXX_DiscardUnknown() { + xxx_messageInfo_NotificationUser.DiscardUnknown(m) +} + +var xxx_messageInfo_NotificationUser proto.InternalMessageInfo + +func (m *NotificationUser) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *NotificationUser) GetUserName() string { + if m != nil { + return m.UserName + } + return "" +} + +type Comment struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=userName" json:"userName,omitempty"` + FaceURL string `protobuf:"bytes,3,opt,name=faceURL" json:"faceURL,omitempty"` + ReplyUserID string `protobuf:"bytes,4,opt,name=replyUserID" json:"replyUserID,omitempty"` + ReplyUserName string `protobuf:"bytes,5,opt,name=replyUserName" json:"replyUserName,omitempty"` + ContentID string `protobuf:"bytes,6,opt,name=contentID" json:"contentID,omitempty"` + Content string `protobuf:"bytes,7,opt,name=content" json:"content,omitempty"` + CreateTime int32 `protobuf:"varint,8,opt,name=createTime" json:"createTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Comment) Reset() { *m = Comment{} } +func (m *Comment) String() string { return proto.CompactTextString(m) } +func (*Comment) ProtoMessage() {} +func (*Comment) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{20} +} +func (m *Comment) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Comment.Unmarshal(m, b) +} +func (m *Comment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Comment.Marshal(b, m, deterministic) +} +func (dst *Comment) XXX_Merge(src proto.Message) { + xxx_messageInfo_Comment.Merge(dst, src) +} +func (m *Comment) XXX_Size() int { + return xxx_messageInfo_Comment.Size(m) +} +func (m *Comment) XXX_DiscardUnknown() { + xxx_messageInfo_Comment.DiscardUnknown(m) +} + +var xxx_messageInfo_Comment proto.InternalMessageInfo + +func (m *Comment) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *Comment) GetUserName() string { + if m != nil { + return m.UserName + } + return "" +} + +func (m *Comment) GetFaceURL() string { + if m != nil { + return m.FaceURL + } + return "" +} + +func (m *Comment) GetReplyUserID() string { + if m != nil { + return m.ReplyUserID + } + return "" +} + +func (m *Comment) GetReplyUserName() string { + if m != nil { + return m.ReplyUserName + } + return "" +} + +func (m *Comment) GetContentID() string { + if m != nil { + return m.ContentID + } + return "" +} + +func (m *Comment) GetContent() string { + if m != nil { + return m.Content + } + return "" +} + +func (m *Comment) GetCreateTime() int32 { + if m != nil { + return m.CreateTime + } + return 0 +} + +type PermissionGroup struct { + GroupName string `protobuf:"bytes,1,opt,name=groupName" json:"groupName,omitempty"` + GroupID string `protobuf:"bytes,2,opt,name=groupID" json:"groupID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PermissionGroup) Reset() { *m = PermissionGroup{} } +func (m *PermissionGroup) String() string { return proto.CompactTextString(m) } +func (*PermissionGroup) ProtoMessage() {} +func (*PermissionGroup) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{21} +} +func (m *PermissionGroup) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PermissionGroup.Unmarshal(m, b) +} +func (m *PermissionGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PermissionGroup.Marshal(b, m, deterministic) +} +func (dst *PermissionGroup) XXX_Merge(src proto.Message) { + xxx_messageInfo_PermissionGroup.Merge(dst, src) +} +func (m *PermissionGroup) XXX_Size() int { + return xxx_messageInfo_PermissionGroup.Size(m) +} +func (m *PermissionGroup) XXX_DiscardUnknown() { + xxx_messageInfo_PermissionGroup.DiscardUnknown(m) +} + +var xxx_messageInfo_PermissionGroup proto.InternalMessageInfo + +func (m *PermissionGroup) GetGroupName() string { + if m != nil { + return m.GroupName + } + return "" +} + +func (m *PermissionGroup) GetGroupID() string { + if m != nil { + return m.GroupID + } + return "" +} + +type WorkMomentUser struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=userName" json:"userName,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WorkMomentUser) Reset() { *m = WorkMomentUser{} } +func (m *WorkMomentUser) String() string { return proto.CompactTextString(m) } +func (*WorkMomentUser) ProtoMessage() {} +func (*WorkMomentUser) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{22} +} +func (m *WorkMomentUser) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WorkMomentUser.Unmarshal(m, b) +} +func (m *WorkMomentUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WorkMomentUser.Marshal(b, m, deterministic) +} +func (dst *WorkMomentUser) XXX_Merge(src proto.Message) { + xxx_messageInfo_WorkMomentUser.Merge(dst, src) +} +func (m *WorkMomentUser) XXX_Size() int { + return xxx_messageInfo_WorkMomentUser.Size(m) +} +func (m *WorkMomentUser) XXX_DiscardUnknown() { + xxx_messageInfo_WorkMomentUser.DiscardUnknown(m) +} + +var xxx_messageInfo_WorkMomentUser proto.InternalMessageInfo + +func (m *WorkMomentUser) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *WorkMomentUser) GetUserName() string { + if m != nil { + return m.UserName + } + return "" +} + +type WorkMoment struct { + WorkMomentID string `protobuf:"bytes,1,opt,name=workMomentID" json:"workMomentID,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` + UserName string `protobuf:"bytes,3,opt,name=userName" json:"userName,omitempty"` + FaceURL string `protobuf:"bytes,4,opt,name=faceURL" json:"faceURL,omitempty"` + Content string `protobuf:"bytes,5,opt,name=content" json:"content,omitempty"` + LikeUserList []*WorkMomentUser `protobuf:"bytes,6,rep,name=likeUserList" json:"likeUserList,omitempty"` + Comments []*Comment `protobuf:"bytes,7,rep,name=comments" json:"comments,omitempty"` + Permission int32 `protobuf:"varint,8,opt,name=permission" json:"permission,omitempty"` + PermissionUserList []*WorkMomentUser `protobuf:"bytes,9,rep,name=permissionUserList" json:"permissionUserList,omitempty"` + PermissionGroupList []*PermissionGroup `protobuf:"bytes,10,rep,name=permissionGroupList" json:"permissionGroupList,omitempty"` + AtUserList []*WorkMomentUser `protobuf:"bytes,11,rep,name=atUserList" json:"atUserList,omitempty"` + CreateTime int32 `protobuf:"varint,12,opt,name=createTime" json:"createTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WorkMoment) Reset() { *m = WorkMoment{} } +func (m *WorkMoment) String() string { return proto.CompactTextString(m) } +func (*WorkMoment) ProtoMessage() {} +func (*WorkMoment) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{23} +} +func (m *WorkMoment) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WorkMoment.Unmarshal(m, b) +} +func (m *WorkMoment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WorkMoment.Marshal(b, m, deterministic) +} +func (dst *WorkMoment) XXX_Merge(src proto.Message) { + xxx_messageInfo_WorkMoment.Merge(dst, src) +} +func (m *WorkMoment) XXX_Size() int { + return xxx_messageInfo_WorkMoment.Size(m) +} +func (m *WorkMoment) XXX_DiscardUnknown() { + xxx_messageInfo_WorkMoment.DiscardUnknown(m) +} + +var xxx_messageInfo_WorkMoment proto.InternalMessageInfo + +func (m *WorkMoment) GetWorkMomentID() string { + if m != nil { + return m.WorkMomentID + } + return "" +} + +func (m *WorkMoment) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *WorkMoment) GetUserName() string { + if m != nil { + return m.UserName + } + return "" +} + +func (m *WorkMoment) GetFaceURL() string { + if m != nil { + return m.FaceURL + } + return "" +} + +func (m *WorkMoment) GetContent() string { + if m != nil { + return m.Content + } + return "" +} + +func (m *WorkMoment) GetLikeUserList() []*WorkMomentUser { + if m != nil { + return m.LikeUserList + } + return nil +} + +func (m *WorkMoment) GetComments() []*Comment { + if m != nil { + return m.Comments + } + return nil +} + +func (m *WorkMoment) GetPermission() int32 { + if m != nil { + return m.Permission + } + return 0 +} + +func (m *WorkMoment) GetPermissionUserList() []*WorkMomentUser { + if m != nil { + return m.PermissionUserList + } + return nil +} + +func (m *WorkMoment) GetPermissionGroupList() []*PermissionGroup { + if m != nil { + return m.PermissionGroupList + } + return nil +} + +func (m *WorkMoment) GetAtUserList() []*WorkMomentUser { + if m != nil { + return m.AtUserList + } + return nil +} + +func (m *WorkMoment) GetCreateTime() int32 { + if m != nil { + return m.CreateTime + } + return 0 +} + +type CreateOneWorkMomentReq struct { + WorkMoment *WorkMoment `protobuf:"bytes,1,opt,name=workMoment" json:"workMoment,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateOneWorkMomentReq) Reset() { *m = CreateOneWorkMomentReq{} } +func (m *CreateOneWorkMomentReq) String() string { return proto.CompactTextString(m) } +func (*CreateOneWorkMomentReq) ProtoMessage() {} +func (*CreateOneWorkMomentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{24} +} +func (m *CreateOneWorkMomentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateOneWorkMomentReq.Unmarshal(m, b) +} +func (m *CreateOneWorkMomentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateOneWorkMomentReq.Marshal(b, m, deterministic) +} +func (dst *CreateOneWorkMomentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateOneWorkMomentReq.Merge(dst, src) +} +func (m *CreateOneWorkMomentReq) XXX_Size() int { + return xxx_messageInfo_CreateOneWorkMomentReq.Size(m) +} +func (m *CreateOneWorkMomentReq) XXX_DiscardUnknown() { + xxx_messageInfo_CreateOneWorkMomentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateOneWorkMomentReq proto.InternalMessageInfo + +func (m *CreateOneWorkMomentReq) GetWorkMoment() *WorkMoment { + if m != nil { + return m.WorkMoment + } + return nil +} + +func (m *CreateOneWorkMomentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type CreateOneWorkMomentResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateOneWorkMomentResp) Reset() { *m = CreateOneWorkMomentResp{} } +func (m *CreateOneWorkMomentResp) String() string { return proto.CompactTextString(m) } +func (*CreateOneWorkMomentResp) ProtoMessage() {} +func (*CreateOneWorkMomentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{25} +} +func (m *CreateOneWorkMomentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateOneWorkMomentResp.Unmarshal(m, b) +} +func (m *CreateOneWorkMomentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateOneWorkMomentResp.Marshal(b, m, deterministic) +} +func (dst *CreateOneWorkMomentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateOneWorkMomentResp.Merge(dst, src) +} +func (m *CreateOneWorkMomentResp) XXX_Size() int { + return xxx_messageInfo_CreateOneWorkMomentResp.Size(m) +} +func (m *CreateOneWorkMomentResp) XXX_DiscardUnknown() { + xxx_messageInfo_CreateOneWorkMomentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateOneWorkMomentResp proto.InternalMessageInfo + +func (m *CreateOneWorkMomentResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +type DeleteOneWorkMomentReq struct { + WorkMomentID string `protobuf:"bytes,1,opt,name=workMomentID" json:"workMomentID,omitempty"` + UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"` + OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteOneWorkMomentReq) Reset() { *m = DeleteOneWorkMomentReq{} } +func (m *DeleteOneWorkMomentReq) String() string { return proto.CompactTextString(m) } +func (*DeleteOneWorkMomentReq) ProtoMessage() {} +func (*DeleteOneWorkMomentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{26} +} +func (m *DeleteOneWorkMomentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteOneWorkMomentReq.Unmarshal(m, b) +} +func (m *DeleteOneWorkMomentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteOneWorkMomentReq.Marshal(b, m, deterministic) +} +func (dst *DeleteOneWorkMomentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteOneWorkMomentReq.Merge(dst, src) +} +func (m *DeleteOneWorkMomentReq) XXX_Size() int { + return xxx_messageInfo_DeleteOneWorkMomentReq.Size(m) +} +func (m *DeleteOneWorkMomentReq) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteOneWorkMomentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteOneWorkMomentReq proto.InternalMessageInfo + +func (m *DeleteOneWorkMomentReq) GetWorkMomentID() string { + if m != nil { + return m.WorkMomentID + } + return "" +} + +func (m *DeleteOneWorkMomentReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *DeleteOneWorkMomentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type DeleteOneWorkMomentResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteOneWorkMomentResp) Reset() { *m = DeleteOneWorkMomentResp{} } +func (m *DeleteOneWorkMomentResp) String() string { return proto.CompactTextString(m) } +func (*DeleteOneWorkMomentResp) ProtoMessage() {} +func (*DeleteOneWorkMomentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{27} +} +func (m *DeleteOneWorkMomentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteOneWorkMomentResp.Unmarshal(m, b) +} +func (m *DeleteOneWorkMomentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteOneWorkMomentResp.Marshal(b, m, deterministic) +} +func (dst *DeleteOneWorkMomentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteOneWorkMomentResp.Merge(dst, src) +} +func (m *DeleteOneWorkMomentResp) XXX_Size() int { + return xxx_messageInfo_DeleteOneWorkMomentResp.Size(m) +} +func (m *DeleteOneWorkMomentResp) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteOneWorkMomentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteOneWorkMomentResp proto.InternalMessageInfo + +func (m *DeleteOneWorkMomentResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +type LikeOneWorkMomentReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + WorkMomentID string `protobuf:"bytes,2,opt,name=WorkMomentID" json:"WorkMomentID,omitempty"` + OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *LikeOneWorkMomentReq) Reset() { *m = LikeOneWorkMomentReq{} } +func (m *LikeOneWorkMomentReq) String() string { return proto.CompactTextString(m) } +func (*LikeOneWorkMomentReq) ProtoMessage() {} +func (*LikeOneWorkMomentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{28} +} +func (m *LikeOneWorkMomentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_LikeOneWorkMomentReq.Unmarshal(m, b) +} +func (m *LikeOneWorkMomentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_LikeOneWorkMomentReq.Marshal(b, m, deterministic) +} +func (dst *LikeOneWorkMomentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_LikeOneWorkMomentReq.Merge(dst, src) +} +func (m *LikeOneWorkMomentReq) XXX_Size() int { + return xxx_messageInfo_LikeOneWorkMomentReq.Size(m) +} +func (m *LikeOneWorkMomentReq) XXX_DiscardUnknown() { + xxx_messageInfo_LikeOneWorkMomentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_LikeOneWorkMomentReq proto.InternalMessageInfo + +func (m *LikeOneWorkMomentReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *LikeOneWorkMomentReq) GetWorkMomentID() string { + if m != nil { + return m.WorkMomentID + } + return "" +} + +func (m *LikeOneWorkMomentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type LikeOneWorkMomentResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *LikeOneWorkMomentResp) Reset() { *m = LikeOneWorkMomentResp{} } +func (m *LikeOneWorkMomentResp) String() string { return proto.CompactTextString(m) } +func (*LikeOneWorkMomentResp) ProtoMessage() {} +func (*LikeOneWorkMomentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{29} +} +func (m *LikeOneWorkMomentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_LikeOneWorkMomentResp.Unmarshal(m, b) +} +func (m *LikeOneWorkMomentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_LikeOneWorkMomentResp.Marshal(b, m, deterministic) +} +func (dst *LikeOneWorkMomentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_LikeOneWorkMomentResp.Merge(dst, src) +} +func (m *LikeOneWorkMomentResp) XXX_Size() int { + return xxx_messageInfo_LikeOneWorkMomentResp.Size(m) +} +func (m *LikeOneWorkMomentResp) XXX_DiscardUnknown() { + xxx_messageInfo_LikeOneWorkMomentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_LikeOneWorkMomentResp proto.InternalMessageInfo + +func (m *LikeOneWorkMomentResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +type CommentOneWorkMomentReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + WorkMomentID string `protobuf:"bytes,2,opt,name=workMomentID" json:"workMomentID,omitempty"` + ReplyUserID string `protobuf:"bytes,3,opt,name=replyUserID" json:"replyUserID,omitempty"` + Content string `protobuf:"bytes,4,opt,name=content" json:"content,omitempty"` + OperationID string `protobuf:"bytes,5,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CommentOneWorkMomentReq) Reset() { *m = CommentOneWorkMomentReq{} } +func (m *CommentOneWorkMomentReq) String() string { return proto.CompactTextString(m) } +func (*CommentOneWorkMomentReq) ProtoMessage() {} +func (*CommentOneWorkMomentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{30} +} +func (m *CommentOneWorkMomentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommentOneWorkMomentReq.Unmarshal(m, b) +} +func (m *CommentOneWorkMomentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommentOneWorkMomentReq.Marshal(b, m, deterministic) +} +func (dst *CommentOneWorkMomentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommentOneWorkMomentReq.Merge(dst, src) +} +func (m *CommentOneWorkMomentReq) XXX_Size() int { + return xxx_messageInfo_CommentOneWorkMomentReq.Size(m) +} +func (m *CommentOneWorkMomentReq) XXX_DiscardUnknown() { + xxx_messageInfo_CommentOneWorkMomentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_CommentOneWorkMomentReq proto.InternalMessageInfo + +func (m *CommentOneWorkMomentReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *CommentOneWorkMomentReq) GetWorkMomentID() string { + if m != nil { + return m.WorkMomentID + } + return "" +} + +func (m *CommentOneWorkMomentReq) GetReplyUserID() string { + if m != nil { + return m.ReplyUserID + } + return "" +} + +func (m *CommentOneWorkMomentReq) GetContent() string { + if m != nil { + return m.Content + } + return "" +} + +func (m *CommentOneWorkMomentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type CommentOneWorkMomentResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CommentOneWorkMomentResp) Reset() { *m = CommentOneWorkMomentResp{} } +func (m *CommentOneWorkMomentResp) String() string { return proto.CompactTextString(m) } +func (*CommentOneWorkMomentResp) ProtoMessage() {} +func (*CommentOneWorkMomentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{31} +} +func (m *CommentOneWorkMomentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommentOneWorkMomentResp.Unmarshal(m, b) +} +func (m *CommentOneWorkMomentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommentOneWorkMomentResp.Marshal(b, m, deterministic) +} +func (dst *CommentOneWorkMomentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommentOneWorkMomentResp.Merge(dst, src) +} +func (m *CommentOneWorkMomentResp) XXX_Size() int { + return xxx_messageInfo_CommentOneWorkMomentResp.Size(m) +} +func (m *CommentOneWorkMomentResp) XXX_DiscardUnknown() { + xxx_messageInfo_CommentOneWorkMomentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_CommentOneWorkMomentResp proto.InternalMessageInfo + +func (m *CommentOneWorkMomentResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +type DeleteCommentReq struct { + WorkMomentID string `protobuf:"bytes,1,opt,name=workMomentID" json:"workMomentID,omitempty"` + ContentID string `protobuf:"bytes,2,opt,name=contentID" json:"contentID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + OperationID string `protobuf:"bytes,4,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteCommentReq) Reset() { *m = DeleteCommentReq{} } +func (m *DeleteCommentReq) String() string { return proto.CompactTextString(m) } +func (*DeleteCommentReq) ProtoMessage() {} +func (*DeleteCommentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{32} +} +func (m *DeleteCommentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteCommentReq.Unmarshal(m, b) +} +func (m *DeleteCommentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteCommentReq.Marshal(b, m, deterministic) +} +func (dst *DeleteCommentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteCommentReq.Merge(dst, src) +} +func (m *DeleteCommentReq) XXX_Size() int { + return xxx_messageInfo_DeleteCommentReq.Size(m) +} +func (m *DeleteCommentReq) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteCommentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteCommentReq proto.InternalMessageInfo + +func (m *DeleteCommentReq) GetWorkMomentID() string { + if m != nil { + return m.WorkMomentID + } + return "" +} + +func (m *DeleteCommentReq) GetContentID() string { + if m != nil { + return m.ContentID + } + return "" +} + +func (m *DeleteCommentReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +func (m *DeleteCommentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type DeleteCommentResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteCommentResp) Reset() { *m = DeleteCommentResp{} } +func (m *DeleteCommentResp) String() string { return proto.CompactTextString(m) } +func (*DeleteCommentResp) ProtoMessage() {} +func (*DeleteCommentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{33} +} +func (m *DeleteCommentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteCommentResp.Unmarshal(m, b) +} +func (m *DeleteCommentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteCommentResp.Marshal(b, m, deterministic) +} +func (dst *DeleteCommentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteCommentResp.Merge(dst, src) +} +func (m *DeleteCommentResp) XXX_Size() int { + return xxx_messageInfo_DeleteCommentResp.Size(m) +} +func (m *DeleteCommentResp) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteCommentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteCommentResp proto.InternalMessageInfo + +func (m *DeleteCommentResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +type GetWorkMomentByIDReq struct { + WorkMomentID string `protobuf:"bytes,1,opt,name=workMomentID" json:"workMomentID,omitempty"` + OpUserID string `protobuf:"bytes,2,opt,name=opUserID" json:"opUserID,omitempty"` + OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetWorkMomentByIDReq) Reset() { *m = GetWorkMomentByIDReq{} } +func (m *GetWorkMomentByIDReq) String() string { return proto.CompactTextString(m) } +func (*GetWorkMomentByIDReq) ProtoMessage() {} +func (*GetWorkMomentByIDReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{34} +} +func (m *GetWorkMomentByIDReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetWorkMomentByIDReq.Unmarshal(m, b) +} +func (m *GetWorkMomentByIDReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetWorkMomentByIDReq.Marshal(b, m, deterministic) +} +func (dst *GetWorkMomentByIDReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetWorkMomentByIDReq.Merge(dst, src) +} +func (m *GetWorkMomentByIDReq) XXX_Size() int { + return xxx_messageInfo_GetWorkMomentByIDReq.Size(m) +} +func (m *GetWorkMomentByIDReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetWorkMomentByIDReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetWorkMomentByIDReq proto.InternalMessageInfo + +func (m *GetWorkMomentByIDReq) GetWorkMomentID() string { + if m != nil { + return m.WorkMomentID + } + return "" +} + +func (m *GetWorkMomentByIDReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +func (m *GetWorkMomentByIDReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type GetWorkMomentByIDResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + WorkMoment *WorkMoment `protobuf:"bytes,2,opt,name=workMoment" json:"workMoment,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetWorkMomentByIDResp) Reset() { *m = GetWorkMomentByIDResp{} } +func (m *GetWorkMomentByIDResp) String() string { return proto.CompactTextString(m) } +func (*GetWorkMomentByIDResp) ProtoMessage() {} +func (*GetWorkMomentByIDResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{35} +} +func (m *GetWorkMomentByIDResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetWorkMomentByIDResp.Unmarshal(m, b) +} +func (m *GetWorkMomentByIDResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetWorkMomentByIDResp.Marshal(b, m, deterministic) +} +func (dst *GetWorkMomentByIDResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetWorkMomentByIDResp.Merge(dst, src) +} +func (m *GetWorkMomentByIDResp) XXX_Size() int { + return xxx_messageInfo_GetWorkMomentByIDResp.Size(m) +} +func (m *GetWorkMomentByIDResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetWorkMomentByIDResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetWorkMomentByIDResp proto.InternalMessageInfo + +func (m *GetWorkMomentByIDResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +func (m *GetWorkMomentByIDResp) GetWorkMoment() *WorkMoment { + if m != nil { + return m.WorkMoment + } + return nil +} + +type ChangeWorkMomentPermissionReq struct { + WorkMomentID string `protobuf:"bytes,1,opt,name=workMomentID" json:"workMomentID,omitempty"` + OpUserID string `protobuf:"bytes,2,opt,name=opUserID" json:"opUserID,omitempty"` + Permission int32 `protobuf:"varint,3,opt,name=permission" json:"permission,omitempty"` + PermissionUserIDList []string `protobuf:"bytes,4,rep,name=permissionUserIDList" json:"permissionUserIDList,omitempty"` + OperationID string `protobuf:"bytes,5,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ChangeWorkMomentPermissionReq) Reset() { *m = ChangeWorkMomentPermissionReq{} } +func (m *ChangeWorkMomentPermissionReq) String() string { return proto.CompactTextString(m) } +func (*ChangeWorkMomentPermissionReq) ProtoMessage() {} +func (*ChangeWorkMomentPermissionReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{36} +} +func (m *ChangeWorkMomentPermissionReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ChangeWorkMomentPermissionReq.Unmarshal(m, b) +} +func (m *ChangeWorkMomentPermissionReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ChangeWorkMomentPermissionReq.Marshal(b, m, deterministic) +} +func (dst *ChangeWorkMomentPermissionReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_ChangeWorkMomentPermissionReq.Merge(dst, src) +} +func (m *ChangeWorkMomentPermissionReq) XXX_Size() int { + return xxx_messageInfo_ChangeWorkMomentPermissionReq.Size(m) +} +func (m *ChangeWorkMomentPermissionReq) XXX_DiscardUnknown() { + xxx_messageInfo_ChangeWorkMomentPermissionReq.DiscardUnknown(m) +} + +var xxx_messageInfo_ChangeWorkMomentPermissionReq proto.InternalMessageInfo + +func (m *ChangeWorkMomentPermissionReq) GetWorkMomentID() string { + if m != nil { + return m.WorkMomentID + } + return "" +} + +func (m *ChangeWorkMomentPermissionReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +func (m *ChangeWorkMomentPermissionReq) GetPermission() int32 { + if m != nil { + return m.Permission + } + return 0 +} + +func (m *ChangeWorkMomentPermissionReq) GetPermissionUserIDList() []string { + if m != nil { + return m.PermissionUserIDList + } + return nil +} + +func (m *ChangeWorkMomentPermissionReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type ChangeWorkMomentPermissionResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ChangeWorkMomentPermissionResp) Reset() { *m = ChangeWorkMomentPermissionResp{} } +func (m *ChangeWorkMomentPermissionResp) String() string { return proto.CompactTextString(m) } +func (*ChangeWorkMomentPermissionResp) ProtoMessage() {} +func (*ChangeWorkMomentPermissionResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{37} +} +func (m *ChangeWorkMomentPermissionResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ChangeWorkMomentPermissionResp.Unmarshal(m, b) +} +func (m *ChangeWorkMomentPermissionResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ChangeWorkMomentPermissionResp.Marshal(b, m, deterministic) +} +func (dst *ChangeWorkMomentPermissionResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_ChangeWorkMomentPermissionResp.Merge(dst, src) +} +func (m *ChangeWorkMomentPermissionResp) XXX_Size() int { + return xxx_messageInfo_ChangeWorkMomentPermissionResp.Size(m) +} +func (m *ChangeWorkMomentPermissionResp) XXX_DiscardUnknown() { + xxx_messageInfo_ChangeWorkMomentPermissionResp.DiscardUnknown(m) +} + +var xxx_messageInfo_ChangeWorkMomentPermissionResp proto.InternalMessageInfo + +func (m *ChangeWorkMomentPermissionResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +type GetUserWorkMomentsReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + OpUserID string `protobuf:"bytes,2,opt,name=opUserID" json:"opUserID,omitempty"` + Pagination *sdk_ws.RequestPagination `protobuf:"bytes,3,opt,name=Pagination" json:"Pagination,omitempty"` + OperationID string `protobuf:"bytes,4,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserWorkMomentsReq) Reset() { *m = GetUserWorkMomentsReq{} } +func (m *GetUserWorkMomentsReq) String() string { return proto.CompactTextString(m) } +func (*GetUserWorkMomentsReq) ProtoMessage() {} +func (*GetUserWorkMomentsReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{38} +} +func (m *GetUserWorkMomentsReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserWorkMomentsReq.Unmarshal(m, b) +} +func (m *GetUserWorkMomentsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserWorkMomentsReq.Marshal(b, m, deterministic) +} +func (dst *GetUserWorkMomentsReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserWorkMomentsReq.Merge(dst, src) +} +func (m *GetUserWorkMomentsReq) XXX_Size() int { + return xxx_messageInfo_GetUserWorkMomentsReq.Size(m) +} +func (m *GetUserWorkMomentsReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserWorkMomentsReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserWorkMomentsReq proto.InternalMessageInfo + +func (m *GetUserWorkMomentsReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *GetUserWorkMomentsReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +func (m *GetUserWorkMomentsReq) GetPagination() *sdk_ws.RequestPagination { + if m != nil { + return m.Pagination + } + return nil +} + +func (m *GetUserWorkMomentsReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type GetUserWorkMomentsResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + WorkMoments []*WorkMoment `protobuf:"bytes,2,rep,name=workMoments" json:"workMoments,omitempty"` + Pagination *sdk_ws.ResponsePagination `protobuf:"bytes,3,opt,name=Pagination" json:"Pagination,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserWorkMomentsResp) Reset() { *m = GetUserWorkMomentsResp{} } +func (m *GetUserWorkMomentsResp) String() string { return proto.CompactTextString(m) } +func (*GetUserWorkMomentsResp) ProtoMessage() {} +func (*GetUserWorkMomentsResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{39} +} +func (m *GetUserWorkMomentsResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserWorkMomentsResp.Unmarshal(m, b) +} +func (m *GetUserWorkMomentsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserWorkMomentsResp.Marshal(b, m, deterministic) +} +func (dst *GetUserWorkMomentsResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserWorkMomentsResp.Merge(dst, src) +} +func (m *GetUserWorkMomentsResp) XXX_Size() int { + return xxx_messageInfo_GetUserWorkMomentsResp.Size(m) +} +func (m *GetUserWorkMomentsResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserWorkMomentsResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserWorkMomentsResp proto.InternalMessageInfo + +func (m *GetUserWorkMomentsResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +func (m *GetUserWorkMomentsResp) GetWorkMoments() []*WorkMoment { + if m != nil { + return m.WorkMoments + } + return nil +} + +func (m *GetUserWorkMomentsResp) GetPagination() *sdk_ws.ResponsePagination { + if m != nil { + return m.Pagination + } + return nil +} + +type GetUserFriendWorkMomentsReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + Pagination *sdk_ws.RequestPagination `protobuf:"bytes,2,opt,name=Pagination" json:"Pagination,omitempty"` + OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserFriendWorkMomentsReq) Reset() { *m = GetUserFriendWorkMomentsReq{} } +func (m *GetUserFriendWorkMomentsReq) String() string { return proto.CompactTextString(m) } +func (*GetUserFriendWorkMomentsReq) ProtoMessage() {} +func (*GetUserFriendWorkMomentsReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{40} +} +func (m *GetUserFriendWorkMomentsReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserFriendWorkMomentsReq.Unmarshal(m, b) +} +func (m *GetUserFriendWorkMomentsReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserFriendWorkMomentsReq.Marshal(b, m, deterministic) +} +func (dst *GetUserFriendWorkMomentsReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserFriendWorkMomentsReq.Merge(dst, src) +} +func (m *GetUserFriendWorkMomentsReq) XXX_Size() int { + return xxx_messageInfo_GetUserFriendWorkMomentsReq.Size(m) +} +func (m *GetUserFriendWorkMomentsReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserFriendWorkMomentsReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserFriendWorkMomentsReq proto.InternalMessageInfo + +func (m *GetUserFriendWorkMomentsReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *GetUserFriendWorkMomentsReq) GetPagination() *sdk_ws.RequestPagination { + if m != nil { + return m.Pagination + } + return nil +} + +func (m *GetUserFriendWorkMomentsReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type GetUserFriendWorkMomentsResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + WorkMoments []*WorkMoment `protobuf:"bytes,2,rep,name=workMoments" json:"workMoments,omitempty"` + Pagination *sdk_ws.ResponsePagination `protobuf:"bytes,3,opt,name=Pagination" json:"Pagination,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserFriendWorkMomentsResp) Reset() { *m = GetUserFriendWorkMomentsResp{} } +func (m *GetUserFriendWorkMomentsResp) String() string { return proto.CompactTextString(m) } +func (*GetUserFriendWorkMomentsResp) ProtoMessage() {} +func (*GetUserFriendWorkMomentsResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{41} +} +func (m *GetUserFriendWorkMomentsResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserFriendWorkMomentsResp.Unmarshal(m, b) +} +func (m *GetUserFriendWorkMomentsResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserFriendWorkMomentsResp.Marshal(b, m, deterministic) +} +func (dst *GetUserFriendWorkMomentsResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserFriendWorkMomentsResp.Merge(dst, src) +} +func (m *GetUserFriendWorkMomentsResp) XXX_Size() int { + return xxx_messageInfo_GetUserFriendWorkMomentsResp.Size(m) +} +func (m *GetUserFriendWorkMomentsResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserFriendWorkMomentsResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserFriendWorkMomentsResp proto.InternalMessageInfo + +func (m *GetUserFriendWorkMomentsResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +func (m *GetUserFriendWorkMomentsResp) GetWorkMoments() []*WorkMoment { + if m != nil { + return m.WorkMoments + } + return nil +} + +func (m *GetUserFriendWorkMomentsResp) GetPagination() *sdk_ws.ResponsePagination { + if m != nil { + return m.Pagination + } + return nil +} + +type WorkMomentNotificationMsg struct { + NotificationMsgType int32 `protobuf:"varint,1,opt,name=notificationMsgType" json:"notificationMsgType,omitempty"` + ReplyUserName string `protobuf:"bytes,2,opt,name=replyUserName" json:"replyUserName,omitempty"` + ReplyUserID string `protobuf:"bytes,3,opt,name=replyUserID" json:"replyUserID,omitempty"` + Content string `protobuf:"bytes,4,opt,name=content" json:"content,omitempty"` + ContentID string `protobuf:"bytes,5,opt,name=contentID" json:"contentID,omitempty"` + WorkMomentID string `protobuf:"bytes,6,opt,name=workMomentID" json:"workMomentID,omitempty"` + UserID string `protobuf:"bytes,7,opt,name=userID" json:"userID,omitempty"` + UserName string `protobuf:"bytes,8,opt,name=userName" json:"userName,omitempty"` + FaceURL string `protobuf:"bytes,9,opt,name=faceURL" json:"faceURL,omitempty"` + WorkMomentContent string `protobuf:"bytes,10,opt,name=workMomentContent" json:"workMomentContent,omitempty"` + CreateTime int32 `protobuf:"varint,11,opt,name=createTime" json:"createTime,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WorkMomentNotificationMsg) Reset() { *m = WorkMomentNotificationMsg{} } +func (m *WorkMomentNotificationMsg) String() string { return proto.CompactTextString(m) } +func (*WorkMomentNotificationMsg) ProtoMessage() {} +func (*WorkMomentNotificationMsg) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{42} +} +func (m *WorkMomentNotificationMsg) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WorkMomentNotificationMsg.Unmarshal(m, b) +} +func (m *WorkMomentNotificationMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WorkMomentNotificationMsg.Marshal(b, m, deterministic) +} +func (dst *WorkMomentNotificationMsg) XXX_Merge(src proto.Message) { + xxx_messageInfo_WorkMomentNotificationMsg.Merge(dst, src) +} +func (m *WorkMomentNotificationMsg) XXX_Size() int { + return xxx_messageInfo_WorkMomentNotificationMsg.Size(m) +} +func (m *WorkMomentNotificationMsg) XXX_DiscardUnknown() { + xxx_messageInfo_WorkMomentNotificationMsg.DiscardUnknown(m) +} + +var xxx_messageInfo_WorkMomentNotificationMsg proto.InternalMessageInfo + +func (m *WorkMomentNotificationMsg) GetNotificationMsgType() int32 { + if m != nil { + return m.NotificationMsgType + } + return 0 +} + +func (m *WorkMomentNotificationMsg) GetReplyUserName() string { + if m != nil { + return m.ReplyUserName + } + return "" +} + +func (m *WorkMomentNotificationMsg) GetReplyUserID() string { + if m != nil { + return m.ReplyUserID + } + return "" +} + +func (m *WorkMomentNotificationMsg) GetContent() string { + if m != nil { + return m.Content + } + return "" +} + +func (m *WorkMomentNotificationMsg) GetContentID() string { + if m != nil { + return m.ContentID + } + return "" +} + +func (m *WorkMomentNotificationMsg) GetWorkMomentID() string { + if m != nil { + return m.WorkMomentID + } + return "" +} + +func (m *WorkMomentNotificationMsg) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *WorkMomentNotificationMsg) GetUserName() string { + if m != nil { + return m.UserName + } + return "" +} + +func (m *WorkMomentNotificationMsg) GetFaceURL() string { + if m != nil { + return m.FaceURL + } + return "" +} + +func (m *WorkMomentNotificationMsg) GetWorkMomentContent() string { + if m != nil { + return m.WorkMomentContent + } + return "" +} + +func (m *WorkMomentNotificationMsg) GetCreateTime() int32 { + if m != nil { + return m.CreateTime + } + return 0 +} + +type SetUserWorkMomentsLevelReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + Level int32 `protobuf:"varint,2,opt,name=level" json:"level,omitempty"` + OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SetUserWorkMomentsLevelReq) Reset() { *m = SetUserWorkMomentsLevelReq{} } +func (m *SetUserWorkMomentsLevelReq) String() string { return proto.CompactTextString(m) } +func (*SetUserWorkMomentsLevelReq) ProtoMessage() {} +func (*SetUserWorkMomentsLevelReq) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{43} +} +func (m *SetUserWorkMomentsLevelReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SetUserWorkMomentsLevelReq.Unmarshal(m, b) +} +func (m *SetUserWorkMomentsLevelReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SetUserWorkMomentsLevelReq.Marshal(b, m, deterministic) +} +func (dst *SetUserWorkMomentsLevelReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetUserWorkMomentsLevelReq.Merge(dst, src) +} +func (m *SetUserWorkMomentsLevelReq) XXX_Size() int { + return xxx_messageInfo_SetUserWorkMomentsLevelReq.Size(m) +} +func (m *SetUserWorkMomentsLevelReq) XXX_DiscardUnknown() { + xxx_messageInfo_SetUserWorkMomentsLevelReq.DiscardUnknown(m) +} + +var xxx_messageInfo_SetUserWorkMomentsLevelReq proto.InternalMessageInfo + +func (m *SetUserWorkMomentsLevelReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *SetUserWorkMomentsLevelReq) GetLevel() int32 { + if m != nil { + return m.Level + } + return 0 +} + +func (m *SetUserWorkMomentsLevelReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type SetUserWorkMomentsLevelResp struct { + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SetUserWorkMomentsLevelResp) Reset() { *m = SetUserWorkMomentsLevelResp{} } +func (m *SetUserWorkMomentsLevelResp) String() string { return proto.CompactTextString(m) } +func (*SetUserWorkMomentsLevelResp) ProtoMessage() {} +func (*SetUserWorkMomentsLevelResp) Descriptor() ([]byte, []int) { + return fileDescriptor_office_f560032e7c752d4f, []int{44} +} +func (m *SetUserWorkMomentsLevelResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SetUserWorkMomentsLevelResp.Unmarshal(m, b) +} +func (m *SetUserWorkMomentsLevelResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SetUserWorkMomentsLevelResp.Marshal(b, m, deterministic) +} +func (dst *SetUserWorkMomentsLevelResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetUserWorkMomentsLevelResp.Merge(dst, src) +} +func (m *SetUserWorkMomentsLevelResp) XXX_Size() int { + return xxx_messageInfo_SetUserWorkMomentsLevelResp.Size(m) +} +func (m *SetUserWorkMomentsLevelResp) XXX_DiscardUnknown() { + xxx_messageInfo_SetUserWorkMomentsLevelResp.DiscardUnknown(m) +} + +var xxx_messageInfo_SetUserWorkMomentsLevelResp proto.InternalMessageInfo + +func (m *SetUserWorkMomentsLevelResp) GetCommonResp() *CommonResp { + if m != nil { + return m.CommonResp + } + return nil +} + +func init() { + proto.RegisterType((*CommonResp)(nil), "office.CommonResp") + proto.RegisterType((*TagUser)(nil), "office.TagUser") + proto.RegisterType((*Tag)(nil), "office.Tag") + proto.RegisterType((*GetUserTagsReq)(nil), "office.GetUserTagsReq") + proto.RegisterType((*GetUserTagsResp)(nil), "office.GetUserTagsResp") + proto.RegisterType((*CreateTagReq)(nil), "office.CreateTagReq") + proto.RegisterType((*CreateTagResp)(nil), "office.CreateTagResp") + proto.RegisterType((*DeleteTagReq)(nil), "office.DeleteTagReq") + proto.RegisterType((*DeleteTagResp)(nil), "office.DeleteTagResp") + proto.RegisterType((*SetTagReq)(nil), "office.SetTagReq") + proto.RegisterType((*SetTagResp)(nil), "office.SetTagResp") + proto.RegisterType((*SendMsg2TagReq)(nil), "office.SendMsg2TagReq") + proto.RegisterType((*SendMsg2TagResp)(nil), "office.SendMsg2TagResp") + proto.RegisterType((*GetTagSendLogsReq)(nil), "office.GetTagSendLogsReq") + proto.RegisterType((*TagSendLog)(nil), "office.TagSendLog") + proto.RegisterType((*GetTagSendLogsResp)(nil), "office.GetTagSendLogsResp") + proto.RegisterType((*GetUserTagByIDReq)(nil), "office.GetUserTagByIDReq") + proto.RegisterType((*GetUserTagByIDResp)(nil), "office.GetUserTagByIDResp") + proto.RegisterType((*LikeUser)(nil), "office.LikeUser") + proto.RegisterType((*NotificationUser)(nil), "office.NotificationUser") + proto.RegisterType((*Comment)(nil), "office.Comment") + proto.RegisterType((*PermissionGroup)(nil), "office.PermissionGroup") + proto.RegisterType((*WorkMomentUser)(nil), "office.WorkMomentUser") + proto.RegisterType((*WorkMoment)(nil), "office.WorkMoment") + proto.RegisterType((*CreateOneWorkMomentReq)(nil), "office.CreateOneWorkMomentReq") + proto.RegisterType((*CreateOneWorkMomentResp)(nil), "office.CreateOneWorkMomentResp") + proto.RegisterType((*DeleteOneWorkMomentReq)(nil), "office.DeleteOneWorkMomentReq") + proto.RegisterType((*DeleteOneWorkMomentResp)(nil), "office.DeleteOneWorkMomentResp") + proto.RegisterType((*LikeOneWorkMomentReq)(nil), "office.LikeOneWorkMomentReq") + proto.RegisterType((*LikeOneWorkMomentResp)(nil), "office.LikeOneWorkMomentResp") + proto.RegisterType((*CommentOneWorkMomentReq)(nil), "office.CommentOneWorkMomentReq") + proto.RegisterType((*CommentOneWorkMomentResp)(nil), "office.CommentOneWorkMomentResp") + proto.RegisterType((*DeleteCommentReq)(nil), "office.DeleteCommentReq") + proto.RegisterType((*DeleteCommentResp)(nil), "office.DeleteCommentResp") + proto.RegisterType((*GetWorkMomentByIDReq)(nil), "office.GetWorkMomentByIDReq") + proto.RegisterType((*GetWorkMomentByIDResp)(nil), "office.GetWorkMomentByIDResp") + proto.RegisterType((*ChangeWorkMomentPermissionReq)(nil), "office.ChangeWorkMomentPermissionReq") + proto.RegisterType((*ChangeWorkMomentPermissionResp)(nil), "office.ChangeWorkMomentPermissionResp") + proto.RegisterType((*GetUserWorkMomentsReq)(nil), "office.GetUserWorkMomentsReq") + proto.RegisterType((*GetUserWorkMomentsResp)(nil), "office.GetUserWorkMomentsResp") + proto.RegisterType((*GetUserFriendWorkMomentsReq)(nil), "office.GetUserFriendWorkMomentsReq") + proto.RegisterType((*GetUserFriendWorkMomentsResp)(nil), "office.GetUserFriendWorkMomentsResp") + proto.RegisterType((*WorkMomentNotificationMsg)(nil), "office.WorkMomentNotificationMsg") + proto.RegisterType((*SetUserWorkMomentsLevelReq)(nil), "office.SetUserWorkMomentsLevelReq") + proto.RegisterType((*SetUserWorkMomentsLevelResp)(nil), "office.SetUserWorkMomentsLevelResp") +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// Client API for OfficeService service + +type OfficeServiceClient interface { + GetUserTags(ctx context.Context, in *GetUserTagsReq, opts ...grpc.CallOption) (*GetUserTagsResp, error) + CreateTag(ctx context.Context, in *CreateTagReq, opts ...grpc.CallOption) (*CreateTagResp, error) + DeleteTag(ctx context.Context, in *DeleteTagReq, opts ...grpc.CallOption) (*DeleteTagResp, error) + SetTag(ctx context.Context, in *SetTagReq, opts ...grpc.CallOption) (*SetTagResp, error) + SendMsg2Tag(ctx context.Context, in *SendMsg2TagReq, opts ...grpc.CallOption) (*SendMsg2TagResp, error) + GetTagSendLogs(ctx context.Context, in *GetTagSendLogsReq, opts ...grpc.CallOption) (*GetTagSendLogsResp, error) + GetUserTagByID(ctx context.Context, in *GetUserTagByIDReq, opts ...grpc.CallOption) (*GetUserTagByIDResp, error) + CreateOneWorkMoment(ctx context.Context, in *CreateOneWorkMomentReq, opts ...grpc.CallOption) (*CreateOneWorkMomentResp, error) + DeleteOneWorkMoment(ctx context.Context, in *DeleteOneWorkMomentReq, opts ...grpc.CallOption) (*DeleteOneWorkMomentResp, error) + LikeOneWorkMoment(ctx context.Context, in *LikeOneWorkMomentReq, opts ...grpc.CallOption) (*LikeOneWorkMomentResp, error) + CommentOneWorkMoment(ctx context.Context, in *CommentOneWorkMomentReq, opts ...grpc.CallOption) (*CommentOneWorkMomentResp, error) + DeleteComment(ctx context.Context, in *DeleteCommentReq, opts ...grpc.CallOption) (*DeleteCommentResp, error) + GetWorkMomentByID(ctx context.Context, in *GetWorkMomentByIDReq, opts ...grpc.CallOption) (*GetWorkMomentByIDResp, error) + ChangeWorkMomentPermission(ctx context.Context, in *ChangeWorkMomentPermissionReq, opts ...grpc.CallOption) (*ChangeWorkMomentPermissionResp, error) + // / user self + GetUserWorkMoments(ctx context.Context, in *GetUserWorkMomentsReq, opts ...grpc.CallOption) (*GetUserWorkMomentsResp, error) + // / users friend + GetUserFriendWorkMoments(ctx context.Context, in *GetUserFriendWorkMomentsReq, opts ...grpc.CallOption) (*GetUserFriendWorkMomentsResp, error) + SetUserWorkMomentsLevel(ctx context.Context, in *SetUserWorkMomentsLevelReq, opts ...grpc.CallOption) (*SetUserWorkMomentsLevelResp, error) +} + +type officeServiceClient struct { + cc *grpc.ClientConn +} + +func NewOfficeServiceClient(cc *grpc.ClientConn) OfficeServiceClient { + return &officeServiceClient{cc} +} + +func (c *officeServiceClient) GetUserTags(ctx context.Context, in *GetUserTagsReq, opts ...grpc.CallOption) (*GetUserTagsResp, error) { + out := new(GetUserTagsResp) + err := grpc.Invoke(ctx, "/office.OfficeService/GetUserTags", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) CreateTag(ctx context.Context, in *CreateTagReq, opts ...grpc.CallOption) (*CreateTagResp, error) { + out := new(CreateTagResp) + err := grpc.Invoke(ctx, "/office.OfficeService/CreateTag", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) DeleteTag(ctx context.Context, in *DeleteTagReq, opts ...grpc.CallOption) (*DeleteTagResp, error) { + out := new(DeleteTagResp) + err := grpc.Invoke(ctx, "/office.OfficeService/DeleteTag", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) SetTag(ctx context.Context, in *SetTagReq, opts ...grpc.CallOption) (*SetTagResp, error) { + out := new(SetTagResp) + err := grpc.Invoke(ctx, "/office.OfficeService/SetTag", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) SendMsg2Tag(ctx context.Context, in *SendMsg2TagReq, opts ...grpc.CallOption) (*SendMsg2TagResp, error) { + out := new(SendMsg2TagResp) + err := grpc.Invoke(ctx, "/office.OfficeService/SendMsg2Tag", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) GetTagSendLogs(ctx context.Context, in *GetTagSendLogsReq, opts ...grpc.CallOption) (*GetTagSendLogsResp, error) { + out := new(GetTagSendLogsResp) + err := grpc.Invoke(ctx, "/office.OfficeService/GetTagSendLogs", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) GetUserTagByID(ctx context.Context, in *GetUserTagByIDReq, opts ...grpc.CallOption) (*GetUserTagByIDResp, error) { + out := new(GetUserTagByIDResp) + err := grpc.Invoke(ctx, "/office.OfficeService/GetUserTagByID", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) CreateOneWorkMoment(ctx context.Context, in *CreateOneWorkMomentReq, opts ...grpc.CallOption) (*CreateOneWorkMomentResp, error) { + out := new(CreateOneWorkMomentResp) + err := grpc.Invoke(ctx, "/office.OfficeService/CreateOneWorkMoment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) DeleteOneWorkMoment(ctx context.Context, in *DeleteOneWorkMomentReq, opts ...grpc.CallOption) (*DeleteOneWorkMomentResp, error) { + out := new(DeleteOneWorkMomentResp) + err := grpc.Invoke(ctx, "/office.OfficeService/DeleteOneWorkMoment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) LikeOneWorkMoment(ctx context.Context, in *LikeOneWorkMomentReq, opts ...grpc.CallOption) (*LikeOneWorkMomentResp, error) { + out := new(LikeOneWorkMomentResp) + err := grpc.Invoke(ctx, "/office.OfficeService/LikeOneWorkMoment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) CommentOneWorkMoment(ctx context.Context, in *CommentOneWorkMomentReq, opts ...grpc.CallOption) (*CommentOneWorkMomentResp, error) { + out := new(CommentOneWorkMomentResp) + err := grpc.Invoke(ctx, "/office.OfficeService/CommentOneWorkMoment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) DeleteComment(ctx context.Context, in *DeleteCommentReq, opts ...grpc.CallOption) (*DeleteCommentResp, error) { + out := new(DeleteCommentResp) + err := grpc.Invoke(ctx, "/office.OfficeService/DeleteComment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) GetWorkMomentByID(ctx context.Context, in *GetWorkMomentByIDReq, opts ...grpc.CallOption) (*GetWorkMomentByIDResp, error) { + out := new(GetWorkMomentByIDResp) + err := grpc.Invoke(ctx, "/office.OfficeService/GetWorkMomentByID", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) ChangeWorkMomentPermission(ctx context.Context, in *ChangeWorkMomentPermissionReq, opts ...grpc.CallOption) (*ChangeWorkMomentPermissionResp, error) { + out := new(ChangeWorkMomentPermissionResp) + err := grpc.Invoke(ctx, "/office.OfficeService/ChangeWorkMomentPermission", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) GetUserWorkMoments(ctx context.Context, in *GetUserWorkMomentsReq, opts ...grpc.CallOption) (*GetUserWorkMomentsResp, error) { + out := new(GetUserWorkMomentsResp) + err := grpc.Invoke(ctx, "/office.OfficeService/GetUserWorkMoments", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) GetUserFriendWorkMoments(ctx context.Context, in *GetUserFriendWorkMomentsReq, opts ...grpc.CallOption) (*GetUserFriendWorkMomentsResp, error) { + out := new(GetUserFriendWorkMomentsResp) + err := grpc.Invoke(ctx, "/office.OfficeService/GetUserFriendWorkMoments", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *officeServiceClient) SetUserWorkMomentsLevel(ctx context.Context, in *SetUserWorkMomentsLevelReq, opts ...grpc.CallOption) (*SetUserWorkMomentsLevelResp, error) { + out := new(SetUserWorkMomentsLevelResp) + err := grpc.Invoke(ctx, "/office.OfficeService/SetUserWorkMomentsLevel", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for OfficeService service + +type OfficeServiceServer interface { + GetUserTags(context.Context, *GetUserTagsReq) (*GetUserTagsResp, error) + CreateTag(context.Context, *CreateTagReq) (*CreateTagResp, error) + DeleteTag(context.Context, *DeleteTagReq) (*DeleteTagResp, error) + SetTag(context.Context, *SetTagReq) (*SetTagResp, error) + SendMsg2Tag(context.Context, *SendMsg2TagReq) (*SendMsg2TagResp, error) + GetTagSendLogs(context.Context, *GetTagSendLogsReq) (*GetTagSendLogsResp, error) + GetUserTagByID(context.Context, *GetUserTagByIDReq) (*GetUserTagByIDResp, error) + CreateOneWorkMoment(context.Context, *CreateOneWorkMomentReq) (*CreateOneWorkMomentResp, error) + DeleteOneWorkMoment(context.Context, *DeleteOneWorkMomentReq) (*DeleteOneWorkMomentResp, error) + LikeOneWorkMoment(context.Context, *LikeOneWorkMomentReq) (*LikeOneWorkMomentResp, error) + CommentOneWorkMoment(context.Context, *CommentOneWorkMomentReq) (*CommentOneWorkMomentResp, error) + DeleteComment(context.Context, *DeleteCommentReq) (*DeleteCommentResp, error) + GetWorkMomentByID(context.Context, *GetWorkMomentByIDReq) (*GetWorkMomentByIDResp, error) + ChangeWorkMomentPermission(context.Context, *ChangeWorkMomentPermissionReq) (*ChangeWorkMomentPermissionResp, error) + // / user self + GetUserWorkMoments(context.Context, *GetUserWorkMomentsReq) (*GetUserWorkMomentsResp, error) + // / users friend + GetUserFriendWorkMoments(context.Context, *GetUserFriendWorkMomentsReq) (*GetUserFriendWorkMomentsResp, error) + SetUserWorkMomentsLevel(context.Context, *SetUserWorkMomentsLevelReq) (*SetUserWorkMomentsLevelResp, error) +} + +func RegisterOfficeServiceServer(s *grpc.Server, srv OfficeServiceServer) { + s.RegisterService(&_OfficeService_serviceDesc, srv) +} + +func _OfficeService_GetUserTags_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUserTagsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).GetUserTags(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/GetUserTags", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).GetUserTags(ctx, req.(*GetUserTagsReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_CreateTag_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateTagReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).CreateTag(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/CreateTag", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).CreateTag(ctx, req.(*CreateTagReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_DeleteTag_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteTagReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).DeleteTag(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/DeleteTag", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).DeleteTag(ctx, req.(*DeleteTagReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_SetTag_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetTagReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).SetTag(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/SetTag", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).SetTag(ctx, req.(*SetTagReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_SendMsg2Tag_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SendMsg2TagReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).SendMsg2Tag(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/SendMsg2Tag", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).SendMsg2Tag(ctx, req.(*SendMsg2TagReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_GetTagSendLogs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTagSendLogsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).GetTagSendLogs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/GetTagSendLogs", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).GetTagSendLogs(ctx, req.(*GetTagSendLogsReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_GetUserTagByID_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUserTagByIDReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).GetUserTagByID(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/GetUserTagByID", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).GetUserTagByID(ctx, req.(*GetUserTagByIDReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_CreateOneWorkMoment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateOneWorkMomentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).CreateOneWorkMoment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/CreateOneWorkMoment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).CreateOneWorkMoment(ctx, req.(*CreateOneWorkMomentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_DeleteOneWorkMoment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteOneWorkMomentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).DeleteOneWorkMoment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/DeleteOneWorkMoment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).DeleteOneWorkMoment(ctx, req.(*DeleteOneWorkMomentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_LikeOneWorkMoment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LikeOneWorkMomentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).LikeOneWorkMoment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/LikeOneWorkMoment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).LikeOneWorkMoment(ctx, req.(*LikeOneWorkMomentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_CommentOneWorkMoment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CommentOneWorkMomentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).CommentOneWorkMoment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/CommentOneWorkMoment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).CommentOneWorkMoment(ctx, req.(*CommentOneWorkMomentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_DeleteComment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteCommentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).DeleteComment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/DeleteComment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).DeleteComment(ctx, req.(*DeleteCommentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_GetWorkMomentByID_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetWorkMomentByIDReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).GetWorkMomentByID(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/GetWorkMomentByID", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).GetWorkMomentByID(ctx, req.(*GetWorkMomentByIDReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_ChangeWorkMomentPermission_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ChangeWorkMomentPermissionReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).ChangeWorkMomentPermission(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/ChangeWorkMomentPermission", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).ChangeWorkMomentPermission(ctx, req.(*ChangeWorkMomentPermissionReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_GetUserWorkMoments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUserWorkMomentsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).GetUserWorkMoments(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/GetUserWorkMoments", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).GetUserWorkMoments(ctx, req.(*GetUserWorkMomentsReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_GetUserFriendWorkMoments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUserFriendWorkMomentsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).GetUserFriendWorkMoments(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/GetUserFriendWorkMoments", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).GetUserFriendWorkMoments(ctx, req.(*GetUserFriendWorkMomentsReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _OfficeService_SetUserWorkMomentsLevel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetUserWorkMomentsLevelReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OfficeServiceServer).SetUserWorkMomentsLevel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/office.OfficeService/SetUserWorkMomentsLevel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OfficeServiceServer).SetUserWorkMomentsLevel(ctx, req.(*SetUserWorkMomentsLevelReq)) + } + return interceptor(ctx, in, info, handler) +} + +var _OfficeService_serviceDesc = grpc.ServiceDesc{ + ServiceName: "office.OfficeService", + HandlerType: (*OfficeServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetUserTags", + Handler: _OfficeService_GetUserTags_Handler, + }, + { + MethodName: "CreateTag", + Handler: _OfficeService_CreateTag_Handler, + }, + { + MethodName: "DeleteTag", + Handler: _OfficeService_DeleteTag_Handler, + }, + { + MethodName: "SetTag", + Handler: _OfficeService_SetTag_Handler, + }, + { + MethodName: "SendMsg2Tag", + Handler: _OfficeService_SendMsg2Tag_Handler, + }, + { + MethodName: "GetTagSendLogs", + Handler: _OfficeService_GetTagSendLogs_Handler, + }, + { + MethodName: "GetUserTagByID", + Handler: _OfficeService_GetUserTagByID_Handler, + }, + { + MethodName: "CreateOneWorkMoment", + Handler: _OfficeService_CreateOneWorkMoment_Handler, + }, + { + MethodName: "DeleteOneWorkMoment", + Handler: _OfficeService_DeleteOneWorkMoment_Handler, + }, + { + MethodName: "LikeOneWorkMoment", + Handler: _OfficeService_LikeOneWorkMoment_Handler, + }, + { + MethodName: "CommentOneWorkMoment", + Handler: _OfficeService_CommentOneWorkMoment_Handler, + }, + { + MethodName: "DeleteComment", + Handler: _OfficeService_DeleteComment_Handler, + }, + { + MethodName: "GetWorkMomentByID", + Handler: _OfficeService_GetWorkMomentByID_Handler, + }, + { + MethodName: "ChangeWorkMomentPermission", + Handler: _OfficeService_ChangeWorkMomentPermission_Handler, + }, + { + MethodName: "GetUserWorkMoments", + Handler: _OfficeService_GetUserWorkMoments_Handler, + }, + { + MethodName: "GetUserFriendWorkMoments", + Handler: _OfficeService_GetUserFriendWorkMoments_Handler, + }, + { + MethodName: "SetUserWorkMomentsLevel", + Handler: _OfficeService_SetUserWorkMomentsLevel_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "office/office.proto", +} + +func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_f560032e7c752d4f) } + +var fileDescriptor_office_f560032e7c752d4f = []byte{ + // 1673 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xdf, 0x6f, 0xdc, 0xc4, + 0x13, 0x97, 0xef, 0x72, 0xb9, 0xdc, 0x5c, 0xda, 0x34, 0x9b, 0x5f, 0x57, 0xb7, 0x49, 0xf3, 0x75, + 0xdb, 0xaf, 0x2a, 0x40, 0x09, 0x0a, 0x15, 0x42, 0x20, 0x2a, 0xd4, 0x5c, 0x1b, 0x1d, 0xe4, 0xda, + 0xe0, 0x24, 0x54, 0xf0, 0x40, 0xe4, 0x5e, 0x36, 0xc6, 0xca, 0xc5, 0x76, 0xbd, 0x4e, 0x42, 0x9f, + 0x90, 0x78, 0x86, 0x17, 0x78, 0xe6, 0xaf, 0xe0, 0x6f, 0x40, 0x82, 0x27, 0xc4, 0x03, 0xff, 0x01, + 0xff, 0x03, 0xaf, 0x68, 0xd7, 0xf6, 0xfe, 0xb0, 0xd7, 0x77, 0x87, 0x0b, 0x0f, 0x3c, 0x9d, 0x67, + 0x77, 0x76, 0x76, 0xe6, 0xb3, 0xb3, 0xb3, 0x33, 0x73, 0xb0, 0x10, 0x9c, 0x9c, 0x78, 0x03, 0xbc, + 0x99, 0xfc, 0x6c, 0x84, 0x51, 0x10, 0x07, 0x68, 0x3a, 0xa1, 0xcc, 0xff, 0x3d, 0x0d, 0xb1, 0x7f, + 0xd4, 0xeb, 0x6f, 0x86, 0xa7, 0xee, 0x26, 0x9b, 0xda, 0x24, 0xc7, 0xa7, 0x47, 0x97, 0x64, 0xf3, + 0x92, 0x24, 0xac, 0xd6, 0x03, 0x80, 0xed, 0xe0, 0xec, 0x2c, 0xf0, 0x6d, 0x4c, 0x42, 0xd4, 0x81, + 0x26, 0x8e, 0xa2, 0xed, 0xe0, 0x18, 0x77, 0x8c, 0x75, 0xe3, 0x5e, 0xc3, 0xce, 0x48, 0xb4, 0x0c, + 0xd3, 0x38, 0x8a, 0xfa, 0xc4, 0xed, 0xd4, 0xd6, 0x8d, 0x7b, 0x2d, 0x3b, 0xa5, 0xac, 0xf7, 0xa1, + 0x79, 0xe0, 0xb8, 0x87, 0x04, 0x47, 0x94, 0xe5, 0x9c, 0xe0, 0xa8, 0xd7, 0x65, 0x6b, 0x5b, 0x76, + 0x4a, 0x21, 0x13, 0x66, 0xe8, 0xd7, 0x13, 0xe7, 0x0c, 0xa7, 0x8b, 0x39, 0x6d, 0x3d, 0x87, 0xfa, + 0x81, 0xe3, 0xa2, 0x45, 0x68, 0xc4, 0x8e, 0xcb, 0x57, 0x26, 0x04, 0xd5, 0x26, 0x76, 0x5c, 0x69, + 0x5d, 0x46, 0xa2, 0xd7, 0x13, 0x91, 0xbb, 0x1e, 0x89, 0x3b, 0xf5, 0xf5, 0xfa, 0xbd, 0xf6, 0xd6, + 0xdc, 0x46, 0x8a, 0x40, 0xaa, 0x8d, 0xcd, 0x19, 0xac, 0x0f, 0xe1, 0xea, 0x0e, 0x8e, 0xe9, 0xe0, + 0x81, 0xe3, 0x12, 0x1b, 0xbf, 0x28, 0xd5, 0x74, 0x1d, 0xda, 0x41, 0x88, 0x23, 0x27, 0xf6, 0x02, + 0xbf, 0xd7, 0x4d, 0x37, 0x95, 0x87, 0xac, 0x13, 0x98, 0x53, 0x64, 0x91, 0x10, 0x6d, 0x01, 0x0c, + 0x38, 0x82, 0x4c, 0x60, 0x7b, 0x0b, 0x65, 0xda, 0x08, 0x6c, 0x6d, 0x89, 0x0b, 0xdd, 0x82, 0xa9, + 0xd8, 0x71, 0x49, 0xa7, 0xc6, 0x74, 0x6f, 0x4b, 0xba, 0xdb, 0x6c, 0xc2, 0xfa, 0xda, 0x80, 0xd9, + 0xed, 0x08, 0x3b, 0x31, 0xa6, 0x63, 0xf8, 0x85, 0x8c, 0x85, 0xa1, 0x62, 0x21, 0x8c, 0xa9, 0x29, + 0xc6, 0xac, 0x01, 0x24, 0x5f, 0x1c, 0xa5, 0x96, 0x2d, 0x8d, 0xe4, 0x8d, 0x9d, 0x2a, 0x1a, 0xbb, + 0x0d, 0x57, 0x24, 0x1d, 0xaa, 0x99, 0x6a, 0x7d, 0x0e, 0xb3, 0x5d, 0x3c, 0xc4, 0xdc, 0x90, 0x32, + 0xec, 0xb9, 0x0b, 0xd4, 0x64, 0x17, 0xc8, 0x29, 0x59, 0xd7, 0x2a, 0x29, 0xc9, 0xaf, 0xa8, 0xe4, + 0x6f, 0x06, 0xb4, 0xf6, 0x71, 0x5c, 0x49, 0xc5, 0x0e, 0x34, 0x7d, 0x7c, 0xc9, 0x4e, 0x26, 0x51, + 0x2f, 0x23, 0xd1, 0x06, 0x20, 0xcf, 0x1f, 0x44, 0xd8, 0x21, 0xf8, 0x50, 0x9c, 0xc4, 0x14, 0x3b, + 0x09, 0xcd, 0x0c, 0x7a, 0x0d, 0xae, 0x45, 0xf8, 0xf8, 0x7c, 0x20, 0x73, 0x37, 0x18, 0x77, 0x61, + 0x3c, 0x0f, 0xcc, 0x74, 0x11, 0x98, 0x0f, 0x00, 0x32, 0x93, 0x2a, 0xa2, 0xf2, 0x87, 0x01, 0x57, + 0xf7, 0xb1, 0x7f, 0xdc, 0x27, 0xee, 0x96, 0xe2, 0x86, 0x4c, 0x33, 0x83, 0x69, 0x96, 0x91, 0xf4, + 0x96, 0x1f, 0x66, 0x57, 0xb2, 0xc6, 0xa6, 0x38, 0x8d, 0x6e, 0x42, 0x6b, 0x27, 0x0a, 0xce, 0x43, + 0xc9, 0x13, 0xc5, 0x00, 0x85, 0x9b, 0x60, 0xff, 0x98, 0xfb, 0x60, 0x4a, 0x51, 0x38, 0xe8, 0x17, + 0x8e, 0xf6, 0x86, 0x4e, 0x7c, 0x12, 0x44, 0x67, 0xbd, 0x6e, 0xa7, 0xc1, 0xa2, 0x52, 0x61, 0x9c, + 0xea, 0x35, 0x08, 0xfc, 0x18, 0xfb, 0x71, 0x0a, 0x45, 0x46, 0xe6, 0x81, 0x6a, 0x16, 0x81, 0x7a, + 0x04, 0x73, 0x8a, 0x95, 0x15, 0xd1, 0xfa, 0xde, 0x80, 0xf9, 0x1d, 0x06, 0x38, 0x95, 0xb6, 0x1b, + 0x24, 0xa1, 0xa6, 0x0b, 0xb0, 0xe7, 0xb8, 0x9e, 0xcf, 0x36, 0x4b, 0x25, 0xdd, 0xd9, 0x20, 0x38, + 0xba, 0xc0, 0xd1, 0x91, 0x13, 0x7a, 0x47, 0xa1, 0x13, 0x39, 0x67, 0x64, 0xc3, 0xc6, 0x2f, 0xce, + 0x31, 0x89, 0x05, 0xaf, 0x2d, 0xad, 0x2b, 0xbd, 0xe3, 0xe3, 0xaf, 0x47, 0x00, 0x20, 0x34, 0x52, + 0xe2, 0xa6, 0x31, 0x26, 0x6e, 0xca, 0x98, 0xd6, 0x54, 0x4c, 0x4d, 0x98, 0xa1, 0x27, 0x70, 0xe0, + 0xa5, 0x3e, 0x5f, 0xb7, 0x39, 0x6d, 0xfd, 0x64, 0x00, 0xca, 0xc3, 0x50, 0x31, 0x4a, 0x3e, 0x52, + 0xb0, 0xab, 0xb1, 0x35, 0x77, 0xb5, 0xd8, 0x91, 0x30, 0xf0, 0x09, 0x2e, 0x01, 0xef, 0x3e, 0xb4, + 0x63, 0xa1, 0x4d, 0xfa, 0x5e, 0x20, 0xc9, 0xee, 0x74, 0xca, 0x96, 0xd9, 0xac, 0x01, 0x3b, 0xcd, + 0x34, 0xd2, 0x3f, 0x7c, 0xd9, 0xeb, 0xfe, 0x1b, 0xc1, 0xcb, 0x65, 0x58, 0x29, 0x9b, 0x54, 0xc4, + 0x6a, 0x15, 0xea, 0xb1, 0xe3, 0xa6, 0x20, 0x29, 0x0f, 0x0a, 0x1d, 0xb7, 0x1e, 0xc0, 0xcc, 0xae, + 0x77, 0x8a, 0x2b, 0xbf, 0xd3, 0x8f, 0xe1, 0xda, 0x93, 0x20, 0xf6, 0x4e, 0xbc, 0x01, 0x53, 0xbd, + 0xb2, 0x9c, 0x3f, 0x0d, 0x68, 0x52, 0x0b, 0xa8, 0x17, 0x55, 0x58, 0x4f, 0x7d, 0xf2, 0xc4, 0x19, + 0xe0, 0x43, 0x7b, 0x37, 0x0b, 0xb6, 0x29, 0x49, 0xc1, 0x8e, 0x70, 0x38, 0x7c, 0x99, 0xc4, 0xc8, + 0xec, 0x39, 0x93, 0x86, 0xd0, 0x1d, 0xb8, 0xc2, 0x49, 0x26, 0xbc, 0xc1, 0x78, 0xd4, 0x41, 0x1a, + 0xab, 0x52, 0x37, 0xe7, 0x61, 0x55, 0x0c, 0xc8, 0x77, 0xa2, 0xa9, 0xde, 0x89, 0x35, 0x80, 0x41, + 0xf2, 0x58, 0xd2, 0x5b, 0x31, 0xc3, 0xe2, 0x94, 0x34, 0x62, 0xf5, 0x60, 0x6e, 0x0f, 0x47, 0x67, + 0x1e, 0x21, 0x5e, 0xe0, 0xb3, 0xe0, 0x47, 0xb7, 0x72, 0xe9, 0x87, 0xf4, 0xaa, 0x8b, 0x01, 0xba, + 0x15, 0x23, 0xb8, 0x57, 0x65, 0xa4, 0xd5, 0x85, 0xab, 0xcf, 0x82, 0xe8, 0xb4, 0x1f, 0x50, 0x18, + 0x2b, 0x1f, 0xc5, 0x37, 0x53, 0x00, 0x42, 0x0c, 0xb2, 0x60, 0xf6, 0x92, 0x53, 0x5c, 0x90, 0x32, + 0x56, 0x1a, 0x86, 0xe4, 0x6d, 0xea, 0xe5, 0x27, 0x36, 0xa5, 0x9e, 0x98, 0x84, 0x65, 0x43, 0xc5, + 0xf2, 0x5d, 0x98, 0x1d, 0xa6, 0xde, 0xca, 0x42, 0xd5, 0x34, 0xbb, 0xb2, 0xcb, 0x99, 0x57, 0xab, + 0xc6, 0xdb, 0x0a, 0x2f, 0x0d, 0x71, 0x83, 0xc4, 0xc1, 0x48, 0xa7, 0xa9, 0x86, 0xb8, 0xd4, 0xf1, + 0x6c, 0xce, 0x40, 0x0f, 0x2d, 0xe4, 0x87, 0x92, 0x1d, 0x9a, 0x18, 0x41, 0x8f, 0x01, 0x09, 0x8a, + 0xab, 0xd3, 0x1a, 0xa9, 0x8e, 0x66, 0x05, 0xea, 0xc1, 0x42, 0xa8, 0x1e, 0x3e, 0x13, 0x04, 0x4c, + 0xd0, 0x4a, 0x26, 0x28, 0xe7, 0x1f, 0xb6, 0x6e, 0x0d, 0x7a, 0x1b, 0xc0, 0x89, 0xb9, 0x2a, 0xed, + 0x91, 0xaa, 0x48, 0x9c, 0x39, 0xff, 0x9c, 0x2d, 0xf8, 0xa7, 0x0f, 0xcb, 0x49, 0xb2, 0xf7, 0xd4, + 0xc7, 0x42, 0x0c, 0x0d, 0x7a, 0x5b, 0x00, 0xc2, 0x0b, 0xf2, 0xe1, 0x48, 0x62, 0x95, 0xb8, 0x26, + 0xc8, 0xa4, 0xfb, 0xb0, 0xa2, 0xdd, 0xaf, 0xe2, 0xeb, 0x7b, 0x01, 0xcb, 0x49, 0x1a, 0x58, 0x50, + 0xff, 0x55, 0x1c, 0x7b, 0x7c, 0x04, 0xef, 0xc3, 0x8a, 0x76, 0xdf, 0x8a, 0x66, 0xc4, 0xb0, 0x48, + 0xe3, 0x74, 0xc1, 0x88, 0xb2, 0x0b, 0x6e, 0xc1, 0xec, 0x33, 0xd9, 0xb8, 0x44, 0x7d, 0x65, 0x6c, + 0x02, 0x23, 0x3e, 0x82, 0x25, 0xcd, 0xae, 0x15, 0x4d, 0xf8, 0xd1, 0x80, 0x95, 0xf4, 0xa6, 0xfd, + 0x1d, 0x33, 0x2e, 0x35, 0x66, 0x5c, 0xe6, 0xcc, 0x90, 0x03, 0x7c, 0xbd, 0x18, 0xe0, 0xa5, 0x80, + 0x32, 0x35, 0x32, 0x09, 0x6c, 0x14, 0x21, 0x78, 0x02, 0x1d, 0xbd, 0xd2, 0x15, 0x51, 0xf8, 0xce, + 0x80, 0x6b, 0x89, 0x63, 0x64, 0x51, 0x67, 0x42, 0x57, 0x54, 0xde, 0x9f, 0x5a, 0xfe, 0xfd, 0x31, + 0x61, 0x26, 0x08, 0x15, 0x04, 0x38, 0x3d, 0x41, 0x41, 0xb7, 0x03, 0xf3, 0x39, 0x9d, 0x2a, 0x5a, + 0xf7, 0x25, 0x2c, 0xee, 0xe0, 0x58, 0xc0, 0x94, 0xe5, 0x47, 0x93, 0x18, 0x28, 0x9b, 0x50, 0x1b, + 0x6d, 0x82, 0xc6, 0x55, 0xbf, 0x82, 0x25, 0xcd, 0xce, 0x15, 0x93, 0x26, 0x35, 0xb2, 0xd5, 0x26, + 0x89, 0x6c, 0xd6, 0xef, 0x06, 0xac, 0x6e, 0x7f, 0xe1, 0xf8, 0xae, 0xe4, 0x25, 0x22, 0x70, 0xff, + 0x13, 0x20, 0xa8, 0x8f, 0x52, 0xbd, 0xf0, 0x28, 0x6d, 0xc1, 0xa2, 0xfa, 0xc4, 0x28, 0x85, 0xa5, + 0x76, 0x6e, 0x82, 0x0b, 0x70, 0x00, 0x6b, 0xa3, 0xcc, 0xaa, 0x1e, 0x0c, 0x96, 0xd2, 0x0c, 0x57, + 0xc8, 0x1d, 0xd9, 0x83, 0x19, 0x85, 0x8c, 0x5a, 0x4c, 0xd5, 0x2b, 0x16, 0x53, 0xe3, 0xef, 0xc9, + 0x2f, 0x06, 0x2c, 0xeb, 0xb4, 0xae, 0xe8, 0x66, 0xf7, 0xa1, 0x2d, 0x0e, 0x3f, 0x6b, 0xfa, 0xe8, + 0xfc, 0x4c, 0x66, 0xcb, 0x55, 0x3f, 0xf5, 0x8a, 0xd5, 0x8f, 0xf5, 0x83, 0x01, 0x37, 0x52, 0x5b, + 0x1e, 0x47, 0x1e, 0xf6, 0x8f, 0x27, 0x3c, 0x87, 0xae, 0xa6, 0xf8, 0x7a, 0x65, 0xac, 0x35, 0x17, + 0xfa, 0x57, 0x03, 0x6e, 0x96, 0xeb, 0xf7, 0x5f, 0x44, 0xfc, 0xdb, 0x3a, 0x5c, 0x17, 0x5b, 0xc8, + 0x65, 0x53, 0x9f, 0xb8, 0xe8, 0x4d, 0x58, 0xf0, 0xd5, 0xa1, 0x83, 0x97, 0x61, 0xd6, 0x6e, 0xd5, + 0x4d, 0x15, 0xeb, 0x96, 0x9a, 0xae, 0x6e, 0x79, 0x95, 0xe7, 0x51, 0x79, 0x73, 0x1a, 0xf9, 0x37, + 0x27, 0x1f, 0xcf, 0xa6, 0x47, 0x26, 0x50, 0xcd, 0xd2, 0xca, 0x60, 0xa6, 0xbc, 0x32, 0x68, 0xa9, + 0x95, 0xc1, 0x1b, 0x30, 0x2f, 0xa4, 0x6f, 0xa7, 0x3a, 0x03, 0xe3, 0x29, 0x4e, 0xe4, 0x32, 0xdb, + 0x76, 0x21, 0xb3, 0x1d, 0x82, 0xb9, 0x5f, 0xb8, 0xcc, 0xbb, 0xf8, 0x02, 0x0f, 0xc7, 0x94, 0xf4, + 0x43, 0xca, 0xc3, 0xd0, 0x6e, 0xd8, 0x09, 0x31, 0x81, 0x3f, 0x7f, 0x0c, 0x37, 0x4a, 0x77, 0xab, + 0xe6, 0xcd, 0x5b, 0x3f, 0x03, 0x5c, 0x79, 0xca, 0x38, 0xf6, 0x71, 0x74, 0xe1, 0x0d, 0x30, 0x7a, + 0x00, 0x6d, 0xa9, 0x0d, 0x8d, 0x78, 0xfe, 0xaf, 0xf6, 0xb9, 0xcd, 0x15, 0xed, 0x38, 0x09, 0xd1, + 0x3b, 0xd0, 0xe2, 0x9d, 0x5d, 0xb4, 0xc8, 0xb7, 0x97, 0x1a, 0xce, 0xe6, 0x92, 0x66, 0x34, 0x59, + 0xc9, 0xdb, 0xad, 0x62, 0xa5, 0xdc, 0xe1, 0x15, 0x2b, 0xd5, 0xbe, 0xec, 0x26, 0x4c, 0x27, 0xfd, + 0x48, 0x34, 0x9f, 0x31, 0xf0, 0x96, 0xab, 0x89, 0xf2, 0x43, 0x24, 0xa4, 0x46, 0x4a, 0x7d, 0x39, + 0x61, 0xa4, 0xda, 0x92, 0x14, 0x46, 0xe6, 0x9b, 0x78, 0x3b, 0xac, 0xef, 0x2f, 0x35, 0xa2, 0xd0, + 0x75, 0x09, 0x0f, 0xb5, 0x4f, 0x67, 0x9a, 0x65, 0x53, 0x5c, 0x90, 0xd4, 0xa5, 0x51, 0x04, 0xa9, + 0x2d, 0x22, 0x45, 0x50, 0xbe, 0xb1, 0xf3, 0x09, 0x2c, 0x68, 0x6a, 0x1e, 0xb4, 0xa6, 0x42, 0x9d, + 0xcf, 0x9a, 0xcd, 0x5b, 0x23, 0xe7, 0x13, 0xb9, 0x9a, 0x22, 0x44, 0xc8, 0xd5, 0x57, 0x46, 0x42, + 0x6e, 0x59, 0x05, 0xb3, 0x07, 0xf3, 0x85, 0xba, 0x00, 0xdd, 0xcc, 0x56, 0xe9, 0x0a, 0x15, 0x73, + 0x75, 0xc4, 0x2c, 0x09, 0xd1, 0xa7, 0xb0, 0xa8, 0x4b, 0xb3, 0xd1, 0xad, 0x5c, 0x8d, 0x5e, 0x90, + 0xbb, 0x3e, 0x9a, 0x81, 0x84, 0xa8, 0x9b, 0xfd, 0x11, 0x90, 0xf5, 0x97, 0x3a, 0xaa, 0x79, 0x22, + 0x0f, 0x37, 0xaf, 0x97, 0xcc, 0x24, 0x26, 0x17, 0xf2, 0x4b, 0x61, 0xb2, 0x2e, 0xe9, 0x15, 0x26, + 0xeb, 0x13, 0xd3, 0x53, 0x30, 0xcb, 0x13, 0x2b, 0x74, 0x97, 0xdb, 0x35, 0x2a, 0xa7, 0x34, 0xff, + 0x3f, 0x09, 0x1b, 0x09, 0xd1, 0x3e, 0x6f, 0x28, 0x4a, 0xd1, 0x07, 0xad, 0xe6, 0x7c, 0x52, 0x4d, + 0x01, 0xcc, 0xb5, 0x51, 0xd3, 0x24, 0x44, 0x18, 0x3a, 0x65, 0x2f, 0x34, 0xba, 0x9d, 0x5b, 0xab, + 0xcb, 0x31, 0xcc, 0x3b, 0xe3, 0x99, 0x48, 0x88, 0x9e, 0xc3, 0x4a, 0x49, 0xe4, 0x44, 0x96, 0x14, + 0x1e, 0x4a, 0x02, 0xb9, 0x79, 0x7b, 0x2c, 0x0f, 0x09, 0x1f, 0xce, 0x7f, 0x36, 0xb7, 0x91, 0xfe, + 0x57, 0xfa, 0x5e, 0xf2, 0xf3, 0x7c, 0x9a, 0xfd, 0x11, 0xfa, 0xd6, 0x5f, 0x01, 0x00, 0x00, 0xff, + 0xff, 0x86, 0x7f, 0x4e, 0xa8, 0x4a, 0x1d, 0x00, 0x00, +} From 2a3265ed713accae54592890e462a2a589553862 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 5 May 2022 14:14:30 +0800 Subject: [PATCH 016/143] office --- internal/rpc/office/office.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 0f9f989c0..bb412c170 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -485,7 +485,6 @@ func (s *officeServer) GetWorkMomentByID(_ context.Context, req *pbOffice.GetWor workMoment, err := db.DB.GetWorkMomentByID(req.WorkMomentID) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetWorkMomentByID failed", err.Error()) - resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} return resp, nil } canSee := isUserCanSeeWorkMoment(req.OpUserID, *workMoment) From bf8e35e16857b5fd8237c5b705466ede13ae2259 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 5 May 2022 16:13:45 +0800 Subject: [PATCH 017/143] log change --- internal/msg_gateway/gate/rpc_server.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/msg_gateway/gate/rpc_server.go b/internal/msg_gateway/gate/rpc_server.go index a088303cb..9e738d1a0 100644 --- a/internal/msg_gateway/gate/rpc_server.go +++ b/internal/msg_gateway/gate/rpc_server.go @@ -56,7 +56,7 @@ func (r *RPCServer) run() { } } func (r *RPCServer) OnlinePushMsg(_ context.Context, in *pbRelay.OnlinePushMsgReq) (*pbRelay.OnlinePushMsgResp, error) { - log.InfoByKv("PushMsgToUser is arriving", in.OperationID, "args", in.String()) + log.NewInfo(in.OperationID, "PushMsgToUser is arriving", in.String()) var resp []*pbRelay.SingleMsgToUser msgBytes, _ := proto.Marshal(in.MsgData) mReply := Resp{ @@ -93,7 +93,7 @@ func (r *RPCServer) OnlinePushMsg(_ context.Context, in *pbRelay.OnlinePushMsgRe } } if !tag { - log.NewError(in.OperationID, "push err ,no matched ws conn not in map", in.String()) + log.NewDebug(in.OperationID, "push err ,no matched ws conn not in map", in.String()) } return &pbRelay.OnlinePushMsgResp{ Resp: resp, @@ -130,12 +130,12 @@ func (r *RPCServer) GetUsersOnlineStatus(_ context.Context, req *pbRelay.GetUser func sendMsgToUser(conn *UserConn, bMsg []byte, in *pbRelay.OnlinePushMsgReq, RecvPlatForm, RecvID string) (ResultCode int64) { err := ws.writeMsg(conn, websocket.BinaryMessage, bMsg) if err != nil { - log.ErrorByKv("PushMsgToUser is failed By Ws", "", "Addr", conn.RemoteAddr().String(), + log.NewError(in.OperationID, "PushMsgToUser is failed By Ws", "Addr", conn.RemoteAddr().String(), "error", err, "senderPlatform", constant.PlatformIDToName(in.MsgData.SenderPlatformID), "recvPlatform", RecvPlatForm, "args", in.String(), "recvID", RecvID) ResultCode = -2 return ResultCode } else { - log.InfoByKv("PushMsgToUser is success By Ws", in.OperationID, "args", in.String(), "recvPlatForm", RecvPlatForm, "recvID", RecvID) + log.NewDebug(in.OperationID, "PushMsgToUser is success By Ws", "args", in.String(), "recvPlatForm", RecvPlatForm, "recvID", RecvID) ResultCode = 0 return ResultCode } From e26f9c58fa469f467a222660712579ec4302d83f Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 5 May 2022 19:22:47 +0800 Subject: [PATCH 018/143] office --- pkg/base_info/work_moments_struct.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/base_info/work_moments_struct.go b/pkg/base_info/work_moments_struct.go index 503bfc489..479ed4339 100644 --- a/pkg/base_info/work_moments_struct.go +++ b/pkg/base_info/work_moments_struct.go @@ -8,6 +8,7 @@ type CreateOneWorkMomentReq struct { type CreateOneWorkMomentResp struct { CommResp + Data struct{} `json:"data"` } type DeleteOneWorkMomentReq struct { @@ -16,6 +17,7 @@ type DeleteOneWorkMomentReq struct { type DeleteOneWorkMomentResp struct { CommResp + Data struct{} `json:"data"` } type LikeOneWorkMomentReq struct { @@ -24,6 +26,7 @@ type LikeOneWorkMomentReq struct { type LikeOneWorkMomentResp struct { CommResp + Data struct{} `json:"data"` } type CommentOneWorkMomentReq struct { @@ -32,6 +35,7 @@ type CommentOneWorkMomentReq struct { type CommentOneWorkMomentResp struct { CommResp + Data struct{} `json:"data"` } type DeleteCommentReq struct { @@ -40,6 +44,7 @@ type DeleteCommentReq struct { type DeleteCommentResp struct { CommResp + Data struct{} `json:"data"` } type WorkMomentsUserCommonReq struct { @@ -120,4 +125,5 @@ type SetUserWorkMomentsLevelReq struct { type SetUserWorkMomentsLevelResp struct { CommResp + Data struct{} `json:"data"` } From e22b7f36cef1f8e2fb1c1cecb97131b9cbc56e94 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 6 May 2022 11:07:32 +0800 Subject: [PATCH 019/143] fix bug --- internal/rpc/msg/send_msg.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index b38345c56..77989b48b 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -272,7 +272,9 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S // log.Debug(pb.OperationID, "split userID ", list) groupPB := pbChat.SendMsgReq{Token: pb.Token, OperationID: pb.OperationID, MsgData: &sdk_ws.MsgData{OfflinePushInfo: &sdk_ws.OfflinePushInfo{}}} *groupPB.MsgData = *pb.MsgData - *groupPB.MsgData.OfflinePushInfo = *pb.MsgData.OfflinePushInfo + if pb.MsgData.OfflinePushInfo != nil { + *groupPB.MsgData.OfflinePushInfo = *pb.MsgData.OfflinePushInfo + } msgToMQGroup := pbChat.MsgDataToMQ{Token: groupPB.Token, OperationID: groupPB.OperationID, MsgData: groupPB.MsgData} for _, v := range list { groupPB.MsgData.RecvID = v @@ -300,6 +302,9 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S groupPB := pbChat.SendMsgReq{Token: pb.Token, OperationID: pb.OperationID, MsgData: &sdk_ws.MsgData{OfflinePushInfo: &sdk_ws.OfflinePushInfo{}}} *groupPB.MsgData = *pb.MsgData *groupPB.MsgData.OfflinePushInfo = *pb.MsgData.OfflinePushInfo + if pb.MsgData.OfflinePushInfo != nil { + *groupPB.MsgData.OfflinePushInfo = *pb.MsgData.OfflinePushInfo + } msgToMQGroup := pbChat.MsgDataToMQ{Token: groupPB.Token, OperationID: groupPB.OperationID, MsgData: groupPB.MsgData} for _, v := range list { groupPB.MsgData.RecvID = v From 243f5fcda44e90ee00e35b9c554a83ac180ca3e6 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 6 May 2022 11:19:16 +0800 Subject: [PATCH 020/143] fix bug --- internal/rpc/msg/send_msg.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 77989b48b..013a32bd3 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -301,7 +301,6 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S // log.Debug(pb.OperationID, "split userID ", list) groupPB := pbChat.SendMsgReq{Token: pb.Token, OperationID: pb.OperationID, MsgData: &sdk_ws.MsgData{OfflinePushInfo: &sdk_ws.OfflinePushInfo{}}} *groupPB.MsgData = *pb.MsgData - *groupPB.MsgData.OfflinePushInfo = *pb.MsgData.OfflinePushInfo if pb.MsgData.OfflinePushInfo != nil { *groupPB.MsgData.OfflinePushInfo = *pb.MsgData.OfflinePushInfo } From 3c68ecb7f15fc73245f3f636d21e1c28a9a772c2 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 6 May 2022 15:58:50 +0800 Subject: [PATCH 021/143] office --- internal/api/office/work_moments.go | 54 ++++++++++++------- internal/rpc/office/office.go | 16 +++++- pkg/base_info/work_moments_struct.go | 21 ++++---- pkg/common/db/model.go | 78 +++++++++++++++++++++++----- pkg/common/db/mongoModel.go | 32 +++++------- 5 files changed, 139 insertions(+), 62 deletions(-) diff --git a/internal/api/office/work_moments.go b/internal/api/office/work_moments.go index 2e3304836..3a5e03a17 100644 --- a/internal/api/office/work_moments.go +++ b/internal/api/office/work_moments.go @@ -290,16 +290,17 @@ func GetUserWorkMoments(c *gin.Context) { //} for _, v := range respPb.WorkMoments { workMoment := apiStruct.WorkMoment{ - WorkMomentID: v.WorkMomentID, - UserID: v.UserID, - Content: v.Content, - FaceURL: v.FaceURL, - UserName: v.UserName, - CreateTime: v.CreateTime, - Comments: make([]*apiStruct.Comment, len(v.Comments)), - LikeUserList: make([]*apiStruct.WorkMomentUser, len(v.LikeUserList)), - AtUserList: make([]*apiStruct.WorkMomentUser, len(v.AtUserList)), - Permission: v.Permission, + WorkMomentID: v.WorkMomentID, + UserID: v.UserID, + Content: v.Content, + FaceURL: v.FaceURL, + UserName: v.UserName, + CreateTime: v.CreateTime, + Comments: make([]*apiStruct.Comment, len(v.Comments)), + LikeUserList: make([]*apiStruct.WorkMomentUser, len(v.LikeUserList)), + AtUserList: make([]*apiStruct.WorkMomentUser, len(v.AtUserList)), + PermissionUserList: make([]*apiStruct.WorkMomentUser, len(v.PermissionUserList)), + Permission: v.Permission, } for i, comment := range v.Comments { workMoment.Comments[i] = &apiStruct.Comment{ @@ -324,6 +325,12 @@ func GetUserWorkMoments(c *gin.Context) { UserName: atUser.UserName, } } + for i, permissionUser := range v.PermissionUserList { + workMoment.PermissionUserList[i] = &apiStruct.WorkMomentUser{ + UserID: permissionUser.UserID, + UserName: permissionUser.UserName, + } + } resp.Data.WorkMoments = append(resp.Data.WorkMoments, &workMoment) } resp.Data.ShowNumber = respPb.Pagination.ShowNumber @@ -374,16 +381,17 @@ func GetUserFriendWorkMoments(c *gin.Context) { resp.Data.WorkMoments = []*apiStruct.WorkMoment{} for _, v := range respPb.WorkMoments { workMoment := apiStruct.WorkMoment{ - WorkMomentID: v.WorkMomentID, - UserID: v.UserID, - Content: v.Content, - FaceURL: v.FaceURL, - UserName: v.UserName, - CreateTime: v.CreateTime, - Comments: make([]*apiStruct.Comment, len(v.Comments)), - LikeUserList: make([]*apiStruct.WorkMomentUser, len(v.LikeUserList)), - AtUserList: make([]*apiStruct.WorkMomentUser, len(v.AtUserList)), - Permission: v.Permission, + WorkMomentID: v.WorkMomentID, + UserID: v.UserID, + Content: v.Content, + FaceURL: v.FaceURL, + UserName: v.UserName, + CreateTime: v.CreateTime, + Comments: make([]*apiStruct.Comment, len(v.Comments)), + LikeUserList: make([]*apiStruct.WorkMomentUser, len(v.LikeUserList)), + AtUserList: make([]*apiStruct.WorkMomentUser, len(v.AtUserList)), + PermissionUserList: make([]*apiStruct.WorkMomentUser, len(v.PermissionUserList)), + Permission: v.Permission, } for i, comment := range v.Comments { workMoment.Comments[i] = &apiStruct.Comment{ @@ -408,6 +416,12 @@ func GetUserFriendWorkMoments(c *gin.Context) { UserName: atUser.UserName, } } + for i, permissionUser := range v.PermissionUserList { + workMoment.PermissionUserList[i] = &apiStruct.WorkMomentUser{ + UserID: permissionUser.UserID, + UserName: permissionUser.UserName, + } + } resp.Data.WorkMoments = append(resp.Data.WorkMoments, &workMoment) } resp.Data.ShowNumber = respPb.Pagination.ShowNumber diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index bb412c170..41b1cfa59 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -271,8 +271,9 @@ func (s *officeServer) CreateOneWorkMoment(_ context.Context, req *pbOffice.Crea log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp = &pbOffice.CreateOneWorkMomentResp{CommonResp: &pbOffice.CommonResp{}} workMoment := db.WorkMoment{ - Comments: []*db.Comment{}, - LikeUserList: []*db.LikeUser{}, + Comments: []*db.Comment{}, + LikeUserList: []*db.WorkMomentUser{}, + PermissionUserList: []*db.WorkMomentUser{}, } createUser, err := imdb.GetUserByUserID(req.WorkMoment.UserID) if err != nil { @@ -286,6 +287,17 @@ func (s *officeServer) CreateOneWorkMoment(_ context.Context, req *pbOffice.Crea workMoment.UserName = createUser.Nickname workMoment.FaceURL = createUser.FaceURL workMoment.PermissionUserIDList = s.getPermissionUserIDList(req.OperationID, req.WorkMoment.PermissionGroupList, req.WorkMoment.PermissionUserList) + for _, userID := range workMoment.PermissionUserIDList { + userName, err := imdb.GetUserNameByUserID(userID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserNameByUserID failed", err.Error()) + continue + } + workMoment.PermissionUserList = append(workMoment.PermissionUserList, &db.WorkMomentUser{ + UserID: userID, + UserName: userName, + }) + } log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "workMoment to create", workMoment) err = db.DB.CreateOneWorkMoment(&workMoment) if err != nil { diff --git a/pkg/base_info/work_moments_struct.go b/pkg/base_info/work_moments_struct.go index 479ed4339..34f2df8bd 100644 --- a/pkg/base_info/work_moments_struct.go +++ b/pkg/base_info/work_moments_struct.go @@ -58,16 +58,17 @@ type GetWorkMomentByIDReq struct { } type WorkMoment struct { - WorkMomentID string `json:"workMomentID"` - UserID string `json:"userID"` - Content string `json:"content"` - LikeUserList []*WorkMomentUser `json:"likeUsers"` - Comments []*Comment `json:"comments"` - FaceURL string `json:"faceURL"` - UserName string `json:"userName"` - AtUserList []*WorkMomentUser `json:"atUsers"` - CreateTime int32 `json:"createTime"` - Permission int32 `json:"permission"` + WorkMomentID string `json:"workMomentID"` + UserID string `json:"userID"` + Content string `json:"content"` + LikeUserList []*WorkMomentUser `json:"likeUsers"` + Comments []*Comment `json:"comments"` + FaceURL string `json:"faceURL"` + UserName string `json:"userName"` + AtUserList []*WorkMomentUser `json:"atUsers"` + PermissionUserList []*WorkMomentUser `json:"permissionUsers"` + CreateTime int32 `json:"createTime"` + Permission int32 `json:"permission"` } type WorkMomentUser struct { diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index e50d7dc11..d45d87a9d 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -3,6 +3,7 @@ package db import ( "Open_IM/pkg/common/config" "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/x/bsonx" //"Open_IM/pkg/common/log" "Open_IM/pkg/utils" @@ -73,12 +74,25 @@ func init() { cSendLogModels := []mongo.IndexModel{ { - Keys: bson.M{"user_id": -1}, + Keys: bsonx.Doc{ + { + Key: "send_id", + }, + }, + Options: options.Index().SetUnique(true), + }, + { + Keys: bsonx.Doc{ + { + Key: "send_time", + Value: bsonx.Int32(-1), + }, + }, }, } result, err := dataBase.Collection(cSendLog).Indexes().CreateMany(context.Background(), cSendLogModels, opts) if err != nil { - //fmt.Println("mongodb create cSendLogModels failed", result, err.Error()) + fmt.Println("mongodb create cSendLogModels failed", result, err.Error()) } cChatModels := []mongo.IndexModel{ @@ -93,28 +107,68 @@ func init() { cWorkMomentModels := []mongo.IndexModel{ { - Keys: bson.M{"work_moment_id": -1}, + Keys: bsonx.Doc{ + { + Key: "create_time", + Value: bsonx.Int32(-1), + }, + }, }, { - Keys: bson.M{"user_id": -1}, + Keys: bsonx.Doc{ + { + Key: "work_moment_id", + }, + }, + Options: options.Index().SetUnique(true), + }, + } + cWorkMomentModel2 := []mongo.IndexModel{ + { + Keys: bsonx.Doc{ + { + Key: "work_moment_id", + }, + }, + Options: options.Index().SetUnique(true), }, } result, err = dataBase.Collection(cWorkMoment).Indexes().CreateMany(context.Background(), cWorkMomentModels, opts) if err != nil { - //fmt.Println("mongodb create cWorkMomentModels failed", result, err.Error()) + fmt.Println("mongodb create cWorkMomentModels failed", result, err.Error()) + } + result, err = dataBase.Collection(cWorkMoment).Indexes().CreateMany(context.Background(), cWorkMomentModel2, opts) + if err != nil { + fmt.Println("mongodb create cWorkMomentModels failed", result, err.Error()) } - cTagModels := []mongo.IndexModel{ + cTagModel1 := []mongo.IndexModel{ { - Keys: bson.M{"tag_id": -1}, - }, - { - Keys: bson.M{"user_id": -1}, + Keys: bsonx.Doc{ + { + Key: "tag_id", + }, + }, + Options: options.Index().SetUnique(true), }, } - result, err = dataBase.Collection(cTag).Indexes().CreateMany(context.Background(), cTagModels, opts) + cTagModel2 := []mongo.IndexModel{ + { + Keys: bsonx.Doc{ + { + Key: "user_id", + }, + }, + Options: options.Index().SetUnique(true), + }, + } + result, err = dataBase.Collection(cTag).Indexes().CreateMany(context.Background(), cTagModel1, opts) if err != nil { - //fmt.Println("mongodb create cTagModels failed", result, err.Error()) + fmt.Println("mongodb create cTagModel1 failed", result, err.Error()) + } + result, err = dataBase.Collection(cTag).Indexes().CreateMany(context.Background(), cTagModel2, opts) + if err != nil { + fmt.Println("mongodb create cTagModel2 failed", result, err.Error()) } DB.mongoClient = mongoClient diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 2423280e6..08d605113 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -666,25 +666,21 @@ func (d *DataBases) GetTagSendLogs(userID string, showNumber, pageNumber int32) } type WorkMoment struct { - WorkMomentID string `bson:"work_moment_id"` - UserID string `bson:"user_id"` - UserName string `bson:"user_name"` - FaceURL string `bson:"face_url"` - Content string `bson:"content"` - LikeUserList []*LikeUser `bson:"like_user_list"` - AtUserList []*AtUser `bson:"at_user_list"` - Comments []*Comment `bson:"comments"` - PermissionUserIDList []string `bson:"permission_user_id_list"` - Permission int32 `bson:"permission"` - CreateTime int32 `bson:"create_time"` + WorkMomentID string `bson:"work_moment_id"` + UserID string `bson:"user_id"` + UserName string `bson:"user_name"` + FaceURL string `bson:"face_url"` + Content string `bson:"content"` + LikeUserList []*WorkMomentUser `bson:"like_user_list"` + AtUserList []*WorkMomentUser `bson:"at_user_list"` + PermissionUserList []*WorkMomentUser `bson:"permission_user_list"` + Comments []*Comment `bson:"comments"` + PermissionUserIDList []string `bson:"permission_user_id_list"` + Permission int32 `bson:"permission"` + CreateTime int32 `bson:"create_time"` } -type AtUser struct { - UserID string `bson:"user_id"` - UserName string `bson:"user_name"` -} - -type LikeUser struct { +type WorkMomentUser struct { UserID string `bson:"user_id"` UserName string `bson:"user_name"` } @@ -749,7 +745,7 @@ func (d *DataBases) LikeOneWorkMoment(likeUserID, userName, workMomentID string) } } if !isAlreadyLike { - workMoment.LikeUserList = append(workMoment.LikeUserList, &LikeUser{UserID: likeUserID, UserName: userName}) + workMoment.LikeUserList = append(workMoment.LikeUserList, &WorkMomentUser{UserID: likeUserID, UserName: userName}) } log.NewDebug("", utils.GetSelfFuncName(), workMoment) ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) From 2cf070a26cd610d021142de588104cea124154a2 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 6 May 2022 16:38:29 +0800 Subject: [PATCH 022/143] office --- internal/api/office/work_moments.go | 3 +- internal/rpc/office/office.go | 11 -- pkg/common/db/model.go | 213 ++++++++++++++++++---------- 3 files changed, 138 insertions(+), 89 deletions(-) diff --git a/internal/api/office/work_moments.go b/internal/api/office/work_moments.go index 3a5e03a17..46d5eb9dd 100644 --- a/internal/api/office/work_moments.go +++ b/internal/api/office/work_moments.go @@ -239,7 +239,8 @@ func GetWorkMomentByID(c *gin.Context) { if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - resp.Data.WorkMoment = &apiStruct.WorkMoment{LikeUserList: []*apiStruct.WorkMomentUser{}, Comments: []*apiStruct.Comment{}, AtUserList: []*apiStruct.WorkMomentUser{}} + resp.Data.WorkMoment = &apiStruct.WorkMoment{LikeUserList: []*apiStruct.WorkMomentUser{}, Comments: []*apiStruct.Comment{}, + AtUserList: []*apiStruct.WorkMomentUser{}, PermissionUserList: []*apiStruct.WorkMomentUser{}} if err := utils.CopyStructFields(&resp.Data.WorkMoment, respPb.WorkMoment); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 41b1cfa59..c51c5d37b 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -287,17 +287,6 @@ func (s *officeServer) CreateOneWorkMoment(_ context.Context, req *pbOffice.Crea workMoment.UserName = createUser.Nickname workMoment.FaceURL = createUser.FaceURL workMoment.PermissionUserIDList = s.getPermissionUserIDList(req.OperationID, req.WorkMoment.PermissionGroupList, req.WorkMoment.PermissionUserList) - for _, userID := range workMoment.PermissionUserIDList { - userName, err := imdb.GetUserNameByUserID(userID) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserNameByUserID failed", err.Error()) - continue - } - workMoment.PermissionUserList = append(workMoment.PermissionUserList, &db.WorkMomentUser{ - UserID: userID, - UserName: userName, - }) - } log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "workMoment to create", workMoment) err = db.DB.CreateOneWorkMoment(&workMoment) if err != nil { diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index d45d87a9d..0aae8cebd 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -3,8 +3,6 @@ package db import ( "Open_IM/pkg/common/config" "go.mongodb.org/mongo-driver/bson" - "go.mongodb.org/mongo-driver/x/bsonx" - //"Open_IM/pkg/common/log" "Open_IM/pkg/utils" "fmt" @@ -72,104 +70,165 @@ func init() { opts := options.CreateIndexes().SetMaxTime(10 * time.Second) dataBase := mongoClient.Database(config.Config.Mongo.DBDatabase) - cSendLogModels := []mongo.IndexModel{ - { - Keys: bsonx.Doc{ - { - Key: "send_id", - }, - }, - Options: options.Index().SetUnique(true), + //cSendLogModels := []mongo.IndexModel{ + // { + // Keys: bsonx.Doc{ + // { + // Key: "send_id", + // }, + // }, + // Options: options.Index().SetUnique(true), + // }, + // { + // Keys: bsonx.Doc{ + // { + // Key: "send_time", + // Value: bsonx.Int32(-1), + // }, + // }, + // }, + //} + //result, err := dataBase.Collection(cSendLog).Indexes().CreateMany(context.Background(), cSendLogModels, opts) + //if err != nil { + // fmt.Println("mongodb create cSendLogModels failed", result, err.Error()) + //} + + result, err := dataBase.Collection(cSendLog).Indexes().CreateOne(context.Background(), mongo.IndexModel{ + Keys: bson.D{ + {Key: "send_id"}, + {Key: "send_time", Value: -1}, }, - { - Keys: bsonx.Doc{ - { - Key: "send_time", - Value: bsonx.Int32(-1), - }, - }, - }, - } - result, err := dataBase.Collection(cSendLog).Indexes().CreateMany(context.Background(), cSendLogModels, opts) + }, opts) if err != nil { - fmt.Println("mongodb create cSendLogModels failed", result, err.Error()) + fmt.Println("mongodb create cSendLog index failed", result, err.Error()) } cChatModels := []mongo.IndexModel{ { - Keys: bson.M{"uid": -1}, + Keys: bson.M{"uid": -1}, + Options: options.Index().SetUnique(true), }, } - result, err = dataBase.Collection(cChat).Indexes().CreateMany(context.Background(), cChatModels, opts) + _, err = dataBase.Collection(cChat).Indexes().CreateMany(context.Background(), cChatModels, opts) if err != nil { fmt.Println("mongodb create cChatModels failed", result, err.Error()) } - cWorkMomentModels := []mongo.IndexModel{ - { - Keys: bsonx.Doc{ - { - Key: "create_time", - Value: bsonx.Int32(-1), - }, - }, + // + //cWorkMomentModels := []mongo.IndexModel{ + // { + // Keys: bsonx.Doc{ + // { + // Key: "create_time", + // Value: bsonx.Int32(-1), + // }, + // }, + // }, + // { + // Keys: bsonx.Doc{ + // { + // Key: "work_moment_id", + // }, + // }, + // Options: options.Index().SetUnique(true), + // }, + //} + //cWorkMomentModel2 := []mongo.IndexModel{ + // { + // Keys: bsonx.Doc{ + // { + // Key: "work_moment_id", + // }, + // }, + // Options: options.Index().SetUnique(true), + // }, + //} + //result, err = dataBase.Collection(cWorkMoment).Indexes().CreateMany(context.Background(), cWorkMomentModels, opts) + //if err != nil { + // fmt.Println("mongodb create cWorkMomentModels failed", result, err.Error()) + //} + //result, err = dataBase.Collection(cWorkMoment).Indexes().CreateMany(context.Background(), cWorkMomentModel2, opts) + //if err != nil { + // fmt.Println("mongodb create cWorkMomentModels failed", result, err.Error()) + //} + result, err = dataBase.Collection(cWorkMoment).Indexes().CreateOne(context.Background(), mongo.IndexModel{ + Keys: bson.D{ + {Key: "create_time", Value: -1}, + {Key: "work_moment_id"}, }, - { - Keys: bsonx.Doc{ - { - Key: "work_moment_id", - }, - }, - Options: options.Index().SetUnique(true), - }, - } - cWorkMomentModel2 := []mongo.IndexModel{ - { - Keys: bsonx.Doc{ - { - Key: "work_moment_id", - }, - }, - Options: options.Index().SetUnique(true), - }, - } - result, err = dataBase.Collection(cWorkMoment).Indexes().CreateMany(context.Background(), cWorkMomentModels, opts) + }, opts) if err != nil { - fmt.Println("mongodb create cWorkMomentModels failed", result, err.Error()) - } - result, err = dataBase.Collection(cWorkMoment).Indexes().CreateMany(context.Background(), cWorkMomentModel2, opts) - if err != nil { - fmt.Println("mongodb create cWorkMomentModels failed", result, err.Error()) + fmt.Println("mongodb create cWorkMoment index failed", result, err.Error()) } - cTagModel1 := []mongo.IndexModel{ - { - Keys: bsonx.Doc{ - { - Key: "tag_id", - }, - }, - Options: options.Index().SetUnique(true), + _, err = dataBase.Collection(cWorkMoment).Indexes().CreateOne(context.Background(), mongo.IndexModel{ + Keys: bson.D{ + {Key: "work_moment_id"}, }, + Options: options.Index().SetUnique(true), + }, opts) + if err != nil { + fmt.Println("mongodb create cWorkMoment index failed", err.Error()) } - cTagModel2 := []mongo.IndexModel{ - { - Keys: bsonx.Doc{ - { - Key: "user_id", - }, - }, - Options: options.Index().SetUnique(true), + + _, err = dataBase.Collection(cWorkMoment).Indexes().CreateOne(context.Background(), mongo.IndexModel{ + Keys: bson.D{ + {Key: "user_id"}, + {Key: "create_time", Value: -1}, }, - } - result, err = dataBase.Collection(cTag).Indexes().CreateMany(context.Background(), cTagModel1, opts) + }, opts) if err != nil { - fmt.Println("mongodb create cTagModel1 failed", result, err.Error()) + fmt.Println("mongodb create cWorkMoment index failed", err.Error()) } - result, err = dataBase.Collection(cTag).Indexes().CreateMany(context.Background(), cTagModel2, opts) + + //cTagModel1 := []mongo.IndexModel{ + // { + // Keys: bsonx.Doc{ + // { + // Key: "tag_id", + // }, + // }, + // Options: options.Index().SetUnique(true), + // }, + //} + //cTagModel2 := []mongo.IndexModel{ + // { + // Keys: bsonx.Doc{ + // { + // Key: "user_id", + // }, + // }, + // Options: options.Index().SetUnique(true), + // }, + //} + //result, err = dataBase.Collection(cTag).Indexes().CreateMany(context.Background(), cTagModel1, opts) + //if err != nil { + // fmt.Println("mongodb create cTagModel1 failed", result, err.Error()) + //} + //result, err = dataBase.Collection(cTag).Indexes().CreateMany(context.Background(), cTagModel2, opts) + //if err != nil { + // fmt.Println("mongodb create cTagModel2 failed", result, err.Error()) + //} + result, err = dataBase.Collection(cTag).Indexes().CreateOne(context.Background(), mongo.IndexModel{ + Keys: bson.D{ + {Key: "user_id"}, + {Key: "create_time", Value: -1}, + }, + }, opts) if err != nil { - fmt.Println("mongodb create cTagModel2 failed", result, err.Error()) + fmt.Println("mongodb create cSendLog index failed", err.Error()) } + + _, err = dataBase.Collection(cTag).Indexes().CreateOne(context.Background(), mongo.IndexModel{ + Keys: bson.D{ + {Key: "tag_id"}, + }, + Options: options.Index().SetUnique(true), + }) + if err != nil { + fmt.Println("mongodb create cSendLog index failed", result, err.Error()) + } + DB.mongoClient = mongoClient // redis pool init From f0ed6973c89bf325787dd021e9345cc1995977b9 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 6 May 2022 16:50:19 +0800 Subject: [PATCH 023/143] office --- pkg/common/db/model.go | 57 ++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index 0aae8cebd..c92b785eb 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -3,6 +3,8 @@ package db import ( "Open_IM/pkg/common/config" "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/x/bsonx" + //"Open_IM/pkg/common/log" "Open_IM/pkg/utils" "fmt" @@ -70,38 +72,33 @@ func init() { opts := options.CreateIndexes().SetMaxTime(10 * time.Second) dataBase := mongoClient.Database(config.Config.Mongo.DBDatabase) - //cSendLogModels := []mongo.IndexModel{ - // { - // Keys: bsonx.Doc{ - // { - // Key: "send_id", - // }, - // }, - // Options: options.Index().SetUnique(true), - // }, - // { - // Keys: bsonx.Doc{ - // { - // Key: "send_time", - // Value: bsonx.Int32(-1), - // }, - // }, - // }, - //} - //result, err := dataBase.Collection(cSendLog).Indexes().CreateMany(context.Background(), cSendLogModels, opts) - //if err != nil { - // fmt.Println("mongodb create cSendLogModels failed", result, err.Error()) - //} - - result, err := dataBase.Collection(cSendLog).Indexes().CreateOne(context.Background(), mongo.IndexModel{ - Keys: bson.D{ - {Key: "send_id"}, - {Key: "send_time", Value: -1}, + cSendLogModels := []mongo.IndexModel{ + { + Keys: bsonx.Doc{ + { + Key: "send_id", + }, + { + Key: "send_time", + Value: bsonx.Int32(-1), + }, + }, }, - }, opts) - if err != nil { - fmt.Println("mongodb create cSendLog index failed", result, err.Error()) } + result, err := dataBase.Collection(cSendLog).Indexes().CreateMany(context.Background(), cSendLogModels, opts) + if err != nil { + fmt.Println("mongodb create cSendLogModels failed", result, err.Error()) + } + + //result, err := dataBase.Collection(cSendLog).Indexes().CreateOne(context.Background(), mongo.IndexModel{ + // Keys: bson.D{ + // {Key: "send_id"}, + // {Key: "send_time", Value: -1}, + // }, + //}, opts) + //if err != nil { + // fmt.Println("mongodb create cSendLog index failed", result, err.Error()) + //} cChatModels := []mongo.IndexModel{ { From 131746f94e6301c67e202d6878f40640f7c15c1b Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 6 May 2022 16:51:34 +0800 Subject: [PATCH 024/143] office --- pkg/common/db/model.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index c92b785eb..35c7782b2 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -148,7 +148,7 @@ func init() { //if err != nil { // fmt.Println("mongodb create cWorkMomentModels failed", result, err.Error()) //} - result, err = dataBase.Collection(cWorkMoment).Indexes().CreateOne(context.Background(), mongo.IndexModel{ + _, err = dataBase.Collection(cWorkMoment).Indexes().CreateOne(context.Background(), mongo.IndexModel{ Keys: bson.D{ {Key: "create_time", Value: -1}, {Key: "work_moment_id"}, From 99f6752590e99dfd3472d281fdb5912c799587e3 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 6 May 2022 16:51:59 +0800 Subject: [PATCH 025/143] office --- pkg/common/db/model.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index 35c7782b2..364395639 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -206,7 +206,7 @@ func init() { //if err != nil { // fmt.Println("mongodb create cTagModel2 failed", result, err.Error()) //} - result, err = dataBase.Collection(cTag).Indexes().CreateOne(context.Background(), mongo.IndexModel{ + _, err = dataBase.Collection(cTag).Indexes().CreateOne(context.Background(), mongo.IndexModel{ Keys: bson.D{ {Key: "user_id"}, {Key: "create_time", Value: -1}, From 1923d0b80955785ab987bab0f9e4c9fcaa08d6e8 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 6 May 2022 17:05:59 +0800 Subject: [PATCH 026/143] office --- pkg/common/db/model.go | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index 364395639..658220f78 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -3,8 +3,6 @@ package db import ( "Open_IM/pkg/common/config" "go.mongodb.org/mongo-driver/bson" - "go.mongodb.org/mongo-driver/x/bsonx" - //"Open_IM/pkg/common/log" "Open_IM/pkg/utils" "fmt" @@ -74,15 +72,7 @@ func init() { cSendLogModels := []mongo.IndexModel{ { - Keys: bsonx.Doc{ - { - Key: "send_id", - }, - { - Key: "send_time", - Value: bsonx.Int32(-1), - }, - }, + Keys: bson.M{"send_id": -1, "send_time": -1}, }, } result, err := dataBase.Collection(cSendLog).Indexes().CreateMany(context.Background(), cSendLogModels, opts) From efd2ae59f569b4420eba6f482532abbfe7d4fae1 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 6 May 2022 17:23:37 +0800 Subject: [PATCH 027/143] office --- pkg/common/db/model.go | 136 ++++++++++++++++------------------------- 1 file changed, 52 insertions(+), 84 deletions(-) diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index 658220f78..7991451a3 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -3,6 +3,9 @@ package db import ( "Open_IM/pkg/common/config" "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/x/bsonx" + "strings" + //"Open_IM/pkg/common/log" "Open_IM/pkg/utils" "fmt" @@ -69,27 +72,23 @@ func init() { // mongodb create index opts := options.CreateIndexes().SetMaxTime(10 * time.Second) dataBase := mongoClient.Database(config.Config.Mongo.DBDatabase) - - cSendLogModels := []mongo.IndexModel{ - { - Keys: bson.M{"send_id": -1, "send_time": -1}, - }, - } - result, err := dataBase.Collection(cSendLog).Indexes().CreateMany(context.Background(), cSendLogModels, opts) - if err != nil { - fmt.Println("mongodb create cSendLogModels failed", result, err.Error()) - } - - //result, err := dataBase.Collection(cSendLog).Indexes().CreateOne(context.Background(), mongo.IndexModel{ - // Keys: bson.D{ - // {Key: "send_id"}, - // {Key: "send_time", Value: -1}, + //cSendLogModels := []mongo.IndexModel{ + // { + // //Keys: bson.M{"send_id": -1, "send_time": -1}, + // Keys: bson.D{ + // {Key: "send_id"}, + // {Key: "send_time", Value: -1}, + // }, // }, - //}, opts) - //if err != nil { - // fmt.Println("mongodb create cSendLog index failed", result, err.Error()) //} - + //result, err := dataBase.Collection(cSendLog).Indexes().CreateMany(context.Background(), cSendLogModels, opts) + //if err != nil { + // fmt.Println("mongodb create cSendLogModels failed", result, err.Error()) + //} + if err := createUniqueIndex(mongoClient, cSendLog, false, "send_id", "-send_time"); err != nil { + fmt.Println("send_id", "-send_time", "create failed", err.Error()) + } + var result string cChatModels := []mongo.IndexModel{ { Keys: bson.M{"uid": -1}, @@ -101,43 +100,6 @@ func init() { fmt.Println("mongodb create cChatModels failed", result, err.Error()) } - // - //cWorkMomentModels := []mongo.IndexModel{ - // { - // Keys: bsonx.Doc{ - // { - // Key: "create_time", - // Value: bsonx.Int32(-1), - // }, - // }, - // }, - // { - // Keys: bsonx.Doc{ - // { - // Key: "work_moment_id", - // }, - // }, - // Options: options.Index().SetUnique(true), - // }, - //} - //cWorkMomentModel2 := []mongo.IndexModel{ - // { - // Keys: bsonx.Doc{ - // { - // Key: "work_moment_id", - // }, - // }, - // Options: options.Index().SetUnique(true), - // }, - //} - //result, err = dataBase.Collection(cWorkMoment).Indexes().CreateMany(context.Background(), cWorkMomentModels, opts) - //if err != nil { - // fmt.Println("mongodb create cWorkMomentModels failed", result, err.Error()) - //} - //result, err = dataBase.Collection(cWorkMoment).Indexes().CreateMany(context.Background(), cWorkMomentModel2, opts) - //if err != nil { - // fmt.Println("mongodb create cWorkMomentModels failed", result, err.Error()) - //} _, err = dataBase.Collection(cWorkMoment).Indexes().CreateOne(context.Background(), mongo.IndexModel{ Keys: bson.D{ {Key: "create_time", Value: -1}, @@ -168,34 +130,6 @@ func init() { fmt.Println("mongodb create cWorkMoment index failed", err.Error()) } - //cTagModel1 := []mongo.IndexModel{ - // { - // Keys: bsonx.Doc{ - // { - // Key: "tag_id", - // }, - // }, - // Options: options.Index().SetUnique(true), - // }, - //} - //cTagModel2 := []mongo.IndexModel{ - // { - // Keys: bsonx.Doc{ - // { - // Key: "user_id", - // }, - // }, - // Options: options.Index().SetUnique(true), - // }, - //} - //result, err = dataBase.Collection(cTag).Indexes().CreateMany(context.Background(), cTagModel1, opts) - //if err != nil { - // fmt.Println("mongodb create cTagModel1 failed", result, err.Error()) - //} - //result, err = dataBase.Collection(cTag).Indexes().CreateMany(context.Background(), cTagModel2, opts) - //if err != nil { - // fmt.Println("mongodb create cTagModel2 failed", result, err.Error()) - //} _, err = dataBase.Collection(cTag).Indexes().CreateOne(context.Background(), mongo.IndexModel{ Keys: bson.D{ {Key: "user_id"}, @@ -236,3 +170,37 @@ func init() { }, } } + +func createUniqueIndex(client *mongo.Client, collection string, isUnique bool, keys ...string) error { + db := client.Database(config.Config.Mongo.DBDatabase).Collection(collection) + opts := options.CreateIndexes().SetMaxTime(10 * time.Second) + + indexView := db.Indexes() + keysDoc := bsonx.Doc{} + + // 复合索引 + for _, key := range keys { + if strings.HasPrefix(key, "-") { + keysDoc = keysDoc.Append(strings.TrimLeft(key, "-"), bsonx.Int32(-1)) + } else { + keysDoc = keysDoc.Append(key, bsonx.Int32(1)) + } + } + + // 创建索引 + index := mongo.IndexModel{ + Keys: keysDoc, + } + if isUnique == true { + index.Options = options.Index().SetUnique(true) + } + result, err := indexView.CreateOne( + context.Background(), + index, + opts, + ) + if err != nil { + return utils.Wrap(err, result) + } + return nil +} From ed8716510b9bdc379cbfb62856fa88b3ded4e74d Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 6 May 2022 17:32:52 +0800 Subject: [PATCH 028/143] office --- pkg/common/db/model.go | 89 ++++++++---------------------------------- 1 file changed, 16 insertions(+), 73 deletions(-) diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index 7991451a3..32fe76f5c 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -2,7 +2,6 @@ package db import ( "Open_IM/pkg/common/config" - "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/x/bsonx" "strings" @@ -70,84 +69,28 @@ func init() { } fmt.Println("0", utils.GetSelfFuncName(), "mongo driver client init success: ", uri) // mongodb create index - opts := options.CreateIndexes().SetMaxTime(10 * time.Second) - dataBase := mongoClient.Database(config.Config.Mongo.DBDatabase) - //cSendLogModels := []mongo.IndexModel{ - // { - // //Keys: bson.M{"send_id": -1, "send_time": -1}, - // Keys: bson.D{ - // {Key: "send_id"}, - // {Key: "send_time", Value: -1}, - // }, - // }, - //} - //result, err := dataBase.Collection(cSendLog).Indexes().CreateMany(context.Background(), cSendLogModels, opts) - //if err != nil { - // fmt.Println("mongodb create cSendLogModels failed", result, err.Error()) - //} - if err := createUniqueIndex(mongoClient, cSendLog, false, "send_id", "-send_time"); err != nil { - fmt.Println("send_id", "-send_time", "create failed", err.Error()) + if err := createMongoIndex(mongoClient, cSendLog, false, "send_id", "-send_time"); err != nil { + fmt.Println("send_id", "-send_time", "index create failed", err.Error()) } - var result string - cChatModels := []mongo.IndexModel{ - { - Keys: bson.M{"uid": -1}, - Options: options.Index().SetUnique(true), - }, + if err := createMongoIndex(mongoClient, cChat, true, "uid"); err != nil { + fmt.Println("uid", " index create failed", err.Error()) } - _, err = dataBase.Collection(cChat).Indexes().CreateMany(context.Background(), cChatModels, opts) - if err != nil { - fmt.Println("mongodb create cChatModels failed", result, err.Error()) + if err := createMongoIndex(mongoClient, cWorkMoment, true, "-create_time", "work_moment_id"); err != nil { + fmt.Println("-create_time", "work_moment_id", "index create failed", err.Error()) + } + if err := createMongoIndex(mongoClient, cWorkMoment, true, "work_moment_id"); err != nil { + fmt.Println("work_moment_id", "index create failed", err.Error()) } - _, err = dataBase.Collection(cWorkMoment).Indexes().CreateOne(context.Background(), mongo.IndexModel{ - Keys: bson.D{ - {Key: "create_time", Value: -1}, - {Key: "work_moment_id"}, - }, - }, opts) - if err != nil { - fmt.Println("mongodb create cWorkMoment index failed", result, err.Error()) + if err := createMongoIndex(mongoClient, cWorkMoment, false, "user_id", "-create_time"); err != nil { + fmt.Println("user_id", "-create_time", "index create failed", err.Error()) } - _, err = dataBase.Collection(cWorkMoment).Indexes().CreateOne(context.Background(), mongo.IndexModel{ - Keys: bson.D{ - {Key: "work_moment_id"}, - }, - Options: options.Index().SetUnique(true), - }, opts) - if err != nil { - fmt.Println("mongodb create cWorkMoment index failed", err.Error()) + if err := createMongoIndex(mongoClient, cTag, false, "user_id", "-create_time"); err != nil { + fmt.Println("user_id", "-create_time", "index create failed", err.Error()) } - - _, err = dataBase.Collection(cWorkMoment).Indexes().CreateOne(context.Background(), mongo.IndexModel{ - Keys: bson.D{ - {Key: "user_id"}, - {Key: "create_time", Value: -1}, - }, - }, opts) - if err != nil { - fmt.Println("mongodb create cWorkMoment index failed", err.Error()) - } - - _, err = dataBase.Collection(cTag).Indexes().CreateOne(context.Background(), mongo.IndexModel{ - Keys: bson.D{ - {Key: "user_id"}, - {Key: "create_time", Value: -1}, - }, - }, opts) - if err != nil { - fmt.Println("mongodb create cSendLog index failed", err.Error()) - } - - _, err = dataBase.Collection(cTag).Indexes().CreateOne(context.Background(), mongo.IndexModel{ - Keys: bson.D{ - {Key: "tag_id"}, - }, - Options: options.Index().SetUnique(true), - }) - if err != nil { - fmt.Println("mongodb create cSendLog index failed", result, err.Error()) + if err := createMongoIndex(mongoClient, cTag, true, "tag_id"); err != nil { + fmt.Println("user_id", "-create_time", "index create failed", err.Error()) } DB.mongoClient = mongoClient @@ -171,7 +114,7 @@ func init() { } } -func createUniqueIndex(client *mongo.Client, collection string, isUnique bool, keys ...string) error { +func createMongoIndex(client *mongo.Client, collection string, isUnique bool, keys ...string) error { db := client.Database(config.Config.Mongo.DBDatabase).Collection(collection) opts := options.CreateIndexes().SetMaxTime(10 * time.Second) From 7914e7bc14f6ed3ca75dbc36bc227062fc0418c0 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 6 May 2022 17:35:33 +0800 Subject: [PATCH 029/143] office --- pkg/common/db/model.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index 32fe76f5c..6edf36b8a 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -92,7 +92,7 @@ func init() { if err := createMongoIndex(mongoClient, cTag, true, "tag_id"); err != nil { fmt.Println("user_id", "-create_time", "index create failed", err.Error()) } - + fmt.Println("create index success") DB.mongoClient = mongoClient // redis pool init From a9ce8a3b2e7abd52d8406c86489ea43c6838ee45 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 7 May 2022 09:34:49 +0800 Subject: [PATCH 030/143] upgrade etcd & grpc --- cmd/Open-IM-SDK-Core | 2 +- config/config.yaml | 8 +- go.mod | 8 +- go.sum | 242 +--------------------------- internal/msg_gateway/gate/logic.go | 14 +- pkg/common/config/config.go | 14 +- pkg/grpc-etcdv3/getcdv3/register.go | 2 +- pkg/grpc-etcdv3/getcdv3/resolver.go | 6 +- 8 files changed, 23 insertions(+), 273 deletions(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index fddfa3034..b0897aa3a 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit fddfa30348d77fe7d5767ef410b1f30d042062bf +Subproject commit b0897aa3abe719729c2ce099404f08806917bfe3 diff --git a/config/config.yaml b/config/config.yaml index 61cef4251..b545fcce9 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -4,7 +4,7 @@ serverversion: 2.0.0 #---------------Infrastructure configuration---------------------# etcd: - etcdSchema: openIM #默认即可 + etcdSchema: openim #默认即可 etcdAddr: [ 127.0.0.1:2379 ] #单机部署时,默认即可 mysql: @@ -143,14 +143,14 @@ rpcregistername: #rpc注册服务名,默认即可 openImOnlineMessageRelayName: OnlineMessageRelay openImGroupName: Group openImAuthName: Auth - OpenImStatisticsName: Statistics - OpenImMessageCMSName: MessageCMS + openImStatisticsName: Statistics + openImMessageCMSName: MessageCMS openImAdminCMSName: AdminCMS openImOfficeName: Office openImOrganizationName: Organization openImConversationName: Conversation openImCacheName: Cache - + openImRealTimeCommName: RealTimeComm log: storageLocation: ../logs/ rotationTime: 24 diff --git a/go.mod b/go.mod index f005f9ce0..e9fa66c1f 100644 --- a/go.mod +++ b/go.mod @@ -11,8 +11,6 @@ require ( github.com/alibabacloud-go/tea v1.1.17 github.com/antonfisher/nested-logrus-formatter v1.3.0 github.com/bwmarrin/snowflake v0.3.0 - github.com/coreos/etcd v3.3.27+incompatible // indirect - github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect github.com/eapache/go-resiliency v1.2.0 // indirect github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect github.com/eapache/queue v1.1.0 // indirect @@ -49,21 +47,17 @@ require ( github.com/spf13/viper v1.9.0 github.com/stretchr/testify v1.7.0 github.com/tencentyun/qcloud-cos-sts-sdk v0.0.0-20210325043845-84a0811633ca - github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 // indirect - //go.etcd.io/etcd v3.3.27+incompatible - go.etcd.io/etcd v0.0.0-20200402134248-51bdeb39e698 + go.etcd.io/etcd/client/v3 v3.5.4 go.mongodb.org/mongo-driver v1.8.3 golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd google.golang.org/grpc v1.42.0 - google.golang.org/grpc/examples v0.0.0-20220311002955-722367c4a737 // indirect google.golang.org/protobuf v1.27.1 gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df gopkg.in/ini.v1 v1.66.2 // indirect gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b - sigs.k8s.io/yaml v1.2.0 // indirect ) replace google.golang.org/grpc => google.golang.org/grpc v1.29.0 diff --git a/go.sum b/go.sum index cec54f0ff..84687526c 100644 --- a/go.sum +++ b/go.sum @@ -90,56 +90,29 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aws/aws-sdk-go v1.38.3/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bep/debounce v1.2.0 h1:wXds8Kq8qRfwAOpAxHrJDbCXgC5aHSzgQb/0gKsHQqo= -github.com/bep/debounce v1.2.0/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bwmarrin/snowflake v0.3.0 h1:xm67bEhkKh6ij1790JB83OujPR5CzNe8QuQqAgISZN0= github.com/bwmarrin/snowflake v0.3.0/go.mod h1:NdZxfVWX+oR6y2K0o6qAYv6gIOP9rjG0/E9WsDpxqwE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa h1:OaNxuTZr7kxeODyLWsRMC+OD03aFUH+mW6r2d+MWa5Y= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/coreos/etcd v0.5.0-alpha.5 h1:0Qi6Jzjk2CDuuGlIeecpu+em2nrjhOgz2wsIwCmQHmc= -github.com/coreos/etcd v3.3.27+incompatible h1:QIudLb9KeBsE5zyYxd1mjzRSkzLg9Wf9QlRwFgd6oTA= -github.com/coreos/etcd v3.3.27+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd h1:83Wprp6ROGeiHFAP8WJdI2RoxALQYgdllERc3N5N2DM= github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= -github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/channels v1.1.0 h1:F1taHcn7/F0i8DYqKXJnyhJcVpp2kgFcNePxXtnyu4k= -github.com/eapache/channels v1.1.0/go.mod h1:jMm2qB5Ubtg9zLd+inMZd2/NUvXgzmWXsDaLyQIGfH0= github.com/eapache/go-resiliency v1.2.0 h1:v7g92e/KSN71Rq7vSThKaWIq68fL4YHvWyiUKorFR1Q= github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= @@ -147,8 +120,6 @@ github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1 github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y= github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= @@ -160,8 +131,6 @@ github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8 github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/frankban/quicktest v1.14.0 h1:+cqqvzZV87b4adx/5ayVOaYZ2CrvM4ejQvUdBzPPUss= github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/garyburd/redigo v1.6.2 h1:yE/pwKCrbLpLpQICzYTeZ7JsTA/C53wFTJHaEtRqniM= @@ -180,11 +149,6 @@ github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vb github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logr/logr v1.0.0-rc1/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v1.1.0 h1:nAbevmWlS2Ic4m4+/An5NXkaGqlqpbBgdcuThZxnZyI= -github.com/go-logr/logr v1.1.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/stdr v1.0.0 h1:y5pcs7gk8uL+w55/cmuTqhhg5Vjsn8NhlZgr8atE60c= -github.com/go-logr/stdr v1.0.0/go.mod h1:ALK2+RP34e8Kg4N/jgsMDWyZb/T282UsFmhyUqyzpmc= github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= @@ -193,18 +157,13 @@ github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD87 github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= -github.com/go-redis/redis/v8 v8.11.3 h1:GCjoYp8c+yQTJfc0n69iwSiHjvuAdruxl7elnZCxgt8= -github.com/go-redis/redis/v8 v8.11.3/go.mod h1:xNJ9xDG09FsIPwh3bWdk+0oDWHbtF9rPN0F/oD9XeKc= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v4 v4.1.0 h1:XUgk2Ex5veyVFVeLm0xhusUTQybEbexJXrvPNOKkSY0= @@ -212,10 +171,8 @@ github.com/golang-jwt/jwt/v4 v4.1.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzw github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= @@ -249,7 +206,6 @@ github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -284,28 +240,16 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4 h1:z53tR0945TRRQO/fLEVPI6SMv7ZflF0TEaTAoU7tOzg= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= @@ -329,10 +273,8 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jinzhu/copier v0.3.4 h1:mfU6jI9PtCeUjkjQ322dlff9ELjGDu975C2p/nrubVI= github.com/jinzhu/copier v0.3.4/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o= @@ -344,14 +286,12 @@ github.com/jinzhu/now v1.1.3 h1:PlHq1bSCSZL9K0wUhbm2pGLoTWs2GwVhsP6emvGV/ZI= github.com/jinzhu/now v1.1.3/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ= github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= @@ -361,9 +301,6 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/jxskiss/base62 v0.0.0-20191017122030-4f11678b909b h1:XUr8tvMEILhphQPp3TFcIudb5KTOzFeD0pJyDn5+5QI= -github.com/jxskiss/base62 v0.0.0-20191017122030-4f11678b909b/go.mod h1:a5Mn24iYVJRUQSkFupGByqykzD+k+wFI8J91zGHuPf8= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= @@ -395,17 +332,6 @@ github.com/lestrrat-go/strftime v1.0.4/go.mod h1:E1nN3pCbtMSu1yjSVeyuRFVm/U0xoR7 github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lithammer/shortuuid/v3 v3.0.6 h1:pr15YQyvhiSX/qPxncFtqk+v4xLEpOZObbsY/mKrcvA= -github.com/lithammer/shortuuid/v3 v3.0.6/go.mod h1:vMk8ke37EmiewwolSO1NLW8vP4ZaKlRuDIi8tWWmAts= -github.com/lithammer/shortuuid/v3 v3.0.7 h1:trX0KTHy4Pbwo/6ia8fscyHoGA+mf1jWbPJVuvyJQQ8= -github.com/lithammer/shortuuid/v3 v3.0.7/go.mod h1:vMk8ke37EmiewwolSO1NLW8vP4ZaKlRuDIi8tWWmAts= -github.com/livekit/protocol v0.11.13 h1:5iWXKTeFMfERpE/0ocoLUOQtPV1BKwas151nZm0YVt0= -github.com/livekit/protocol v0.11.13/go.mod h1:YoHW9YbWbPnuVsgwBB4hAINKT+V68jmfh9zXBSSn6Wg= -github.com/livekit/protocol v0.11.14-0.20220223195254-d8c251e13231 h1:2bSLRW/t4sosQkqoxI9b6PN296FBw4Xiy9cT9tZPi3w= -github.com/livekit/protocol v0.11.14-0.20220223195254-d8c251e13231/go.mod h1:3pHsWUtQmWaH8mG0cXrQWpbf3Vo+kj0U+In77CEXu90= -github.com/livekit/server-sdk-go v0.9.1 h1:AhshcG4o1Domyo0rfB5lYKnczOZT5nOQQPIkG9jFfE0= -github.com/livekit/server-sdk-go v0.9.1/go.mod h1:I31XJ1SmfUW7DFX3sltpVf9GwvuTO0jr05zscP1nrwA= -github.com/magefile/mage v1.11.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= @@ -414,19 +340,15 @@ github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaO github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus= github.com/mattn/go-sqlite3 v1.14.6 h1:dNPt6NO46WmLVt2DLNpwczCmdV5boIZ6g/tlDrlRUbg= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/maxbrunsfeld/counterfeiter/v6 v6.3.0/go.mod h1:fcEyUyXZXoV4Abw8DX0t7wyL8mCDxXyU4iAFZfT3IHw= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/minio/md5-simd v1.1.0 h1:QPfiOqlZH+Cj9teu0t9b1nTBfPbyTl16Of5MeuShdK4= @@ -456,72 +378,14 @@ github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6 github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olivere/elastic/v7 v7.0.23 h1:b7tjMogDMhf2CisGI+L02LXLVa0ZyE82Z15XfW1e8t8= github.com/olivere/elastic/v7 v7.0.23/go.mod h1:OuWmD2DiuYhddWegBKPWQuelVKBLrW0fa/VUYgxuGTY= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= -github.com/onsi/gomega v1.15.0 h1:WjP/FQ/sk43MRmnEcT+MlDw2TFvkrXlprrPST/IudjU= -github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= -github.com/onsi/gomega v1.17.0 h1:9Luw4uT5HTjHTN8+aNcSThgH1vdXnmdJ8xIfZ4wyTRE= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pion/datachannel v1.5.2 h1:piB93s8LGmbECrpO84DnkIVWasRMk3IimbcXkTQLE6E= -github.com/pion/datachannel v1.5.2/go.mod h1:FTGQWaHrdCwIJ1rw6xBIfZVkslikjShim5yr05XFuCQ= -github.com/pion/dtls/v2 v2.1.2/go.mod h1:o6+WvyLDAlXF7YiPB/RlskRoeK+/JtuaZa5emwQcWus= -github.com/pion/dtls/v2 v2.1.3 h1:3UF7udADqous+M2R5Uo2q/YaP4EzUoWKdfX2oscCUio= -github.com/pion/dtls/v2 v2.1.3/go.mod h1:o6+WvyLDAlXF7YiPB/RlskRoeK+/JtuaZa5emwQcWus= -github.com/pion/ice/v2 v2.2.1 h1:R3MeuJZpU1ty3diPqpD5OxaxcZ15eprAc+EtUiSoFxg= -github.com/pion/ice/v2 v2.2.1/go.mod h1:Op8jlPtjeiycsXh93Cs4jK82C9j/kh7vef6ztIOvtIQ= -github.com/pion/interceptor v0.1.7/go.mod h1:Lh3JSl/cbJ2wP8I3ccrjh1K/deRGRn3UlSPuOTiHb6U= -github.com/pion/interceptor v0.1.8 h1:5K27KMw8enTB1jVDFrjadK8sZjI5JbPJ91OVfiih5fE= -github.com/pion/interceptor v0.1.8/go.mod h1:Lh3JSl/cbJ2wP8I3ccrjh1K/deRGRn3UlSPuOTiHb6U= -github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY= -github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms= -github.com/pion/mdns v0.0.5 h1:Q2oj/JB3NqfzY9xGZ1fPzZzK7sDSD8rZPOvcIQ10BCw= -github.com/pion/mdns v0.0.5/go.mod h1:UgssrvdD3mxpi8tMxAXbsppL3vJ4Jipw1mTCW+al01g= -github.com/pion/randutil v0.1.0 h1:CFG1UdESneORglEsnimhUjf33Rwjubwj6xfiOXBa3mA= -github.com/pion/randutil v0.1.0/go.mod h1:XcJrSMMbbMRhASFVOlj/5hQial/Y8oH/HVo7TBZq+j8= -github.com/pion/rtcp v1.2.6/go.mod h1:52rMNPWFsjr39z9B9MhnkqhPLoeHTv1aN63o/42bWE0= -github.com/pion/rtcp v1.2.9 h1:1ujStwg++IOLIEoOiIQ2s+qBuJ1VN81KW+9pMPsif+U= -github.com/pion/rtcp v1.2.9/go.mod h1:qVPhiCzAm4D/rxb6XzKeyZiQK69yJpbUDJSF7TgrqNo= -github.com/pion/rtp v1.7.0/go.mod h1:bDb5n+BFZxXx0Ea7E5qe+klMuqiBrP+w8XSjiWtCUko= -github.com/pion/rtp v1.7.4 h1:4dMbjb1SuynU5OpA3kz1zHK+u+eOCQjW3MAeVHf1ODA= -github.com/pion/rtp v1.7.4/go.mod h1:bDb5n+BFZxXx0Ea7E5qe+klMuqiBrP+w8XSjiWtCUko= -github.com/pion/sctp v1.8.0/go.mod h1:xFe9cLMZ5Vj6eOzpyiKjT9SwGM4KpK/8Jbw5//jc+0s= -github.com/pion/sctp v1.8.2 h1:yBBCIrUMJ4yFICL3RIvR4eh/H2BTTvlligmSTy+3kiA= -github.com/pion/sctp v1.8.2/go.mod h1:xFe9cLMZ5Vj6eOzpyiKjT9SwGM4KpK/8Jbw5//jc+0s= -github.com/pion/sdp/v3 v3.0.4 h1:2Kf+dgrzJflNCSw3TV5v2VLeI0s/qkzy2r5jlR0wzf8= -github.com/pion/sdp/v3 v3.0.4/go.mod h1:bNiSknmJE0HYBprTHXKPQ3+JjacTv5uap92ueJZKsRk= -github.com/pion/srtp/v2 v2.0.5 h1:ks3wcTvIUE/GHndO3FAvROQ9opy0uLELpwHJaQ1yqhQ= -github.com/pion/srtp/v2 v2.0.5/go.mod h1:8k6AJlal740mrZ6WYxc4Dg6qDqqhxoRG2GSjlUhDF0A= -github.com/pion/stun v0.3.5 h1:uLUCBCkQby4S1cf6CGuR9QrVOKcvUwFeemaC865QHDg= -github.com/pion/stun v0.3.5/go.mod h1:gDMim+47EeEtfWogA37n6qXZS88L5V6LqFcf+DZA2UA= -github.com/pion/transport v0.12.2/go.mod h1:N3+vZQD9HlDP5GWkZ85LohxNsDcNgofQmyL6ojX5d8Q= -github.com/pion/transport v0.12.3/go.mod h1:OViWW9SP2peE/HbwBvARicmAVnesphkNkCVZIWJ6q9A= -github.com/pion/transport v0.13.0 h1:KWTA5ZrQogizzYwPEciGtHPLwpAjE91FgXnyu+Hv2uY= -github.com/pion/transport v0.13.0/go.mod h1:yxm9uXpK9bpBBWkITk13cLo1y5/ur5VQpG22ny6EP7g= -github.com/pion/turn/v2 v2.0.8 h1:KEstL92OUN3k5k8qxsXHpr7WWfrdp7iJZHx99ud8muw= -github.com/pion/turn/v2 v2.0.8/go.mod h1:+y7xl719J8bAEVpSXBXvTxStjJv3hbz9YFflvkpcGPw= -github.com/pion/udp v0.1.1 h1:8UAPvyqmsxK8oOjloDk4wUt63TzFe9WEJkg5lChlj7o= -github.com/pion/udp v0.1.1/go.mod h1:6AFo+CMdKQm7UiA0eUPA8/eVCTx8jBIITLZHc9DWX5M= -github.com/pion/webrtc/v3 v3.1.25-0.20220225075517-37e16a3b15a3 h1:TzOKzLajJt/Le720iy7bFry5HBBLWB3v6n9jEO4WJDs= -github.com/pion/webrtc/v3 v3.1.25-0.20220225075517-37e16a3b15a3/go.mod h1:mO/yv7fBN3Lp7YNlnYcTj1jtpvNvssJG+7eh6itZ4xM= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -532,33 +396,24 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0 h1:vrDKnkGzuGvhNAL56c7DBz29ZL+KxnoR0x7enabFceM= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.4.1 h1:K0MGApIoQvMw27RTdJkPbr3JZ7DNbtxQNyi5STVM6Kw= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0 h1:iMAkS2TDoNWnKM+Kopnx/8tnEStIfpYA0ur0xQzzhMQ= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2 h1:6LJUbpNm42llc4HRCuvApCSWB/WfhuNo9K98Q9sNGfs= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5 h1:mZHayPoR0lNmnHyvtYjDeq0zlVHn9K/ZXoy17ylucdo= github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5/go.mod h1:GEXHk5HgEKCvEIIrSpFI3ozzG5xOKA2DVlEX/gGnewM= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= @@ -567,8 +422,6 @@ github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= -github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= -github.com/sclevine/spec v1.4.0/go.mod h1:LvpgJaFyvQzRvc1kaDs0bulYwzC70PbiYjC4QnFHkOM= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -581,16 +434,12 @@ github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYl github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/gunit v1.4.2/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak= -github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.9.0 h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk= @@ -609,30 +458,20 @@ github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tencentyun/qcloud-cos-sts-sdk v0.0.0-20210325043845-84a0811633ca h1:G/aIr3WiUesWHL2YGYgEqjM5tCAJ43Ml+0C18wDkWWs= github.com/tencentyun/qcloud-cos-sts-sdk v0.0.0-20210325043845-84a0811633ca/go.mod h1:b18KQa4IxHbxeseW1GcZox53d7J0z39VNONTxvvlkXw= -github.com/thoas/go-funk v0.9.0 h1:Yzu8aTjTb1sqHZzSZLBt4qaZrFfjNizhA7IfnefjEzo= -github.com/thoas/go-funk v0.9.0/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tjfoc/gmsm v1.3.2 h1:7JVkAn5bvUJ7HtU08iW6UiD+UTmJTIToHCfeFzkcCxM= github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/twitchtv/twirp v8.1.0+incompatible h1:KGXanpa9LXdVE/V5P/tA27rkKFmXRGCtSNT7zdeeVOY= -github.com/twitchtv/twirp v8.1.0+incompatible/go.mod h1:RRJoFSAmTEh2weEqWtpPE3vFK5YBhA6bqp2l1kfCC5A= github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.0.2 h1:akYIkZ28e6A96dkWNJQu3nmCzH3YfwMPQExUYDaRv7w= github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= github.com/xdg-go/stringprep v1.0.2 h1:6iq84/ryjjeRmMJwxutI51F2GIPlP5BfTvXHeYjyhBc= github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -641,16 +480,15 @@ github.com/yuin/goldmark v1.1.30/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.etcd.io/bbolt v1.3.4 h1:hi1bXHMVrlQh6WwxAy+qZCV/SYIlqo+Ushwdpa4tAKg= -go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/etcd v0.0.0-20200402134248-51bdeb39e698 h1:jWtjCJX1qxhHISBMLRztWwR+EXkI7MJAF2HjHAE/x/I= -go.etcd.io/etcd v0.0.0-20200402134248-51bdeb39e698/go.mod h1:YoUyTScD3Vcv2RBm3eGVOq7i1ULiz3OuXoQFWOirmAM= -go.etcd.io/etcd v0.5.0-alpha.5 h1:VOolFSo3XgsmnYDLozjvZ6JL6AAwIDu1Yx1y+4EYLDo= -go.etcd.io/etcd v3.3.27+incompatible h1:5hMrpf6REqTHV2LW2OclNpRtxI0k9ZplMemJsMSWju0= -go.etcd.io/etcd v3.3.27+incompatible/go.mod h1:yaeTdrJi5lOmYerz05bd8+V7KubZs8YSFZfzsF9A6aI= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/api/v3 v3.5.4 h1:OHVyt3TopwtUQ2GKdd5wu3PmmipR4FTwCqoEjSyRdIc= +go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/pkg/v3 v3.5.4 h1:lrneYvz923dvC14R54XcA7FXoZ3mlGZAgmwhfm7HqOg= +go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.etcd.io/etcd/client/v3 v3.5.4 h1:p83BUL3tAYS0OT/r0qglgc3M1JjhM0diV8DSWAhVXv4= +go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R4= go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -660,15 +498,10 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -679,18 +512,14 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= -golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838 h1:71vQrMauZZhcTVK6KdYM+rklehEEwb3E+ZhaE5jrPrE= -golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -729,10 +558,8 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -744,7 +571,6 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -756,28 +582,19 @@ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201201195509-5d6afe98e0b7/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210917221730-978cfadd31cf h1:R150MpwJIv1MpS0N/pc+NhTM8ajzvlmxlY5OYsrevXQ= -golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211201190559-0a0e4e1bb54c/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -795,7 +612,6 @@ golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -809,9 +625,7 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cO golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -823,14 +637,11 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -857,7 +668,6 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -875,7 +685,6 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf h1:2ucpDCmfkl8Bd/FsLtiD653Wf96cW37s+iGx93zsu4k= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -889,16 +698,12 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -916,8 +721,6 @@ golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -946,11 +749,9 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= @@ -997,7 +798,6 @@ google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1026,7 +826,6 @@ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEY google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200806141610-86f49bd18e98/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1053,19 +852,7 @@ google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71 h1:z+ErRPu0+KS02Td google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/grpc v1.29.0 h1:2pJjwYOdkZ9HlN4sWRYBg9ttH5bCOlsueaM+b/oYjwo= google.golang.org/grpc v1.29.0/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.29.1 h1:EC2SB8S04d2r73uptxphDSUG+kTKVgjRPF+N3xpxRB4= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.32.0 h1:zWTV+LMdc3kaiJMSTOFz2UgSBgx8RNQoTGiZu3fR9S0= -google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0 h1:raiipEjMOIC/TO2AvyTxP25XFdLxNIBwzDh3FM3XztI= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/grpc/examples v0.0.0-20220311002955-722367c4a737 h1:rLsBNkV6Gc/K6J87wfvo/BSg/TQGd28++7sS+hs8qDw= -google.golang.org/grpc/examples v0.0.0-20220311002955-722367c4a737/go.mod h1:wKDg0brwMZpaizQ1i7IzYcJjH1TmbJudYdnQC9+J+LE= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1088,29 +875,16 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U= -gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.63.2 h1:tGK/CyBg7SMzb60vP1M03vNZ3VDu3wGQJwn7Sxi9r3c= gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.2 h1:XfR1dOYubytKy4Shzc2LHrrGhU0lDCfDGG1yLPmpgsI= gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 h1:VpOs+IwYnYBaFnrNAeB8UUWtL3vEUnzSCL1nVjPhqrw= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w= -gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI= -gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1133,6 +907,4 @@ honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/internal/msg_gateway/gate/logic.go b/internal/msg_gateway/gate/logic.go index 567b4e8c1..f867b3829 100644 --- a/internal/msg_gateway/gate/logic.go +++ b/internal/msg_gateway/gate/logic.go @@ -14,9 +14,7 @@ import ( "encoding/gob" "github.com/golang/protobuf/proto" "github.com/gorilla/websocket" - "google.golang.org/grpc" "runtime" - "strconv" "strings" ) @@ -205,21 +203,15 @@ func (ws *WServer) sendSignalMsgReq(conn *UserConn, m *Req) { isPass, errCode, errMsg, pData := ws.argsValidate(m, constant.WSSendSignalMsg) if isPass { signalResp := pbRtc.SignalResp{} - //isPass2, errCode2, errMsg2, signalResp, msgData := ws.signalMessageAssemble(pData.(*sdk_ws.SignalReq), m.OperationID) - connGrpc, err := grpc.Dial(config.Config.Rtc.Address+":"+strconv.Itoa(config.Config.Rtc.Port), grpc.WithInsecure()) - if err != nil { - log.NewError(m.OperationID, utils.GetSelfFuncName(), "grpc.Dial failed", err.Error()) - ws.sendSignalMsgResp(conn, 204, "create grpc failed"+err.Error(), m, nil) - return - } - rtcClient := pbRtc.NewRtcServiceClient(connGrpc) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImRealTimeCommName) + rtcClient := pbRtc.NewRtcServiceClient(etcdConn) req := &pbRtc.SignalMessageAssembleReq{ SignalReq: pData.(*pbRtc.SignalReq), OperationID: m.OperationID, } respPb, err := rtcClient.SignalMessageAssemble(context.Background(), req) if err != nil { - log.NewError(m.OperationID, utils.GetSelfFuncName(), "SignalMessageAssemble", err.Error(), config.Config.Rtc.Address+":"+strconv.Itoa(config.Config.Rtc.Port)) + log.NewError(m.OperationID, utils.GetSelfFuncName(), "SignalMessageAssemble", err.Error(), config.Config.RpcRegisterName.OpenImRealTimeCommName) ws.sendSignalMsgResp(conn, 204, "grpc SignalMessageAssemble failed: "+err.Error(), m, &signalResp) return } diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index bd4998335..1ec02ddae 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -6,7 +6,6 @@ import ( "path/filepath" "runtime" - "github.com/spf13/viper" "gopkg.in/yaml.v3" ) @@ -106,7 +105,7 @@ type config struct { RpcGetTokenPort []int `yaml:"rpcGetTokenPort"` } RpcRegisterName struct { - OpenImStatisticsName string `yaml:"OpenImStatisticsName"` + OpenImStatisticsName string `yaml:"openImStatisticsName"` OpenImUserName string `yaml:"openImUserName"` OpenImFriendName string `yaml:"openImFriendName"` OpenImOfflineMessageName string `yaml:"openImOfflineMessageName"` @@ -120,6 +119,7 @@ type config struct { OpenImOrganizationName string `yaml:"openImOrganizationName"` OpenImConversationName string `yaml:"openImConversationName"` OpenImCacheName string `yaml:"openImCacheName"` + OpenImRealTimeCommName string `yaml:"openImRealTimeCommName"` } Etcd struct { EtcdSchema string `yaml:"etcdSchema"` @@ -429,21 +429,11 @@ type PDefaultTips struct { } func init() { - //path, _ := os.Getwd() - //bytes, err := ioutil.ReadFile(path + "/config/config.yaml") - // if we cd Open-IM-Server/src/utils and run go test - // it will panic cannot find config/config.yaml - cfgName := os.Getenv("CONFIG_NAME") if len(cfgName) == 0 { cfgName = Root + "/config/config.yaml" } - viper.SetConfigFile(cfgName) - err := viper.ReadInConfig() - if err != nil { - panic(err.Error()) - } bytes, err := ioutil.ReadFile(cfgName) if err != nil { panic(err.Error()) diff --git a/pkg/grpc-etcdv3/getcdv3/register.go b/pkg/grpc-etcdv3/getcdv3/register.go index 6bfdb626c..af96ffc29 100644 --- a/pkg/grpc-etcdv3/getcdv3/register.go +++ b/pkg/grpc-etcdv3/getcdv3/register.go @@ -4,7 +4,7 @@ import ( "Open_IM/pkg/common/log" "context" "fmt" - "go.etcd.io/etcd/clientv3" + clientv3 "go.etcd.io/etcd/client/v3" "net" "strconv" "strings" diff --git a/pkg/grpc-etcdv3/getcdv3/resolver.go b/pkg/grpc-etcdv3/getcdv3/resolver.go index aacdc849b..5d7f9e828 100644 --- a/pkg/grpc-etcdv3/getcdv3/resolver.go +++ b/pkg/grpc-etcdv3/getcdv3/resolver.go @@ -4,8 +4,10 @@ import ( "Open_IM/pkg/common/log" "context" "fmt" - "go.etcd.io/etcd/clientv3" - "go.etcd.io/etcd/mvcc/mvccpb" + "go.etcd.io/etcd/api/v3/mvccpb" + clientv3 "go.etcd.io/etcd/client/v3" + + //"go.etcd.io/etcd/mvcc/mvccpb" //"google.golang.org/genproto/googleapis/ads/googleads/v1/services" "google.golang.org/grpc" "google.golang.org/grpc/balancer/roundrobin" From b217fede8793aa15fe35dcea17e1422ab2fdd24d Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 7 May 2022 09:41:56 +0800 Subject: [PATCH 031/143] upgrade etcd & grpc --- go.mod | 6 +- go.sum | 427 --------------------------------------------------------- 2 files changed, 3 insertions(+), 430 deletions(-) diff --git a/go.mod b/go.mod index e9fa66c1f..dfed54fde 100644 --- a/go.mod +++ b/go.mod @@ -32,8 +32,6 @@ require ( github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible github.com/lestrrat-go/strftime v1.0.4 // indirect github.com/lib/pq v1.2.0 // indirect - //github.com/livekit/protocol v0.11.14-0.20220223195254-d8c251e13231 // indirect - //github.com/livekit/server-sdk-go v0.9.1 github.com/mattn/go-sqlite3 v1.14.6 // indirect github.com/minio/minio-go/v7 v7.0.22 github.com/mitchellh/mapstructure v1.4.2 @@ -44,13 +42,15 @@ require ( github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5 github.com/sirupsen/logrus v1.8.1 - github.com/spf13/viper v1.9.0 github.com/stretchr/testify v1.7.0 github.com/tencentyun/qcloud-cos-sts-sdk v0.0.0-20210325043845-84a0811633ca + go.etcd.io/etcd/api/v3 v3.5.4 go.etcd.io/etcd/client/v3 v3.5.4 go.mongodb.org/mongo-driver v1.8.3 + golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd + google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71 // indirect google.golang.org/grpc v1.42.0 google.golang.org/protobuf v1.27.1 gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect diff --git a/go.sum b/go.sum index 84687526c..74a5f6b07 100644 --- a/go.sum +++ b/go.sum @@ -1,48 +1,4 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= github.com/Shopify/sarama v1.19.0 h1:9oksLxC6uxVPHPVYUmq6xhr1BOF/hHobWH2UzO67z1s= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= @@ -84,22 +40,14 @@ github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9Pq github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antonfisher/nested-logrus-formatter v1.3.0 h1:8zixYquU1Odk+vzAaAQPAdRh1ZjmUXNQ1T+dUBvlhVo= github.com/antonfisher/nested-logrus-formatter v1.3.0/go.mod h1:6WTfyWFkBc9+zyBaKIqRrg/KwMqBbodBjgbHjDz7zjA= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aws/aws-sdk-go v1.38.3/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bwmarrin/snowflake v0.3.0 h1:xm67bEhkKh6ij1790JB83OujPR5CzNe8QuQqAgISZN0= github.com/bwmarrin/snowflake v0.3.0/go.mod h1:NdZxfVWX+oR6y2K0o6qAYv6gIOP9rjG0/E9WsDpxqwE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -123,16 +71,12 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y= github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/frankban/quicktest v1.14.0 h1:+cqqvzZV87b4adx/5ayVOaYZ2CrvM4ejQvUdBzPPUss= github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og= -github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= -github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/garyburd/redigo v1.6.2 h1:yE/pwKCrbLpLpQICzYTeZ7JsTA/C53wFTJHaEtRqniM= github.com/garyburd/redigo v1.6.2/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -140,9 +84,6 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.7.0 h1:jGB9xAJQ12AIGNB4HguylppmDK1Am9ppF7XnGXXJuoU= github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= @@ -171,49 +112,29 @@ github.com/golang-jwt/jwt/v4 v4.1.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzw github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= @@ -221,60 +142,14 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= -github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= -github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/jinzhu/copier v0.3.4 h1:mfU6jI9PtCeUjkjQ322dlff9ELjGDu975C2p/nrubVI= github.com/jinzhu/copier v0.3.4/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o= @@ -296,8 +171,6 @@ github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= @@ -311,10 +184,8 @@ github.com/klauspost/cpuid v1.3.1 h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -332,37 +203,22 @@ github.com/lestrrat-go/strftime v1.0.4/go.mod h1:E1nN3pCbtMSu1yjSVeyuRFVm/U0xoR7 github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus= github.com/mattn/go-sqlite3 v1.14.6 h1:dNPt6NO46WmLVt2DLNpwczCmdV5boIZ6g/tlDrlRUbg= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/minio/md5-simd v1.1.0 h1:QPfiOqlZH+Cj9teu0t9b1nTBfPbyTl16Of5MeuShdK4= github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw= github.com/minio/minio-go/v7 v7.0.22 h1:iXhsiRyYh1ozm/+jN2qGgEIahYjEkvcpuu6NcdpSxcA= github.com/minio/minio-go/v7 v7.0.22/go.mod h1:ei5JjmxwHaMrgsMrn4U/+Nmg+d8MKS1U2DAn1ou4+Do= github.com/minio/sha256-simd v0.1.1 h1:5QHSlgo3nt5yKOJrC7W8w7X+NFl8cMPZm96iu8kKUJU= github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.4.2 h1:6h7AQ0yhTcIsmFmnAwQls75jp2Gzs4iB8W7pjMO+rqo= github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -381,20 +237,14 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLA github.com/olivere/elastic/v7 v7.0.23 h1:b7tjMogDMhf2CisGI+L02LXLVa0ZyE82Z15XfW1e8t8= github.com/olivere/elastic/v7 v7.0.23/go.mod h1:OuWmD2DiuYhddWegBKPWQuelVKBLrW0fa/VUYgxuGTY= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= -github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= @@ -415,14 +265,10 @@ github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqn github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5 h1:mZHayPoR0lNmnHyvtYjDeq0zlVHn9K/ZXoy17ylucdo= github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5/go.mod h1:GEXHk5HgEKCvEIIrSpFI3ozzG5xOKA2DVlEX/gGnewM= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= @@ -434,16 +280,6 @@ github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYl github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/gunit v1.4.2/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak= -github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= -github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.9.0 h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk= -github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= @@ -454,8 +290,6 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tencentyun/qcloud-cos-sts-sdk v0.0.0-20210325043845-84a0811633ca h1:G/aIr3WiUesWHL2YGYgEqjM5tCAJ43Ml+0C18wDkWWs= github.com/tencentyun/qcloud-cos-sts-sdk v0.0.0-20210325043845-84a0811633ca/go.mod h1:b18KQa4IxHbxeseW1GcZox53d7J0z39VNONTxvvlkXw= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= @@ -474,29 +308,18 @@ github.com/xdg-go/stringprep v1.0.2 h1:6iq84/ryjjeRmMJwxutI51F2GIPlP5BfTvXHeYjyh github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.30/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/api/v3 v3.5.4 h1:OHVyt3TopwtUQ2GKdd5wu3PmmipR4FTwCqoEjSyRdIc= go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/pkg/v3 v3.5.4 h1:lrneYvz923dvC14R54XcA7FXoZ3mlGZAgmwhfm7HqOg= go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.etcd.io/etcd/client/v3 v3.5.4 h1:p83BUL3tAYS0OT/r0qglgc3M1JjhM0diV8DSWAhVXv4= go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R4= go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= @@ -505,13 +328,8 @@ go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9i go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -521,348 +339,112 @@ golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb h1:fqpd0EBDzlHRCjiphRR5Zo/RSWWQlWv34418dnEixWk= golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71 h1:z+ErRPu0+KS02Td3fOAgdX+lnPDh/VyaABEJPD4JRQs= google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/grpc v1.29.0 h1:2pJjwYOdkZ9HlN4sWRYBg9ttH5bCOlsueaM+b/oYjwo= google.golang.org/grpc v1.29.0/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= @@ -880,7 +462,6 @@ gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AW gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.2 h1:XfR1dOYubytKy4Shzc2LHrrGhU0lDCfDGG1yLPmpgsI= gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 h1:VpOs+IwYnYBaFnrNAeB8UUWtL3vEUnzSCL1nVjPhqrw= @@ -898,13 +479,5 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= From 32b982072525ca529ed99999f165964cf1b4a246 Mon Sep 17 00:00:00 2001 From: FG <1432970085@qq.com> Date: Sat, 7 May 2022 10:37:52 +0800 Subject: [PATCH 032/143] remove timer and database init --- cmd/Open-IM-SDK-Core | 2 +- cmd/open_im_timer_task/Makefile | 25 ------------- cmd/open_im_timer_task/main.go | 63 --------------------------------- script/mysql_database_init.sh | 38 -------------------- script/path_info.cfg | 4 --- script/timer_start.sh | 35 ------------------ 6 files changed, 1 insertion(+), 166 deletions(-) delete mode 100644 cmd/open_im_timer_task/Makefile delete mode 100644 cmd/open_im_timer_task/main.go delete mode 100644 script/mysql_database_init.sh delete mode 100644 script/timer_start.sh diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index b0897aa3a..588c9bb77 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit b0897aa3abe719729c2ce099404f08806917bfe3 +Subproject commit 588c9bb77b9bd89a9261964006568b8655233cb6 diff --git a/cmd/open_im_timer_task/Makefile b/cmd/open_im_timer_task/Makefile deleted file mode 100644 index 6c6d713d8..000000000 --- a/cmd/open_im_timer_task/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -.PHONY: all build run gotool install clean help - -BINARY_NAME=open_im_timer_task -BIN_DIR=../../bin/ - -all: gotool build - -build: - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" - -run: - @go run ./ - -gotool: - go fmt ./ - go vet ./ - -install: - make build - mv ${BINARY_NAME} ${BIN_DIR} - -clean: - @if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi - - diff --git a/cmd/open_im_timer_task/main.go b/cmd/open_im_timer_task/main.go deleted file mode 100644 index 20d9a4d1c..000000000 --- a/cmd/open_im_timer_task/main.go +++ /dev/null @@ -1,63 +0,0 @@ -package main - -import ( - "Open_IM/pkg/common/constant" - "Open_IM/pkg/common/log" -) - -func main() { - log.NewPrivateLog(constant.LogFileName) - //for { - // fmt.Println("start delete mongodb expired record") - // timeUnixBegin := time.Now().Unix() - // count, _ := db.DB.MgoUserCount() - // fmt.Println("mongodb record count: ", count) - // for i := 0; i < count; i++ { - // time.Sleep(1 * time.Millisecond) - // uid, _ := db.DB.MgoSkipUID(i) - // fmt.Println("operate uid: ", uid) - // err := db.DB.DelUserChat(uid) - // if err != nil { - // fmt.Println("operate uid failed: ", uid, err.Error()) - // } - // } - // - // timeUnixEnd := time.Now().Unix() - // costTime := timeUnixEnd - timeUnixBegin - // if costTime > int64(config.Config.Mongo.DBRetainChatRecords*24*3600) { - // continue - // } else { - // sleepTime := 0 - // if int64(config.Config.Mongo.DBRetainChatRecords*24*3600)-costTime > 24*3600 { - // sleepTime = 24 * 3600 - // } else { - // sleepTime = config.Config.Mongo.DBRetainChatRecords*24*3600 - int(costTime) - // } - // fmt.Println("sleep: ", sleepTime) - // time.Sleep(time.Duration(sleepTime) * time.Second) - // } - //} - //for { - // uidList, err := im_mysql_model.SelectAllUserID() - // if err != nil { - // //log.NewError("999999", err.Error()) - // } else { - // for _, v := range uidList { - // minSeq, err := commonDB.DB.GetMinSeqFromMongo(v) - // if err != nil { - // //log.NewError("999999", "get user minSeq err", err.Error(), v) - // continue - // } else { - // err := commonDB.DB.SetUserMinSeq(v, minSeq) - // if err != nil { - // //log.NewError("999999", "set user minSeq err", err.Error(), v) - // } - // } - // time.Sleep(time.Duration(100) * time.Millisecond) - // } - // - // } - // - //} - -} diff --git a/script/mysql_database_init.sh b/script/mysql_database_init.sh deleted file mode 100644 index 2a5135e8e..000000000 --- a/script/mysql_database_init.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env bash - -source ./style_info.cfg -source ./path_info.cfg -source ./function.sh - -#define database attributes -address=$(cat $config_path | grep -w dbMysqlAddress) -list_to_string ${address} -hostAndPort=($ports_array) -DATABASE_HOST=$(echo $hostAndPort | awk -F '[:]' '{print $1}') -DATABASE_PORT=$(echo $hostAndPort | awk -F '[:]' '{print $NF}') -DATABASE_USERNAME=$(cat $config_path | grep -w dbMysqlUserName | awk -F '[:]' '{print $NF}') -DATABASE_PWD=`eval echo $(cat $config_path | grep -w dbMysqlPassword | awk -F '[:]' '{print $NF}')` -DATABASE_NAME=$(cat $config_path | grep -w dbMysqlDatabaseName | awk -F '[:]' '{print $NF}') -SQL_FILE="../config/mysql_sql_file/openIM.sql" - - -create_data_sql="create database IF NOT EXISTS $DATABASE_NAME" -set_character_code_sql="alter database $DATABASE_NAME character set utf8mb4 collate utf8mb4_general_ci" - -echo -e "${SKY_BLUE_PREFIX}start to create database.....$COLOR_SUFFIX" -mysql -h $DATABASE_HOST -P $DATABASE_PORT -u $DATABASE_USERNAME -p$DATABASE_PWD -e "$create_data_sql" - -if [ $? -eq 0 ]; then - echo -e "${SKY_BLUE_PREFIX}create database ${DATABASE_NAME} successfully$COLOR_SUFFIX" - mysql -h $DATABASE_HOST -P $DATABASE_PORT -u $DATABASE_USERNAME -p$DATABASE_PWD -e "$set_character_code_sql" -else - echo -e "${RED_PREFIX}create database failed or exists the database$COLOR_SUFFIX\n" -fi - -echo -e "${SKY_BLUE_PREFIX}start to source openIM.sql .....$COLOR_SUFFIX" -mysql -h $DATABASE_HOST -P $DATABASE_PORT -u $DATABASE_USERNAME -p$DATABASE_PWD -D $DATABASE_NAME <$SQL_FILE -if [ $? -eq 0 ]; then - echo -e "${SKY_BLUE_PREFIX}source openIM.sql successfully$COLOR_SUFFIX" -else - echo -e "${RED_PREFIX}source openIM.sql failed$COLOR_SUFFIX\n" -fi diff --git a/script/path_info.cfg b/script/path_info.cfg index 9c9b0c264..0a47f51fd 100644 --- a/script/path_info.cfg +++ b/script/path_info.cfg @@ -19,10 +19,6 @@ msg_transfer_source_root="../cmd/open_im_msg_transfer/" msg_transfer_service_num=2 -timer_task_name="open_im_timer_task" -timer_task_binary_root="../bin/" -timer_task_source_root="../cmd/open_im_timer_task/" - sdk_server_name="open_im_sdk_server" sdk_server_binary_root="../bin/" sdk_server_source_root="../cmd/Open-IM-SDK-Core/" diff --git a/script/timer_start.sh b/script/timer_start.sh deleted file mode 100644 index 7e2791f11..000000000 --- a/script/timer_start.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env bash -#Include shell font styles and some basic information -source ./style_info.cfg -source ./path_info.cfg - - - -#Check if the service exists -#If it is exists,kill this process -check=`ps aux | grep -w ./${timer_task_name} | grep -v grep| wc -l` -if [ $check -ge 1 ] -then -oldPid=`ps aux | grep -w ./${timer_task_name} | grep -v grep|awk '{print $2}'` - kill -9 $oldPid -fi -#Waiting port recycling -sleep 1 - -cd ${timer_task_binary_root} -nohup ./${timer_task_name} >>../logs/openIM.log 2>&1 & - - -#Check launched service process -check=`ps aux | grep -w ./${timer_task_name} | grep -v grep| wc -l` -if [ $check -ge 1 ] -then -newPid=`ps aux | grep -w ./${timer_task_name} | grep -v grep|awk '{print $2}'` -allPorts="" - echo -e ${SKY_BLUE_PREFIX}"SERVICE START SUCCESS "${COLOR_SUFFIX} - echo -e ${SKY_BLUE_PREFIX}"SERVICE_NAME: "${COLOR_SUFFIX}${YELLOW_PREFIX}${timer_task_name}${COLOR_SUFFIX} - echo -e ${SKY_BLUE_PREFIX}"PID: "${COLOR_SUFFIX}${YELLOW_PREFIX}${newPid}${COLOR_SUFFIX} - echo -e ${SKY_BLUE_PREFIX}"LISTENING_PORT: "${COLOR_SUFFIX}${YELLOW_PREFIX}${allPorts}${COLOR_SUFFIX} -else - echo -e ${YELLOW_PREFIX}${timer_task_name}${COLOR_SUFFIX}${RED_PREFIX}"SERVICE START ERROR, PLEASE CHECK openIM.log"${COLOR_SUFFIX} -fi From 747b963bd4c5bbe65112acaeee5ef486ff6bcae2 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Sat, 7 May 2022 11:14:29 +0800 Subject: [PATCH 033/143] cache --- config/config.yaml | 4 +- internal/msg_gateway/gate/validate.go | 137 ------------------------- internal/rpc/group/group.go | 138 +++++++++++++++++++++----- internal/rpc/msg/callback.go | 1 + pkg/common/config/config.go | 2 +- 5 files changed, 118 insertions(+), 164 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 61cef4251..dcd0f4212 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -143,8 +143,8 @@ rpcregistername: #rpc注册服务名,默认即可 openImOnlineMessageRelayName: OnlineMessageRelay openImGroupName: Group openImAuthName: Auth - OpenImStatisticsName: Statistics - OpenImMessageCMSName: MessageCMS + openImStatisticsName: Statistics + openImMessageCMSName: MessageCMS openImAdminCMSName: AdminCMS openImOfficeName: Office openImOrganizationName: Organization diff --git a/internal/msg_gateway/gate/validate.go b/internal/msg_gateway/gate/validate.go index 329f93655..35bc34f0e 100644 --- a/internal/msg_gateway/gate/validate.go +++ b/internal/msg_gateway/gate/validate.go @@ -114,140 +114,3 @@ func (ws *WServer) argsValidate(m *Req, r int32) (isPass bool, errCode int32, er //} else } - -//func (ws *WServer) signalMessageAssemble(s *open_im_sdk.SignalReq, operationID string) (isPass bool, errCode int32, errMsg string, r *open_im_sdk.SignalResp, msgData *open_im_sdk.MsgData) { -// var msg open_im_sdk.MsgData -// var resp open_im_sdk.SignalResp -// media := open_im_media.NewMedia() -// msg.MsgFrom = constant.UserMsgType -// msg.ContentType = constant.SignalingNotification -// reqData, e := proto.Marshal(s) -// if e != nil { -// return false, 201, e.Error(), nil, nil -// } -// msg.Content = reqData -// msg.CreateTime = utils.GetCurrentTimestampByMill() -// options := make(map[string]bool, 6) -// utils.SetSwitchFromOptions(options, constant.IsHistory, false) -// utils.SetSwitchFromOptions(options, constant.IsPersistent, false) -// utils.SetSwitchFromOptions(options, constant.IsSenderSync, true) -// utils.SetSwitchFromOptions(options, constant.IsConversationUpdate, false) -// utils.SetSwitchFromOptions(options, constant.IsSenderConversationUpdate, false) -// utils.SetSwitchFromOptions(options, constant.IsUnreadCount, false) -// utils.SetSwitchFromOptions(options, constant.IsOfflinePush, true) -// msg.Options = options -// switch payload := s.Payload.(type) { -// case *open_im_sdk.SignalReq_Invite: -// token, liveURL, err2 := media.GetJoinToken(payload.Invite.Invitation.RoomID, payload.Invite.Invitation.InviterUserID, operationID, payload.Invite.Participant) -// if err2 != nil { -// return false, 202, err2.Error(), nil, nil -// } -// invite := open_im_sdk.SignalResp_Invite{&open_im_sdk.SignalInviteReply{ -// Token: token, -// RoomID: payload.Invite.Invitation.RoomID, -// LiveURL: liveURL, -// }} -// resp.Payload = &invite -// msg.SenderPlatformID = payload.Invite.Invitation.PlatformID -// msg.SessionType = payload.Invite.Invitation.SessionType -// msg.OfflinePushInfo = payload.Invite.OfflinePushInfo -// msg.SendID = payload.Invite.Invitation.InviterUserID -// if len(payload.Invite.Invitation.InviteeUserIDList) > 0 { -// msg.RecvID = payload.Invite.Invitation.InviteeUserIDList[0] -// } else { -// return false, 203, errors.New("InviteeUserIDList is null").Error(), nil, nil -// } -// msg.ClientMsgID = utils.GetMsgID(payload.Invite.Invitation.InviterUserID) -// return true, 0, "", &resp, &msg -// case *open_im_sdk.SignalReq_InviteInGroup: -// token, liveURL, err2 := media.GetJoinToken(payload.InviteInGroup.Invitation.RoomID, payload.InviteInGroup.Invitation.InviterUserID, operationID, payload.InviteInGroup.Participant) -// if err2 != nil { -// return false, 204, err2.Error(), nil, nil -// } -// inviteGroup := open_im_sdk.SignalResp_InviteInGroup{&open_im_sdk.SignalInviteInGroupReply{ -// RoomID: payload.InviteInGroup.Invitation.RoomID, -// Token: token, -// LiveURL: liveURL, -// }} -// resp.Payload = &inviteGroup -// msg.SenderPlatformID = payload.InviteInGroup.Invitation.PlatformID -// msg.SessionType = payload.InviteInGroup.Invitation.SessionType -// msg.OfflinePushInfo = payload.InviteInGroup.OfflinePushInfo -// msg.SendID = payload.InviteInGroup.Invitation.InviterUserID -// if len(payload.InviteInGroup.Invitation.InviteeUserIDList) > 0 { -// msg.GroupID = payload.InviteInGroup.Invitation.GroupID -// } else { -// return false, 205, errors.New("InviteeUserIDList is null").Error(), nil, nil -// } -// msg.ClientMsgID = utils.GetMsgID(payload.InviteInGroup.Invitation.InviterUserID) -// -// return true, 0, "", &resp, &msg -// case *open_im_sdk.SignalReq_Cancel: -// cancel := open_im_sdk.SignalResp_Cancel{&open_im_sdk.SignalCancelReply{}} -// resp.Payload = &cancel -// msg.OfflinePushInfo = payload.Cancel.OfflinePushInfo -// msg.SendID = payload.Cancel.Invitation.InviterUserID -// msg.SenderPlatformID = payload.Cancel.Invitation.PlatformID -// msg.SessionType = payload.Cancel.Invitation.SessionType -// if len(payload.Cancel.Invitation.InviteeUserIDList) > 0 { -// switch payload.Cancel.Invitation.SessionType { -// case constant.SingleChatType: -// msg.RecvID = payload.Cancel.Invitation.InviteeUserIDList[0] -// case constant.GroupChatType: -// msg.GroupID = payload.Cancel.Invitation.GroupID -// } -// } else { -// return false, 206, errors.New("InviteeUserIDList is null").Error(), nil, nil -// } -// msg.ClientMsgID = utils.GetMsgID(payload.Cancel.OpUserID) -// return true, 0, "", &resp, &msg -// case *open_im_sdk.SignalReq_Accept: -// token, liveURL, err2 := media.GetJoinToken(payload.Accept.Invitation.RoomID, payload.Accept.OpUserID, operationID, payload.Accept.Participant) -// if err2 != nil { -// return false, 207, err2.Error(), nil, nil -// } -// accept := open_im_sdk.SignalResp_Accept{&open_im_sdk.SignalAcceptReply{ -// Token: token, -// LiveURL: liveURL, -// RoomID: payload.Accept.Invitation.RoomID, -// }} -// resp.Payload = &accept -// msg.OfflinePushInfo = payload.Accept.OfflinePushInfo -// msg.SendID = payload.Accept.OpUserID -// msg.SenderPlatformID = payload.Accept.Invitation.PlatformID -// msg.SessionType = payload.Accept.Invitation.SessionType -// if len(payload.Accept.Invitation.InviteeUserIDList) > 0 { -// switch payload.Accept.Invitation.SessionType { -// case constant.SingleChatType: -// msg.RecvID = payload.Accept.Invitation.InviterUserID -// case constant.GroupChatType: -// msg.GroupID = payload.Accept.Invitation.GroupID -// } -// } else { -// return false, 208, errors.New("InviteeUserIDList is null").Error(), nil, nil -// } -// msg.ClientMsgID = utils.GetMsgID(payload.Accept.OpUserID) -// return true, 0, "", &resp, &msg -// case *open_im_sdk.SignalReq_HungUp: -// case *open_im_sdk.SignalReq_Reject: -// reject := open_im_sdk.SignalResp_Reject{&open_im_sdk.SignalRejectReply{}} -// resp.Payload = &reject -// msg.OfflinePushInfo = payload.Reject.OfflinePushInfo -// msg.SendID = payload.Reject.OpUserID -// msg.SenderPlatformID = payload.Reject.Invitation.PlatformID -// msg.SessionType = payload.Reject.Invitation.SessionType -// if len(payload.Reject.Invitation.InviteeUserIDList) > 0 { -// switch payload.Reject.Invitation.SessionType { -// case constant.SingleChatType: -// msg.RecvID = payload.Reject.Invitation.InviterUserID -// case constant.GroupChatType: -// msg.GroupID = payload.Reject.Invitation.GroupID -// } -// } else { -// return false, 209, errors.New("InviteeUserIDList is null").Error(), nil, nil -// } -// msg.ClientMsgID = utils.GetMsgID(payload.Reject.OpUserID) -// return true, 0, "", &resp, &msg -// } -// return false, 210, errors.New("InviteeUserIDList is null").Error(), nil, nil -//} diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 7d59640d5..c8beb8a00 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -11,6 +11,7 @@ import ( "Open_IM/pkg/common/token_verify" cp "Open_IM/pkg/common/utils" "Open_IM/pkg/grpc-etcdv3/getcdv3" + pbCache "Open_IM/pkg/proto/cache" pbGroup "Open_IM/pkg/proto/group" open_im_sdk "Open_IM/pkg/proto/sdk_ws" pbUser "Open_IM/pkg/proto/user" @@ -136,12 +137,12 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR } okUserIDList = append(okUserIDList, user.UserID) - err = db.DB.AddGroupMember(groupId, user.UserID) - if err != nil { - log.NewError(req.OperationID, "add mongo group member failed, db.DB.AddGroupMember failed ", err.Error()) - } + // mongoDB method + //err = db.DB.AddGroupMember(groupId, user.UserID) + //if err != nil { + // log.NewError(req.OperationID, "add mongo group member failed, db.DB.AddGroupMember failed ", err.Error()) + //} } - resp := &pbGroup.CreateGroupResp{GroupInfo: &open_im_sdk.GroupInfo{}} group, err := imdb.GetGroupInfoByGroupID(groupId) if err != nil { @@ -160,8 +161,24 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR } resp.GroupInfo.OwnerUserID = req.OwnerUserID - log.NewInfo(req.OperationID, "rpc CreateGroup return ", resp.String()) + addGroupMemberToCacheReq := &pbCache.AddGroupMemberToCacheReq{ + UserIDList: okUserIDList, + GroupID: req.GroupInfo.GroupID, + OperationID: req.OperationID, + } + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + cacheClient := pbCache.NewCacheClient(etcdConn) + cacheResp, err := cacheClient.AddGroupMemberToCache(context.Background(), addGroupMemberToCacheReq) + if err != nil { + log.NewError(req.OperationID, "AddBlackUserToCache rpc call failed ", err.Error()) + return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil + } + if cacheResp.CommonResp.ErrCode != 0 { + log.NewError(req.OperationID, "AddBlackUserToCache rpc logic call failed ", cacheResp.String()) + return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil + } + log.NewInfo(req.OperationID, "rpc CreateGroup return ", resp.String()) chat.GroupCreatedNotification(req.OperationID, req.OpUserID, groupId, okUserIDList) return resp, nil } @@ -307,6 +324,24 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String(), v) } } + + addGroupMemberToCacheReq := &pbCache.AddGroupMemberToCacheReq{ + UserIDList: okUserIDList, + GroupID: req.GroupID, + OperationID: req.OperationID, + } + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + cacheClient := pbCache.NewCacheClient(etcdConn) + cacheResp, err := cacheClient.AddGroupMemberToCache(context.Background(), addGroupMemberToCacheReq) + if err != nil { + log.NewError(req.OperationID, "AddBlackUserToCache rpc call failed ", err.Error()) + return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil + } + if cacheResp.CommonResp.ErrCode != 0 { + log.NewError(req.OperationID, "AddBlackUserToCache rpc logic call failed ", cacheResp.String()) + return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil + } + chat.MemberInvitedNotification(req.OperationID, req.GroupID, req.OpUserID, req.Reason, okUserIDList) resp.ErrCode = 0 log.NewInfo(req.OperationID, "InviteUserToGroup rpc return ", resp.String()) @@ -450,6 +485,24 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String(), v) } } + + reduceGroupMemberFromCacheReq := &pbCache.ReduceGroupMemberFromCacheReq{ + UserIDList: okUserIDList, + GroupID: req.GroupID, + OperationID: req.OperationID, + } + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + cacheClient := pbCache.NewCacheClient(etcdConn) + cacheResp, err := cacheClient.ReduceGroupMemberFromCache(context.Background(), reduceGroupMemberFromCacheReq) + if err != nil { + log.NewError(req.OperationID, "ReduceGroupMemberFromCache rpc call failed ", err.Error()) + return &pbGroup.KickGroupMemberResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil + } + if cacheResp.CommonResp.ErrCode != 0 { + log.NewError(req.OperationID, "ReduceGroupMemberFromCache rpc logic call failed ", cacheResp.String()) + return &pbGroup.KickGroupMemberResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil + } + chat.MemberKickedNotification(req, okUserIDList) log.NewInfo(req.OperationID, "GetGroupMemberList rpc return ", resp.String()) return &resp, nil @@ -691,22 +744,24 @@ func (s *groupServer) QuitGroup(ctx context.Context, req *pbGroup.QuitGroupReq) } else { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String()) } - //reduceGroupMemberFromCacheReq := &pbCache.ReduceGroupMemberFromCacheReq{ - // UserIDList: []string{req.OpUserID}, - // GroupID: req.GroupID, - // OperationID: req.OperationID, - //} - //etcdConn = getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) - //cacheClient := pbCache.NewCacheClient(etcdConn) - //respCachePb, err := cacheClient.ReduceGroupMemberFromCache(context.Background(), reduceGroupMemberFromCacheReq) - //if err != nil { - // log.NewError(req.OperationID, utils.GetSelfFuncName(), "AddFriendToCache failed", err.Error(), reduceGroupMemberFromCacheReq.String()) - // return &pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrServer.ErrCode, ErrMsg: constant.ErrServer.ErrMsg}}, nil - //} - //if respPb.CommonResp.ErrCode != 0 { - // log.NewError(req.OperationID, utils.GetSelfFuncName(), "AddFriendToCache failed", reduceGroupMemberFromCacheReq.String()) - // return &pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode:respCachePb.CommonResp.ErrCode, ErrMsg: respCachePb.CommonResp.ErrMsg}}, nil - //} + + reduceGroupMemberFromCacheReq := &pbCache.ReduceGroupMemberFromCacheReq{ + UserIDList: []string{req.OpUserID}, + GroupID: req.GroupID, + OperationID: req.OperationID, + } + etcdConnCache := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + cacheClient := pbCache.NewCacheClient(etcdConnCache) + cacheResp, err := cacheClient.ReduceGroupMemberFromCache(context.Background(), reduceGroupMemberFromCacheReq) + if err != nil { + log.NewError(req.OperationID, "ReduceGroupMemberFromCache rpc call failed ", err.Error()) + return &pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil + } + if cacheResp.CommonResp.ErrCode != 0 { + log.NewError(req.OperationID, "ReduceGroupMemberFromCache rpc logic call failed ", cacheResp.String()) + return &pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil + } + chat.MemberQuitNotification(req) log.NewInfo(req.OperationID, "rpc QuitGroup return ", pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}) return &pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil @@ -1047,9 +1102,26 @@ func (s *groupServer) RemoveGroupMembersCMS(_ context.Context, req *pbGroup.Remo log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String(), v) } } + + reduceGroupMemberFromCacheReq := &pbCache.ReduceGroupMemberFromCacheReq{ + UserIDList: resp.Success, + GroupID: req.GroupId, + OperationID: req.OperationID, + } + etcdConnCache := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + cacheClient := pbCache.NewCacheClient(etcdConnCache) + cacheResp, err := cacheClient.ReduceGroupMemberFromCache(context.Background(), reduceGroupMemberFromCacheReq) + if err != nil { + log.NewError(req.OperationID, "ReduceGroupMemberFromCache rpc call failed ", err.Error()) + return resp, http.WrapError(constant.ErrDB) + } + if cacheResp.CommonResp.ErrCode != 0 { + log.NewError(req.OperationID, "ReduceGroupMemberFromCache rpc logic call failed ", cacheResp.String()) + return resp, http.WrapError(constant.ErrDB) + } + chat.MemberKickedNotification(reqKick, resp.Success) - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "success: ", resp.Success) - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "failed: ", resp.Failed) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) return resp, nil } @@ -1086,6 +1158,24 @@ func (s *groupServer) AddGroupMembersCMS(_ context.Context, req *pbGroup.AddGrou resp.Success = append(resp.Success, userId) } } + + addGroupMemberToCacheReq := &pbCache.AddGroupMemberToCacheReq{ + UserIDList: resp.Success, + GroupID: req.GroupId, + OperationID: req.OperationId, + } + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + cacheClient := pbCache.NewCacheClient(etcdConn) + cacheResp, err := cacheClient.AddGroupMemberToCache(context.Background(), addGroupMemberToCacheReq) + if err != nil { + log.NewError(req.OperationId, "AddBlackUserToCache rpc call failed ", err.Error()) + return resp, http.WrapError(constant.ErrDB) + } + if cacheResp.CommonResp.ErrCode != 0 { + log.NewError(req.OperationId, "AddBlackUserToCache rpc logic call failed ", cacheResp.String()) + return resp, http.WrapError(constant.ErrDB) + } + chat.MemberInvitedNotification(req.OperationId, req.GroupId, req.OpUserId, "admin add you to group", resp.Success) return resp, nil } diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index bb8ccd700..452846799 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -31,6 +31,7 @@ func callbackBeforeSendSingleMsg(msg *pbChat.SendMsgReq) (canSend bool, err erro if !config.Config.Callback.CallbackBeforeSendSingleMsg.Enable { return true, nil } + log.NewDebug(msg.OperationID, utils.GetSelfFuncName(), msg) commonCallbackReq := copyCallbackCommonReqStruct(msg) commonCallbackReq.CallbackCommand = constant.CallbackBeforeSendSingleMsgCommand diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index bd4998335..5b8dff44b 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -106,7 +106,7 @@ type config struct { RpcGetTokenPort []int `yaml:"rpcGetTokenPort"` } RpcRegisterName struct { - OpenImStatisticsName string `yaml:"OpenImStatisticsName"` + OpenImStatisticsName string `yaml:"openImStatisticsName"` OpenImUserName string `yaml:"openImUserName"` OpenImFriendName string `yaml:"openImFriendName"` OpenImOfflineMessageName string `yaml:"openImOfflineMessageName"` From bbc3f5c19ac3e816659add49ac3c2337b249ae6b Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Sat, 7 May 2022 11:39:27 +0800 Subject: [PATCH 034/143] cache --- internal/rpc/msg/send_msg.go | 46 +++++++++++++++++++++--------------- pkg/common/db/redisModel.go | 4 ++-- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 013a32bd3..1c297c3e5 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -7,6 +7,7 @@ import ( "Open_IM/pkg/common/log" "Open_IM/pkg/grpc-etcdv3/getcdv3" cacheRpc "Open_IM/pkg/proto/cache" + pbCache "Open_IM/pkg/proto/cache" pbChat "Open_IM/pkg/proto/chat" pbConversation "Open_IM/pkg/proto/conversation" pbGroup "Open_IM/pkg/proto/group" @@ -216,28 +217,35 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendGroupMsg result", canSend, "end rpc and return") return returnMsg(&replay, pb, 201, "callbackBeforeSendGroupMsg result stop rpc and return", "", 0) } - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) - client := pbGroup.NewGroupClient(etcdConn) - req := &pbGroup.GetGroupAllMemberReq{ - GroupID: pb.MsgData.GroupID, - OperationID: pb.OperationID, - } - reply, err := client.GetGroupAllMember(context.Background(), req) + //etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + //client := pbGroup.NewGroupClient(etcdConn) + //req := &pbGroup.GetGroupAllMemberReq{ + // GroupID: pb.MsgData.GroupID, + // OperationID: pb.OperationID, + //} + //reply, err := client.GetGroupAllMember(context.Background(), req) + //if err != nil { + // log.Error(pb.Token, pb.OperationID, "rpc send_msg getGroupInfo failed, err = %s", err.Error()) + // return returnMsg(&replay, pb, 201, err.Error(), "", 0) + //} + //if reply.ErrCode != 0 { + // log.Error(pb.Token, pb.OperationID, "rpc send_msg getGroupInfo failed, err = %s", reply.ErrMsg) + // return returnMsg(&replay, pb, reply.ErrCode, reply.ErrMsg, "", 0) + //} + getGroupMemberIDListFromCacheReq := &pbCache.GetGroupMemberIDListFromCacheReq{OperationID: pb.OperationID, GroupID: pb.MsgData.GroupID} + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + client := pbCache.NewCacheClient(etcdConn) + cacheResp, err := client.GetGroupMemberIDListFromCache(context.Background(), getGroupMemberIDListFromCacheReq) if err != nil { - log.Error(pb.Token, pb.OperationID, "rpc send_msg getGroupInfo failed, err = %s", err.Error()) - return returnMsg(&replay, pb, 201, err.Error(), "", 0) + log.NewError(pb.OperationID, "GetGroupMemberIDListFromCache rpc call failed ", err.Error()) + return returnMsg(&replay, pb, 201, "GetGroupMemberIDListFromCache failed", "", 0) } - if reply.ErrCode != 0 { - log.Error(pb.Token, pb.OperationID, "rpc send_msg getGroupInfo failed, err = %s", reply.ErrMsg) - return returnMsg(&replay, pb, reply.ErrCode, reply.ErrMsg, "", 0) + if cacheResp.CommonResp.ErrCode != 0 { + log.NewError(pb.OperationID, "GetGroupMemberIDListFromCache rpc logic call failed ", cacheResp.String()) + return returnMsg(&replay, pb, 201, "GetGroupMemberIDListFromCache logic failed", "", 0) } - memberUserIDList := func(all []*sdk_ws.GroupMemberFullInfo) (result []string) { - for _, v := range all { - result = append(result, v.UserID) - } - return result - }(reply.MemberList) - log.Debug(pb.OperationID, "GetGroupAllMember userID list", memberUserIDList) + memberUserIDList := cacheResp.UserIDList + log.Debug(pb.OperationID, "GetGroupAllMember userID list", cacheResp.UserIDList) var addUidList []string switch pb.MsgData.ContentType { case constant.MemberKickedNotification: diff --git a/pkg/common/db/redisModel.go b/pkg/common/db/redisModel.go index d39e2a57d..9996ea356 100644 --- a/pkg/common/db/redisModel.go +++ b/pkg/common/db/redisModel.go @@ -233,7 +233,7 @@ func (d *DataBases) AddGroupMemberToCache(groupID string, userIDList ...string) for _, id := range userIDList { IDList = append(IDList, id) } - _, err := d.Exec("SADD", blackListCache+groupID, IDList...) + _, err := d.Exec("SADD", groupCache+groupID, IDList...) return err } @@ -242,7 +242,7 @@ func (d *DataBases) ReduceGroupMemberFromCache(groupID string, userIDList ...str for _, id := range userIDList { IDList = append(IDList, id) } - _, err := d.Exec("SREM", blackListCache+groupID, IDList...) + _, err := d.Exec("SREM", groupCache+groupID, IDList...) return err } From 65a4b38ee52014bcab65b92c8318c0bc80546802 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Sat, 7 May 2022 11:42:47 +0800 Subject: [PATCH 035/143] cache --- internal/rpc/group/group.go | 8 ++++---- internal/rpc/msg/send_msg.go | 16 ---------------- 2 files changed, 4 insertions(+), 20 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index c8beb8a00..4266631f8 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -170,11 +170,11 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR cacheClient := pbCache.NewCacheClient(etcdConn) cacheResp, err := cacheClient.AddGroupMemberToCache(context.Background(), addGroupMemberToCacheReq) if err != nil { - log.NewError(req.OperationID, "AddBlackUserToCache rpc call failed ", err.Error()) + log.NewError(req.OperationID, "AddGroupMemberToCache rpc call failed ", err.Error()) return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil } if cacheResp.CommonResp.ErrCode != 0 { - log.NewError(req.OperationID, "AddBlackUserToCache rpc logic call failed ", cacheResp.String()) + log.NewError(req.OperationID, "AddGroupMemberToCache rpc logic call failed ", cacheResp.String()) return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil } @@ -334,11 +334,11 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite cacheClient := pbCache.NewCacheClient(etcdConn) cacheResp, err := cacheClient.AddGroupMemberToCache(context.Background(), addGroupMemberToCacheReq) if err != nil { - log.NewError(req.OperationID, "AddBlackUserToCache rpc call failed ", err.Error()) + log.NewError(req.OperationID, "AddGroupMemberToCache rpc call failed ", err.Error()) return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil } if cacheResp.CommonResp.ErrCode != 0 { - log.NewError(req.OperationID, "AddBlackUserToCache rpc logic call failed ", cacheResp.String()) + log.NewError(req.OperationID, "AddGroupMemberToCache rpc logic call failed ", cacheResp.String()) return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil } diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 1c297c3e5..b8af3b145 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -10,7 +10,6 @@ import ( pbCache "Open_IM/pkg/proto/cache" pbChat "Open_IM/pkg/proto/chat" pbConversation "Open_IM/pkg/proto/conversation" - pbGroup "Open_IM/pkg/proto/group" sdk_ws "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" "context" @@ -217,21 +216,6 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S log.NewDebug(pb.OperationID, utils.GetSelfFuncName(), "callbackBeforeSendGroupMsg result", canSend, "end rpc and return") return returnMsg(&replay, pb, 201, "callbackBeforeSendGroupMsg result stop rpc and return", "", 0) } - //etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) - //client := pbGroup.NewGroupClient(etcdConn) - //req := &pbGroup.GetGroupAllMemberReq{ - // GroupID: pb.MsgData.GroupID, - // OperationID: pb.OperationID, - //} - //reply, err := client.GetGroupAllMember(context.Background(), req) - //if err != nil { - // log.Error(pb.Token, pb.OperationID, "rpc send_msg getGroupInfo failed, err = %s", err.Error()) - // return returnMsg(&replay, pb, 201, err.Error(), "", 0) - //} - //if reply.ErrCode != 0 { - // log.Error(pb.Token, pb.OperationID, "rpc send_msg getGroupInfo failed, err = %s", reply.ErrMsg) - // return returnMsg(&replay, pb, reply.ErrCode, reply.ErrMsg, "", 0) - //} getGroupMemberIDListFromCacheReq := &pbCache.GetGroupMemberIDListFromCacheReq{OperationID: pb.OperationID, GroupID: pb.MsgData.GroupID} etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) client := pbCache.NewCacheClient(etcdConn) From bb07c3ab459f2a941f7421854104f1d99416554c Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 7 May 2022 11:55:19 +0800 Subject: [PATCH 036/143] add err log --- internal/api/auth/auth.go | 4 +- internal/api/friend/friend.go | 150 +++++++------- internal/api/group/group.go | 190 ++++++++++++------ internal/api/manage/management_user.go | 39 ++-- internal/api/office/tag.go | 84 ++++++-- internal/api/office/work_moments.go | 106 +++++++--- .../api/third/minio_storage_credential.go | 22 +- .../third/tencent_cloud_storage_credential.go | 12 +- internal/api/user/user.go | 69 +++++-- pkg/common/token_verify/jwt_token.go | 6 +- 10 files changed, 458 insertions(+), 224 deletions(-) diff --git a/internal/api/auth/auth.go b/internal/api/auth/auth.go index 682ba4c30..ea01a6944 100644 --- a/internal/api/auth/auth.go +++ b/internal/api/auth/auth.go @@ -38,13 +38,13 @@ func UserRegister(c *gin.Context) { client := rpc.NewAuthClient(etcdConn) reply, err := client.UserRegister(context.Background(), req) if err != nil { - errMsg := req.OperationID + " " + "client.UserRegister failed " + err.Error() + req.String() + errMsg := req.OperationID + " " + "UserRegister failed " + err.Error() + req.String() log.NewError(req.OperationID, errMsg) c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } if reply.CommonResp.ErrCode != 0 { - errMsg := req.OperationID + " " + " client.UserRegister failed " + reply.CommonResp.ErrMsg + req.String() + errMsg := req.OperationID + " " + " UserRegister failed " + reply.CommonResp.ErrMsg + req.String() log.NewError(req.OperationID, errMsg) c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return diff --git a/internal/api/friend/friend.go b/internal/api/friend/friend.go index 054878c0c..58cf37f7f 100644 --- a/internal/api/friend/friend.go +++ b/internal/api/friend/friend.go @@ -26,10 +26,12 @@ func AddBlack(c *gin.Context) { req := &rpc.AddBlacklistReq{CommID: &rpc.CommID{}} utils.CopyStructFields(req.CommID, ¶ms) var ok bool - ok, req.CommID.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) + var errInfo string + ok, req.CommID.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) if !ok { - log.NewError(req.CommID.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.CommID.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } log.NewInfo(params.OperationID, "AddBlacklist args ", req.String()) @@ -57,12 +59,15 @@ func ImportFriend(c *gin.Context) { req := &rpc.ImportFriendReq{} utils.CopyStructFields(req, ¶ms) var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, "ImportFriend args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName) @@ -96,13 +101,17 @@ func AddFriend(c *gin.Context) { req := &rpc.AddFriendReq{CommID: &rpc.CommID{}} utils.CopyStructFields(req.CommID, ¶ms.ParamsCommFriend) req.ReqMsg = params.ReqMsg + var ok bool - ok, req.CommID.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) + var errInfo string + ok, req.CommID.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) if !ok { - log.NewError(req.CommID.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.CommID.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.CommID.OperationID, "AddFriend args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName) @@ -130,13 +139,17 @@ func AddFriendResponse(c *gin.Context) { utils.CopyStructFields(req.CommID, ¶ms.ParamsCommFriend) req.HandleMsg = params.HandleMsg req.HandleResult = params.Flag + var ok bool - ok, req.CommID.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) + var errInfo string + ok, req.CommID.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) if !ok { - log.NewError(req.CommID.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.CommID.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + utils.CopyStructFields(req, ¶ms) log.NewInfo(req.CommID.OperationID, "AddFriendResponse args ", req.String()) @@ -163,13 +176,17 @@ func DeleteFriend(c *gin.Context) { } req := &rpc.DeleteFriendReq{CommID: &rpc.CommID{}} utils.CopyStructFields(req.CommID, ¶ms.ParamsCommFriend) + var ok bool - ok, req.CommID.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) + var errInfo string + ok, req.CommID.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) if !ok { - log.NewError(req.CommID.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.CommID.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.CommID.OperationID, "DeleteFriend args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName) @@ -195,13 +212,17 @@ func GetBlacklist(c *gin.Context) { } req := &rpc.GetBlacklistReq{CommID: &rpc.CommID{}} utils.CopyStructFields(req.CommID, ¶ms) + var ok bool - ok, req.CommID.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) + var errInfo string + ok, req.CommID.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) if !ok { - log.NewError(req.CommID.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.CommID.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.CommID.OperationID, "GetBlacklist args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName) @@ -234,13 +255,17 @@ func SetFriendRemark(c *gin.Context) { req := &rpc.SetFriendRemarkReq{CommID: &rpc.CommID{}} utils.CopyStructFields(req.CommID, ¶ms.ParamsCommFriend) req.Remark = params.Remark + var ok bool - ok, req.CommID.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) + var errInfo string + ok, req.CommID.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) if !ok { - log.NewError(req.CommID.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.CommID.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.CommID.OperationID, "SetFriendComment args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName) @@ -266,11 +291,14 @@ func RemoveBlack(c *gin.Context) { } req := &rpc.RemoveBlacklistReq{CommID: &rpc.CommID{}} utils.CopyStructFields(req.CommID, ¶ms.ParamsCommFriend) + var ok bool - ok, req.CommID.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) + var errInfo string + ok, req.CommID.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) if !ok { - log.NewError(req.CommID.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.CommID.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } @@ -297,13 +325,17 @@ func IsFriend(c *gin.Context) { } req := &rpc.IsFriendReq{CommID: &rpc.CommID{}} utils.CopyStructFields(req.CommID, ¶ms.ParamsCommFriend) + var ok bool - ok, req.CommID.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) + var errInfo string + ok, req.CommID.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) if !ok { - log.NewError(req.CommID.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.CommID.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.CommID.OperationID, "IsFriend args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName) @@ -321,40 +353,6 @@ func IsFriend(c *gin.Context) { c.JSON(http.StatusOK, resp) } -// -//func GetFriendsInfo(c *gin.Context) { -// params := api.GetFriendsInfoReq{} -// 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.GetFriendsInfoReq{} -// utils.CopyStructFields(req.CommID, params) -// var ok bool -// ok, req.CommID.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token")) -// if !ok { -// log.NewError(req.CommID.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) -// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) -// return -// } -// log.NewInfo(req.CommID.OperationID, "GetFriendsInfo args ", req.String()) -// -// etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName) -// client := rpc.NewFriendClient(etcdConn) -// RpcResp, err := client.GetFriendsInfo(context.Background(), req) -// if err != nil { -// log.NewError(req.CommID.OperationID, "GetFriendsInfo failed ", err.Error(), req.String()) -// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call search friend rpc server failed"}) -// return -// } -// -// resp := api.GetFriendsInfoResp{CommResp:api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}} -// utils.CopyStructFields(&resp, RpcResp) -// c.JSON(http.StatusOK, resp) -// log.NewInfo(req.CommID.OperationID, "GetFriendsInfo api return ", resp) -//} - func GetFriendList(c *gin.Context) { params := api.GetFriendListReq{} if err := c.BindJSON(¶ms); err != nil { @@ -364,13 +362,17 @@ func GetFriendList(c *gin.Context) { } req := &rpc.GetFriendListReq{CommID: &rpc.CommID{}} utils.CopyStructFields(req.CommID, ¶ms) + var ok bool - ok, req.CommID.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) + var errInfo string + ok, req.CommID.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) if !ok { - log.NewError(req.CommID.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.CommID.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.CommID.OperationID, "GetFriendList args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName) @@ -398,13 +400,17 @@ func GetFriendApplyList(c *gin.Context) { } req := &rpc.GetFriendApplyListReq{CommID: &rpc.CommID{}} utils.CopyStructFields(req.CommID, ¶ms) + var ok bool - ok, req.CommID.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) + var errInfo string + ok, req.CommID.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) if !ok { - log.NewError(req.CommID.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.CommID.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.CommID.OperationID, "GetFriendApplyList args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName) @@ -432,13 +438,17 @@ func GetSelfFriendApplyList(c *gin.Context) { } req := &rpc.GetSelfApplyListReq{CommID: &rpc.CommID{}} utils.CopyStructFields(req.CommID, ¶ms) + var ok bool - ok, req.CommID.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) + var errInfo string + ok, req.CommID.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID) if !ok { - log.NewError(req.CommID.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.CommID.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.CommID.OperationID, "GetSelfApplyList args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName) diff --git a/internal/api/group/group.go b/internal/api/group/group.go index aee3c4b58..598f3f473 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -29,11 +29,14 @@ func KickGroupMember(c *gin.Context) { req := &rpc.KickGroupMemberReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } @@ -71,14 +74,17 @@ func GetGroupMembersInfo(c *gin.Context) { } req := &rpc.GetGroupMembersInfoReq{} utils.CopyStructFields(req, params) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - //c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) - api.SetErrCodeMsg(c, http.StatusInternalServerError) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, "GetGroupMembersInfo args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -106,13 +112,17 @@ func GetGroupMemberList(c *gin.Context) { } req := &rpc.GetGroupMemberListReq{} utils.CopyStructFields(req, params) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, "GetGroupMemberList args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -141,13 +151,17 @@ func GetGroupAllMemberList(c *gin.Context) { } req := &rpc.GetGroupAllMemberReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, "GetGroupAllMember args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -174,13 +188,17 @@ func GetJoinedGroupList(c *gin.Context) { } req := &rpc.GetJoinedGroupListReq{} utils.CopyStructFields(req, params) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, "GetJoinedGroupList args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -207,13 +225,17 @@ func InviteUserToGroup(c *gin.Context) { } req := &rpc.InviteUserToGroupReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, "InviteUserToGroup args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -252,13 +274,17 @@ func CreateGroup(c *gin.Context) { for _, v := range params.MemberList { req.InitMemberList = append(req.InitMemberList, &rpc.GroupAddMemberInfo{UserID: v.UserID, RoleLevel: v.RoleLevel}) } + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + req.OwnerUserID = params.OwnerUserID req.OperationID = params.OperationID log.NewInfo(req.OperationID, "CreateGroup args ", req.String()) @@ -355,13 +381,17 @@ func GetGroupsInfo(c *gin.Context) { } req := &rpc.GetGroupsInfoReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, "GetGroupsInfo args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) client := rpc.NewGroupClient(etcdConn) @@ -388,13 +418,17 @@ func ApplicationGroupResponse(c *gin.Context) { } req := &rpc.GroupApplicationResponseReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, "ApplicationGroupResponse args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -420,13 +454,17 @@ func JoinGroup(c *gin.Context) { } req := &rpc.JoinGroupReq{} utils.CopyStructFields(req, params) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, "JoinGroup args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) client := rpc.NewGroupClient(etcdConn) @@ -451,13 +489,17 @@ func QuitGroup(c *gin.Context) { } req := &rpc.QuitGroupReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, "QuitGroup args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -483,13 +525,17 @@ func SetGroupInfo(c *gin.Context) { req := &rpc.SetGroupInfoReq{GroupInfo: &open_im_sdk.GroupInfo{}} utils.CopyStructFields(req.GroupInfo, ¶ms) req.OperationID = params.OperationID + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, "SetGroupInfo args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -514,13 +560,17 @@ func TransferGroupOwner(c *gin.Context) { } req := &rpc.TransferGroupOwnerReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, "TransferGroupOwner args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -546,13 +596,17 @@ func DismissGroup(c *gin.Context) { } req := &rpc.DismissGroupReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -578,13 +632,17 @@ func MuteGroupMember(c *gin.Context) { } req := &rpc.MuteGroupMemberReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -610,13 +668,17 @@ func CancelMuteGroupMember(c *gin.Context) { } req := &rpc.CancelMuteGroupMemberReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -642,13 +704,17 @@ func MuteGroup(c *gin.Context) { } req := &rpc.MuteGroupReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -674,13 +740,17 @@ func CancelMuteGroup(c *gin.Context) { } req := &rpc.CancelMuteGroupReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -708,13 +778,17 @@ func SetGroupMemberNickname(c *gin.Context) { } req := &rpc.SetGroupMemberNicknameReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " api args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) diff --git a/internal/api/manage/management_user.go b/internal/api/manage/management_user.go index 6fca39732..6fc9d161d 100644 --- a/internal/api/manage/management_user.go +++ b/internal/api/manage/management_user.go @@ -30,13 +30,17 @@ func DeleteUser(c *gin.Context) { } req := &rpc.DeleteUsersReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(params.OperationID, "DeleteUser args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := rpc.NewUserClient(etcdConn) @@ -62,13 +66,17 @@ func GetAllUsersUid(c *gin.Context) { } req := &rpc.GetAllUserIDReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(params.OperationID, "GetAllUsersUid args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := rpc.NewUserClient(etcdConn) @@ -94,13 +102,17 @@ func AccountCheck(c *gin.Context) { } req := &rpc.AccountCheckReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(params.OperationID, "AccountCheck args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := rpc.NewUserClient(etcdConn) @@ -127,11 +139,14 @@ func GetUsersOnlineStatus(c *gin.Context) { } req := &pbRelay.GetUsersOnlineStatusReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } diff --git a/internal/api/office/tag.go b/internal/api/office/tag.go index 2471ddd87..630517593 100644 --- a/internal/api/office/tag.go +++ b/internal/api/office/tag.go @@ -27,12 +27,18 @@ func GetUserTags(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) return } - ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var errInfo string + var userID string + ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + reqPb.UserID = userID reqPb.OperationID = req.OperationID etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) @@ -69,12 +75,18 @@ func CreateTag(c *gin.Context) { if err := utils.CopyStructFields(&reqPb, req); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var errInfo string + var userID string + ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + reqPb.UserID = userID etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) client := pbOffice.NewOfficeServiceClient(etcdConn) @@ -105,12 +117,18 @@ func DeleteTag(c *gin.Context) { if err := utils.CopyStructFields(&reqPb, req); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var errInfo string + var userID string + ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + reqPb.UserID = userID etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) client := pbOffice.NewOfficeServiceClient(etcdConn) @@ -141,12 +159,18 @@ func SetTag(c *gin.Context) { if err := utils.CopyStructFields(&reqPb, req); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var errInfo string + var userID string + ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + reqPb.UserID = userID etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) client := pbOffice.NewOfficeServiceClient(etcdConn) @@ -177,12 +201,18 @@ func SendMsg2Tag(c *gin.Context) { if err := utils.CopyStructFields(&reqPb, req); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var errInfo string + var userID string + ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + reqPb.SendID = userID etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) client := pbOffice.NewOfficeServiceClient(etcdConn) @@ -210,12 +240,18 @@ func GetTagSendLogs(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) return } - ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var errInfo string + var userID string + ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + reqPb.UserID = userID reqPb.OperationID = req.OperationID reqPb.Pagination = &pbCommon.RequestPagination{ @@ -255,12 +291,18 @@ func GetUserTagByID(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) return } - ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var errInfo string + var userID string + ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + reqPb.UserID = userID reqPb.OperationID = req.OperationID reqPb.TagID = req.TagID diff --git a/internal/api/office/work_moments.go b/internal/api/office/work_moments.go index 46d5eb9dd..82716a4f8 100644 --- a/internal/api/office/work_moments.go +++ b/internal/api/office/work_moments.go @@ -28,12 +28,18 @@ func CreateOneWorkMoment(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var errInfo string + var userID string + ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + if err := utils.CopyStructFields(&reqPb, req); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } @@ -67,12 +73,18 @@ func DeleteOneWorkMoment(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var errInfo string + var userID string + ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + if err := utils.CopyStructFields(&reqPb, req); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } @@ -105,12 +117,18 @@ func LikeOneWorkMoment(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var errInfo string + var userID string + ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + if err := utils.CopyStructFields(&reqPb, req); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } @@ -143,12 +161,18 @@ func CommentOneWorkMoment(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var errInfo string + var userID string + ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + if err := utils.CopyStructFields(&reqPb, req); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } @@ -184,13 +208,17 @@ func DeleteComment(c *gin.Context) { if err := utils.CopyStructFields(&reqPb, req); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), err.Error()) } + var ok bool - ok, reqPb.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, reqPb.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) client := pbOffice.NewOfficeServiceClient(etcdConn) respPb, err := client.DeleteComment(context.Background(), &reqPb) @@ -219,12 +247,18 @@ func GetWorkMomentByID(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var errInfo string + var userID string + ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + reqPb.OperationID = req.OperationID reqPb.OpUserID = userID reqPb.WorkMomentID = req.WorkMomentID @@ -261,12 +295,18 @@ func GetUserWorkMoments(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - ok, opUserID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var errInfo string + var opUserID string + ok, opUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + reqPb.OperationID = req.OperationID reqPb.Pagination = &pbCommon.RequestPagination{ PageNumber: req.PageNumber, @@ -353,12 +393,18 @@ func GetUserFriendWorkMoments(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var errInfo string + var userID string + ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + reqPb.OperationID = req.OperationID reqPb.Pagination = &pbCommon.RequestPagination{ PageNumber: req.PageNumber, @@ -444,12 +490,18 @@ func SetUserWorkMomentsLevel(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var errInfo string + var userID string + ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + if err := utils.CopyStructFields(&reqPb, req); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index f9f4c078d..3df001e18 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -33,12 +33,17 @@ func MinioUploadFile(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) return } - ok, _ := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var errInfo string + ok, _, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError("", utils.GetSelfFuncName(), "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), req) switch req.FileType { // videoType upload snapShot @@ -101,12 +106,17 @@ func MinioStorageCredential(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) return } - ok, _ := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var errInfo string + ok, _, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError("", utils.GetSelfFuncName(), "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + var stsOpts cr.STSAssumeRoleOptions stsOpts.AccessKey = config.Config.Credential.Minio.AccessKeyID stsOpts.SecretKey = config.Config.Credential.Minio.SecretAccessKey diff --git a/internal/api/third/tencent_cloud_storage_credential.go b/internal/api/third/tencent_cloud_storage_credential.go index ed293791e..871d92ae0 100644 --- a/internal/api/third/tencent_cloud_storage_credential.go +++ b/internal/api/third/tencent_cloud_storage_credential.go @@ -22,12 +22,18 @@ func TencentCloudStorageCredential(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) return } - ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var userID string + var errInfo string + ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, "TencentCloudStorageCredential args ", userID) cli := sts.NewClient( diff --git a/internal/api/user/user.go b/internal/api/user/user.go index 41042099e..f9bb9cdae 100644 --- a/internal/api/user/user.go +++ b/internal/api/user/user.go @@ -28,13 +28,17 @@ func GetUsersInfoFromCache(c *gin.Context) { } req := &rpc.GetUserInfoReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(params.OperationID, "GetUserInfo args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) @@ -174,13 +178,17 @@ func GetFriendIDListFromCache(c *gin.Context) { return } reqPb.OperationID = req.OperationID + var ok bool - ok, reqPb.UserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, reqPb.UserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) client := cacheRpc.NewCacheClient(etcdConn) respPb, err := client.GetFriendIDListFromCache(context.Background(), &reqPb) @@ -207,13 +215,17 @@ func GetBlackIDListFromCache(c *gin.Context) { return } reqPb.OperationID = req.OperationID + var ok bool - ok, reqPb.UserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, reqPb.UserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) client := cacheRpc.NewCacheClient(etcdConn) respPb, err := client.GetBlackIDListFromCache(context.Background(), &reqPb) @@ -236,13 +248,17 @@ func GetUsersInfo(c *gin.Context) { } req := &rpc.GetUserInfoReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(params.OperationID, "GetUserInfo args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) @@ -274,13 +290,14 @@ func UpdateUserInfo(c *gin.Context) { } req := &rpc.UpdateUserInfoReq{UserInfo: &open_im_sdk.UserInfo{}} utils.CopyStructFields(req.UserInfo, ¶ms) - req.OperationID = params.OperationID var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } log.NewInfo(params.OperationID, "UpdateUserInfo args ", req.String()) @@ -308,13 +325,17 @@ func GetSelfUserInfo(c *gin.Context) { req := &rpc.GetUserInfoReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + req.UserIDList = append(req.UserIDList, req.OpUserID) log.NewInfo(params.OperationID, "GetUserInfo args ", req.String()) @@ -347,13 +368,17 @@ func GetUsersOnlineStatus(c *gin.Context) { } req := &pbRelay.GetUsersOnlineStatusReq{} utils.CopyStructFields(req, ¶ms) + var ok bool - ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + var errInfo string + ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + if len(config.Config.Manager.AppManagerUid) == 0 { log.NewError(req.OperationID, "Manager == 0") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "Manager == 0"}) diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index 876f4e847..162283f87 100644 --- a/pkg/common/token_verify/jwt_token.go +++ b/pkg/common/token_verify/jwt_token.go @@ -129,13 +129,13 @@ func CheckAccess(OpUserID string, OwnerUserID string) bool { return false } -func GetUserIDFromToken(token string, operationID string) (bool, string) { +func GetUserIDFromToken(token string, operationID string) (bool, string, string) { claims, err := ParseToken(token, operationID) if err != nil { log.Error(operationID, "ParseToken failed, ", err.Error(), token) - return false, "" + return false, "", err.Error() } - return true, claims.UID + return true, claims.UID, "" } func ParseTokenGetUserID(token string, operationID string) (error, string) { From f2c91d015edcd1c8f77d8fb531cc16f06475457f Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 7 May 2022 12:01:01 +0800 Subject: [PATCH 037/143] add err log --- internal/api/third/ali_oss_credential.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/internal/api/third/ali_oss_credential.go b/internal/api/third/ali_oss_credential.go index 6f5bc7c04..0602143e8 100644 --- a/internal/api/third/ali_oss_credential.go +++ b/internal/api/third/ali_oss_credential.go @@ -54,12 +54,18 @@ func AliOSSCredential(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) return } - ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) + + var ok bool + var userID string + var errInfo string + ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) if !ok { - log.NewError(req.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) + errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(req.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } + log.NewInfo(req.OperationID, "AliOSSCredential args ", userID) stsResp, err := getStsClient().AssumeRole(&sts20150401.AssumeRoleRequest{ From fed369ad5dd7b1a74b394af1c964aed0ee10889d Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 7 May 2022 12:04:07 +0800 Subject: [PATCH 038/143] add err log --- internal/cms_api/middleware/jwt_auth.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/cms_api/middleware/jwt_auth.go b/internal/cms_api/middleware/jwt_auth.go index a6f1af993..255e3eaaf 100644 --- a/internal/cms_api/middleware/jwt_auth.go +++ b/internal/cms_api/middleware/jwt_auth.go @@ -11,14 +11,16 @@ import ( func JWTAuth() gin.HandlerFunc { return func(c *gin.Context) { - ok, userID := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), "") + ok, userID, errInfo := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), "") log.NewInfo("0", utils.GetSelfFuncName(), "userID: ", userID) c.Set("userID", userID) if !ok { - log.NewError("","GetUserIDFromToken false ", c.Request.Header.Get("token")) + log.NewError("", "GetUserIDFromToken false ", c.Request.Header.Get("token")) c.Abort() http.RespHttp200(c, constant.ErrParseToken, nil) return + } else { + log.NewInfo("0", utils.GetSelfFuncName(), "failed: ", errInfo) } } } From 4ac863fa6a8d2f245bdfa77c117af27f95598a64 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Sat, 7 May 2022 13:21:05 +0800 Subject: [PATCH 039/143] cache --- internal/rpc/group/group.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 4266631f8..48916fb5a 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -161,9 +161,10 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR } resp.GroupInfo.OwnerUserID = req.OwnerUserID + okUserIDList = append(okUserIDList, req.OwnerUserID) addGroupMemberToCacheReq := &pbCache.AddGroupMemberToCacheReq{ UserIDList: okUserIDList, - GroupID: req.GroupInfo.GroupID, + GroupID: groupId, OperationID: req.OperationID, } etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) From 685fc1a37b572856c0f9cd9ecdfb541042e9c375 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Sat, 7 May 2022 14:13:47 +0800 Subject: [PATCH 040/143] cache --- internal/rpc/cache/cache.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/rpc/cache/cache.go b/internal/rpc/cache/cache.go index 5fb32a2d3..b787459eb 100644 --- a/internal/rpc/cache/cache.go +++ b/internal/rpc/cache/cache.go @@ -327,7 +327,7 @@ func (s *cacheServer) AddGroupMemberToCache(_ context.Context, req *pbCache.AddG func (s *cacheServer) ReduceGroupMemberFromCache(_ context.Context, req *pbCache.ReduceGroupMemberFromCacheReq) (resp *pbCache.ReduceGroupMemberFromCacheResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) - resp = &pbCache.ReduceGroupMemberFromCacheResp{} + resp = &pbCache.ReduceGroupMemberFromCacheResp{CommonResp: &pbCache.CommonResp{}} if err := db.DB.ReduceGroupMemberFromCache(req.GroupID, req.UserIDList...); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "ReduceGroupMemberFromCache failed", err.Error()) resp.CommonResp.ErrCode = constant.ErrDB.ErrCode From 1b93ba53559ef92f9be81b619ed3ce103fdc5b86 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Sat, 7 May 2022 15:01:48 +0800 Subject: [PATCH 041/143] cache --- internal/rpc/group/group.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 48916fb5a..850742d1c 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -654,6 +654,18 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G } else { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String()) } + addGroupMemberToCacheReq := &pbCache.AddGroupMemberToCacheReq{OperationID: req.OperationID, GroupID: req.GroupID, UserIDList: []string{req.FromUserID}} + etcdCacheConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + cacheClient := pbCache.NewCacheClient(etcdCacheConn) + cacheResp, err := cacheClient.AddGroupMemberToCache(context.Background(), addGroupMemberToCacheReq) + if err != nil { + log.NewError(req.OperationID, "AddGroupMemberToCache rpc call failed ", err.Error()) + return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil + } + if cacheResp.CommonResp.ErrCode != 0 { + log.NewError(req.OperationID, "AddGroupMemberToCache rpc logic call failed ", cacheResp.String()) + return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil + } chat.GroupApplicationAcceptedNotification(req) chat.MemberEnterNotification(req) } else if req.HandleResult == constant.GroupResponseRefuse { @@ -1169,11 +1181,11 @@ func (s *groupServer) AddGroupMembersCMS(_ context.Context, req *pbGroup.AddGrou cacheClient := pbCache.NewCacheClient(etcdConn) cacheResp, err := cacheClient.AddGroupMemberToCache(context.Background(), addGroupMemberToCacheReq) if err != nil { - log.NewError(req.OperationId, "AddBlackUserToCache rpc call failed ", err.Error()) + log.NewError(req.OperationId, "AddGroupMemberToCache rpc call failed ", err.Error()) return resp, http.WrapError(constant.ErrDB) } if cacheResp.CommonResp.ErrCode != 0 { - log.NewError(req.OperationId, "AddBlackUserToCache rpc logic call failed ", cacheResp.String()) + log.NewError(req.OperationId, "AddGroupMemberToCache rpc logic call failed ", cacheResp.String()) return resp, http.WrapError(constant.ErrDB) } From dca16e83d3015849193630b80b1037dbea9ed0b5 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 7 May 2022 17:05:05 +0800 Subject: [PATCH 042/143] rpc register ip --- cmd/open_im_api/main.go | 2 +- config/config.yaml | 5 ++++ internal/msg_gateway/gate/rpc_server.go | 29 ++++++++++++++------ internal/push/logic/push_rpc_server.go | 29 +++++++++++++++----- internal/rpc/admin_cms/admin_cms.go | 25 ++++++++++++----- internal/rpc/auth/auth.go | 22 ++++++++++++--- internal/rpc/cache/cache.go | 26 +++++++++++++----- internal/rpc/conversation/conversaion.go | 22 ++++++++++++--- internal/rpc/friend/firend.go | 28 ++++++++++++++----- internal/rpc/group/group.go | 25 ++++++++++++----- internal/rpc/message_cms/message_cms.go | 28 ++++++++++++++----- internal/rpc/msg/rpcChat.go | 33 ++++++++++++++--------- internal/rpc/office/office.go | 25 ++++++++++++----- internal/rpc/organization/organization.go | 26 +++++++++++++----- internal/rpc/statistics/statistics.go | 28 ++++++++++++++----- internal/rpc/user/user.go | 29 ++++++++++++++------ internal/utils/get_server_ip_test.go | 12 --------- pkg/common/config/config.go | 6 ++++- pkg/utils/get_server_ip.go | 30 +++++++++++---------- 19 files changed, 307 insertions(+), 123 deletions(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 18d210b58..48eff076d 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -178,7 +178,7 @@ func main() { } go apiThird.MinioInit() - ginPort := flag.Int("port", 10002, "get ginServerPort from cmd,default 10000 as port") + ginPort := flag.Int("port", 10002, "get ginServerPort from cmd,default 10002 as port") flag.Parse() fmt.Println("start api server, port: ", *ginPort) err := r.Run(":" + strconv.Itoa(*ginPort)) diff --git a/config/config.yaml b/config/config.yaml index b545fcce9..c212a7002 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -59,6 +59,11 @@ kafka: #如果是单机模式,用0.0.0.0或者不填,默认即可 serverip: 0.0.0.0 +rpcRegisterIP: 127.0.0.1 +listenIP: 0.0.0.0 + + + # endpoints 内部组件间访问的端点host名称,访问时,可以内部直接访问 host:port 来访问 endpoints: api: openim_api diff --git a/internal/msg_gateway/gate/rpc_server.go b/internal/msg_gateway/gate/rpc_server.go index 9e738d1a0..ad3a2c4d4 100644 --- a/internal/msg_gateway/gate/rpc_server.go +++ b/internal/msg_gateway/gate/rpc_server.go @@ -11,9 +11,9 @@ import ( "bytes" "context" "encoding/gob" - "fmt" "github.com/golang/protobuf/proto" "net" + "strconv" "strings" "github.com/gorilla/websocket" @@ -34,24 +34,37 @@ func (r *RPCServer) onInit(rpcPort int) { r.etcdAddr = config.Config.Etcd.EtcdAddr } func (r *RPCServer) run() { - ip := utils.ServerIP - registerAddress := ip + ":" + utils.IntToString(r.rpcPort) - listener, err := net.Listen("tcp", registerAddress) + listenIP := "" + if config.Config.ListenIP == "" { + listenIP = "0.0.0.0" + } else { + listenIP = config.Config.ListenIP + } + address := listenIP + ":" + strconv.Itoa(r.rpcPort) + listener, err := net.Listen("tcp", address) if err != nil { - log.ErrorByArgs(fmt.Sprintf("fail to listening consumer, err:%v\n", err)) + log.Error("", "fail to listening consumer failed ", err.Error(), address) return } defer listener.Close() srv := grpc.NewServer() defer srv.GracefulStop() pbRelay.RegisterOnlineMessageRelayServiceServer(srv, r) - err = getcdv3.RegisterEtcd4Unique(r.etcdSchema, strings.Join(r.etcdAddr, ","), ip, r.rpcPort, r.rpcRegisterName, 10) + + rpcRegisterIP := "" + if config.Config.RpcRegisterIP == "" { + rpcRegisterIP, err = utils.GetLocalIP() + if err != nil { + log.Error("", "GetLocalIP failed ", err.Error()) + } + } + err = getcdv3.RegisterEtcd4Unique(r.etcdSchema, strings.Join(r.etcdAddr, ","), rpcRegisterIP, r.rpcPort, r.rpcRegisterName, 10) if err != nil { - log.ErrorByKv("register push message rpc to etcd err", "", "err", err.Error()) + log.Error("", "register push message rpc to etcd err", "", "err", err.Error(), r.etcdSchema, strings.Join(r.etcdAddr, ","), rpcRegisterIP, r.rpcPort, r.rpcRegisterName) } err = srv.Serve(listener) if err != nil { - log.ErrorByKv("push message rpc listening err", "", "err", err.Error()) + log.Error("", "push message rpc listening err", "", "err", err.Error()) return } } diff --git a/internal/push/logic/push_rpc_server.go b/internal/push/logic/push_rpc_server.go index b622ba721..a33ba68b5 100644 --- a/internal/push/logic/push_rpc_server.go +++ b/internal/push/logic/push_rpc_server.go @@ -9,6 +9,7 @@ import ( "context" "google.golang.org/grpc" "net" + "strconv" "strings" ) @@ -26,24 +27,38 @@ func (r *RPCServer) Init(rpcPort int) { r.etcdAddr = config.Config.Etcd.EtcdAddr } func (r *RPCServer) run() { - ip := utils.ServerIP - registerAddress := ip + ":" + utils.IntToString(r.rpcPort) - listener, err := net.Listen("tcp", registerAddress) + listenIP := "" + if config.Config.ListenIP == "" { + listenIP = "0.0.0.0" + } else { + listenIP = config.Config.ListenIP + } + address := listenIP + ":" + strconv.Itoa(r.rpcPort) + + listener, err := net.Listen("tcp", address) if err != nil { - log.ErrorByKv("push module rpc listening port err", "", "err", err.Error()) + log.Error("", "push module rpc listening port err", err.Error(), address) return } defer listener.Close() srv := grpc.NewServer() defer srv.GracefulStop() pbPush.RegisterPushMsgServiceServer(srv, r) - err = getcdv3.RegisterEtcd(r.etcdSchema, strings.Join(r.etcdAddr, ","), ip, r.rpcPort, r.rpcRegisterName, 10) + rpcRegisterIP := "" + if config.Config.RpcRegisterIP == "" { + rpcRegisterIP, err = utils.GetLocalIP() + if err != nil { + log.Error("", "GetLocalIP failed ", err.Error()) + } + } + + err = getcdv3.RegisterEtcd(r.etcdSchema, strings.Join(r.etcdAddr, ","), rpcRegisterIP, r.rpcPort, r.rpcRegisterName, 10) if err != nil { - log.ErrorByKv("register push module rpc to etcd err", "", "err", err.Error()) + log.Error("", "register push module rpc to etcd err", err.Error(), r.etcdSchema, strings.Join(r.etcdAddr, ","), rpcRegisterIP, r.rpcPort, r.rpcRegisterName) } err = srv.Serve(listener) if err != nil { - log.ErrorByKv("push module rpc start err", "", "err", err.Error()) + log.Error("", "push module rpc start err", err.Error()) return } } diff --git a/internal/rpc/admin_cms/admin_cms.go b/internal/rpc/admin_cms/admin_cms.go index 156748bbc..3a3f7dffd 100644 --- a/internal/rpc/admin_cms/admin_cms.go +++ b/internal/rpc/admin_cms/admin_cms.go @@ -35,22 +35,35 @@ func NewAdminCMSServer(port int) *adminCMSServer { func (s *adminCMSServer) Run() { log.NewInfo("0", "AdminCMS rpc start ") - ip := utils.ServerIP - registerAddress := ip + ":" + strconv.Itoa(s.rpcPort) + listenIP := "" + if config.Config.ListenIP == "" { + listenIP = "0.0.0.0" + } else { + listenIP = config.Config.ListenIP + } + address := listenIP + ":" + strconv.Itoa(s.rpcPort) + //listener network - listener, err := net.Listen("tcp", registerAddress) + listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("0", "Listen failed ", err.Error(), registerAddress) + log.NewError("0", "Listen failed ", err.Error(), address) return } - log.NewInfo("0", "listen network success, ", registerAddress, listener) + log.NewInfo("0", "listen network success, ", address, listener) defer listener.Close() //grpc server srv := grpc.NewServer() defer srv.GracefulStop() //Service registers with etcd pbAdminCMS.RegisterAdminCMSServer(srv, s) - err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName, 10) + rpcRegisterIP := "" + if config.Config.RpcRegisterIP == "" { + rpcRegisterIP, err = utils.GetLocalIP() + if err != nil { + log.Error("", "GetLocalIP failed ", err.Error()) + } + } + err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), rpcRegisterIP, s.rpcPort, s.rpcRegisterName, 10) if err != nil { log.NewError("0", "RegisterEtcd failed ", err.Error()) return diff --git a/internal/rpc/auth/auth.go b/internal/rpc/auth/auth.go index 15927bf5b..1de8f16c7 100644 --- a/internal/rpc/auth/auth.go +++ b/internal/rpc/auth/auth.go @@ -79,7 +79,13 @@ func (rpc *rpcAuth) Run() { operationID := utils.OperationIDGenerator() log.NewInfo(operationID, "rpc auth start...") - address := utils.ServerIP + ":" + strconv.Itoa(rpc.rpcPort) + listenIP := "" + if config.Config.ListenIP == "" { + listenIP = "0.0.0.0" + } else { + listenIP = config.Config.ListenIP + } + address := listenIP + ":" + strconv.Itoa(rpc.rpcPort) listener, err := net.Listen("tcp", address) if err != nil { log.NewError(operationID, "listen network failed ", err.Error(), address) @@ -92,13 +98,21 @@ func (rpc *rpcAuth) Run() { //service registers with etcd pbAuth.RegisterAuthServer(srv, rpc) - err = getcdv3.RegisterEtcd(rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), utils.ServerIP, rpc.rpcPort, rpc.rpcRegisterName, 10) + rpcRegisterIP := "" + if config.Config.RpcRegisterIP == "" { + rpcRegisterIP, err = utils.GetLocalIP() + if err != nil { + log.Error("", "GetLocalIP failed ", err.Error()) + } + } + + err = getcdv3.RegisterEtcd(rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), rpcRegisterIP, rpc.rpcPort, rpc.rpcRegisterName, 10) if err != nil { log.NewError(operationID, "RegisterEtcd failed ", err.Error(), - rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), utils.ServerIP, rpc.rpcPort, rpc.rpcRegisterName) + rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), rpcRegisterIP, rpc.rpcPort, rpc.rpcRegisterName) return } - log.NewInfo(operationID, "RegisterAuthServer ok ", rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), utils.ServerIP, rpc.rpcPort, rpc.rpcRegisterName) + log.NewInfo(operationID, "RegisterAuthServer ok ", rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), rpcRegisterIP, rpc.rpcPort, rpc.rpcRegisterName) err = srv.Serve(listener) if err != nil { log.NewError(operationID, "Serve failed ", err.Error()) diff --git a/internal/rpc/cache/cache.go b/internal/rpc/cache/cache.go index 5fb32a2d3..4101f5d6a 100644 --- a/internal/rpc/cache/cache.go +++ b/internal/rpc/cache/cache.go @@ -37,15 +37,20 @@ func NewCacheServer(port int) *cacheServer { func (s *cacheServer) Run() { log.NewInfo("0", "cacheServer rpc start ") - ip := utils.ServerIP - registerAddress := ip + ":" + strconv.Itoa(s.rpcPort) + listenIP := "" + if config.Config.ListenIP == "" { + listenIP = "0.0.0.0" + } else { + listenIP = config.Config.ListenIP + } + address := listenIP + ":" + strconv.Itoa(s.rpcPort) //listener network - listener, err := net.Listen("tcp", registerAddress) + listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("0", "Listen failed ", err.Error(), registerAddress) + log.NewError("0", "Listen failed ", err.Error(), address) return } - log.NewInfo("0", "listen network success, ", registerAddress, listener) + log.NewInfo("0", "listen network success, ", address, listener) defer listener.Close() //grpc server @@ -59,7 +64,16 @@ func (s *cacheServer) Run() { srv := grpc.NewServer() defer srv.GracefulStop() pbCache.RegisterCacheServer(srv, s) - err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName, 10) + + rpcRegisterIP := "" + if config.Config.RpcRegisterIP == "" { + rpcRegisterIP, err = utils.GetLocalIP() + if err != nil { + log.Error("", "GetLocalIP failed ", err.Error()) + } + } + + err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), rpcRegisterIP, s.rpcPort, s.rpcRegisterName, 10) if err != nil { log.NewError("0", "RegisterEtcd failed ", err.Error()) return diff --git a/internal/rpc/conversation/conversaion.go b/internal/rpc/conversation/conversaion.go index 7012e0924..eb08f74a4 100644 --- a/internal/rpc/conversation/conversaion.go +++ b/internal/rpc/conversation/conversaion.go @@ -138,7 +138,14 @@ func NewRpcConversationServer(port int) *rpcConversation { func (rpc *rpcConversation) Run() { log.NewInfo("0", "rpc conversation start...") - address := utils.ServerIP + ":" + strconv.Itoa(rpc.rpcPort) + listenIP := "" + if config.Config.ListenIP == "" { + listenIP = "0.0.0.0" + } else { + listenIP = config.Config.ListenIP + } + address := listenIP + ":" + strconv.Itoa(rpc.rpcPort) + listener, err := net.Listen("tcp", address) if err != nil { log.NewError("0", "listen network failed ", err.Error(), address) @@ -151,13 +158,20 @@ func (rpc *rpcConversation) Run() { //service registers with etcd pbConversation.RegisterConversationServer(srv, rpc) - err = getcdv3.RegisterEtcd(rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), utils.ServerIP, rpc.rpcPort, rpc.rpcRegisterName, 10) + rpcRegisterIP := "" + if config.Config.RpcRegisterIP == "" { + rpcRegisterIP, err = utils.GetLocalIP() + if err != nil { + log.Error("", "GetLocalIP failed ", err.Error()) + } + } + err = getcdv3.RegisterEtcd(rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), rpcRegisterIP, rpc.rpcPort, rpc.rpcRegisterName, 10) if err != nil { log.NewError("0", "RegisterEtcd failed ", err.Error(), - rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), utils.ServerIP, rpc.rpcPort, rpc.rpcRegisterName) + rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), rpcRegisterIP, rpc.rpcPort, rpc.rpcRegisterName) return } - log.NewInfo("0", "RegisterConversationServer ok ", rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), utils.ServerIP, rpc.rpcPort, rpc.rpcRegisterName) + log.NewInfo("0", "RegisterConversationServer ok ", rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), rpcRegisterIP, rpc.rpcPort, rpc.rpcRegisterName) err = srv.Serve(listener) if err != nil { log.NewError("0", "Serve failed ", err.Error()) diff --git a/internal/rpc/friend/firend.go b/internal/rpc/friend/firend.go index 08d40a682..5941739c5 100644 --- a/internal/rpc/friend/firend.go +++ b/internal/rpc/friend/firend.go @@ -42,24 +42,38 @@ func NewFriendServer(port int) *friendServer { func (s *friendServer) Run() { log.NewInfo("0", "friendServer run...") - ip := utils.ServerIP - registerAddress := ip + ":" + strconv.Itoa(s.rpcPort) + listenIP := "" + if config.Config.ListenIP == "" { + listenIP = "0.0.0.0" + } else { + listenIP = config.Config.ListenIP + } + address := listenIP + ":" + strconv.Itoa(s.rpcPort) + //listener network - listener, err := net.Listen("tcp", registerAddress) + listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("0", "Listen failed ", err.Error(), registerAddress) + log.NewError("0", "Listen failed ", err.Error(), address) return } - log.NewInfo("0", "listen ok ", registerAddress) + log.NewInfo("0", "listen ok ", address) defer listener.Close() //grpc server srv := grpc.NewServer() defer srv.GracefulStop() //User friend related services register to etcd pbFriend.RegisterFriendServer(srv, s) - err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName, 10) + rpcRegisterIP := "" + if config.Config.RpcRegisterIP == "" { + rpcRegisterIP, err = utils.GetLocalIP() + if err != nil { + log.Error("", "GetLocalIP failed ", err.Error()) + } + } + + err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), rpcRegisterIP, s.rpcPort, s.rpcRegisterName, 10) if err != nil { - log.NewError("0", "RegisterEtcd failed ", err.Error(), s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName) + log.NewError("0", "RegisterEtcd failed ", err.Error(), s.etcdSchema, strings.Join(s.etcdAddr, ","), rpcRegisterIP, s.rpcPort, s.rpcRegisterName) return } err = srv.Serve(listener) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 4266631f8..2c072f7ad 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -44,22 +44,35 @@ func NewGroupServer(port int) *groupServer { func (s *groupServer) Run() { log.NewInfo("", "group rpc start ") - ip := utils.ServerIP - registerAddress := ip + ":" + strconv.Itoa(s.rpcPort) + listenIP := "" + if config.Config.ListenIP == "" { + listenIP = "0.0.0.0" + } else { + listenIP = config.Config.ListenIP + } + address := listenIP + ":" + strconv.Itoa(s.rpcPort) //listener network - listener, err := net.Listen("tcp", registerAddress) + listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("", "Listen failed ", err.Error(), registerAddress) + log.NewError("", "Listen failed ", err.Error(), address) return } - log.NewInfo("", "listen network success, ", registerAddress, listener) + log.NewInfo("", "listen network success, ", address, listener) defer listener.Close() //grpc server srv := grpc.NewServer() defer srv.GracefulStop() //Service registers with etcd pbGroup.RegisterGroupServer(srv, s) - err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName, 10) + + rpcRegisterIP := "" + if config.Config.RpcRegisterIP == "" { + rpcRegisterIP, err = utils.GetLocalIP() + if err != nil { + log.Error("", "GetLocalIP failed ", err.Error()) + } + } + err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), rpcRegisterIP, s.rpcPort, s.rpcRegisterName, 10) if err != nil { log.NewError("", "RegisterEtcd failed ", err.Error()) return diff --git a/internal/rpc/message_cms/message_cms.go b/internal/rpc/message_cms/message_cms.go index 7f27e007a..40609de7c 100644 --- a/internal/rpc/message_cms/message_cms.go +++ b/internal/rpc/message_cms/message_cms.go @@ -6,6 +6,7 @@ import ( "Open_IM/pkg/common/db" errors "Open_IM/pkg/common/http" "context" + "strconv" "Open_IM/pkg/common/log" @@ -17,7 +18,6 @@ import ( "Open_IM/pkg/utils" "net" - "strconv" "strings" "google.golang.org/grpc" @@ -42,22 +42,36 @@ func NewMessageCMSServer(port int) *messageCMSServer { func (s *messageCMSServer) Run() { log.NewInfo("0", "messageCMS rpc start ") - ip := utils.ServerIP - registerAddress := ip + ":" + strconv.Itoa(s.rpcPort) + + listenIP := "" + if config.Config.ListenIP == "" { + listenIP = "0.0.0.0" + } else { + listenIP = config.Config.ListenIP + } + address := listenIP + ":" + strconv.Itoa(s.rpcPort) + //listener network - listener, err := net.Listen("tcp", registerAddress) + listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("0", "Listen failed ", err.Error(), registerAddress) + log.NewError("0", "Listen failed ", err.Error(), address) return } - log.NewInfo("0", "listen network success, ", registerAddress, listener) + log.NewInfo("0", "listen network success, ", address, listener) defer listener.Close() //grpc server srv := grpc.NewServer() defer srv.GracefulStop() //Service registers with etcd pbMessageCMS.RegisterMessageCMSServer(srv, s) - err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName, 10) + rpcRegisterIP := "" + if config.Config.RpcRegisterIP == "" { + rpcRegisterIP, err = utils.GetLocalIP() + if err != nil { + log.Error("", "GetLocalIP failed ", err.Error()) + } + } + err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), rpcRegisterIP, s.rpcPort, s.rpcRegisterName, 10) if err != nil { log.NewError("0", "RegisterEtcd failed ", err.Error()) return diff --git a/internal/rpc/msg/rpcChat.go b/internal/rpc/msg/rpcChat.go index 82c4ad37b..e49d90a6d 100644 --- a/internal/rpc/msg/rpcChat.go +++ b/internal/rpc/msg/rpcChat.go @@ -35,33 +35,42 @@ func NewRpcChatServer(port int) *rpcChat { } func (rpc *rpcChat) Run() { - log.Info("", "", "rpc get_token init...") - - address := utils.ServerIP + ":" + strconv.Itoa(rpc.rpcPort) + log.Info("", "rpcChat init...") + listenIP := "" + if config.Config.ListenIP == "" { + listenIP = "0.0.0.0" + } else { + listenIP = config.Config.ListenIP + } + address := listenIP + ":" + strconv.Itoa(rpc.rpcPort) listener, err := net.Listen("tcp", address) if err != nil { - log.Error("", "", "listen network failed, err = %s, address = %s", err.Error(), address) + log.Error("", "listen network failed ", err.Error(), address) return } - log.Info("", "", "listen network success, address = ", address) + log.Info("", "listen network success, address ", address) - //grpc server srv := grpc.NewServer() defer srv.GracefulStop() - //service registers with etcd - + rpcRegisterIP := "" pbChat.RegisterChatServer(srv, rpc) - err = getcdv3.RegisterEtcd(rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), utils.ServerIP, rpc.rpcPort, rpc.rpcRegisterName, 10) + if config.Config.RpcRegisterIP == "" { + rpcRegisterIP, err = utils.GetLocalIP() + if err != nil { + log.Error("", "GetLocalIP failed ", err.Error()) + } + } + err = getcdv3.RegisterEtcd(rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), rpcRegisterIP, rpc.rpcPort, rpc.rpcRegisterName, 10) if err != nil { - log.Error("", "", "register rpc get_token to etcd failed, err = %s", err.Error()) + log.Error("", "register rpcChat to etcd failed ", err.Error()) return } err = srv.Serve(listener) if err != nil { - log.Info("", "", "rpc get_token fail, err = %s", err.Error()) + log.Error("", "rpc rpcChat failed ", err.Error()) return } - log.Info("", "", "rpc get_token init success") + log.Info("", "rpc rpcChat init success") } diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index c51c5d37b..e08cf2794 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -39,22 +39,35 @@ func NewOfficeServer(port int) *officeServer { func (s *officeServer) Run() { log.NewInfo("0", "officeServer rpc start ") - ip := utils.ServerIP - registerAddress := ip + ":" + strconv.Itoa(s.rpcPort) + listenIP := "" + if config.Config.ListenIP == "" { + listenIP = "0.0.0.0" + } else { + listenIP = config.Config.ListenIP + } + address := listenIP + ":" + strconv.Itoa(s.rpcPort) //listener network - listener, err := net.Listen("tcp", registerAddress) + listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("0", "Listen failed ", err.Error(), registerAddress) + log.NewError("0", "Listen failed ", err.Error(), address) return } - log.NewInfo("0", "listen network success, ", registerAddress, listener) + log.NewInfo("0", "listen network success, ", address, listener) defer listener.Close() //grpc server srv := grpc.NewServer() defer srv.GracefulStop() //Service registers with etcd pbOffice.RegisterOfficeServiceServer(srv, s) - err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName, 10) + rpcRegisterIP := "" + if config.Config.RpcRegisterIP == "" { + rpcRegisterIP, err = utils.GetLocalIP() + if err != nil { + log.Error("", "GetLocalIP failed ", err.Error()) + } + } + + err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), rpcRegisterIP, s.rpcPort, s.rpcRegisterName, 10) if err != nil { log.NewError("0", "RegisterEtcd failed ", err.Error()) return diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index d9f503d69..8dd512dcf 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -40,27 +40,39 @@ func NewServer(port int) *organizationServer { func (s *organizationServer) Run() { log.NewInfo("", "organization rpc start ") - ip := utils.ServerIP - registerAddress := ip + ":" + strconv.Itoa(s.rpcPort) + listenIP := "" + if config.Config.ListenIP == "" { + listenIP = "0.0.0.0" + } else { + listenIP = config.Config.ListenIP + } + address := listenIP + ":" + strconv.Itoa(s.rpcPort) //listener network - listener, err := net.Listen("tcp", registerAddress) + listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("", "Listen failed ", err.Error(), registerAddress) + log.NewError("", "Listen failed ", err.Error(), address) return } - log.NewInfo("", "listen network success, ", registerAddress, listener) + log.NewInfo("", "listen network success, ", address, listener) defer listener.Close() //grpc server srv := grpc.NewServer() defer srv.GracefulStop() //Service registers with etcd rpc.RegisterOrganizationServer(srv, s) - err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName, 10) + rpcRegisterIP := "" + if config.Config.RpcRegisterIP == "" { + rpcRegisterIP, err = utils.GetLocalIP() + if err != nil { + log.Error("", "GetLocalIP failed ", err.Error()) + } + } + err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), rpcRegisterIP, s.rpcPort, s.rpcRegisterName, 10) if err != nil { log.NewError("", "RegisterEtcd failed ", err.Error()) return } - log.NewInfo("", "organization rpc RegisterEtcd success", ip, s.rpcPort, s.rpcRegisterName, 10) + log.NewInfo("", "organization rpc RegisterEtcd success", rpcRegisterIP, s.rpcPort, s.rpcRegisterName, 10) err = srv.Serve(listener) if err != nil { log.NewError("", "Serve failed ", err.Error()) diff --git a/internal/rpc/statistics/statistics.go b/internal/rpc/statistics/statistics.go index cda164332..d7100c50d 100644 --- a/internal/rpc/statistics/statistics.go +++ b/internal/rpc/statistics/statistics.go @@ -4,6 +4,7 @@ import ( "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" "context" + "strconv" "sync" "time" @@ -21,7 +22,6 @@ import ( //"context" errors "Open_IM/pkg/common/http" "net" - "strconv" "strings" "google.golang.org/grpc" @@ -46,22 +46,36 @@ func NewStatisticsServer(port int) *statisticsServer { func (s *statisticsServer) Run() { log.NewInfo("0", "Statistics rpc start ") - ip := utils.ServerIP - registerAddress := ip + ":" + strconv.Itoa(s.rpcPort) + + listenIP := "" + if config.Config.ListenIP == "" { + listenIP = "0.0.0.0" + } else { + listenIP = config.Config.ListenIP + } + address := listenIP + ":" + strconv.Itoa(s.rpcPort) + //listener network - listener, err := net.Listen("tcp", registerAddress) + listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("0", "Listen failed ", err.Error(), registerAddress) + log.NewError("0", "Listen failed ", err.Error(), address) return } - log.NewInfo("0", "listen network success, ", registerAddress, listener) + log.NewInfo("0", "listen network success, ", address, listener) defer listener.Close() //grpc server srv := grpc.NewServer() defer srv.GracefulStop() //Service registers with etcd pbStatistics.RegisterUserServer(srv, s) - err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName, 10) + rpcRegisterIP := "" + if config.Config.RpcRegisterIP == "" { + rpcRegisterIP, err = utils.GetLocalIP() + if err != nil { + log.Error("", "GetLocalIP failed ", err.Error()) + } + } + err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), rpcRegisterIP, s.rpcPort, s.rpcRegisterName, 10) if err != nil { log.NewError("0", "RegisterEtcd failed ", err.Error()) return diff --git a/internal/rpc/user/user.go b/internal/rpc/user/user.go index 7ed1059ed..abb3b0a34 100644 --- a/internal/rpc/user/user.go +++ b/internal/rpc/user/user.go @@ -42,26 +42,39 @@ func NewUserServer(port int) *userServer { } func (s *userServer) Run() { - log.NewInfo("0", "", "rpc user start...") + log.NewInfo("0", "rpc user start...") + + listenIP := "" + if config.Config.ListenIP == "" { + listenIP = "0.0.0.0" + } else { + listenIP = config.Config.ListenIP + } + address := listenIP + ":" + strconv.Itoa(s.rpcPort) - ip := utils.ServerIP - registerAddress := ip + ":" + strconv.Itoa(s.rpcPort) //listener network - listener, err := net.Listen("tcp", registerAddress) + listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("0", "listen network failed ", err.Error(), registerAddress) + log.NewError("0", "listen network failed ", err.Error(), address) return } - log.NewInfo("0", "listen network success, address ", registerAddress, listener) + log.NewInfo("0", "listen network success, address ", address, listener) defer listener.Close() //grpc server srv := grpc.NewServer() defer srv.GracefulStop() //Service registers with etcd pbUser.RegisterUserServer(srv, s) - err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName, 10) + rpcRegisterIP := "" + if config.Config.RpcRegisterIP == "" { + rpcRegisterIP, err = utils.GetLocalIP() + if err != nil { + log.Error("", "GetLocalIP failed ", err.Error()) + } + } + err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), rpcRegisterIP, s.rpcPort, s.rpcRegisterName, 10) if err != nil { - log.NewError("0", "RegisterEtcd failed ", err.Error(), s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName) + log.NewError("0", "RegisterEtcd failed ", err.Error(), s.etcdSchema, strings.Join(s.etcdAddr, ","), rpcRegisterIP, s.rpcPort, s.rpcRegisterName) return } err = srv.Serve(listener) diff --git a/internal/utils/get_server_ip_test.go b/internal/utils/get_server_ip_test.go index de15537cb..d4b585bf7 100644 --- a/internal/utils/get_server_ip_test.go +++ b/internal/utils/get_server_ip_test.go @@ -1,13 +1 @@ package utils - -import ( - "Open_IM/pkg/utils" - "net" - "testing" -) - -func TestServerIP(t *testing.T) { - if net.ParseIP(utils.ServerIP) == nil { - t.Fail() - } -} diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 1ec02ddae..5067ba4ec 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -24,7 +24,11 @@ type callBackConfig struct { } type config struct { - ServerIP string `yaml:"serverip"` + ServerIP string `yaml:"serverip"` + + RpcRegisterIP string `yaml:"rpcRegisterIP"` + ListenIP string `yaml:"listenIP"` + ServerVersion string `yaml:"serverversion"` Api struct { GinPort []int `yaml:"openImApiPort"` diff --git a/pkg/utils/get_server_ip.go b/pkg/utils/get_server_ip.go index 239c75a19..63156f26f 100644 --- a/pkg/utils/get_server_ip.go +++ b/pkg/utils/get_server_ip.go @@ -1,26 +1,28 @@ package utils import ( - "Open_IM/pkg/common/config" + "errors" + "fmt" "net" ) var ServerIP = "" -func init() { - //fixme In the configuration file, ip takes precedence, if not, get the valid network card ip of the machine - if config.Config.ServerIP != "" { - ServerIP = config.Config.ServerIP - return - } - - // see https://gist.github.com/jniltinho/9787946#gistcomment-3019898 - conn, err := net.Dial("udp", "8.8.8.8:80") +func GetLocalIP() (string, error) { + addrs, err := net.InterfaceAddrs() if err != nil { - panic(err.Error()) + + return "", err + } + for _, address := range addrs { + + if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() { + if ipnet.IP.To4() != nil { + fmt.Println(ipnet.IP.String()) + return ipnet.IP.String(), nil + } + } } - defer conn.Close() - localAddr := conn.LocalAddr().(*net.UDPAddr) - ServerIP = localAddr.IP.String() + return "", errors.New("no ip") } From a251d521a1704cc80071e98abb5d16d4d9474b53 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Sat, 7 May 2022 19:52:18 +0800 Subject: [PATCH 043/143] set api ip in config --- cmd/open_im_api/main.go | 9 +++++++-- cmd/open_im_cms_api/main.go | 14 +++++++++----- cmd/open_im_demo/main.go | 9 ++++++++- config/config.yaml | 4 ++++ pkg/common/config/config.go | 12 ++++++++---- 5 files changed, 36 insertions(+), 12 deletions(-) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 48eff076d..c6fba662a 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -180,8 +180,13 @@ func main() { go apiThird.MinioInit() ginPort := flag.Int("port", 10002, "get ginServerPort from cmd,default 10002 as port") flag.Parse() - fmt.Println("start api server, port: ", *ginPort) - err := r.Run(":" + strconv.Itoa(*ginPort)) + address := "0.0.0.0:" + strconv.Itoa(*ginPort) + if config.Config.Api.ListenIP != "" { + address = config.Config.Api.ListenIP + ":" + strconv.Itoa(*ginPort) + } + address = config.Config.Api.ListenIP + ":" + strconv.Itoa(*ginPort) + fmt.Println("start api server, address: ", address) + err := r.Run(address) if err != nil { log.Error("", "run failed ", *ginPort, err.Error()) } diff --git a/cmd/open_im_cms_api/main.go b/cmd/open_im_cms_api/main.go index 59abada5f..6a0068195 100644 --- a/cmd/open_im_cms_api/main.go +++ b/cmd/open_im_cms_api/main.go @@ -7,6 +7,7 @@ import ( "fmt" "strconv" + "Open_IM/pkg/common/config" "github.com/gin-gonic/gin" ) @@ -14,10 +15,13 @@ func main() { gin.SetMode(gin.ReleaseMode) router := cms_api.NewGinRouter() router.Use(utils.CorsHandler()) - ginPort := flag.Int("port", 10006, "get ginServerPort from cmd,default 8000 as port") + ginPort := flag.Int("port", 10006, "get ginServerPort from cmd,default 10006 as port") flag.Parse() - fmt.Println("start cms api server, port: ", ginPort) - router.Run(":" + strconv.Itoa(*ginPort)) + address := "0.0.0.0:" + strconv.Itoa(*ginPort) + if config.Config.Api.ListenIP != "" { + address = config.Config.Api.ListenIP + ":" + strconv.Itoa(*ginPort) + } + address = config.Config.CmsApi.ListenIP + ":" + strconv.Itoa(*ginPort) + fmt.Println("start cms api server, address: ", address) + router.Run(address) } - -// diff --git a/cmd/open_im_demo/main.go b/cmd/open_im_demo/main.go index 4cfd4b552..c2ec21783 100644 --- a/cmd/open_im_demo/main.go +++ b/cmd/open_im_demo/main.go @@ -9,6 +9,7 @@ import ( "os" "strconv" + "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" "Open_IM/pkg/common/log" "github.com/gin-gonic/gin" @@ -35,7 +36,13 @@ func main() { ginPort := flag.Int("port", 42233, "get ginServerPort from cmd,default 42233 as port") flag.Parse() fmt.Println("start demo api server, port: ", *ginPort) - err := r.Run(":" + strconv.Itoa(*ginPort)) + address := "0.0.0.0:" + strconv.Itoa(*ginPort) + if config.Config.Api.ListenIP != "" { + address = config.Config.Api.ListenIP + ":" + strconv.Itoa(*ginPort) + } + address = config.Config.CmsApi.ListenIP + ":" + strconv.Itoa(*ginPort) + fmt.Println("start demo api server address: ", address) + err := r.Run(address) if err != nil { log.Error("", "run failed ", *ginPort, err.Error()) } diff --git a/config/config.yaml b/config/config.yaml index c212a7002..3ea75b135 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -82,10 +82,13 @@ endpoints: api: openImApiPort: [ 10002 ] #api服务端口,默认即可,需要开放此端口或做nginx转发 + listenIP: 0.0.0.0 cmsapi: openImCmsApiPort: [ 10006 ] #管理后台api服务端口,默认即可,需要开放此端口或做nginx转发 + listenIP: 0.0.0.0 sdk: openImSdkWsPort: [ 10003 ] #jssdk服务端口,默认即可,项目中使用jssdk才需开放此端口或做nginx转发 + dataDir: [ ../db/sdk/ ] #对象存储服务,以下配置二选一,目前支持两种,腾讯云和minio,二者配置好其中一种即可(如果使用minio参考https://doc.rentsoft.cn/#/qa/minio搭建minio服务器) credential: #腾讯cos,发送图片、视频、文件时需要,请自行申请后替换,必须修改 tencent: @@ -640,6 +643,7 @@ notification: #是否启动demo,如果自身没有账号体系,设置为true demoswitch: true demo: + listenIP: 0.0.0.0 #demo对外服务端口,默认即可,需要开放此端口或做nginx转发 openImDemoPort: [ 10004 ] alismsverify: #阿里云短信配置,在阿里云申请成功后修改以下四项,必须修改 diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 5067ba4ec..972cf27c1 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -31,13 +31,16 @@ type config struct { ServerVersion string `yaml:"serverversion"` Api struct { - GinPort []int `yaml:"openImApiPort"` + GinPort []int `yaml:"openImApiPort"` + ListenIP string `yaml:"listenIP"` } CmsApi struct { - GinPort []int `yaml:"openImCmsApiPort"` + GinPort []int `yaml:"openImCmsApiPort"` + ListenIP string `yaml:"listenIP"` } Sdk struct { - WsPort []int `yaml:"openImSdkWsPort"` + WsPort []int `yaml:"openImSdkWsPort"` + DataDir []string `yaml:"dataDir"` } Credential struct { Tencent struct { @@ -395,7 +398,8 @@ type config struct { } `yaml:"workMomentsNotification"` } Demo struct { - Port []int `yaml:"openImDemoPort"` + Port []int `yaml:"openImDemoPort"` + ListenIP string `yaml:"listenIP"` AliSMSVerify struct { AccessKeyID string `yaml:"accessKeyId"` AccessKeySecret string `yaml:"accessKeySecret"` From 305ee394b17556ba2845baa90850df2afb28159b Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 9 May 2022 10:00:03 +0800 Subject: [PATCH 044/143] cache --- internal/rpc/cache/cache.go | 8 ++++---- internal/rpc/office/office.go | 12 ++++++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/internal/rpc/cache/cache.go b/internal/rpc/cache/cache.go index b787459eb..a343c57e7 100644 --- a/internal/rpc/cache/cache.go +++ b/internal/rpc/cache/cache.go @@ -83,7 +83,7 @@ func SyncDB2Cache() error { err = updateAllFriendToCache(userList) err = updateAllBlackListToCache(userList) err = updateAllGroupMemberListToCache() - return err + return utils.Wrap(err, "") } func DelRelationCache() {} @@ -127,7 +127,7 @@ func updateAllGroupMemberListToCache() error { log.NewError("", utils.GetSelfFuncName(), "GetGroupMemberIDListByGroupID", err.Error()) continue } - log.NewDebug("", utils.GetSelfFuncName(), "groupMemberIDList", groupMemberIDList) + //log.NewDebug("", utils.GetSelfFuncName(), "groupMemberIDList", groupMemberIDList) if len(groupMemberIDList) > 0 { if err := db.DB.AddGroupMemberToCache(groupID, groupMemberIDList...); err != nil { log.NewError("", utils.GetSelfFuncName(), "AddGroupMemberToCache", err.Error()) @@ -146,7 +146,7 @@ func updateAllFriendToCache(userList []db.User) error { log.NewError("0", utils.GetSelfFuncName(), err.Error()) continue } - log.NewDebug("", utils.GetSelfFuncName(), "friendIDList", user.UserID, friendIDList) + //log.NewDebug("", utils.GetSelfFuncName(), "friendIDList", user.UserID, friendIDList) if len(friendIDList) > 0 { if err := db.DB.AddFriendToCache(user.UserID, friendIDList...); err != nil { log.NewError("0", utils.GetSelfFuncName(), err.Error(), friendIDList, user.UserID) @@ -165,7 +165,7 @@ func updateAllBlackListToCache(userList []db.User) error { log.NewError("", utils.GetSelfFuncName(), err.Error()) continue } - log.NewDebug("", utils.GetSelfFuncName(), "updateAllBlackListToCache", user.UserID, blackIDList) + //log.NewDebug("", utils.GetSelfFuncName(), "updateAllBlackListToCache", user.UserID, blackIDList) if len(blackIDList) > 0 { if err := db.DB.AddBlackUserToCache(user.UserID, blackIDList...); err != nil { log.NewError("0", utils.GetSelfFuncName(), err.Error()) diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index c51c5d37b..1d8ab522e 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -287,6 +287,18 @@ func (s *officeServer) CreateOneWorkMoment(_ context.Context, req *pbOffice.Crea workMoment.UserName = createUser.Nickname workMoment.FaceURL = createUser.FaceURL workMoment.PermissionUserIDList = s.getPermissionUserIDList(req.OperationID, req.WorkMoment.PermissionGroupList, req.WorkMoment.PermissionUserList) + workMoment.PermissionUserList = []*db.WorkMomentUser{} + for _, userID := range workMoment.PermissionUserIDList { + userName, err := imdb.GetUserNameByUserID(userID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserNameByUserID failed", err.Error()) + continue + } + workMoment.PermissionUserList = append(workMoment.PermissionUserList, &db.WorkMomentUser{ + UserID: userID, + UserName: userName, + }) + } log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "workMoment to create", workMoment) err = db.DB.CreateOneWorkMoment(&workMoment) if err != nil { From fb15cbef9083596782f0f777cdbb5b0e0df3c1c9 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Mon, 9 May 2022 11:38:08 +0800 Subject: [PATCH 045/143] grpc 1.45.0 --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index dfed54fde..32c25246d 100644 --- a/go.mod +++ b/go.mod @@ -51,7 +51,7 @@ require ( golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71 // indirect - google.golang.org/grpc v1.42.0 + google.golang.org/grpc v1.45.0 google.golang.org/protobuf v1.27.1 gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df From ab0ead4e05a283868393a850d6619bde06f6f4fc Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Mon, 9 May 2022 11:39:55 +0800 Subject: [PATCH 046/143] grpc --- go.mod | 2 -- go.sum | 48 +++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 32c25246d..ac7d6122f 100644 --- a/go.mod +++ b/go.mod @@ -59,5 +59,3 @@ require ( gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b ) - -replace google.golang.org/grpc => google.golang.org/grpc v1.29.0 diff --git a/go.sum b/go.sum index 74a5f6b07..48d4ea780 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,7 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= github.com/Shopify/sarama v1.19.0 h1:9oksLxC6uxVPHPVYUmq6xhr1BOF/hHobWH2UzO67z1s= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= @@ -47,8 +50,16 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bwmarrin/snowflake v0.3.0 h1:xm67bEhkKh6ij1790JB83OujPR5CzNe8QuQqAgISZN0= github.com/bwmarrin/snowflake v0.3.0/go.mod h1:NdZxfVWX+oR6y2K0o6qAYv6gIOP9rjG0/E9WsDpxqwE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= @@ -67,7 +78,13 @@ github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8 github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y= github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= @@ -123,6 +140,7 @@ github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:x github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= @@ -135,6 +153,7 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= @@ -142,8 +161,9 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= @@ -280,6 +300,7 @@ github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYl github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/gunit v1.4.2/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= @@ -321,6 +342,7 @@ go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/ go.mongodb.org/mongo-driver v1.8.3 h1:TDKlTkGDKm9kkJVUOAXDK5/fkqKHJVwYQSpoRfB43R4= go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= @@ -341,6 +363,7 @@ golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb h1:fqpd0EBDzlHRCjiphRR5Zo/RSWWQlWv34418dnEixWk= golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= @@ -350,6 +373,7 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -373,6 +397,7 @@ golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -382,6 +407,7 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -414,6 +440,7 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -431,20 +458,35 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71 h1:z+ErRPu0+KS02Td3fOAgdX+lnPDh/VyaABEJPD4JRQs= google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/grpc v1.29.0 h1:2pJjwYOdkZ9HlN4sWRYBg9ttH5bCOlsueaM+b/oYjwo= -google.golang.org/grpc v1.29.0/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.42.0 h1:XT2/MFpuPFsEX2fWh3YQtHkZ+WYZFQRfaUgLZYj/p6A= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= From d5c9e0888818abab9f04b1938752facef6479ac7 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Mon, 9 May 2022 14:15:29 +0800 Subject: [PATCH 047/143] manager send message to mysql duplicate primary key fix --- internal/msg_transfer/logic/persistent_msg_handler.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/msg_transfer/logic/persistent_msg_handler.go b/internal/msg_transfer/logic/persistent_msg_handler.go index 5400d54d6..36b336469 100644 --- a/internal/msg_transfer/logic/persistent_msg_handler.go +++ b/internal/msg_transfer/logic/persistent_msg_handler.go @@ -51,7 +51,7 @@ func (pc *PersistentConsumerHandler) handleChatWs2Mysql(msg []byte, msgKey strin tag = true } case constant.GroupChatType: - if msgKey == msgFromMQ.MsgData.SendID || utils.IsContain(msgFromMQ.MsgData.SendID, config.Config.Manager.AppManagerUid) { + if msgKey == msgFromMQ.MsgData.SendID { tag = true } } From e2cacd9c4b1161994766157baabcd3f93264eed2 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Mon, 9 May 2022 18:23:06 +0800 Subject: [PATCH 048/143] test --- go.sum | 2 ++ internal/msg_gateway/gate/init.go | 19 +++++++++++-------- internal/msg_gateway/gate/ws_server.go | 8 ++++---- .../msg_transfer/logic/history_msg_handler.go | 18 ++++++++++-------- internal/push/logic/init.go | 4 ++-- internal/push/logic/push_to_client.go | 2 +- pkg/common/constant/constant.go | 2 ++ pkg/statistics/statistics.go | 10 +++++----- 8 files changed, 37 insertions(+), 28 deletions(-) diff --git a/go.sum b/go.sum index 48d4ea780..f08695e8f 100644 --- a/go.sum +++ b/go.sum @@ -478,6 +478,8 @@ google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQ google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0 h1:XT2/MFpuPFsEX2fWh3YQtHkZ+WYZFQRfaUgLZYj/p6A= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/internal/msg_gateway/gate/init.go b/internal/msg_gateway/gate/init.go index 8f2f2e35b..5cf682b84 100644 --- a/internal/msg_gateway/gate/init.go +++ b/internal/msg_gateway/gate/init.go @@ -2,6 +2,7 @@ package gate import ( "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" "Open_IM/pkg/statistics" "fmt" @@ -10,12 +11,14 @@ import ( ) var ( - rwLock *sync.RWMutex - validate *validator.Validate - ws WServer - rpcSvr RPCServer - sendMsgCount uint64 - userCount uint64 + rwLock *sync.RWMutex + validate *validator.Validate + ws WServer + rpcSvr RPCServer + sendMsgAllCount uint64 + sendMsgFailedCount uint64 + sendMsgSuccessCount uint64 + userCount uint64 ) func Init(rpcPort, wsPort int) { @@ -23,8 +26,8 @@ func Init(rpcPort, wsPort int) { rwLock = new(sync.RWMutex) validate = validator.New() - statistics.NewStatistics(&sendMsgCount, config.Config.ModuleName.LongConnSvrName, fmt.Sprintf("%d second recv to msg_gateway sendMsgCount", sendMsgCount), 300) - statistics.NewStatistics(&userCount, config.Config.ModuleName.LongConnSvrName, fmt.Sprintf("%d second add user conn", userCount), 300) + statistics.NewStatistics(&sendMsgAllCount, config.Config.ModuleName.LongConnSvrName, fmt.Sprintf("%d second recv to msg_gateway sendMsgCount", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval) + statistics.NewStatistics(&userCount, config.Config.ModuleName.LongConnSvrName, fmt.Sprintf("%d second add user conn", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval) ws.onInit(wsPort) rpcSvr.onInit(rpcPort) } diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index e6f3a317e..4ce4e8648 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -62,6 +62,7 @@ func (ws *WServer) wsHandler(w http.ResponseWriter, r *http.Request) { //Initialize a lock for each user newConn := &UserConn{conn, new(sync.Mutex)} + userCount++ ws.addUserConn(query["sendID"][0], int32(utils.StringToInt64(query["platformID"][0])), newConn, query["token"][0]) go ws.readMsg(newConn) } @@ -77,6 +78,7 @@ func (ws *WServer) readMsg(conn *UserConn) { if err != nil { uid, platform := ws.getUserUid(conn) log.ErrorByKv("WS ReadMsg error", "", "userIP", conn.RemoteAddr().String(), "userUid", uid, "platform", platform, "error", err.Error()) + userCount-- ws.delUserConn(conn) return } else { @@ -189,7 +191,6 @@ func (ws *WServer) addUserConn(uid string, platformID int32, conn *UserConn, tok count = count + len(v) } log.Debug(operationID, "WS Add operation", "", "wsUser added", ws.wsUserToConn, "connection_uid", uid, "connection_platform", constant.PlatformIDToName(platformID), "online_user_num", len(ws.wsUserToConn), "online_conn_num", count) - userCount = uint64(len(ws.wsUserToConn)) } @@ -213,11 +214,10 @@ func (ws *WServer) delUserConn(conn *UserConn) { for _, v := range ws.wsUserToConn { count = count + len(v) } - log.NewWarn(operationID, "WS delete operation", "", "wsUser deleted", ws.wsUserToConn, "disconnection_uid", uid, "disconnection_platform", platform, "online_user_num", len(ws.wsUserToConn), "online_conn_num", count) + log.Debug(operationID, "WS delete operation", "", "wsUser deleted", ws.wsUserToConn, "disconnection_uid", uid, "disconnection_platform", platform, "online_user_num", len(ws.wsUserToConn), "online_conn_num", count) } else { - log.NewWarn(operationID, "WS delete operation", "", "wsUser deleted", ws.wsUserToConn, "disconnection_uid", uid, "disconnection_platform", platform, "online_user_num", len(ws.wsUserToConn)) + log.Debug(operationID, "WS delete operation", "", "wsUser deleted", ws.wsUserToConn, "disconnection_uid", uid, "disconnection_platform", platform, "online_user_num", len(ws.wsUserToConn)) } - userCount = uint64(len(ws.wsUserToConn)) delete(ws.wsConnToUser, conn) } diff --git a/internal/msg_transfer/logic/history_msg_handler.go b/internal/msg_transfer/logic/history_msg_handler.go index f7acea5d6..91179ca0e 100644 --- a/internal/msg_transfer/logic/history_msg_handler.go +++ b/internal/msg_transfer/logic/history_msg_handler.go @@ -11,6 +11,7 @@ import ( "Open_IM/pkg/statistics" "Open_IM/pkg/utils" "context" + "fmt" "github.com/Shopify/sarama" "github.com/golang/protobuf/proto" "strings" @@ -20,15 +21,16 @@ import ( type fcb func(msg []byte, msgKey string) type HistoryConsumerHandler struct { - msgHandle map[string]fcb - historyConsumerGroup *kfk.MConsumerGroup - singleMsgCount uint64 - groupMsgCount uint64 + msgHandle map[string]fcb + historyConsumerGroup *kfk.MConsumerGroup + singleMsgFailedCount uint64 + singleMsgSuccessCount uint64 + groupMsgCount uint64 } func (mc *HistoryConsumerHandler) Init() { - statistics.NewStatistics(&mc.singleMsgCount, config.Config.ModuleName.MsgTransferName, "singleMsgCount insert to mongo ", 300) - statistics.NewStatistics(&mc.groupMsgCount, config.Config.ModuleName.MsgTransferName, "groupMsgCount insert to mongo ", 300) + statistics.NewStatistics(&mc.singleMsgSuccessCount, config.Config.ModuleName.MsgTransferName, fmt.Sprintf("%d second singleMsgCount insert to mongo", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval) + statistics.NewStatistics(&mc.groupMsgCount, config.Config.ModuleName.MsgTransferName, fmt.Sprintf("%d second groupMsgCount insert to mongo", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval) mc.msgHandle = make(map[string]fcb) mc.msgHandle[config.Config.Kafka.Ws2mschat.Topic] = mc.handleChatWs2Mongo @@ -59,10 +61,11 @@ func (mc *HistoryConsumerHandler) handleChatWs2Mongo(msg []byte, msgKey string) if isHistory { err := saveUserChat(msgKey, &msgFromMQ) if err != nil { + mc.singleMsgFailedCount++ log.NewError(operationID, "single data insert to mongo err", err.Error(), msgFromMQ.String()) return } - mc.singleMsgCount++ + mc.singleMsgSuccessCount++ log.NewDebug(msgFromMQ.OperationID, "sendMessageToPush cost time ", time.Since(now)) } if !isSenderSync && msgKey == msgFromMQ.MsgData.SendID { @@ -89,7 +92,6 @@ func (mc *HistoryConsumerHandler) handleChatWs2Mongo(msg []byte, msgKey string) log.NewError(operationID, "single data insert to mongo err", err.Error(), msgFromMQ.String()) return } - mc.singleMsgCount++ log.NewDebug(msgFromMQ.OperationID, "sendMessageToPush cost time ", time.Since(now)) } if !isSenderSync && msgKey == msgFromMQ.MsgData.SendID { diff --git a/internal/push/logic/init.go b/internal/push/logic/init.go index d2d127091..75902e7f8 100644 --- a/internal/push/logic/init.go +++ b/internal/push/logic/init.go @@ -19,7 +19,7 @@ var ( pushCh PushConsumerHandler pushTerminal []int32 producer *kafka.Producer - count uint64 + successCount uint64 ) func Init(rpcPort int) { @@ -30,7 +30,7 @@ func Init(rpcPort int) { } func init() { producer = kafka.NewKafkaProducer(config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.Ws2mschat.Topic) - statistics.NewStatistics(&count, config.Config.ModuleName.PushName, fmt.Sprintf("%d second push to msg_gateway count", 300), 300) + statistics.NewStatistics(&successCount, config.Config.ModuleName.PushName, fmt.Sprintf("%d second push to msg_gateway count", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval) } func Run() { diff --git a/internal/push/logic/push_to_client.go b/internal/push/logic/push_to_client.go index 27682ba5b..b8125be5a 100644 --- a/internal/push/logic/push_to_client.go +++ b/internal/push/logic/push_to_client.go @@ -53,7 +53,7 @@ func MsgToUser(pushMsg *pbPush.PushMsgReq) { } } log.NewInfo(pushMsg.OperationID, "push_result", wsResult, "sendData", pushMsg.MsgData) - count++ + successCount++ if isOfflinePush && pushMsg.PushToUserID != pushMsg.MsgData.SendID { for _, v := range wsResult { if v.ResultCode == 0 { diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index 2e624dd5e..8a95898cd 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -267,3 +267,5 @@ func GroupIsBanPrivateChat(status int32) bool { const BigVersion = "v3" const LogFileName = "OpenIM.log" + +const StatisticsTimeInterval = 300 diff --git a/pkg/statistics/statistics.go b/pkg/statistics/statistics.go index bea4479bd..633eafc80 100644 --- a/pkg/statistics/statistics.go +++ b/pkg/statistics/statistics.go @@ -6,7 +6,7 @@ import ( ) type Statistics struct { - Count *uint64 + AllCount *uint64 ModuleName string PrintArgs string SleepTime int @@ -17,16 +17,16 @@ func (s *Statistics) output() { defer t.Stop() var sum uint64 for { - sum = *s.Count + sum = *s.AllCount select { case <-t.C: } - log.NewWarn("", " system stat ", s.ModuleName, s.PrintArgs, *s.Count-sum, "total:", *s.Count) + log.NewWarn("", " system stat ", s.ModuleName, s.PrintArgs, *s.AllCount-sum, "total:", *s.AllCount) } } -func NewStatistics(count *uint64, moduleName, printArgs string, sleepTime int) *Statistics { - p := &Statistics{Count: count, ModuleName: moduleName, SleepTime: sleepTime, PrintArgs: printArgs} +func NewStatistics(allCount *uint64, moduleName, printArgs string, sleepTime int) *Statistics { + p := &Statistics{AllCount: allCount, ModuleName: moduleName, SleepTime: sleepTime, PrintArgs: printArgs} go p.output() return p } From 446688d5b207bb120b1f0f21de97aee65d8f5cfc Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Mon, 9 May 2022 18:34:14 +0800 Subject: [PATCH 049/143] test --- internal/msg_gateway/gate/logic.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/msg_gateway/gate/logic.go b/internal/msg_gateway/gate/logic.go index f867b3829..b3b9e2b8f 100644 --- a/internal/msg_gateway/gate/logic.go +++ b/internal/msg_gateway/gate/logic.go @@ -146,7 +146,7 @@ func (ws *WServer) pullMsgBySeqListResp(conn *UserConn, m *Req, pb *sdk_ws.PullM } func (ws *WServer) sendMsgReq(conn *UserConn, m *Req) { - sendMsgCount++ + sendMsgAllCount++ log.NewInfo(m.OperationID, "Ws call success to sendMsgReq start", m.MsgIncr, m.ReqIdentifier, m.SendID, m.Data) nReply := new(pbChat.SendMsgResp) isPass, errCode, errMsg, pData := ws.argsValidate(m, constant.WSSendMsg) From c49b5f78bf640d161ef4015d4911619dc0fdb26d Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Mon, 9 May 2022 18:45:44 +0800 Subject: [PATCH 050/143] test --- pkg/common/constant/constant.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index 8a95898cd..b4de3c86c 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -268,4 +268,4 @@ const BigVersion = "v3" const LogFileName = "OpenIM.log" -const StatisticsTimeInterval = 300 +const StatisticsTimeInterval = 10 From ba16fceeb8ae8bbf1cec50321a67be0a03bff6e5 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 10 May 2022 09:06:49 +0800 Subject: [PATCH 051/143] log --- pkg/common/token_verify/jwt_token.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index 162283f87..6ead92ef7 100644 --- a/pkg/common/token_verify/jwt_token.go +++ b/pkg/common/token_verify/jwt_token.go @@ -135,6 +135,7 @@ func GetUserIDFromToken(token string, operationID string) (bool, string, string) log.Error(operationID, "ParseToken failed, ", err.Error(), token) return false, "", err.Error() } + log.Debug(operationID, "token claims.ExpiresAt.Second() ", claims.ExpiresAt.Second()) return true, claims.UID, "" } From 93030964303f94e8d1c1a73d5ceaf00df0dce017 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Tue, 10 May 2022 09:09:37 +0800 Subject: [PATCH 052/143] log change --- cmd/Open-IM-SDK-Core | 2 +- internal/api/chat/get_max_min_seq.go | 4 ---- internal/api/chat/pull_msg.go | 4 ++-- internal/api/chat/send_msg.go | 5 ++--- internal/api/manage/management_chat.go | 2 +- internal/demo/register/verify.go | 4 ++-- internal/msg_gateway/gate/logic.go | 2 +- internal/msg_gateway/gate/rpc_server.go | 3 +-- internal/msg_transfer/logic/history_msg_handler.go | 2 +- internal/msg_transfer/logic/persistent_msg_handler.go | 2 +- internal/push/logic/push_handler.go | 4 ++-- internal/push/logic/push_rpc_server.go | 3 +-- internal/rpc/admin_cms/admin_cms.go | 3 +-- internal/rpc/auth/auth.go | 3 +-- internal/rpc/cache/cache.go | 3 +-- internal/rpc/conversation/conversaion.go | 3 +-- internal/rpc/friend/firend.go | 3 +-- internal/rpc/group/group.go | 3 +-- internal/rpc/message_cms/message_cms.go | 3 +-- internal/rpc/msg/pull_message.go | 2 +- internal/rpc/msg/rpcChat.go | 3 +-- internal/rpc/office/office.go | 3 +-- internal/rpc/organization/organization.go | 3 +-- internal/rpc/statistics/statistics.go | 3 +-- internal/rpc/user/user.go | 3 +-- 25 files changed, 28 insertions(+), 47 deletions(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index 588c9bb77..856ac29b7 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit 588c9bb77b9bd89a9261964006568b8655233cb6 +Subproject commit 856ac29b7c59a722c339a37d509035d94db8451f diff --git a/internal/api/chat/get_max_min_seq.go b/internal/api/chat/get_max_min_seq.go index 95a4b1340..38379d4cc 100644 --- a/internal/api/chat/get_max_min_seq.go +++ b/internal/api/chat/get_max_min_seq.go @@ -35,10 +35,6 @@ func GetSeq(c *gin.Context) { pbData.UserID = params.SendID pbData.OperationID = params.OperationID grpcConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName) - - if grpcConn == nil { - log.ErrorByKv("get grpcConn err", pbData.OperationID, "args", params) - } msgClient := pbMsg.NewChatClient(grpcConn) reply, err := msgClient.GetMaxAndMinSeq(context.Background(), &pbData) if err != nil { diff --git a/internal/api/chat/pull_msg.go b/internal/api/chat/pull_msg.go index 515e9b743..787ae7141 100644 --- a/internal/api/chat/pull_msg.go +++ b/internal/api/chat/pull_msg.go @@ -55,10 +55,10 @@ func PullMsgBySeqList(c *gin.Context) { msgClient := pbChat.NewChatClient(grpcConn) reply, err := msgClient.PullMessageBySeqList(context.Background(), &pbData) if err != nil { - log.ErrorByKv("PullMessageBySeqList error", pbData.OperationID, "err", err.Error()) + log.Error(pbData.OperationID, "PullMessageBySeqList error", err.Error()) return } - log.InfoByKv("rpc call success to PullMessageBySeqList", pbData.OperationID, "ReplyArgs", reply.String(), len(reply.List)) + log.NewInfo(pbData.OperationID, "rpc call success to PullMessageBySeqList", reply.String(), len(reply.List)) c.JSON(http.StatusOK, gin.H{ "errCode": reply.ErrCode, "errMsg": reply.ErrMsg, diff --git a/internal/api/chat/send_msg.go b/internal/api/chat/send_msg.go index a28dcd1ce..36ebd4181 100644 --- a/internal/api/chat/send_msg.go +++ b/internal/api/chat/send_msg.go @@ -63,13 +63,12 @@ func SendMsg(c *gin.Context) { if err := c.BindJSON(¶ms); err != nil { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) log.ErrorByKv("json unmarshal err", "", "err", err.Error(), "data", c.PostForm("data")) + log.Error("0", "BindJSON failed ", err.Error()) return } token := c.Request.Header.Get("token") - - log.InfoByKv("api call success to sendMsgReq", params.OperationID, "Parameters", params) - + log.NewInfo(params.OperationID, "api call success to sendMsgReq", params) pbData := newUserSendMsgReq(token, ¶ms) log.Info("", "", "api SendMsg call start..., [data: %s]", pbData.String()) diff --git a/internal/api/manage/management_chat.go b/internal/api/manage/management_chat.go index e1c1bc0ff..d39aa6d16 100644 --- a/internal/api/manage/management_chat.go +++ b/internal/api/manage/management_chat.go @@ -166,7 +166,7 @@ func ManagementSendMsg(c *gin.Context) { } } - log.InfoByKv("Ws call success to ManagementSendMsgReq", params.OperationID, "Parameters", params) + log.NewInfo(params.OperationID, "Ws call success to ManagementSendMsgReq", params) pbData := newUserSendMsgReq(¶ms) log.Info("", "", "api ManagementSendMsg call start..., [data: %s]", pbData.String()) diff --git a/internal/demo/register/verify.go b/internal/demo/register/verify.go index 01fafbb92..fd16223e0 100644 --- a/internal/demo/register/verify.go +++ b/internal/demo/register/verify.go @@ -35,14 +35,14 @@ func Verify(c *gin.Context) { } if params.VerificationCode == config.Config.Demo.SuperCode { - log.InfoByKv("Super Code Verified successfully", account) + log.NewInfo(params.OperationID, "Super Code Verified successfully", account) data := make(map[string]interface{}) data["account"] = account data["verificationCode"] = params.VerificationCode c.JSON(http.StatusOK, gin.H{"errCode": constant.NoError, "errMsg": "Verified successfully!", "data": data}) return } - log.NewInfo("0", " params.VerificationCode != config.Config.Demo.SuperCode", params.VerificationCode, config.Config.Demo) + log.NewInfo(params.OperationID, " params.VerificationCode != config.Config.Demo.SuperCode", params.VerificationCode, config.Config.Demo) log.NewInfo(params.OperationID, "begin get form redis", account) if params.UsedFor == 0 { params.UsedFor = constant.VerificationCodeForRegister diff --git a/internal/msg_gateway/gate/logic.go b/internal/msg_gateway/gate/logic.go index b3b9e2b8f..e5f49dbc6 100644 --- a/internal/msg_gateway/gate/logic.go +++ b/internal/msg_gateway/gate/logic.go @@ -80,7 +80,7 @@ func (ws *WServer) getSeqReq(conn *UserConn, m *Req) { nReply.ErrMsg = err.Error() ws.getSeqResp(conn, m, nReply) } else { - log.InfoByKv("rpc call success to getSeqReq", rpcReq.OperationID, "replyData", rpcReply.String()) + log.NewInfo(rpcReq.OperationID, "rpc call success to getSeqReq", rpcReply.String()) ws.getSeqResp(conn, m, rpcReply) } } diff --git a/internal/msg_gateway/gate/rpc_server.go b/internal/msg_gateway/gate/rpc_server.go index ad3a2c4d4..555015bb7 100644 --- a/internal/msg_gateway/gate/rpc_server.go +++ b/internal/msg_gateway/gate/rpc_server.go @@ -43,8 +43,7 @@ func (r *RPCServer) run() { address := listenIP + ":" + strconv.Itoa(r.rpcPort) listener, err := net.Listen("tcp", address) if err != nil { - log.Error("", "fail to listening consumer failed ", err.Error(), address) - return + panic("listening err:" + err.Error() + r.rpcRegisterName) } defer listener.Close() srv := grpc.NewServer() diff --git a/internal/msg_transfer/logic/history_msg_handler.go b/internal/msg_transfer/logic/history_msg_handler.go index 91179ca0e..424edd4e2 100644 --- a/internal/msg_transfer/logic/history_msg_handler.go +++ b/internal/msg_transfer/logic/history_msg_handler.go @@ -111,7 +111,7 @@ func (HistoryConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error { ret func (mc *HistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error { for msg := range claim.Messages() { - log.InfoByKv("kafka get info to mongo", "", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) + log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) sess.MarkMessage(msg, "") } diff --git a/internal/msg_transfer/logic/persistent_msg_handler.go b/internal/msg_transfer/logic/persistent_msg_handler.go index 36b336469..6e330a664 100644 --- a/internal/msg_transfer/logic/persistent_msg_handler.go +++ b/internal/msg_transfer/logic/persistent_msg_handler.go @@ -70,7 +70,7 @@ func (PersistentConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error { func (pc *PersistentConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error { for msg := range claim.Messages() { - log.InfoByKv("kafka get info to mysql", "", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) + log.NewDebug("", "kafka get info to mysql", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) pc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) sess.MarkMessage(msg, "") } diff --git a/internal/push/logic/push_handler.go b/internal/push/logic/push_handler.go index 294c48f15..192a9c400 100644 --- a/internal/push/logic/push_handler.go +++ b/internal/push/logic/push_handler.go @@ -31,7 +31,7 @@ func (ms *PushConsumerHandler) Init() { config.Config.Kafka.ConsumerGroupID.MsgToPush) } func (ms *PushConsumerHandler) handleMs2PsChat(msg []byte) { - log.InfoByKv("msg come from kafka And push!!!", "", "msg", string(msg)) + log.NewDebug("", "msg come from kafka And push!!!", "msg", string(msg)) msgFromMQ := pbChat.PushMsgDataToMQ{} if err := proto.Unmarshal(msg, &msgFromMQ); err != nil { log.ErrorByKv("push Unmarshal msg err", "", "msg", string(msg), "err", err.Error()) @@ -45,7 +45,7 @@ func (PushConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error { return func (ms *PushConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error { for msg := range claim.Messages() { - log.InfoByKv("kafka get info to mysql", "", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) + log.NewDebug("", "kafka get info to mysql", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) ms.msgHandle[msg.Topic](msg.Value) } return nil diff --git a/internal/push/logic/push_rpc_server.go b/internal/push/logic/push_rpc_server.go index a33ba68b5..ba656a7d0 100644 --- a/internal/push/logic/push_rpc_server.go +++ b/internal/push/logic/push_rpc_server.go @@ -37,8 +37,7 @@ func (r *RPCServer) run() { listener, err := net.Listen("tcp", address) if err != nil { - log.Error("", "push module rpc listening port err", err.Error(), address) - return + panic("listening err:" + err.Error() + r.rpcRegisterName) } defer listener.Close() srv := grpc.NewServer() diff --git a/internal/rpc/admin_cms/admin_cms.go b/internal/rpc/admin_cms/admin_cms.go index 3a3f7dffd..a1aa96e9b 100644 --- a/internal/rpc/admin_cms/admin_cms.go +++ b/internal/rpc/admin_cms/admin_cms.go @@ -46,8 +46,7 @@ func (s *adminCMSServer) Run() { //listener network listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("0", "Listen failed ", err.Error(), address) - return + panic("listening err:" + err.Error() + s.rpcRegisterName) } log.NewInfo("0", "listen network success, ", address, listener) defer listener.Close() diff --git a/internal/rpc/auth/auth.go b/internal/rpc/auth/auth.go index 1de8f16c7..09b903c68 100644 --- a/internal/rpc/auth/auth.go +++ b/internal/rpc/auth/auth.go @@ -88,8 +88,7 @@ func (rpc *rpcAuth) Run() { address := listenIP + ":" + strconv.Itoa(rpc.rpcPort) listener, err := net.Listen("tcp", address) if err != nil { - log.NewError(operationID, "listen network failed ", err.Error(), address) - return + panic("listening err:" + err.Error() + rpc.rpcRegisterName) } log.NewInfo(operationID, "listen network success, ", address, listener) //grpc server diff --git a/internal/rpc/cache/cache.go b/internal/rpc/cache/cache.go index 2cf6f33d0..07a94d0e6 100644 --- a/internal/rpc/cache/cache.go +++ b/internal/rpc/cache/cache.go @@ -47,8 +47,7 @@ func (s *cacheServer) Run() { //listener network listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("0", "Listen failed ", err.Error(), address) - return + panic("listening err:" + err.Error() + s.rpcRegisterName) } log.NewInfo("0", "listen network success, ", address, listener) defer listener.Close() diff --git a/internal/rpc/conversation/conversaion.go b/internal/rpc/conversation/conversaion.go index eb08f74a4..84e0b302a 100644 --- a/internal/rpc/conversation/conversaion.go +++ b/internal/rpc/conversation/conversaion.go @@ -148,8 +148,7 @@ func (rpc *rpcConversation) Run() { listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("0", "listen network failed ", err.Error(), address) - return + panic("listening err:" + err.Error() + rpc.rpcRegisterName) } log.NewInfo("0", "listen network success, ", address, listener) //grpc server diff --git a/internal/rpc/friend/firend.go b/internal/rpc/friend/firend.go index 5941739c5..d85ccbc55 100644 --- a/internal/rpc/friend/firend.go +++ b/internal/rpc/friend/firend.go @@ -53,8 +53,7 @@ func (s *friendServer) Run() { //listener network listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("0", "Listen failed ", err.Error(), address) - return + panic("listening err:" + err.Error() + s.rpcRegisterName) } log.NewInfo("0", "listen ok ", address) defer listener.Close() diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index c9f63cac3..c8b70aa63 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -54,8 +54,7 @@ func (s *groupServer) Run() { //listener network listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("", "Listen failed ", err.Error(), address) - return + panic("listening err:" + err.Error() + s.rpcRegisterName) } log.NewInfo("", "listen network success, ", address, listener) defer listener.Close() diff --git a/internal/rpc/message_cms/message_cms.go b/internal/rpc/message_cms/message_cms.go index 40609de7c..cb2ce3a09 100644 --- a/internal/rpc/message_cms/message_cms.go +++ b/internal/rpc/message_cms/message_cms.go @@ -54,8 +54,7 @@ func (s *messageCMSServer) Run() { //listener network listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("0", "Listen failed ", err.Error(), address) - return + panic("listening err:" + err.Error() + s.rpcRegisterName) } log.NewInfo("0", "listen network success, ", address, listener) defer listener.Close() diff --git a/internal/rpc/msg/pull_message.go b/internal/rpc/msg/pull_message.go index 10a0978aa..a91c07a04 100644 --- a/internal/rpc/msg/pull_message.go +++ b/internal/rpc/msg/pull_message.go @@ -11,7 +11,7 @@ import ( ) func (rpc *rpcChat) GetMaxAndMinSeq(_ context.Context, in *pbMsg.GetMaxAndMinSeqReq) (*pbMsg.GetMaxAndMinSeqResp, error) { - log.InfoByKv("rpc getMaxAndMinSeq is arriving", in.OperationID, in.String()) + log.NewInfo(in.OperationID, "rpc getMaxAndMinSeq is arriving", in.String()) //seq, err := model.GetBiggestSeqFromReceive(in.UserID) maxSeq, err1 := commonDB.DB.GetUserMaxSeq(in.UserID) minSeq, err2 := commonDB.DB.GetUserMinSeq(in.UserID) diff --git a/internal/rpc/msg/rpcChat.go b/internal/rpc/msg/rpcChat.go index e49d90a6d..8bed05810 100644 --- a/internal/rpc/msg/rpcChat.go +++ b/internal/rpc/msg/rpcChat.go @@ -45,8 +45,7 @@ func (rpc *rpcChat) Run() { address := listenIP + ":" + strconv.Itoa(rpc.rpcPort) listener, err := net.Listen("tcp", address) if err != nil { - log.Error("", "listen network failed ", err.Error(), address) - return + panic("listening err:" + err.Error() + rpc.rpcRegisterName) } log.Info("", "listen network success, address ", address) diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 46e8a0cba..bc680f4bb 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -49,8 +49,7 @@ func (s *officeServer) Run() { //listener network listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("0", "Listen failed ", err.Error(), address) - return + panic("listening err:" + err.Error() + s.rpcRegisterName) } log.NewInfo("0", "listen network success, ", address, listener) defer listener.Close() diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index 8dd512dcf..557539766 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -50,8 +50,7 @@ func (s *organizationServer) Run() { //listener network listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("", "Listen failed ", err.Error(), address) - return + panic("listening err:" + err.Error() + s.rpcRegisterName) } log.NewInfo("", "listen network success, ", address, listener) defer listener.Close() diff --git a/internal/rpc/statistics/statistics.go b/internal/rpc/statistics/statistics.go index d7100c50d..e4daf0309 100644 --- a/internal/rpc/statistics/statistics.go +++ b/internal/rpc/statistics/statistics.go @@ -58,8 +58,7 @@ func (s *statisticsServer) Run() { //listener network listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("0", "Listen failed ", err.Error(), address) - return + panic("listening err:" + err.Error() + s.rpcRegisterName) } log.NewInfo("0", "listen network success, ", address, listener) defer listener.Close() diff --git a/internal/rpc/user/user.go b/internal/rpc/user/user.go index abb3b0a34..a888807b9 100644 --- a/internal/rpc/user/user.go +++ b/internal/rpc/user/user.go @@ -55,8 +55,7 @@ func (s *userServer) Run() { //listener network listener, err := net.Listen("tcp", address) if err != nil { - log.NewError("0", "listen network failed ", err.Error(), address) - return + panic("listening err:" + err.Error() + s.rpcRegisterName) } log.NewInfo("0", "listen network success, address ", address, listener) defer listener.Close() From c234e2ca3d12605d91f62ce2a8213d33fc6d07c2 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 10 May 2022 09:16:56 +0800 Subject: [PATCH 053/143] log --- pkg/common/token_verify/jwt_token.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index 6ead92ef7..703237c2d 100644 --- a/pkg/common/token_verify/jwt_token.go +++ b/pkg/common/token_verify/jwt_token.go @@ -135,8 +135,9 @@ func GetUserIDFromToken(token string, operationID string) (bool, string, string) log.Error(operationID, "ParseToken failed, ", err.Error(), token) return false, "", err.Error() } - log.Debug(operationID, "token claims.ExpiresAt.Second() ", claims.ExpiresAt.Second()) + log.Debug(operationID, "token claims.ExpiresAt.Second() ", claims.ExpiresAt.Unix()) return true, claims.UID, "" + } func ParseTokenGetUserID(token string, operationID string) (error, string) { From 7de29c29e9bc5062f2964fbda1a5e0c6f041090e Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 10 May 2022 09:45:55 +0800 Subject: [PATCH 054/143] add ParseToken --- cmd/Open-IM-SDK-Core | 2 +- internal/api/auth/auth.go | 26 ++++++++++++++++++++++++++ pkg/base_info/auth_api_struct.go | 9 +++++++++ pkg/common/token_verify/jwt_token.go | 9 +++++++++ 4 files changed, 45 insertions(+), 1 deletion(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index 856ac29b7..38bda4c08 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit 856ac29b7c59a722c339a37d509035d94db8451f +Subproject commit 38bda4c08908a9f543925894ca50ee1802dd02e0 diff --git a/internal/api/auth/auth.go b/internal/api/auth/auth.go index ea01a6944..c4e944acc 100644 --- a/internal/api/auth/auth.go +++ b/internal/api/auth/auth.go @@ -4,6 +4,7 @@ import ( api "Open_IM/pkg/base_info" "Open_IM/pkg/common/config" "Open_IM/pkg/common/log" + "Open_IM/pkg/common/token_verify" "Open_IM/pkg/grpc-etcdv3/getcdv3" rpc "Open_IM/pkg/proto/auth" open_im_sdk "Open_IM/pkg/proto/sdk_ws" @@ -96,3 +97,28 @@ func UserToken(c *gin.Context) { log.NewInfo(req.OperationID, "UserToken return ", resp) c.JSON(http.StatusOK, resp) } + +func ParseToken(c *gin.Context) { + params := api.ParseTokenReq{} + if err := c.BindJSON(¶ms); err != nil { + errMsg := " BindJSON failed " + err.Error() + log.NewError("0", errMsg) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": errMsg}) + return + } + + var ok bool + var errInfo string + var expireTime int64 + ok, _, errInfo, expireTime = token_verify.GetUserIDFromTokenExpireTime(c.Request.Header.Get("token"), params.OperationID) + if !ok { + errMsg := params.OperationID + " " + "GetUserIDFromTokenExpireTime failed " + errInfo + " token:" + c.Request.Header.Get("token") + log.NewError(params.OperationID, errMsg) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + resp := api.ParseTokenResp{CommResp: api.CommResp{ErrCode: 0, ErrMsg: ""}, ExpireTime: expireTime} + log.NewInfo(params.OperationID, "ParseToken return ", resp) + c.JSON(http.StatusOK, resp) +} diff --git a/pkg/base_info/auth_api_struct.go b/pkg/base_info/auth_api_struct.go index 13d6e140b..54c0025ef 100644 --- a/pkg/base_info/auth_api_struct.go +++ b/pkg/base_info/auth_api_struct.go @@ -37,3 +37,12 @@ type UserTokenResp struct { CommResp UserToken UserTokenInfo `json:"data"` } + +type ParseTokenReq struct { + OperationID string `json:"operationID" binding:"required"` +} + +type ParseTokenResp struct { + CommResp + ExpireTime int64 `json:"token" binding:"required"` +} diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index 703237c2d..307f8cd4f 100644 --- a/pkg/common/token_verify/jwt_token.go +++ b/pkg/common/token_verify/jwt_token.go @@ -137,7 +137,16 @@ func GetUserIDFromToken(token string, operationID string) (bool, string, string) } log.Debug(operationID, "token claims.ExpiresAt.Second() ", claims.ExpiresAt.Unix()) return true, claims.UID, "" + claims.UID +} +func GetUserIDFromTokenExpireTime(token string, operationID string) (bool, string, string, int64) { + claims, err := ParseToken(token, operationID) + if err != nil { + log.Error(operationID, "ParseToken failed, ", err.Error(), token) + return false, "", err.Error(), 0 + } + return true, claims.UID, "", claims.ExpiresAt.Unix() } func ParseTokenGetUserID(token string, operationID string) (error, string) { From 6226f65e20d20c1800846215caee509db96d21ed Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 10 May 2022 09:47:00 +0800 Subject: [PATCH 055/143] add ParseToken --- pkg/common/token_verify/jwt_token.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/common/token_verify/jwt_token.go b/pkg/common/token_verify/jwt_token.go index 307f8cd4f..363feeedc 100644 --- a/pkg/common/token_verify/jwt_token.go +++ b/pkg/common/token_verify/jwt_token.go @@ -137,7 +137,6 @@ func GetUserIDFromToken(token string, operationID string) (bool, string, string) } log.Debug(operationID, "token claims.ExpiresAt.Second() ", claims.ExpiresAt.Unix()) return true, claims.UID, "" - claims.UID } func GetUserIDFromTokenExpireTime(token string, operationID string) (bool, string, string, int64) { From 6e226b165c787dc62d058c142428982d46c55dcb Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Tue, 10 May 2022 10:01:46 +0800 Subject: [PATCH 056/143] sdk version --- cmd/Open-IM-SDK-Core | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index 38bda4c08..588c9bb77 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit 38bda4c08908a9f543925894ca50ee1802dd02e0 +Subproject commit 588c9bb77b9bd89a9261964006568b8655233cb6 From ac9620c253607c4da9c49482bd5eae379727c32e Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 10 May 2022 10:12:53 +0800 Subject: [PATCH 057/143] add ParseToken --- cmd/open_im_api/main.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index c6fba662a..db56ea742 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -97,6 +97,7 @@ func main() { { authRouterGroup.POST("/user_register", apiAuth.UserRegister) //1 authRouterGroup.POST("/user_token", apiAuth.UserToken) //1 + authRouterGroup.POST("/parse_token", apiAuth.ParseToken) //1 } //Third service thirdGroup := r.Group("/third") From 00265a7e8e2df4040b885706fc9656c01e1b16af Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 10:44:43 +0800 Subject: [PATCH 058/143] cache --- cmd/open_im_api/main.go | 1 + config/config.yaml | 3 +- internal/api/chat/del_msg.go | 3 +- internal/api/conversation/conversation.go | 14 +- internal/api/third/minio_init.go | 25 +++- .../api/third/minio_storage_credential.go | 13 +- internal/api/user/user.go | 120 +----------------- internal/cms_api/admin/admin.go | 94 +++++++++++++- internal/cms_api/group/group.go | 21 +++ internal/cms_api/message_cms/message.go | 2 + internal/cms_api/router.go | 2 + internal/cms_api/statistics/statistics.go | 10 ++ internal/cms_api/user/user.go | 23 +++- internal/rpc/admin_cms/admin_cms.go | 1 + internal/rpc/cache/cache.go | 21 ++- internal/rpc/group/group.go | 8 +- internal/rpc/message_cms/message_cms.go | 1 + internal/rpc/msg/del_msg.go | 7 - internal/rpc/office/office.go | 18 +-- internal/rpc/statistics/statistics.go | 16 ++- internal/rpc/user/user.go | 29 +++-- pkg/cms_api_struct/admin.go | 38 +++++- pkg/common/config/config.go | 1 + pkg/common/db/model_struct.go | 11 ++ pkg/common/db/mysql.go | 5 +- .../mysql_model/im_mysql_model/file_model.go | 38 ++++++ pkg/utils/file.go | 31 +++++ 27 files changed, 369 insertions(+), 187 deletions(-) create mode 100644 pkg/common/db/mysql_model/im_mysql_model/file_model.go diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index c6fba662a..d902c2b9c 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -122,6 +122,7 @@ func main() { managementGroup.POST("/get_all_users_uid", manage.GetAllUsersUid) //1 managementGroup.POST("/account_check", manage.AccountCheck) //1 managementGroup.POST("/get_users_online_status", manage.GetUsersOnlineStatus) //1 + } //Conversation conversationGroup := r.Group("/conversation") diff --git a/config/config.yaml b/config/config.yaml index 3ea75b135..8c1ffcc1a 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -98,7 +98,8 @@ credential: #腾讯cos,发送图片、视频、文件时需要,请自行申 secretID: AKIDGNYVChzIQinu7QEgtNp0hnNgqcV8vZTC1 secretKey: kz15vW83qM6dBUWIq681eBZA0c0vlIbe1 minio: #MinIO 发送图片、视频、文件时需要,请自行申请后替换,必须修改。 客户端初始化InitSDK,中 object_storage参数为minio - bucket: openim + bucket: openim # 存储内容桶 + appBucket: app # 存储app的桶 location: us-east-1 endpoint: http://127.0.0.1:10005 #minio外网ip 这个ip是给客户端访问的 endpointInner: http://127.0.0.1:10005 #minio内网地址 如果im server 可以通过内网访问到 minio就可以填写 diff --git a/internal/api/chat/del_msg.go b/internal/api/chat/del_msg.go index 81b705953..d883f095c 100644 --- a/internal/api/chat/del_msg.go +++ b/internal/api/chat/del_msg.go @@ -25,10 +25,10 @@ func DelMsg(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) return } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req:", req) if err := utils.CopyStructFields(&reqPb, &req); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields", err.Error()) } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req:", req) grpcConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName) msgClient := pbChat.NewChatClient(grpcConn) respPb, err := msgClient.DelMsgList(context.Background(), &reqPb) @@ -39,5 +39,6 @@ func DelMsg(c *gin.Context) { } resp.ErrCode = respPb.ErrCode resp.ErrMsg = respPb.ErrMsg + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp) c.JSON(http.StatusOK, resp) } diff --git a/internal/api/conversation/conversation.go b/internal/api/conversation/conversation.go index dcaa2b62e..2e1709847 100644 --- a/internal/api/conversation/conversation.go +++ b/internal/api/conversation/conversation.go @@ -25,13 +25,13 @@ func SetConversation(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) return } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.Conversation = &pbUser.Conversation{} err := utils.CopyStructFields(&reqPb, req) err = utils.CopyStructFields(reqPb.Conversation, req.Conversation) if err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", reqPb.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := pbUser.NewUserClient(etcdConn) respPb, err := client.SetConversation(context.Background(), &reqPb) @@ -56,13 +56,13 @@ func ModifyConversationField(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) return } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.Conversation = &pbConversation.Conversation{} err := utils.CopyStructFields(&reqPb, req) err = utils.CopyStructFields(reqPb.Conversation, req.Conversation) if err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", reqPb.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImConversationName) client := pbConversation.NewConversationClient(etcdConn) respPb, err := client.ModifyConversationField(context.Background(), &reqPb) @@ -88,10 +88,10 @@ func BatchSetConversations(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) return } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) if err := utils.CopyStructFields(&reqPb, req); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", reqPb.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := pbUser.NewUserClient(etcdConn) respPb, err := client.BatchSetConversations(context.Background(), &reqPb) @@ -120,10 +120,10 @@ func GetAllConversations(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) return } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) if err := utils.CopyStructFields(&reqPb, req); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", reqPb.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := pbUser.NewUserClient(etcdConn) respPb, err := client.GetAllConversations(context.Background(), &reqPb) @@ -152,10 +152,10 @@ func GetConversation(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) return } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) if err := utils.CopyStructFields(&reqPb, req); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", reqPb.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := pbUser.NewUserClient(etcdConn) respPb, err := client.GetConversation(context.Background(), &reqPb) @@ -184,10 +184,10 @@ func GetConversations(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) return } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) if err := utils.CopyStructFields(&reqPb, req); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", reqPb.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := pbUser.NewUserClient(etcdConn) respPb, err := client.GetConversations(context.Background(), &reqPb) @@ -216,10 +216,10 @@ func SetRecvMsgOpt(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) return } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) if err := utils.CopyStructFields(&reqPb, req); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", reqPb.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := pbUser.NewUserClient(etcdConn) respPb, err := client.SetRecvMsgOpt(context.Background(), &reqPb) diff --git a/internal/api/third/minio_init.go b/internal/api/third/minio_init.go index 2c00965bf..e9aa7c1aa 100644 --- a/internal/api/third/minio_init.go +++ b/internal/api/third/minio_init.go @@ -12,7 +12,7 @@ import ( ) var ( - minioClient *minio.Client + MinioClient *minio.Client ) func MinioInit() { @@ -31,7 +31,7 @@ func MinioInit() { return } log.NewInfo(operationID, utils.GetSelfFuncName(), "Parse ok ", config.Config.Credential.Minio) - minioClient, err = minio.New(minioUrl.Host, &minio.Options{ + MinioClient, err = minio.New(minioUrl.Host, &minio.Options{ Creds: credentials.NewStaticV4(config.Config.Credential.Minio.AccessKeyID, config.Config.Credential.Minio.SecretAccessKey, ""), Secure: false, }) @@ -44,10 +44,25 @@ func MinioInit() { Region: config.Config.Credential.Minio.Location, ObjectLocking: false, } - err = minioClient.MakeBucket(context.Background(), config.Config.Credential.Minio.Bucket, opt) + err = MinioClient.MakeBucket(context.Background(), config.Config.Credential.Minio.Bucket, opt) if err != nil { log.NewError(operationID, utils.GetSelfFuncName(), "MakeBucket failed ", err.Error()) - exists, err := minioClient.BucketExists(context.Background(), config.Config.Credential.Minio.Bucket) + exists, err := MinioClient.BucketExists(context.Background(), config.Config.Credential.Minio.Bucket) + if err == nil && exists { + log.NewWarn(operationID, utils.GetSelfFuncName(), "We already own ", config.Config.Credential.Minio.Bucket) + } else { + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), err.Error()) + } + log.NewError(operationID, utils.GetSelfFuncName(), "create bucket failed and bucket not exists") + return + } + } + // make app bucket + err = MinioClient.MakeBucket(context.Background(), config.Config.Credential.Minio.AppBucket, opt) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), "MakeBucket failed ", err.Error()) + exists, err := MinioClient.BucketExists(context.Background(), config.Config.Credential.Minio.Bucket) if err == nil && exists { log.NewWarn(operationID, utils.GetSelfFuncName(), "We already own ", config.Config.Credential.Minio.Bucket) } else { @@ -59,7 +74,7 @@ func MinioInit() { } } // 自动化桶public的代码 - err = minioClient.SetBucketPolicy(context.Background(), config.Config.Credential.Minio.Bucket, policy.BucketPolicyReadWrite) + err = MinioClient.SetBucketPolicy(context.Background(), config.Config.Credential.Minio.Bucket, policy.BucketPolicyReadWrite) if err != nil { log.NewDebug("", utils.GetSelfFuncName(), "SetBucketPolicy failed please set in web", err.Error()) return diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index 3df001e18..d6552518a 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -33,7 +33,7 @@ func MinioUploadFile(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) return } - + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), req) var ok bool var errInfo string ok, _, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) @@ -61,7 +61,7 @@ func MinioUploadFile(c *gin.Context) { } snapShotNewName, snapShotNewType := utils.GetNewFileNameAndContentType(snapShotFile.Filename, constant.ImageType) log.Debug(req.OperationID, utils.GetSelfFuncName(), snapShotNewName, snapShotNewType) - _, err = minioClient.PutObject(context.Background(), config.Config.Credential.Minio.Bucket, snapShotNewName, snapShotFileObj, snapShotFile.Size, minio.PutObjectOptions{ContentType: snapShotNewType}) + _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.Bucket, snapShotNewName, snapShotFileObj, snapShotFile.Size, minio.PutObjectOptions{ContentType: snapShotNewType}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject snapShotFile error", err.Error()) c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) @@ -72,6 +72,7 @@ func MinioUploadFile(c *gin.Context) { } file, err := c.FormFile("file") if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "FormFile failed", err.Error()) c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file arg: " + err.Error()}) return } @@ -83,10 +84,10 @@ func MinioUploadFile(c *gin.Context) { } newName, newType := utils.GetNewFileNameAndContentType(file.Filename, req.FileType) log.Debug(req.OperationID, utils.GetSelfFuncName(), newName, newType) - _, err = minioClient.PutObject(context.Background(), config.Config.Credential.Minio.Bucket, newName, fileObj, file.Size, minio.PutObjectOptions{ContentType: newType}) + _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.Bucket, newName, fileObj, file.Size, minio.PutObjectOptions{ContentType: newType}) if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "open file error") - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "invalid file path" + err.Error()}) + log.NewError(req.OperationID, utils.GetSelfFuncName(), "upload file error") + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "upload file error" + err.Error()}) return } resp.NewName = newName @@ -106,7 +107,7 @@ func MinioStorageCredential(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) return } - + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) var ok bool var errInfo string ok, _, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) diff --git a/internal/api/user/user.go b/internal/api/user/user.go index f9bb9cdae..6be7ed710 100644 --- a/internal/api/user/user.go +++ b/internal/api/user/user.go @@ -26,21 +26,18 @@ func GetUsersInfoFromCache(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": http.StatusBadRequest, "errMsg": err.Error()}) return } + log.NewInfo(params.OperationID, "GetUsersInfoFromCache req: ", params) req := &rpc.GetUserInfoReq{} utils.CopyStructFields(req, ¶ms) - 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") + errMsg := "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") log.NewError(req.OperationID, errMsg) c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } - - log.NewInfo(params.OperationID, "GetUserInfo args ", req.String()) - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := rpc.NewUserClient(etcdConn) RpcResp, err := client.GetUserInfo(context.Background(), req) @@ -54,117 +51,12 @@ func GetUsersInfoFromCache(c *gin.Context) { publicUserInfoList = append(publicUserInfoList, &open_im_sdk.PublicUserInfo{UserID: v.UserID, Nickname: v.Nickname, FaceURL: v.FaceURL, Gender: v.Gender, Ex: v.Ex}) } - resp := api.GetUsersInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, UserInfoList: publicUserInfoList} resp.Data = jsonData.JsonDataList(resp.UserInfoList) log.NewInfo(req.OperationID, "GetUserInfo api return ", resp) c.JSON(http.StatusOK, resp) } -//func GetUsersInfoFromCache(c *gin.Context) { -// params := api.GetUsersInfoReq{} -// if err := c.BindJSON(¶ms); err != nil { -// log.NewError("0", "BindJSON failed ", err.Error()) -// c.JSON(http.StatusBadRequest, gin.H{"errCode": http.StatusBadRequest, "errMsg": err.Error()}) -// return -// } -// getUserInfoReq := &rpc.GetUserInfoReq{} -// getUserInfoReq.OperationID = params.OperationID -// var ok bool -// ok, getUserInfoReq.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), getUserInfoReq.OperationID) -// if !ok { -// log.NewError(getUserInfoReq.OperationID, "GetUserIDFromToken false ", c.Request.Header.Get("token")) -// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserIDFromToken failed"}) -// return -// } -// log.NewInfo(params.OperationID, "GetUserInfo args ", getUserInfoReq.String()) -// reqCacheGetUserInfo := &cacheRpc.GetUserInfoFromCacheReq{} -// utils.CopyStructFields(reqCacheGetUserInfo, ¶ms) -// var userInfoList []*open_im_sdk.UserInfo -// var publicUserInfoList []*open_im_sdk.PublicUserInfo -// etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) -// cacheClient := cacheRpc.NewCacheClient(etcdConn) -// cacheResp, err := cacheClient.GetUserInfoFromCache(context.Background(), reqCacheGetUserInfo) -// if err != nil { -// log.NewError(getUserInfoReq.OperationID, utils.GetSelfFuncName(), "GetUserInfo failed", err.Error()) -// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed: " + err.Error()}) -// return -// } -// if cacheResp.CommonResp.ErrCode != 0 { -// log.NewError(getUserInfoReq.OperationID, utils.GetSelfFuncName(), "GetUserInfo failed", cacheResp.CommonResp) -// resp := api.GetUsersInfoResp{CommResp: api.CommResp{ErrCode: cacheResp.CommonResp.ErrCode, ErrMsg: cacheResp.CommonResp.ErrMsg}} -// resp.Data = []map[string]interface{}{} -// log.NewInfo(getUserInfoReq.OperationID, "GetUserInfo api return ", resp) -// c.JSON(http.StatusOK, resp) -// return -// } -// log.NewInfo(getUserInfoReq.OperationID, utils.GetSelfFuncName(), "cacheResp:", cacheResp.String()) -// userInfoList = cacheResp.UserInfoList -// var needCacheUserIDList []string -// for _, userID := range reqCacheGetUserInfo.UserIDList { -// isGetUserInfoFromCache := false -// for _, cacheUser := range userInfoList { -// if cacheUser.UserID == userID { -// isGetUserInfoFromCache = true -// } -// } -// if !isGetUserInfoFromCache { -// needCacheUserIDList = append(needCacheUserIDList, userID) -// } -// } -// if len(needCacheUserIDList) == 0 { -// log.NewInfo(getUserInfoReq.OperationID, utils.GetSelfFuncName(), "get all userInfo from cache success") -// for _, v := range userInfoList { -// publicUserInfoList = append(publicUserInfoList, -// &open_im_sdk.PublicUserInfo{UserID: v.UserID, Nickname: v.Nickname, FaceURL: v.FaceURL, Gender: v.Gender, Ex: v.Ex}) -// } -// resp := api.GetUsersInfoResp{CommResp: api.CommResp{ErrCode: cacheResp.CommonResp.ErrCode, ErrMsg: cacheResp.CommonResp.ErrMsg}, UserInfoList: publicUserInfoList} -// resp.Data = jsonData.JsonDataList(resp.UserInfoList) -// log.NewInfo(getUserInfoReq.OperationID, "GetUserInfo api return ", resp) -// c.JSON(http.StatusOK, resp) -// return -// } -// -// log.NewDebug(getUserInfoReq.OperationID, utils.GetSelfFuncName(), "need cache user list", needCacheUserIDList) -// getUserInfoReq.UserIDList = needCacheUserIDList -// etcdConn = getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) -// client := rpc.NewUserClient(etcdConn) -// rpcResp, err := client.GetUserInfo(context.Background(), getUserInfoReq) -// if err != nil { -// log.NewError(getUserInfoReq.OperationID, "GetUserInfo failed ", err.Error(), getUserInfoReq.String()) -// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed" + err.Error()}) -// return -// } -// if rpcResp.CommonResp.ErrCode != 0 { -// log.NewError(getUserInfoReq.OperationID, utils.GetSelfFuncName(), "GetUserInfo failed", cacheResp.CommonResp) -// resp := api.GetUsersInfoResp{CommResp: api.CommResp{ErrCode: cacheResp.CommonResp.ErrCode, ErrMsg: cacheResp.CommonResp.ErrMsg}} -// resp.Data = []map[string]interface{}{} -// log.NewInfo(getUserInfoReq.OperationID, "GetUserInfo api return ", resp) -// c.JSON(http.StatusOK, resp) -// return -// } -// userInfoList = append(userInfoList, rpcResp.UserInfoList...) -// cacheUpdateUserInfoReq := &cacheRpc.UpdateUserInfoToCacheReq{ -// UserInfoList: rpcResp.UserInfoList, -// OperationID: getUserInfoReq.OperationID, -// } -// _, err = cacheClient.UpdateUserInfoToCache(context.Background(), cacheUpdateUserInfoReq) -// if err != nil { -// log.NewError(getUserInfoReq.OperationID, "GetUserInfo failed ", err.Error()) -// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed:" + err.Error()}) -// return -// } -// userInfoList = rpcResp.UserInfoList -// for _, v := range userInfoList { -// publicUserInfoList = append(publicUserInfoList, -// &open_im_sdk.PublicUserInfo{UserID: v.UserID, Nickname: v.Nickname, FaceURL: v.FaceURL, Gender: v.Gender, Ex: v.Ex}) -// } -// resp := api.GetUsersInfoResp{CommResp: api.CommResp{ErrCode: rpcResp.CommonResp.ErrCode, ErrMsg: rpcResp.CommonResp.ErrMsg}, UserInfoList: publicUserInfoList} -// resp.Data = jsonData.JsonDataList(resp.UserInfoList) -// log.NewInfo(getUserInfoReq.OperationID, "GetUserInfo api return ", resp) -// c.JSON(http.StatusOK, resp) -//} - func GetFriendIDListFromCache(c *gin.Context) { var ( req api.GetFriendIDListFromCacheReq @@ -177,18 +69,17 @@ func GetFriendIDListFromCache(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": http.StatusBadRequest, "errMsg": err.Error()}) return } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), req) reqPb.OperationID = req.OperationID - var ok bool var errInfo string ok, reqPb.UserID, 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") + errMsg := "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token") log.NewError(req.OperationID, errMsg) c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) client := cacheRpc.NewCacheClient(etcdConn) respPb, err := client.GetFriendIDListFromCache(context.Background(), &reqPb) @@ -214,8 +105,8 @@ func GetBlackIDListFromCache(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": http.StatusBadRequest, "errMsg": err.Error()}) return } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) reqPb.OperationID = req.OperationID - var ok bool var errInfo string ok, reqPb.UserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID) @@ -225,7 +116,6 @@ func GetBlackIDListFromCache(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) return } - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) client := cacheRpc.NewCacheClient(etcdConn) respPb, err := client.GetBlackIDListFromCache(context.Background(), &reqPb) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 02b2390c5..eb5ccd156 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -1,25 +1,29 @@ package admin import ( - "Open_IM/pkg/cms_api_struct" + apiStruct "Open_IM/pkg/cms_api_struct" "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" + imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model" openIMHttp "Open_IM/pkg/common/http" "Open_IM/pkg/common/log" "Open_IM/pkg/grpc-etcdv3/getcdv3" pbAdmin "Open_IM/pkg/proto/admin_cms" "Open_IM/pkg/utils" "context" + "github.com/minio/minio-go/v7" + "net/http" "strings" + "Open_IM/internal/api/third" "github.com/gin-gonic/gin" ) // register func AdminLogin(c *gin.Context) { var ( - req cms_api_struct.AdminLoginRequest - resp cms_api_struct.AdminLoginResponse + req apiStruct.AdminLoginRequest + resp apiStruct.AdminLoginResponse reqPb pbAdmin.AdminLoginReq ) if err := c.BindJSON(&req); err != nil { @@ -40,3 +44,87 @@ func AdminLogin(c *gin.Context) { resp.Token = respPb.Token openIMHttp.RespHttp200(c, constant.OK, resp) } + +func UploadUpdateApp(c *gin.Context) { + var ( + req apiStruct.UploadUpdateAppReq + resp apiStruct.UploadUpdateAppResp + ) + if err := c.Bind(&req); err != nil { + log.NewError("0", utils.GetSelfFuncName(), "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) + newFileName, newYamlName, err := utils.GetUploadAppNewName(req.Type, req.Version) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUploadAppNewName failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) + return + } + fileObj, err := req.File.Open() + yamlObj, err := req.Yaml.Open() + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "name: ", newFileName, newYamlName) + // v2.0.9_app_linux v2.0.9_yaml_linux + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size, minio.PutObjectOptions{}) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{}) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "open file error") + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "invalid file path" + err.Error()}) + return + } + if err := imdb.UpdateAppVersion(req.Type, req.Version, req.ForceUpdate); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "UpdateAppVersion error", err.Error()) + resp.ErrCode = http.StatusInternalServerError + resp.ErrMsg = err.Error() + c.JSON(http.StatusInternalServerError, resp) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName()) + c.JSON(http.StatusOK, resp) +} + +func GetDownloadURL(c *gin.Context) { + var ( + req apiStruct.GetDownloadURLReq + resp apiStruct.GetDownloadURLResp + ) + defer func() { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) + }() + if err := c.Bind(&req); err != nil { + log.NewError("0", utils.GetSelfFuncName(), "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) + fileName, yamlName, err := utils.GetUploadAppNewName(req.Type, req.Version) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUploadAppNewName failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) + return + } + app, err := imdb.GetNewestVersion(req.Type) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "getNewestVersion failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "getNewestVersion failed" + err.Error()}) + return + } + if app.Version != req.Version { + resp.Data.HasNewVersion = true + if app.ForceUpdate == true { + resp.Data.ForceUpdate = true + } + resp.Data.YamlURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + yamlName + resp.Data.FileURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + fileName + c.JSON(http.StatusOK, resp) + } else { + resp.Data.HasNewVersion = false + c.JSON(http.StatusOK, resp) + } +} diff --git a/internal/cms_api/group/group.go b/internal/cms_api/group/group.go index 740fd5821..69b9e32fc 100644 --- a/internal/cms_api/group/group.go +++ b/internal/cms_api/group/group.go @@ -28,6 +28,7 @@ func GetGroupById(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) reqPb.GroupId = req.GroupId etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) client := pbGroup.NewGroupClient(etcdConn) @@ -44,6 +45,7 @@ func GetGroupById(c *gin.Context) { resp.GroupMasterName = respPb.CMSGroup.GroupMasterName resp.GroupMasterId = respPb.CMSGroup.GroupMasterId resp.IsBanChat = constant.GroupIsBanChat(respPb.CMSGroup.GroupInfo.Status) + log.NewInfo("", utils.GetSelfFuncName(), "req: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -58,6 +60,7 @@ func GetGroups(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) reqPb.Pagination = &commonPb.RequestPagination{} utils.CopyStructFields(&reqPb.Pagination, req) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -83,6 +86,7 @@ func GetGroups(c *gin.Context) { resp.GroupNums = int(respPb.GroupNum) resp.CurrentPage = int(respPb.Pagination.PageNumber) resp.ShowNumber = int(respPb.Pagination.ShowNumber) + log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -97,6 +101,7 @@ func GetGroupByName(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) reqPb.GroupName = req.GroupName reqPb.Pagination = &commonPb.RequestPagination{} utils.CopyStructFields(&reqPb.Pagination, req) @@ -123,6 +128,7 @@ func GetGroupByName(c *gin.Context) { resp.CurrentPage = int(respPb.Pagination.PageNumber) resp.ShowNumber = int(respPb.Pagination.ShowNumber) resp.GroupNums = int(respPb.GroupNums) + log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -137,6 +143,7 @@ func CreateGroup(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) reqPb.GroupInfo = &commonPb.GroupInfo{} reqPb.GroupInfo.GroupName = req.GroupName reqPb.GroupInfo.CreatorUserID = req.GroupMasterId @@ -169,6 +176,7 @@ func BanGroupChat(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) reqPb.GroupId = req.GroupId reqPb.Status = constant.GroupBanChat etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -193,6 +201,7 @@ func BanPrivateChat(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) reqPb.GroupId = req.GroupId reqPb.Status = constant.GroupBanPrivateChat etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -216,6 +225,7 @@ func OpenGroupChat(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) reqPb.GroupId = req.GroupId reqPb.Status = constant.GroupOk etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -239,6 +249,7 @@ func OpenPrivateChat(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) reqPb.GroupId = req.GroupId reqPb.Status = constant.GroupOk etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -263,6 +274,7 @@ func GetGroupMembers(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) reqPb.Pagination = &commonPb.RequestPagination{ PageNumber: int32(req.PageNumber), ShowNumber: int32(req.ShowNumber), @@ -290,6 +302,7 @@ func GetGroupMembers(c *gin.Context) { JoinTime: utils.UnixSecondToTime(int64(groupMembers.JoinTime)).String(), }) } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -304,6 +317,7 @@ func AddGroupMembers(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) reqPb.UserIds = req.Members reqPb.GroupId = req.GroupId etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -316,6 +330,7 @@ func AddGroupMembers(c *gin.Context) { } resp.Success = respPb.Success resp.Failed = respPb.Failed + log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -330,6 +345,7 @@ func RemoveGroupMembers(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) reqPb.UserIds = req.Members reqPb.GroupId = req.GroupId etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) @@ -342,6 +358,7 @@ func RemoveGroupMembers(c *gin.Context) { } resp.Success = respPb.Success resp.Failed = respPb.Failed + log.NewInfo("", utils.GetSelfFuncName(), "req: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -356,6 +373,7 @@ func DeleteGroup(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) reqPb.GroupId = req.GroupId etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) client := pbGroup.NewGroupClient(etcdConn) @@ -379,6 +397,7 @@ func SetGroupMaster(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) reqPb.GroupId = req.GroupId reqPb.UserId = req.UserId reqPb.RoleLevel = constant.GroupOwner @@ -404,6 +423,7 @@ func SetGroupOrdinaryUsers(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) reqPb.GroupId = req.GroupId reqPb.UserId = req.UserId reqPb.RoleLevel = constant.GroupOrdinaryUsers @@ -424,6 +444,7 @@ func AlterGroupInfo(c *gin.Context) { _ cms_api_struct.SetGroupMasterResponse reqPb pbGroup.SetGroupInfoReq ) + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) if err := c.BindJSON(&req); err != nil { log.NewError(reqPb.OperationID, utils.GetSelfFuncName(), "BindJSON failed ", err.Error()) openIMHttp.RespHttp200(c, constant.ErrArgs, nil) diff --git a/internal/cms_api/message_cms/message.go b/internal/cms_api/message_cms/message.go index c5ced390e..0a56bb99a 100644 --- a/internal/cms_api/message_cms/message.go +++ b/internal/cms_api/message_cms/message.go @@ -78,6 +78,7 @@ func GetChatLogs(c *gin.Context) { ShowNumber: int32(req.ShowNumber), } utils.CopyStructFields(&reqPb, &req) + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImMessageCMSName) client := pbMessage.NewMessageCMSClient(etcdConn) respPb, err := client.GetChatLogs(context.Background(), &reqPb) @@ -105,5 +106,6 @@ func GetChatLogs(c *gin.Context) { resp.ShowNumber = int(respPb.Pagination.ShowNumber) resp.CurrentPage = int(respPb.Pagination.CurrentPage) resp.ChatLogsNum = int(respPb.ChatLogsNum) + log.NewInfo("", utils.GetSelfFuncName(), "resp", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } diff --git a/internal/cms_api/router.go b/internal/cms_api/router.go index a0221d536..fbd3b9fcc 100644 --- a/internal/cms_api/router.go +++ b/internal/cms_api/router.go @@ -20,6 +20,8 @@ func NewGinRouter() *gin.Engine { adminRouterGroup := router.Group("/admin") { adminRouterGroup.POST("/login", admin.AdminLogin) + adminRouterGroup.POST("/upload_update_app", admin.UploadUpdateApp) + adminRouterGroup.POST("/get_download_url", admin.GetDownloadURL) } r2 := router.Group("") r2.Use(middleware.JWTAuth()) diff --git a/internal/cms_api/statistics/statistics.go b/internal/cms_api/statistics/statistics.go index c8a9488ca..89fb6056b 100644 --- a/internal/cms_api/statistics/statistics.go +++ b/internal/cms_api/statistics/statistics.go @@ -27,6 +27,7 @@ func GetMessagesStatistics(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb.StatisticsReq, &req) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImStatisticsName) client := pb.NewUserClient(etcdConn) @@ -57,6 +58,7 @@ func GetMessagesStatistics(c *gin.Context) { MessageNum: int(v.Num), }) } + log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -72,6 +74,7 @@ func GetUserStatistics(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb.StatisticsReq, &req) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImStatisticsName) client := pb.NewUserClient(etcdConn) @@ -112,6 +115,7 @@ func GetUserStatistics(c *gin.Context) { TotalUserNum: int(v.Num), }) } + log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -127,6 +131,7 @@ func GetGroupStatistics(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb.StatisticsReq, &req) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImStatisticsName) client := pb.NewUserClient(etcdConn) @@ -160,6 +165,7 @@ func GetGroupStatistics(c *gin.Context) { }) } + log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -175,6 +181,7 @@ func GetActiveUser(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb.StatisticsReq, req) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImStatisticsName) client := pb.NewUserClient(etcdConn) @@ -185,6 +192,7 @@ func GetActiveUser(c *gin.Context) { return } utils.CopyStructFields(&resp.ActiveUserList, respPb.Users) + log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -200,6 +208,7 @@ func GetActiveGroup(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb.StatisticsReq, req) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImStatisticsName) client := pb.NewUserClient(etcdConn) @@ -220,5 +229,6 @@ func GetActiveGroup(c *gin.Context) { MessageNum: int(group.MessageNum), }) } + log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } diff --git a/internal/cms_api/user/user.go b/internal/cms_api/user/user.go index a0e5dc188..f8d96e35e 100644 --- a/internal/cms_api/user/user.go +++ b/internal/cms_api/user/user.go @@ -29,6 +29,7 @@ func GetUserById(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb, &req) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := pb.NewUserClient(etcdConn) @@ -43,15 +44,17 @@ func GetUserById(c *gin.Context) { return } utils.CopyStructFields(&resp, respPb.User) + log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } func GetUsersByName(c *gin.Context) { var ( - req cms_api_struct.GetUsersByNameRequest - resp cms_api_struct.GetUsersByNameResponse + req cms_api_struct.GetUsersByNameRequest + resp cms_api_struct.GetUsersByNameResponse reqPb pb.GetUsersByNameReq ) + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) if err := c.ShouldBindQuery(&req); err != nil { log.NewError(reqPb.OperationID, utils.GetSelfFuncName(), "ShouldBindQuery failed", err.Error()) openIMHttp.RespHttp200(c, constant.ErrArgs, nil) @@ -74,6 +77,7 @@ func GetUsersByName(c *gin.Context) { resp.ShowNumber = int(respPb.Pagination.ShowNumber) resp.CurrentPage = int(respPb.Pagination.CurrentPage) resp.UserNums = respPb.UserNums + log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -89,6 +93,7 @@ func GetUsers(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb.Pagination, &req) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := pb.NewUserClient(etcdConn) @@ -101,6 +106,7 @@ func GetUsers(c *gin.Context) { resp.ShowNumber = int(respPb.Pagination.ShowNumber) resp.CurrentPage = int(respPb.Pagination.CurrentPage) resp.UserNums = respPb.UserNums + log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -116,14 +122,15 @@ func ResignUser(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": http.StatusBadRequest, "errMsg": err.Error()}) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb, &req) - fmt.Println(reqPb.UserId) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := pb.NewUserClient(etcdConn) _, err := client.ResignUser(context.Background(), &reqPb) if err != nil { openIMHttp.RespHttp200(c, err, resp) } + log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -138,6 +145,7 @@ func AlterUser(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, resp) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb, &req) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := pb.NewUserClient(etcdConn) @@ -159,6 +167,7 @@ func AddUser(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb, &req) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := pb.NewUserClient(etcdConn) @@ -182,6 +191,7 @@ func BlockUser(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, resp) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb, &req) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := pb.NewUserClient(etcdConn) @@ -205,6 +215,7 @@ func UnblockUser(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, resp) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb, &req) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := pb.NewUserClient(etcdConn) @@ -213,6 +224,7 @@ func UnblockUser(c *gin.Context) { openIMHttp.RespHttp200(c, err, resp) return } + log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -229,6 +241,7 @@ func GetBlockUsers(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, resp) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb.Pagination, &req) log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "blockUsers", reqPb.Pagination, req) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) @@ -255,6 +268,7 @@ func GetBlockUsers(c *gin.Context) { resp.ShowNumber = int(respPb.Pagination.ShowNumber) resp.CurrentPage = int(respPb.Pagination.CurrentPage) resp.UserNums = respPb.UserNums + log.NewInfo("", utils.GetSelfFuncName(), "req: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -269,6 +283,7 @@ func GetBlockUserById(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) reqPb.UserId = req.UserId etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := pb.NewUserClient(etcdConn) @@ -281,6 +296,7 @@ func GetBlockUserById(c *gin.Context) { resp.EndDisableTime = respPb.BlockUser.EndDisableTime resp.BeginDisableTime = respPb.BlockUser.BeginDisableTime utils.CopyStructFields(&resp, respPb.BlockUser.User) + log.NewInfo("", utils.GetSelfFuncName(), "resp: ", resp) openIMHttp.RespHttp200(c, constant.OK, resp) } @@ -294,6 +310,7 @@ func DeleteUser(c *gin.Context) { openIMHttp.RespHttp200(c, constant.ErrArgs, nil) return } + log.NewInfo("", utils.GetSelfFuncName(), "req: ", req) reqPb.UserId = req.UserId etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) client := pb.NewUserClient(etcdConn) diff --git a/internal/rpc/admin_cms/admin_cms.go b/internal/rpc/admin_cms/admin_cms.go index 3a3f7dffd..8c3754b74 100644 --- a/internal/rpc/admin_cms/admin_cms.go +++ b/internal/rpc/admin_cms/admin_cms.go @@ -96,5 +96,6 @@ func (s *adminCMSServer) AdminLogin(_ context.Context, req *pbAdminCMS.AdminLogi log.NewError(req.OperationID, utils.GetSelfFuncName(), "failed") return resp, openIMHttp.WrapError(constant.ErrTokenMalformed) } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) return resp, nil } diff --git a/internal/rpc/cache/cache.go b/internal/rpc/cache/cache.go index 2cf6f33d0..8a5526930 100644 --- a/internal/rpc/cache/cache.go +++ b/internal/rpc/cache/cache.go @@ -90,6 +90,7 @@ func SyncDB2Cache() error { var err error log.NewInfo("0", utils.GetSelfFuncName()) userList, err := imdb.GetAllUser() + log.NewDebug("", utils.GetSelfFuncName(), "userList", userList) if err != nil { return utils.Wrap(err, "") } @@ -118,10 +119,10 @@ func updateAllUserToCache(userList []db.User) error { } m, err := utils.Pb2Map(userInfoPb) if err != nil { - log.NewError("", utils.GetSelfFuncName(), err.Error()) + log.NewWarn("", utils.GetSelfFuncName(), err.Error()) } if err := db.DB.SetUserInfoToCache(userInfo.UserID, m); err != nil { - log.NewError("0", utils.GetSelfFuncName(), "set userInfo to cache failed", err.Error()) + log.NewWarn("0", utils.GetSelfFuncName(), "set userInfo to cache failed", err.Error()) } } log.NewInfo("0", utils.GetSelfFuncName(), "ok") @@ -132,19 +133,19 @@ func updateAllGroupMemberListToCache() error { log.NewInfo("0", utils.GetSelfFuncName()) groupIDList, err := imdb.GetAllGroupIDList() if err != nil { - log.NewError("0", utils.GetSelfFuncName(), "getAllGroupIDList failed", err.Error()) + log.NewWarn("0", utils.GetSelfFuncName(), "getAllGroupIDList failed", err.Error()) panic(err.Error()) } for _, groupID := range groupIDList { groupMemberIDList, err := imdb.GetGroupMemberIDListByGroupID(groupID) if err != nil { - log.NewError("", utils.GetSelfFuncName(), "GetGroupMemberIDListByGroupID", err.Error()) + log.NewWarn("", utils.GetSelfFuncName(), "GetGroupMemberIDListByGroupID", err.Error()) continue } //log.NewDebug("", utils.GetSelfFuncName(), "groupMemberIDList", groupMemberIDList) if len(groupMemberIDList) > 0 { if err := db.DB.AddGroupMemberToCache(groupID, groupMemberIDList...); err != nil { - log.NewError("", utils.GetSelfFuncName(), "AddGroupMemberToCache", err.Error()) + log.NewWarn("", utils.GetSelfFuncName(), "AddGroupMemberToCache", err.Error()) } } } @@ -157,13 +158,12 @@ func updateAllFriendToCache(userList []db.User) error { for _, user := range userList { friendIDList, err := imdb.GetFriendIDListByUserID(user.UserID) if err != nil { - log.NewError("0", utils.GetSelfFuncName(), err.Error()) + log.NewWarn("0", utils.GetSelfFuncName(), err.Error()) continue } - //log.NewDebug("", utils.GetSelfFuncName(), "friendIDList", user.UserID, friendIDList) if len(friendIDList) > 0 { if err := db.DB.AddFriendToCache(user.UserID, friendIDList...); err != nil { - log.NewError("0", utils.GetSelfFuncName(), err.Error(), friendIDList, user.UserID) + log.NewWarn("0", utils.GetSelfFuncName(), err.Error(), friendIDList, user.UserID) } } } @@ -176,13 +176,12 @@ func updateAllBlackListToCache(userList []db.User) error { for _, user := range userList { blackIDList, err := imdb.GetBlackIDListByUserID(user.UserID) if err != nil { - log.NewError("", utils.GetSelfFuncName(), err.Error()) + log.NewWarn("", utils.GetSelfFuncName(), err.Error()) continue } - //log.NewDebug("", utils.GetSelfFuncName(), "updateAllBlackListToCache", user.UserID, blackIDList) if len(blackIDList) > 0 { if err := db.DB.AddBlackUserToCache(user.UserID, blackIDList...); err != nil { - log.NewError("0", utils.GetSelfFuncName(), err.Error()) + log.NewWarn("0", utils.GetSelfFuncName(), err.Error()) } } } diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index c9f63cac3..d5e5ed602 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -593,7 +593,7 @@ func (s *groupServer) GetGroupsInfo(ctx context.Context, req *pbGroup.GetGroupsI } resp := pbGroup.GetGroupsInfoResp{GroupInfoList: groupsInfoList} - log.NewInfo(req.OperationID, "GetGroupsInfo rpc return ", resp) + log.NewInfo(req.OperationID, "GetGroupsInfo rpc return ", resp.String()) return &resp, nil } @@ -991,7 +991,8 @@ func (s *groupServer) GetGroups(_ context.Context, req *pbGroup.GetGroupsReq) (* for _, v := range groups { groupMember, err := imdb.GetGroupMaster(v.GroupID) if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error()) + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupMaster failed", err.Error(), v) + continue } resp.CMSGroups = append(resp.CMSGroups, &pbGroup.CMSGroup{ GroupInfo: &open_im_sdk.GroupInfo{ @@ -1007,7 +1008,7 @@ func (s *groupServer) GetGroups(_ context.Context, req *pbGroup.GetGroupsReq) (* GroupMasterName: groupMember.Nickname, }) } - + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "GetGroups ", resp.String()) return resp, nil } @@ -1087,6 +1088,7 @@ func (s *groupServer) GetGroupMembersCMS(_ context.Context, req *pbGroup.GetGrou CurrentPage: req.Pagination.PageNumber, ShowNumber: req.Pagination.ShowNumber, } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp:", resp.String()) return resp, nil } diff --git a/internal/rpc/message_cms/message_cms.go b/internal/rpc/message_cms/message_cms.go index 40609de7c..907b60112 100644 --- a/internal/rpc/message_cms/message_cms.go +++ b/internal/rpc/message_cms/message_cms.go @@ -110,6 +110,7 @@ func (s *messageCMSServer) GetChatLogs(_ context.Context, req *pbMessageCMS.GetC chatLog.RecvID = req.GroupId chatLog.SendID = req.UserId } + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "chat_log: ", chatLog) nums, err := imdb.GetChatLogCount(chatLog) resp.ChatLogsNum = int32(nums) if err != nil { diff --git a/internal/rpc/msg/del_msg.go b/internal/rpc/msg/del_msg.go index d8b28b847..17610a384 100644 --- a/internal/rpc/msg/del_msg.go +++ b/internal/rpc/msg/del_msg.go @@ -12,13 +12,6 @@ import ( func (rpc *rpcChat) DelMsgList(_ context.Context, req *commonPb.DelMsgListReq) (*commonPb.DelMsgListResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &commonPb.DelMsgListResp{} - //if err := db.DB.DelMsgLogic(req.UserID, req.SeqList, req.OperationID); err != nil { - // log.NewError(req.OperationID, utils.GetSelfFuncName(), "DelMsg failed", err.Error()) - // resp.ErrMsg = constant.ErrDB.ErrMsg - // resp.ErrCode = constant.ErrDB.ErrCode - // return resp, nil - //} - if err := db.DB.DelMsgBySeqList(req.UserID, req.SeqList, req.OperationID); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "DelMsg failed", err.Error()) resp.ErrMsg = constant.ErrDB.ErrMsg diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 46e8a0cba..069e3d029 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -147,10 +147,10 @@ func (s *officeServer) DeleteTag(_ context.Context, req *pbOffice.DeleteTagReq) func (s *officeServer) SetTag(_ context.Context, req *pbOffice.SetTagReq) (resp *pbOffice.SetTagResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp = &pbOffice.SetTagResp{CommonResp: &pbOffice.CommonResp{}} - IncreaseUserIDList := utils.RemoveRepeatedStringInList(req.IncreaseUserIDList) + increaseUserIDList := utils.RemoveRepeatedStringInList(req.IncreaseUserIDList) reduceUserIDList := utils.RemoveRepeatedStringInList(req.ReduceUserIDList) - if err := db.DB.SetTag(req.UserID, req.TagID, req.NewName, IncreaseUserIDList, reduceUserIDList); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetTag failed", err.Error()) + if err := db.DB.SetTag(req.UserID, req.TagID, req.NewName, increaseUserIDList, reduceUserIDList); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetTag failed", increaseUserIDList, reduceUserIDList, err.Error()) resp.CommonResp.ErrMsg = constant.ErrDB.ErrMsg resp.CommonResp.ErrCode = constant.ErrDB.ErrCode return resp, nil @@ -175,13 +175,13 @@ func (s *officeServer) SendMsg2Tag(_ context.Context, req *pbOffice.SendMsg2TagR for _, groupID := range req.GroupList { userIDList, err := im_mysql_model.GetGroupMemberIDListByGroupID(groupID) if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupMemberIDListByGroupID failed", err.Error()) + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupMemberIDListByGroupID failed", err.Error(), groupID) continue } log.NewDebug(req.OperationID, utils.GetSelfFuncName(), userIDList) groupUserIDList = append(groupUserIDList, userIDList...) } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), groupUserIDList, req.GroupList) + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), groupUserIDList, req.GroupList) var userIDList []string userIDList = append(userIDList, tagUserIDList...) userIDList = append(userIDList, groupUserIDList...) @@ -192,13 +192,13 @@ func (s *officeServer) SendMsg2Tag(_ context.Context, req *pbOffice.SendMsg2TagR userIDList = append(userIDList[:i], userIDList[i+1:]...) } } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "total userIDList result: ", userIDList) - us, err := imdb.GetUserByUserID(req.SendID) + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "total userIDList result: ", userIDList) + user, err := imdb.GetUserByUserID(req.SendID) if err != nil { log.NewError(req.OperationID, "GetUserByUserID failed ", err.Error(), req.SendID) } for _, userID := range userIDList { - msg.TagSendMessage(req.OperationID, us, userID, req.Content, req.SenderPlatformID) + msg.TagSendMessage(req.OperationID, user, userID, req.Content, req.SenderPlatformID) } var tagSendLogs db.TagSendLog for _, userID := range userIDList { @@ -217,7 +217,7 @@ func (s *officeServer) SendMsg2Tag(_ context.Context, req *pbOffice.SendMsg2TagR tagSendLogs.SenderPlatformID = req.SenderPlatformID tagSendLogs.SendTime = time.Now().Unix() if err := db.DB.SaveTagSendLog(&tagSendLogs); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "SaveTagSendLog failed", err.Error()) + log.NewError(req.OperationID, utils.GetSelfFuncName(), "SaveTagSendLog failed", tagSendLogs, err.Error()) resp.CommonResp.ErrCode = constant.ErrDB.ErrCode resp.CommonResp.ErrMsg = constant.ErrDB.ErrMsg return resp, nil diff --git a/internal/rpc/statistics/statistics.go b/internal/rpc/statistics/statistics.go index d7100c50d..69b5545eb 100644 --- a/internal/rpc/statistics/statistics.go +++ b/internal/rpc/statistics/statistics.go @@ -89,13 +89,14 @@ func (s *statisticsServer) Run() { } func (s *statisticsServer) GetActiveGroup(_ context.Context, req *pbStatistics.GetActiveGroupReq) (*pbStatistics.GetActiveGroupResp, error) { - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), req.String()) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req", req.String()) resp := &pbStatistics.GetActiveGroupResp{} fromTime, toTime, err := ParseTimeFromTo(req.StatisticsReq.From, req.StatisticsReq.To) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "ParseTimeFromTo failed", err.Error()) return resp, errors.WrapError(constant.ErrArgs) } + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "time: ", fromTime, toTime) activeGroups, err := imdb.GetActiveGroups(fromTime, toTime, 12) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetActiveGroups failed", err.Error()) @@ -109,6 +110,7 @@ func (s *statisticsServer) GetActiveGroup(_ context.Context, req *pbStatistics.G MessageNum: int32(activeGroup.MessageNum), }) } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp.String()) return resp, nil } @@ -120,6 +122,7 @@ func (s *statisticsServer) GetActiveUser(_ context.Context, req *pbStatistics.Ge log.NewError(req.OperationID, utils.GetSelfFuncName(), "ParseTimeFromTo failed", err.Error()) return resp, errors.WrapError(constant.ErrDB) } + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "time: ", fromTime, toTime) activeUsers, err := imdb.GetActiveUsers(fromTime, toTime, 12) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetActiveUsers failed", err.Error()) @@ -134,6 +137,7 @@ func (s *statisticsServer) GetActiveUser(_ context.Context, req *pbStatistics.Ge }, ) } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp.String()) return resp, nil } @@ -233,7 +237,7 @@ func (s *statisticsServer) GetGroupStatistics(_ context.Context, req *pbStatisti } increaseGroupNum, err := imdb.GetIncreaseGroupNum(fromTime, toTime.Add(time.Hour*24)) if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetIncreaseGroupNum failed", err.Error()) + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetIncreaseGroupNum failed", err.Error(), fromTime, toTime) return resp, errors.WrapError(constant.ErrDB) } totalGroupNum, err := imdb.GetTotalGroupNum() @@ -244,7 +248,7 @@ func (s *statisticsServer) GetGroupStatistics(_ context.Context, req *pbStatisti resp.IncreaseGroupNum = increaseGroupNum resp.TotalGroupNum = totalGroupNum times := GetRangeDate(fromTime, toTime) - log.NewInfo(req.OperationID, "times:", times) + log.NewDebug(req.OperationID, "times:", times) wg := &sync.WaitGroup{} resp.IncreaseGroupNumList = make([]*pbStatistics.DateNumList, len(times), len(times)) resp.TotalGroupNumList = make([]*pbStatistics.DateNumList, len(times), len(times)) @@ -271,6 +275,7 @@ func (s *statisticsServer) GetGroupStatistics(_ context.Context, req *pbStatisti }(wg, i, v) } wg.Wait() + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) return resp, nil } @@ -278,6 +283,7 @@ func (s *statisticsServer) GetMessageStatistics(_ context.Context, req *pbStatis log.NewInfo(req.OperationID, utils.GetSelfFuncName(), req.String()) resp := &pbStatistics.GetMessageStatisticsResp{} fromTime, toTime, err := ParseTimeFromTo(req.StatisticsReq.From, req.StatisticsReq.To) + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "times: ", fromTime, toTime) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "ParseTimeFromTo failed", err.Error()) return resp, errors.WrapError(constant.ErrArgs) @@ -292,6 +298,7 @@ func (s *statisticsServer) GetMessageStatistics(_ context.Context, req *pbStatis log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupMessageNum failed", err.Error()) return resp, errors.WrapError(constant.ErrDB) } + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), privateMessageNum, groupMessageNum) resp.PrivateMessageNum = privateMessageNum resp.GroupMessageNum = groupMessageNum times := GetRangeDate(fromTime, toTime) @@ -326,7 +333,7 @@ func (s *statisticsServer) GetMessageStatistics(_ context.Context, req *pbStatis } func (s *statisticsServer) GetUserStatistics(_ context.Context, req *pbStatistics.GetUserStatisticsReq) (*pbStatistics.GetUserStatisticsResp, error) { - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), req.String()) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &pbStatistics.GetUserStatisticsResp{} fromTime, toTime, err := ParseTimeFromTo(req.StatisticsReq.From, req.StatisticsReq.To) if err != nil { @@ -388,5 +395,6 @@ func (s *statisticsServer) GetUserStatistics(_ context.Context, req *pbStatistic }(wg, i, v) } wg.Wait() + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) return resp, nil } diff --git a/internal/rpc/user/user.go b/internal/rpc/user/user.go index abb3b0a34..6c62f8add 100644 --- a/internal/rpc/user/user.go +++ b/internal/rpc/user/user.go @@ -16,7 +16,6 @@ import ( pbUser "Open_IM/pkg/proto/user" "Open_IM/pkg/utils" "context" - "fmt" "net" "strconv" "strings" @@ -171,6 +170,7 @@ func (s *userServer) GetAllConversations(ctx context.Context, req *pbUser.GetAll log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &pbUser.GetAllConversationsResp{Conversations: []*pbUser.Conversation{}} conversations, err := imdb.GetUserAllConversations(req.OwnerUserID) + log.NewDebug(req.OperationID, "conversations: ", conversations) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetConversations error", err.Error()) resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} @@ -188,6 +188,7 @@ func (s *userServer) GetConversation(ctx context.Context, req *pbUser.GetConvers log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &pbUser.GetConversationResp{Conversation: &pbUser.Conversation{}} conversation, err := imdb.GetConversation(req.OwnerUserID, req.ConversationID) + log.NewDebug("", utils.GetSelfFuncName(), "conversation", conversation) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetConversation error", err.Error()) resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} @@ -205,6 +206,7 @@ func (s *userServer) GetConversations(ctx context.Context, req *pbUser.GetConver log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &pbUser.GetConversationsResp{Conversations: []*pbUser.Conversation{}} conversations, err := imdb.GetConversations(req.OwnerUserID, req.ConversationIDs) + log.NewDebug("", utils.GetSelfFuncName(), "conversations", conversations) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetConversations error", err.Error()) resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} @@ -232,6 +234,7 @@ func (s *userServer) SetConversation(ctx context.Context, req *pbUser.SetConvers return resp, nil } if groupInfo.Status == constant.GroupStatusDismissed && !req.Conversation.IsNotInGroup { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "group status is dismissed", groupInfo) errMsg := "group status is dismissed" resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg} return resp, nil @@ -444,6 +447,7 @@ func (s *userServer) GetUsersByName(ctx context.Context, req *pbUser.GetUsersByN CurrentPage: req.Pagination.PageNumber, ShowNumber: req.Pagination.ShowNumber, } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) return resp, nil } @@ -467,6 +471,7 @@ func (s *userServer) GetUserById(ctx context.Context, req *pbUser.GetUserByIdReq CreateTime: user.CreateTime.String(), IsBlock: isBlock, } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) return resp, nil } @@ -475,6 +480,7 @@ func (s *userServer) GetUsers(ctx context.Context, req *pbUser.GetUsersReq) (*pb resp := &pbUser.GetUsersResp{User: []*pbUser.User{}} users, err := imdb.GetUsers(req.Pagination.ShowNumber, req.Pagination.PageNumber) if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUsers failed", err.Error()) return resp, errors.WrapError(constant.ErrDB) } for _, v := range users { @@ -488,16 +494,19 @@ func (s *userServer) GetUsers(ctx context.Context, req *pbUser.GetUsersReq) (*pb IsBlock: isBlock, } resp.User = append(resp.User, user) + } else { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "UserIsBlock failed", err.Error()) } } user := db.User{} nums, err := imdb.GetUsersCount(user) if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUsersCount failed", err.Error()) + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUsersCount failed", err.Error(), user) return resp, errors.WrapError(constant.ErrDB) } resp.UserNums = nums resp.Pagination = &sdkws.ResponsePagination{ShowNumber: req.Pagination.ShowNumber, CurrentPage: req.Pagination.PageNumber} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) return resp, nil } @@ -507,7 +516,7 @@ func (s *userServer) ResignUser(ctx context.Context, req *pbUser.ResignUserReq) } func (s *userServer) AlterUser(ctx context.Context, req *pbUser.AlterUserReq) (*pbUser.AlterUserResp, error) { - log.NewInfo(req.OperationID, "AlterUser args ", req.String()) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &pbUser.AlterUserResp{} user := db.User{ PhoneNumber: strconv.FormatInt(req.PhoneNumber, 10), @@ -520,11 +529,12 @@ func (s *userServer) AlterUser(ctx context.Context, req *pbUser.AlterUserReq) (* return resp, errors.WrapError(constant.ErrDB) } chat.UserInfoUpdatedNotification(req.OperationID, req.UserId, req.OpUserId) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) return resp, nil } func (s *userServer) AddUser(ctx context.Context, req *pbUser.AddUserReq) (*pbUser.AddUserResp, error) { - log.NewInfo(req.OperationID, "AddUser args ", req.String()) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &pbUser.AddUserResp{} err := imdb.AddUser(req.UserId, req.PhoneNumber, req.Name) if err != nil { @@ -535,8 +545,7 @@ func (s *userServer) AddUser(ctx context.Context, req *pbUser.AddUserReq) (*pbUs } func (s *userServer) BlockUser(ctx context.Context, req *pbUser.BlockUserReq) (*pbUser.BlockUserResp, error) { - log.NewInfo(req.OperationID, "BlockUser args ", req.String()) - fmt.Println("BlockUser args ", req.String()) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &pbUser.BlockUserResp{} err := imdb.BlockUser(req.UserId, req.EndDisableTime) if err != nil { @@ -547,7 +556,7 @@ func (s *userServer) BlockUser(ctx context.Context, req *pbUser.BlockUserReq) (* } func (s *userServer) UnBlockUser(ctx context.Context, req *pbUser.UnBlockUserReq) (*pbUser.UnBlockUserResp, error) { - log.NewInfo(req.OperationID, "UnBlockUser args ", req.String()) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &pbUser.UnBlockUserResp{} err := imdb.UnBlockUser(req.UserId) if err != nil { @@ -558,7 +567,7 @@ func (s *userServer) UnBlockUser(ctx context.Context, req *pbUser.UnBlockUserReq } func (s *userServer) GetBlockUsers(ctx context.Context, req *pbUser.GetBlockUsersReq) (*pbUser.GetBlockUsersResp, error) { - log.NewInfo(req.OperationID, "GetBlockUsers args ", req.String()) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &pbUser.GetBlockUsersResp{} blockUsers, err := imdb.GetBlockUsers(req.Pagination.ShowNumber, req.Pagination.PageNumber) if err != nil { @@ -586,11 +595,12 @@ func (s *userServer) GetBlockUsers(ctx context.Context, req *pbUser.GetBlockUser return resp, errors.WrapError(constant.ErrDB) } resp.UserNums = nums + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) return resp, nil } func (s *userServer) GetBlockUserById(_ context.Context, req *pbUser.GetBlockUserByIdReq) (*pbUser.GetBlockUserByIdResp, error) { - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "GetBlockUserById args ", req.String()) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &pbUser.GetBlockUserByIdResp{} user, err := imdb.GetBlockUserById(req.UserId) if err != nil { @@ -607,6 +617,7 @@ func (s *userServer) GetBlockUserById(_ context.Context, req *pbUser.GetBlockUse BeginDisableTime: (user.BeginDisableTime).String(), EndDisableTime: (user.EndDisableTime).String(), } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", req.String()) return resp, nil } diff --git a/pkg/cms_api_struct/admin.go b/pkg/cms_api_struct/admin.go index 54674662e..e06a04324 100644 --- a/pkg/cms_api_struct/admin.go +++ b/pkg/cms_api_struct/admin.go @@ -1,10 +1,44 @@ package cms_api_struct +import ( + apiStruct "Open_IM/pkg/base_info" + "mime/multipart" +) + type AdminLoginRequest struct { AdminName string `json:"admin_name" binding:"required"` - Secret string `json:"secret" binding:"required"` + Secret string `json:"secret" binding:"required"` } type AdminLoginResponse struct { Token string `json:"token"` -} \ No newline at end of file +} + +type UploadUpdateAppReq struct { + OperationID string `form:"operationID" binding:"required"` + Type int `form:"type" binding:"required"` + Version string `form:"version" binding:"required"` + File multipart.FileHeader `form:"file" binding:"required"` + Yaml multipart.FileHeader `form:"yaml" binding:"required"` + ForceUpdate bool `form:"forceUpdate" binding:"required"` +} + +type UploadUpdateAppResp struct { + apiStruct.CommResp +} + +type GetDownloadURLReq struct { + OperationID string `json:"operationID" binding:"required"` + Type int `json:"type" binding:"required"` + Version string `json:"version" binding:"required"` +} + +type GetDownloadURLResp struct { + apiStruct.CommResp + Data struct { + HasNewVersion bool `json:"hasNewVersion"` + ForceUpdate bool `json:"forceUpdate"` + FileURL string `json:"fileURL"` + YamlURL string `json:"yamlURL"` + } `json:"data"` +} diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 972cf27c1..478d1ba6d 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -63,6 +63,7 @@ type config struct { } Minio struct { Bucket string `yaml:"bucket"` + AppBucket string `yaml:"appBucket"` Location string `yaml:"location"` Endpoint string `yaml:"endpoint"` AccessKeyID string `yaml:"accessKeyID"` diff --git a/pkg/common/db/model_struct.go b/pkg/common/db/model_struct.go index 9e50a8fc6..6ed3f2dc1 100644 --- a/pkg/common/db/model_struct.go +++ b/pkg/common/db/model_struct.go @@ -272,3 +272,14 @@ type DepartmentMember struct { func (DepartmentMember) TableName() string { return "department_members" } + +type AppVersion struct { + Version string `gorm:"column:user_id;size:64"` + Type int `gorm:"column:user_id;primary_key"` + UpdateTime int `gorm:"column:update_time"` + ForceUpdate bool `gorm:"column:force_update"` +} + +func (AppVersion) TableName() string { + return "app_version" +} diff --git a/pkg/common/db/mysql.go b/pkg/common/db/mysql.go index cfef4dfee..bde529293 100644 --- a/pkg/common/db/mysql.go +++ b/pkg/common/db/mysql.go @@ -119,7 +119,10 @@ func initMysqlDB() { fmt.Println("CreateTable DepartmentMember") db.CreateTable(&DepartmentMember{}) } - + if !db.HasTable(&AppVersion{}) { + fmt.Println("CreateTable DepartmentMember") + db.CreateTable(&AppVersion{}) + } return } diff --git a/pkg/common/db/mysql_model/im_mysql_model/file_model.go b/pkg/common/db/mysql_model/im_mysql_model/file_model.go new file mode 100644 index 000000000..8265ee9de --- /dev/null +++ b/pkg/common/db/mysql_model/im_mysql_model/file_model.go @@ -0,0 +1,38 @@ +package im_mysql_model + +import ( + "Open_IM/pkg/common/db" + "time" +) + +func UpdateAppVersion(appType int, version string, forceUpdate bool) error { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err + } + app := db.AppVersion{ + Version: version, + Type: appType, + UpdateTime: int(time.Now().Unix()), + ForceUpdate: forceUpdate, + } + result := dbConn.Model(db.AppVersion{}).Where("app_type = ?", appType).Updates(&app) + if result.Error != nil { + return result.Error + } + if result.RowsAffected == 0 { + err := dbConn.Create(&app).Error + return err + } + return nil +} + +func GetNewestVersion(appType int) (*db.AppVersion, error) { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return nil, err + } + dbConn.LogMode(true) + app := db.AppVersion{} + return &app, dbConn.Model(db.AppVersion{}).First(&app, appType).Error +} diff --git a/pkg/utils/file.go b/pkg/utils/file.go index e46050516..c5db776d0 100644 --- a/pkg/utils/file.go +++ b/pkg/utils/file.go @@ -2,6 +2,7 @@ package utils import ( "Open_IM/pkg/common/constant" + "errors" "fmt" "math/rand" "os" @@ -37,3 +38,33 @@ func GetNewFileNameAndContentType(fileName string, fileType int) (string, string } return newName, contentType } + +func GetUploadAppNewName(appType int, version string) (string, string, error) { + var newFileName, newYamlName = version + "_app_", version + "_yaml_" + switch appType { + case constant.IOSPlatformID: + newFileName += constant.IOSPlatformStr + newYamlName += constant.IOSPlatformStr + case constant.AndroidPlatformID: + newFileName += constant.AndroidPlatformStr + newYamlName += constant.AndroidPlatformStr + case constant.WindowsPlatformID: + newFileName += constant.WindowsPlatformStr + newYamlName += constant.WindowsPlatformStr + case constant.OSXPlatformID: + newFileName += constant.OSXPlatformStr + newYamlName += constant.OSXPlatformStr + case constant.WebPlatformID: + newFileName += constant.WebPlatformStr + newYamlName += constant.WebPlatformStr + case constant.MiniWebPlatformID: + newFileName += constant.MiniWebPlatformStr + newYamlName += constant.MiniWebPlatformStr + case constant.LinuxPlatformID: + newFileName += constant.LinuxPlatformStr + newYamlName += constant.LinuxPlatformStr + default: + return "", "", errors.New("invalid app type") + } + return newFileName, newYamlName, nil +} From 2b479319c131ea5a463b6c01452d93c68aaa557c Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Tue, 10 May 2022 10:52:32 +0800 Subject: [PATCH 059/143] log change --- internal/api/chat/send_msg.go | 1 - internal/api/manage/management_chat.go | 8 ++++---- internal/demo/register/send_code.go | 6 +++--- internal/msg_gateway/gate/logic.go | 3 --- internal/msg_gateway/gate/validate.go | 12 ++++++------ internal/msg_gateway/gate/ws_server.go | 6 +++--- internal/push/logic/push_handler.go | 2 +- internal/rpc/msg/pull_message.go | 2 +- internal/rpc/msg/send_msg.go | 2 +- pkg/statistics/statistics.go | 8 +++++++- 10 files changed, 26 insertions(+), 24 deletions(-) diff --git a/internal/api/chat/send_msg.go b/internal/api/chat/send_msg.go index 36ebd4181..b75cd0ddd 100644 --- a/internal/api/chat/send_msg.go +++ b/internal/api/chat/send_msg.go @@ -62,7 +62,6 @@ func SendMsg(c *gin.Context) { params := paramsUserSendMsg{} if err := c.BindJSON(¶ms); err != nil { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - log.ErrorByKv("json unmarshal err", "", "err", err.Error(), "data", c.PostForm("data")) log.Error("0", "BindJSON failed ", err.Error()) return } diff --git a/internal/api/manage/management_chat.go b/internal/api/manage/management_chat.go index d39aa6d16..2178fc840 100644 --- a/internal/api/manage/management_chat.go +++ b/internal/api/manage/management_chat.go @@ -94,7 +94,7 @@ func ManagementSendMsg(c *gin.Context) { params := ManagementSendMsgReq{} if err := c.BindJSON(¶ms); err != nil { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - log.ErrorByKv("json unmarshal err", c.PostForm("operationID"), "err", err.Error(), "content", c.PostForm("content")) + log.Error(c.PostForm("operationID"), "json unmarshal err", err.Error(), c.PostForm("content")) return } switch params.ContentType { @@ -126,16 +126,16 @@ func ManagementSendMsg(c *gin.Context) { //case constant.Quote: default: c.JSON(http.StatusBadRequest, gin.H{"errCode": 404, "errMsg": "contentType err"}) - log.ErrorByKv("contentType err", c.PostForm("operationID"), "content", c.PostForm("content")) + log.Error(c.PostForm("operationID"), "contentType err", c.PostForm("content")) return } if err := mapstructure.WeakDecode(params.Content, &data); err != nil { c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": err.Error()}) - log.ErrorByKv("content to Data struct err", "", "err", err.Error()) + log.Error(c.PostForm("operationID"), "content to Data struct err", err.Error()) return } else if err := validate.Struct(data); err != nil { c.JSON(http.StatusBadRequest, gin.H{"errCode": 403, "errMsg": err.Error()}) - log.ErrorByKv("data args validate err", "", "err", err.Error()) + log.Error(c.PostForm("operationID"), "data args validate err", err.Error()) return } log.NewInfo("", data, params) diff --git a/internal/demo/register/send_code.go b/internal/demo/register/send_code.go index 37e355b46..089a55800 100644 --- a/internal/demo/register/send_code.go +++ b/internal/demo/register/send_code.go @@ -21,7 +21,7 @@ type paramsVerificationCode struct { Email string `json:"email"` PhoneNumber string `json:"phoneNumber"` OperationID string `json:"operationID" binding:"required"` - UsedFor int `json:"usedFor"` + UsedFor int `json:"usedFor"` } func SendVerificationCode(c *gin.Context) { @@ -62,7 +62,7 @@ func SendVerificationCode(c *gin.Context) { } rand.Seed(time.Now().UnixNano()) code := 100000 + rand.Intn(900000) - log.NewInfo(params.OperationID, params.UsedFor,"begin store redis", accountKey, code) + log.NewInfo(params.OperationID, params.UsedFor, "begin store redis", accountKey, code) err := db.DB.SetAccountCode(accountKey, code, config.Config.Demo.CodeTTL) if err != nil { log.NewError(params.OperationID, "set redis error", accountKey, "err", err.Error()) @@ -77,7 +77,7 @@ func SendVerificationCode(c *gin.Context) { m.SetHeader(`Subject`, config.Config.Demo.Mail.Title) m.SetBody(`text/html`, fmt.Sprintf("%d", code)) if err := gomail.NewDialer(config.Config.Demo.Mail.SmtpAddr, config.Config.Demo.Mail.SmtpPort, config.Config.Demo.Mail.SenderMail, config.Config.Demo.Mail.SenderAuthorizationCode).DialAndSend(m); err != nil { - log.ErrorByKv("send mail error", account, "err", err.Error()) + log.Error(params.OperationID, "send mail error", account, err.Error()) c.JSON(http.StatusOK, gin.H{"errCode": constant.MailSendCodeErr, "errMsg": ""}) return } diff --git a/internal/msg_gateway/gate/logic.go b/internal/msg_gateway/gate/logic.go index e5f49dbc6..3d65af106 100644 --- a/internal/msg_gateway/gate/logic.go +++ b/internal/msg_gateway/gate/logic.go @@ -69,9 +69,6 @@ func (ws *WServer) getSeqReq(conn *UserConn, m *Req) { rpcReq.UserID = m.SendID rpcReq.OperationID = m.OperationID grpcConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName) - if grpcConn == nil { - log.ErrorByKv("get grpcConn err", rpcReq.OperationID, "args", m) - } msgClient := pbChat.NewChatClient(grpcConn) rpcReply, err := msgClient.GetMaxAndMinSeq(context.Background(), &rpcReq) if err != nil { diff --git a/internal/msg_gateway/gate/validate.go b/internal/msg_gateway/gate/validate.go index 35bc34f0e..31198a918 100644 --- a/internal/msg_gateway/gate/validate.go +++ b/internal/msg_gateway/gate/validate.go @@ -62,11 +62,11 @@ func (ws *WServer) argsValidate(m *Req, r int32) (isPass bool, errCode int32, er case constant.WSSendMsg: data := open_im_sdk.MsgData{} if err := proto.Unmarshal(m.Data, &data); err != nil { - log.ErrorByKv("Decode Data struct err", "", "err", err.Error(), "reqIdentifier", r) + log.Error("", "Decode Data struct err", err.Error(), r) return false, 203, err.Error(), nil } if err := validate.Struct(data); err != nil { - log.ErrorByKv("data args validate err", "", "err", err.Error(), "reqIdentifier", r) + log.Error("", "data args validate err", err.Error(), r) return false, 204, err.Error(), nil } @@ -74,11 +74,11 @@ func (ws *WServer) argsValidate(m *Req, r int32) (isPass bool, errCode int32, er case constant.WSSendSignalMsg: data := pbRtc.SignalReq{} if err := proto.Unmarshal(m.Data, &data); err != nil { - log.ErrorByKv("Decode Data struct err", "", "err", err.Error(), "reqIdentifier", r) + log.Error("", "Decode Data struct err", err.Error(), r) return false, 203, err.Error(), nil } if err := validate.Struct(data); err != nil { - log.ErrorByKv("data args validate err", "", "err", err.Error(), "reqIdentifier", r) + log.Error("", "data args validate err", err.Error(), r) return false, 204, err.Error(), nil } @@ -86,11 +86,11 @@ func (ws *WServer) argsValidate(m *Req, r int32) (isPass bool, errCode int32, er case constant.WSPullMsgBySeqList: data := open_im_sdk.PullMessageBySeqListReq{} if err := proto.Unmarshal(m.Data, &data); err != nil { - log.ErrorByKv("Decode Data struct err", "", "err", err.Error(), "reqIdentifier", r) + log.Error("", "Decode Data struct err", err.Error(), r) return false, 203, err.Error(), nil } if err := validate.Struct(data); err != nil { - log.ErrorByKv("data args validate err", "", "err", err.Error(), "reqIdentifier", r) + log.Error("", "data args validate err", err.Error(), r) return false, 204, err.Error(), nil } diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 4ce4e8648..c14277c9c 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -45,7 +45,7 @@ func (ws *WServer) run() { http.HandleFunc("/", ws.wsHandler) //Get request from client to handle by wsHandler err := http.ListenAndServe(ws.wsAddr, nil) //Start listening if err != nil { - log.ErrorByKv("Ws listening err", "", "err", err.Error()) + panic("Ws listening err:" + err.Error()) } } @@ -54,7 +54,7 @@ func (ws *WServer) wsHandler(w http.ResponseWriter, r *http.Request) { query := r.URL.Query() conn, err := ws.wsUpGrader.Upgrade(w, r, nil) //Conn is obtained through the upgraded escalator if err != nil { - log.ErrorByKv("upgrade http conn err", "", "err", err, query) + log.Error("", "upgrade http conn err", err, query) return } else { //Connection mapping relationship, @@ -77,7 +77,7 @@ func (ws *WServer) readMsg(conn *UserConn) { } if err != nil { uid, platform := ws.getUserUid(conn) - log.ErrorByKv("WS ReadMsg error", "", "userIP", conn.RemoteAddr().String(), "userUid", uid, "platform", platform, "error", err.Error()) + log.Error("", "WS ReadMsg error", "userIP", conn.RemoteAddr().String(), "userUid", uid, "platform", platform, "error", err.Error()) userCount-- ws.delUserConn(conn) return diff --git a/internal/push/logic/push_handler.go b/internal/push/logic/push_handler.go index 192a9c400..5412b8b3e 100644 --- a/internal/push/logic/push_handler.go +++ b/internal/push/logic/push_handler.go @@ -34,7 +34,7 @@ func (ms *PushConsumerHandler) handleMs2PsChat(msg []byte) { log.NewDebug("", "msg come from kafka And push!!!", "msg", string(msg)) msgFromMQ := pbChat.PushMsgDataToMQ{} if err := proto.Unmarshal(msg, &msgFromMQ); err != nil { - log.ErrorByKv("push Unmarshal msg err", "", "msg", string(msg), "err", err.Error()) + log.Error("", "push Unmarshal msg err", "msg", string(msg), "err", err.Error()) return } //Call push module to send message to the user diff --git a/internal/rpc/msg/pull_message.go b/internal/rpc/msg/pull_message.go index a91c07a04..819a9592e 100644 --- a/internal/rpc/msg/pull_message.go +++ b/internal/rpc/msg/pull_message.go @@ -42,7 +42,7 @@ func (rpc *rpcChat) PullMessageBySeqList(_ context.Context, in *open_im_sdk.Pull //msgList, err := commonDB.DB.GetMsgBySeqList(in.UserID, in.SeqList, in.OperationID) msgList, err := commonDB.DB.GetMsgBySeqListMongo2(in.UserID, in.SeqList, in.OperationID) if err != nil { - log.ErrorByKv("PullMessageBySeqList data error", in.OperationID, in.String()) + log.Error(in.OperationID, "PullMessageBySeqList data error", in.String(), err.Error()) resp.ErrCode = 201 resp.ErrMsg = err.Error() return resp, nil diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index b8af3b145..78588cdf1 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -419,7 +419,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S func (rpc *rpcChat) sendMsgToKafka(m *pbChat.MsgDataToMQ, key string) error { pid, offset, err := rpc.producer.SendMessage(m, key) if err != nil { - log.ErrorByKv("kafka send failed", m.OperationID, "send data", m.String(), "pid", pid, "offset", offset, "err", err.Error(), "key", key) + log.Error(m.OperationID, "kafka send failed", "send data", m.String(), "pid", pid, "offset", offset, "err", err.Error(), "key", key) } return err } diff --git a/pkg/statistics/statistics.go b/pkg/statistics/statistics.go index 633eafc80..800f5864b 100644 --- a/pkg/statistics/statistics.go +++ b/pkg/statistics/statistics.go @@ -13,6 +13,7 @@ type Statistics struct { } func (s *Statistics) output() { + var intervalCount uint64 t := time.NewTicker(time.Duration(s.SleepTime) * time.Second) defer t.Stop() var sum uint64 @@ -21,7 +22,12 @@ func (s *Statistics) output() { select { case <-t.C: } - log.NewWarn("", " system stat ", s.ModuleName, s.PrintArgs, *s.AllCount-sum, "total:", *s.AllCount) + if *s.AllCount-sum <= 0 { + intervalCount = 0 + } else { + intervalCount = *s.AllCount - sum + } + log.NewWarn("", " system stat ", s.ModuleName, s.PrintArgs, intervalCount, "total:", *s.AllCount) } } From 74b582369a8243149efbcf1e264db8249f839ee9 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Tue, 10 May 2022 11:00:15 +0800 Subject: [PATCH 060/143] log change --- pkg/common/constant/constant.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index b4de3c86c..8a95898cd 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -268,4 +268,4 @@ const BigVersion = "v3" const LogFileName = "OpenIM.log" -const StatisticsTimeInterval = 10 +const StatisticsTimeInterval = 300 From 30fc4c28b708f84a5b4286e1de4c1f4a48d1c69f Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 11:17:54 +0800 Subject: [PATCH 061/143] cache --- internal/api/third/minio_init.go | 1 + internal/cms_api/admin/admin.go | 2 +- pkg/common/db/model_struct.go | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/internal/api/third/minio_init.go b/internal/api/third/minio_init.go index e9aa7c1aa..e49651061 100644 --- a/internal/api/third/minio_init.go +++ b/internal/api/third/minio_init.go @@ -75,6 +75,7 @@ func MinioInit() { } // 自动化桶public的代码 err = MinioClient.SetBucketPolicy(context.Background(), config.Config.Credential.Minio.Bucket, policy.BucketPolicyReadWrite) + err = MinioClient.SetBucketPolicy(context.Background(), config.Config.Credential.Minio.AppBucket, policy.BucketPolicyReadWrite) if err != nil { log.NewDebug("", utils.GetSelfFuncName(), "SetBucketPolicy failed please set in web", err.Error()) return diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index eb5ccd156..524f1eeb2 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -69,7 +69,7 @@ func UploadUpdateApp(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) return } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "name: ", newFileName, newYamlName) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "name: ", newFileName, newYamlName, fileObj, yamlObj, req.File.Size, req.Yaml.Size) // v2.0.9_app_linux v2.0.9_yaml_linux _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size, minio.PutObjectOptions{}) _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{}) diff --git a/pkg/common/db/model_struct.go b/pkg/common/db/model_struct.go index 6ed3f2dc1..eae008542 100644 --- a/pkg/common/db/model_struct.go +++ b/pkg/common/db/model_struct.go @@ -274,8 +274,8 @@ func (DepartmentMember) TableName() string { } type AppVersion struct { - Version string `gorm:"column:user_id;size:64"` - Type int `gorm:"column:user_id;primary_key"` + Version string `gorm:"column:version;size:64"` + Type int `gorm:"column:type;primary_key"` UpdateTime int `gorm:"column:update_time"` ForceUpdate bool `gorm:"column:force_update"` } From 8af500462fdd0b3a6597e6d1f01ddced4e0dbcf4 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 11:22:10 +0800 Subject: [PATCH 062/143] update app --- internal/cms_api/admin/admin.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 524f1eeb2..a2f889097 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -11,6 +11,7 @@ import ( pbAdmin "Open_IM/pkg/proto/admin_cms" "Open_IM/pkg/utils" "context" + "fmt" "github.com/minio/minio-go/v7" "net/http" "strings" @@ -69,7 +70,7 @@ func UploadUpdateApp(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) return } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "name: ", newFileName, newYamlName, fileObj, yamlObj, req.File.Size, req.Yaml.Size) + fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", newFileName, newYamlName, fileObj, yamlObj, req.File.Size, req.Yaml.Size) // v2.0.9_app_linux v2.0.9_yaml_linux _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size, minio.PutObjectOptions{}) _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{}) From e27b98cdc1a7ac8d0a01cb137586c225ed938370 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 11:40:40 +0800 Subject: [PATCH 063/143] update app --- internal/cms_api/admin/admin.go | 34 ++++++++++++++++++++++++++------- pkg/cms_api_struct/admin.go | 13 ++++++------- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index a2f889097..bc814bb9b 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -63,17 +63,37 @@ func UploadUpdateApp(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) return } - fileObj, err := req.File.Open() - yamlObj, err := req.Yaml.Open() + + file, err := c.FormFile("file") if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) + log.NewError(req.OperationID, utils.GetSelfFuncName(), "missing file arg", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file arg: " + err.Error()}) return } - fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", newFileName, newYamlName, fileObj, yamlObj, req.File.Size, req.Yaml.Size) + fileObj, err := file.Open() + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open file error:" + err.Error()}) + return + } + + yaml, err := c.FormFile("yaml") + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "missing yaml arg", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing yaml arg: " + err.Error()}) + return + } + yamlObj, err := yaml.Open() + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "open yaml failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open file error:" + err.Error()}) + return + } + + //fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", newFileName, newYamlName, fileObj, yamlObj, file.Size, yaml.Size) // v2.0.9_app_linux v2.0.9_yaml_linux - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size, minio.PutObjectOptions{}) - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{}) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{}) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size, minio.PutObjectOptions{}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "open file error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "invalid file path" + err.Error()}) diff --git a/pkg/cms_api_struct/admin.go b/pkg/cms_api_struct/admin.go index e06a04324..f74d1fcf4 100644 --- a/pkg/cms_api_struct/admin.go +++ b/pkg/cms_api_struct/admin.go @@ -2,7 +2,6 @@ package cms_api_struct import ( apiStruct "Open_IM/pkg/base_info" - "mime/multipart" ) type AdminLoginRequest struct { @@ -15,12 +14,12 @@ type AdminLoginResponse struct { } type UploadUpdateAppReq struct { - OperationID string `form:"operationID" binding:"required"` - Type int `form:"type" binding:"required"` - Version string `form:"version" binding:"required"` - File multipart.FileHeader `form:"file" binding:"required"` - Yaml multipart.FileHeader `form:"yaml" binding:"required"` - ForceUpdate bool `form:"forceUpdate" binding:"required"` + OperationID string `form:"operationID" binding:"required"` + Type int `form:"type" binding:"required"` + Version string `form:"version" binding:"required"` + //File multipart.FileHeader `form:"file" binding:"required"` + //Yaml multipart.FileHeader `form:"yaml" binding:"required"` + ForceUpdate bool `form:"forceUpdate" binding:"required"` } type UploadUpdateAppResp struct { From b6a5501f71140aa8e6e1879f347775daad1a9740 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 11:41:13 +0800 Subject: [PATCH 064/143] update app --- internal/cms_api/admin/admin.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index bc814bb9b..73ad9436c 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -11,7 +11,6 @@ import ( pbAdmin "Open_IM/pkg/proto/admin_cms" "Open_IM/pkg/utils" "context" - "fmt" "github.com/minio/minio-go/v7" "net/http" "strings" From 2073bc77c88e463333299f6601c2c6a7a9ffcfb1 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 10 May 2022 11:48:10 +0800 Subject: [PATCH 065/143] add ParseToken --- pkg/base_info/auth_api_struct.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/base_info/auth_api_struct.go b/pkg/base_info/auth_api_struct.go index 54c0025ef..1f1bdc6ba 100644 --- a/pkg/base_info/auth_api_struct.go +++ b/pkg/base_info/auth_api_struct.go @@ -44,5 +44,5 @@ type ParseTokenReq struct { type ParseTokenResp struct { CommResp - ExpireTime int64 `json:"token" binding:"required"` + ExpireTime int64 `json:"expireTime" binding:"required"` } From 46f9a00b7555e76c2caa763a256533de6476dbff Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 11:48:33 +0800 Subject: [PATCH 066/143] update app --- internal/cms_api/admin/admin.go | 33 +++++++-------------------------- pkg/cms_api_struct/admin.go | 13 +++++++------ 2 files changed, 14 insertions(+), 32 deletions(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 73ad9436c..a3c8c6aaf 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -62,37 +62,18 @@ func UploadUpdateApp(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) return } - - file, err := c.FormFile("file") - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "missing file arg", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file arg: " + err.Error()}) - return - } - fileObj, err := file.Open() + fileObj, err := req.File.Open() + yamlObj, err := req.Yaml.Open() if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open file error:" + err.Error()}) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) return } - - yaml, err := c.FormFile("yaml") - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "missing yaml arg", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing yaml arg: " + err.Error()}) - return - } - yamlObj, err := yaml.Open() - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "open yaml failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open file error:" + err.Error()}) - return - } - - //fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", newFileName, newYamlName, fileObj, yamlObj, file.Size, yaml.Size) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "name: ", newFileName, newYamlName, fileObj, yamlObj, req.File.Size, req.Yaml.Size) // v2.0.9_app_linux v2.0.9_yaml_linux - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{}) - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size, minio.PutObjectOptions{}) + _, newType := utils.GetNewFileNameAndContentType("", constant.OtherType) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size, minio.PutObjectOptions{ContentType: newType}) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{ContentType: newType}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "open file error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "invalid file path" + err.Error()}) diff --git a/pkg/cms_api_struct/admin.go b/pkg/cms_api_struct/admin.go index f74d1fcf4..e06a04324 100644 --- a/pkg/cms_api_struct/admin.go +++ b/pkg/cms_api_struct/admin.go @@ -2,6 +2,7 @@ package cms_api_struct import ( apiStruct "Open_IM/pkg/base_info" + "mime/multipart" ) type AdminLoginRequest struct { @@ -14,12 +15,12 @@ type AdminLoginResponse struct { } type UploadUpdateAppReq struct { - OperationID string `form:"operationID" binding:"required"` - Type int `form:"type" binding:"required"` - Version string `form:"version" binding:"required"` - //File multipart.FileHeader `form:"file" binding:"required"` - //Yaml multipart.FileHeader `form:"yaml" binding:"required"` - ForceUpdate bool `form:"forceUpdate" binding:"required"` + OperationID string `form:"operationID" binding:"required"` + Type int `form:"type" binding:"required"` + Version string `form:"version" binding:"required"` + File multipart.FileHeader `form:"file" binding:"required"` + Yaml multipart.FileHeader `form:"yaml" binding:"required"` + ForceUpdate bool `form:"forceUpdate" binding:"required"` } type UploadUpdateAppResp struct { From 31bd106ffdfef51fea84ef988d7f11183cd35d15 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 11:52:52 +0800 Subject: [PATCH 067/143] update app --- internal/cms_api/admin/admin.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index a3c8c6aaf..56248f080 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -11,6 +11,7 @@ import ( pbAdmin "Open_IM/pkg/proto/admin_cms" "Open_IM/pkg/utils" "context" + "fmt" "github.com/minio/minio-go/v7" "net/http" "strings" @@ -69,7 +70,9 @@ func UploadUpdateApp(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) return } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "name: ", newFileName, newYamlName, fileObj, yamlObj, req.File.Size, req.Yaml.Size) + fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size) + fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size) + // v2.0.9_app_linux v2.0.9_yaml_linux _, newType := utils.GetNewFileNameAndContentType("", constant.OtherType) _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size, minio.PutObjectOptions{ContentType: newType}) From 2dab5e4a78efb25edb05a358d361fd5427f2e55d Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 10 May 2022 11:57:25 +0800 Subject: [PATCH 068/143] add ParseToken --- internal/api/auth/auth.go | 2 +- pkg/base_info/auth_api_struct.go | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/internal/api/auth/auth.go b/internal/api/auth/auth.go index c4e944acc..d27cbb684 100644 --- a/internal/api/auth/auth.go +++ b/internal/api/auth/auth.go @@ -118,7 +118,7 @@ func ParseToken(c *gin.Context) { return } - resp := api.ParseTokenResp{CommResp: api.CommResp{ErrCode: 0, ErrMsg: ""}, ExpireTime: expireTime} + resp := api.ParseTokenResp{CommResp: api.CommResp{ErrCode: 0, ErrMsg: ""}, ExpireTime: api.ExpireTime{ExpireTimeSeconds: expireTime}} log.NewInfo(params.OperationID, "ParseToken return ", resp) c.JSON(http.StatusOK, resp) } diff --git a/pkg/base_info/auth_api_struct.go b/pkg/base_info/auth_api_struct.go index 1f1bdc6ba..1735e74ea 100644 --- a/pkg/base_info/auth_api_struct.go +++ b/pkg/base_info/auth_api_struct.go @@ -42,7 +42,16 @@ type ParseTokenReq struct { OperationID string `json:"operationID" binding:"required"` } +//type ParseTokenResp struct { +// CommResp +// ExpireTime int64 `json:"expireTime" binding:"required"` +//} + +type ExpireTime struct { + ExpireTimeSeconds int64 `json:"expireTimeSeconds" ` +} + type ParseTokenResp struct { CommResp - ExpireTime int64 `json:"expireTime" binding:"required"` + ExpireTime ExpireTime `json:"expireTime"` } From d4608eec26bf90eac8523a63c3f21723047ef541 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 12:05:02 +0800 Subject: [PATCH 069/143] update app --- pkg/utils/file.go | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/pkg/utils/file.go b/pkg/utils/file.go index c5db776d0..b852098b8 100644 --- a/pkg/utils/file.go +++ b/pkg/utils/file.go @@ -40,29 +40,29 @@ func GetNewFileNameAndContentType(fileName string, fileType int) (string, string } func GetUploadAppNewName(appType int, version string) (string, string, error) { - var newFileName, newYamlName = version + "_app_", version + "_yaml_" + var newFileName, newYamlName = "_" + version + "_app_", version + "_yaml" switch appType { case constant.IOSPlatformID: - newFileName += constant.IOSPlatformStr - newYamlName += constant.IOSPlatformStr + newFileName = constant.IOSPlatformStr + newFileName + newYamlName = constant.IOSPlatformStr + newYamlName case constant.AndroidPlatformID: - newFileName += constant.AndroidPlatformStr - newYamlName += constant.AndroidPlatformStr + newFileName = constant.AndroidPlatformStr + newFileName + newYamlName = constant.AndroidPlatformStr + newYamlName case constant.WindowsPlatformID: - newFileName += constant.WindowsPlatformStr - newYamlName += constant.WindowsPlatformStr + newFileName = constant.WindowsPlatformStr + newFileName + newYamlName = constant.WindowsPlatformStr + newYamlName case constant.OSXPlatformID: - newFileName += constant.OSXPlatformStr - newYamlName += constant.OSXPlatformStr + newFileName = constant.OSXPlatformStr + newFileName + newYamlName = constant.OSXPlatformStr + newYamlName case constant.WebPlatformID: - newFileName += constant.WebPlatformStr - newYamlName += constant.WebPlatformStr + newFileName = constant.WebPlatformStr + newFileName + newYamlName = constant.WebPlatformStr + newYamlName case constant.MiniWebPlatformID: - newFileName += constant.MiniWebPlatformStr - newYamlName += constant.MiniWebPlatformStr + newFileName = constant.MiniWebPlatformStr + newFileName + newYamlName = constant.MiniWebPlatformStr + newYamlName case constant.LinuxPlatformID: - newFileName += constant.LinuxPlatformStr - newYamlName += constant.LinuxPlatformStr + newFileName = constant.LinuxPlatformStr + newFileName + newYamlName = constant.LinuxPlatformStr + newYamlName default: return "", "", errors.New("invalid app type") } From c37d2e78d2b4cde9ea904a4c4e6b936318b28a5c Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 10 May 2022 12:07:09 +0800 Subject: [PATCH 070/143] add ParseToken --- internal/api/auth/auth.go | 2 +- pkg/base_info/auth_api_struct.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/api/auth/auth.go b/internal/api/auth/auth.go index d27cbb684..3f6d52831 100644 --- a/internal/api/auth/auth.go +++ b/internal/api/auth/auth.go @@ -118,7 +118,7 @@ func ParseToken(c *gin.Context) { return } - resp := api.ParseTokenResp{CommResp: api.CommResp{ErrCode: 0, ErrMsg: ""}, ExpireTime: api.ExpireTime{ExpireTimeSeconds: expireTime}} + resp := api.ParseTokenResp{CommResp: api.CommResp{ErrCode: 0, ErrMsg: ""}, ExpireTime: api.ExpireTime{ExpireTimeSeconds: uint32(expireTime)}} log.NewInfo(params.OperationID, "ParseToken return ", resp) c.JSON(http.StatusOK, resp) } diff --git a/pkg/base_info/auth_api_struct.go b/pkg/base_info/auth_api_struct.go index 1735e74ea..777072499 100644 --- a/pkg/base_info/auth_api_struct.go +++ b/pkg/base_info/auth_api_struct.go @@ -48,7 +48,7 @@ type ParseTokenReq struct { //} type ExpireTime struct { - ExpireTimeSeconds int64 `json:"expireTimeSeconds" ` + ExpireTimeSeconds uint32 `json:"expireTimeSeconds" ` } type ParseTokenResp struct { From 7ad555a41be8d3f6e254f2221412212023be97ac Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Tue, 10 May 2022 12:20:53 +0800 Subject: [PATCH 071/143] add ParseToken --- internal/api/auth/auth.go | 2 ++ pkg/base_info/auth_api_struct.go | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/internal/api/auth/auth.go b/internal/api/auth/auth.go index 3f6d52831..59ad579ca 100644 --- a/internal/api/auth/auth.go +++ b/internal/api/auth/auth.go @@ -10,6 +10,7 @@ import ( open_im_sdk "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" "context" + "github.com/fatih/structs" "github.com/gin-gonic/gin" "net/http" "strings" @@ -119,6 +120,7 @@ func ParseToken(c *gin.Context) { } resp := api.ParseTokenResp{CommResp: api.CommResp{ErrCode: 0, ErrMsg: ""}, ExpireTime: api.ExpireTime{ExpireTimeSeconds: uint32(expireTime)}} + resp.Data = structs.Map(&resp.ExpireTime) log.NewInfo(params.OperationID, "ParseToken return ", resp) c.JSON(http.StatusOK, resp) } diff --git a/pkg/base_info/auth_api_struct.go b/pkg/base_info/auth_api_struct.go index 777072499..431a00c2c 100644 --- a/pkg/base_info/auth_api_struct.go +++ b/pkg/base_info/auth_api_struct.go @@ -53,5 +53,6 @@ type ExpireTime struct { type ParseTokenResp struct { CommResp - ExpireTime ExpireTime `json:"expireTime"` + Data map[string]interface{} `json:"data"` + ExpireTime ExpireTime `json:"-"` } From 7be5208daf6b4be60e6f48a3f8c7a34cc3661eda Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 12:30:00 +0800 Subject: [PATCH 072/143] update app --- internal/cms_api/admin/admin.go | 20 +++++++++---------- pkg/common/db/model_struct.go | 2 ++ .../mysql_model/im_mysql_model/file_model.go | 4 +++- pkg/utils/file.go | 8 ++++++-- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 56248f080..ec93d8346 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -57,7 +57,7 @@ func UploadUpdateApp(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - newFileName, newYamlName, err := utils.GetUploadAppNewName(req.Type, req.Version) + newFileName, newYamlName, err := utils.GetUploadAppNewName(req.Type, req.Version, req.File.Filename, req.Yaml.Filename) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUploadAppNewName failed", err.Error()) c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) @@ -82,7 +82,7 @@ func UploadUpdateApp(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "invalid file path" + err.Error()}) return } - if err := imdb.UpdateAppVersion(req.Type, req.Version, req.ForceUpdate); err != nil { + if err := imdb.UpdateAppVersion(req.Type, req.Version, req.ForceUpdate, newFileName, newYamlName); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "UpdateAppVersion error", err.Error()) resp.ErrCode = http.StatusInternalServerError resp.ErrMsg = err.Error() @@ -107,12 +107,12 @@ func GetDownloadURL(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - fileName, yamlName, err := utils.GetUploadAppNewName(req.Type, req.Version) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUploadAppNewName failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) - return - } + //fileName, yamlName, err := utils.GetUploadAppNewName(req.Type, req.Version, req.) + //if err != nil { + // log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUploadAppNewName failed", err.Error()) + // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) + // return + //} app, err := imdb.GetNewestVersion(req.Type) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "getNewestVersion failed", err.Error()) @@ -124,8 +124,8 @@ func GetDownloadURL(c *gin.Context) { if app.ForceUpdate == true { resp.Data.ForceUpdate = true } - resp.Data.YamlURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + yamlName - resp.Data.FileURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + fileName + resp.Data.YamlURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.YamlName + resp.Data.FileURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.FileName c.JSON(http.StatusOK, resp) } else { resp.Data.HasNewVersion = false diff --git a/pkg/common/db/model_struct.go b/pkg/common/db/model_struct.go index eae008542..6eb18630d 100644 --- a/pkg/common/db/model_struct.go +++ b/pkg/common/db/model_struct.go @@ -278,6 +278,8 @@ type AppVersion struct { Type int `gorm:"column:type;primary_key"` UpdateTime int `gorm:"column:update_time"` ForceUpdate bool `gorm:"column:force_update"` + FileName string `gorm:"column:file_name"` + YamlName string `gorm:"column:yaml_name"` } func (AppVersion) TableName() string { diff --git a/pkg/common/db/mysql_model/im_mysql_model/file_model.go b/pkg/common/db/mysql_model/im_mysql_model/file_model.go index 8265ee9de..7d6144633 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/file_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/file_model.go @@ -5,7 +5,7 @@ import ( "time" ) -func UpdateAppVersion(appType int, version string, forceUpdate bool) error { +func UpdateAppVersion(appType int, version string, forceUpdate bool, fileName, yamlName string) error { dbConn, err := db.DB.MysqlDB.DefaultGormDB() if err != nil { return err @@ -15,6 +15,8 @@ func UpdateAppVersion(appType int, version string, forceUpdate bool) error { Type: appType, UpdateTime: int(time.Now().Unix()), ForceUpdate: forceUpdate, + FileName: fileName, + YamlName: yamlName, } result := dbConn.Model(db.AppVersion{}).Where("app_type = ?", appType).Updates(&app) if result.Error != nil { diff --git a/pkg/utils/file.go b/pkg/utils/file.go index b852098b8..d09b105ef 100644 --- a/pkg/utils/file.go +++ b/pkg/utils/file.go @@ -39,8 +39,8 @@ func GetNewFileNameAndContentType(fileName string, fileType int) (string, string return newName, contentType } -func GetUploadAppNewName(appType int, version string) (string, string, error) { - var newFileName, newYamlName = "_" + version + "_app_", version + "_yaml" +func GetUploadAppNewName(appType int, version, fileName, yamlName string) (string, string, error) { + var newFileName, newYamlName = "_" + version + "_app", "_" + version + "_yaml" switch appType { case constant.IOSPlatformID: newFileName = constant.IOSPlatformStr + newFileName @@ -66,5 +66,9 @@ func GetUploadAppNewName(appType int, version string) (string, string, error) { default: return "", "", errors.New("invalid app type") } + suffixFile := path.Ext(fileName) + suffixYaml := path.Ext(yamlName) + newFileName = fmt.Sprintf("%s.%s", newFileName, suffixFile) + newYamlName = fmt.Sprintf("%s.%s", newYamlName, suffixYaml) return newFileName, newYamlName, nil } From 1efa654e7d94c042ea907142000744c715116c8a Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 13:06:13 +0800 Subject: [PATCH 073/143] update app --- pkg/utils/file.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/utils/file.go b/pkg/utils/file.go index d09b105ef..94a30917b 100644 --- a/pkg/utils/file.go +++ b/pkg/utils/file.go @@ -68,7 +68,7 @@ func GetUploadAppNewName(appType int, version, fileName, yamlName string) (strin } suffixFile := path.Ext(fileName) suffixYaml := path.Ext(yamlName) - newFileName = fmt.Sprintf("%s.%s", newFileName, suffixFile) - newYamlName = fmt.Sprintf("%s.%s", newYamlName, suffixYaml) + newFileName = fmt.Sprintf("%s%s", newFileName, suffixFile) + newYamlName = fmt.Sprintf("%s%s", newYamlName, suffixYaml) return newFileName, newYamlName, nil } From e412abd0178106b8ebc4bfcf8e3a6666f5375e79 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 14:07:44 +0800 Subject: [PATCH 074/143] update app --- internal/cms_api/admin/admin.go | 24 +++++++++++++++++------- pkg/cms_api_struct/admin.go | 12 ++++++------ 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index ec93d8346..7e5226121 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -14,6 +14,7 @@ import ( "fmt" "github.com/minio/minio-go/v7" "net/http" + "path" "strings" "Open_IM/internal/api/third" @@ -64,22 +65,31 @@ func UploadUpdateApp(c *gin.Context) { return } fileObj, err := req.File.Open() - yamlObj, err := req.Yaml.Open() if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open file error" + err.Error()}) + return + } + yamlObj, err := req.Yaml.Open() + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open Yaml error", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open Yaml error" + err.Error()}) return } fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size) fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size) // v2.0.9_app_linux v2.0.9_yaml_linux - _, newType := utils.GetNewFileNameAndContentType("", constant.OtherType) - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size, minio.PutObjectOptions{ContentType: newType}) - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{ContentType: newType}) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "open file error") - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "invalid file path" + err.Error()}) + log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject file error") + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) + return + } + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject yaml error") + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject yaml error" + err.Error()}) return } if err := imdb.UpdateAppVersion(req.Type, req.Version, req.ForceUpdate, newFileName, newYamlName); err != nil { diff --git a/pkg/cms_api_struct/admin.go b/pkg/cms_api_struct/admin.go index e06a04324..72df69529 100644 --- a/pkg/cms_api_struct/admin.go +++ b/pkg/cms_api_struct/admin.go @@ -15,12 +15,12 @@ type AdminLoginResponse struct { } type UploadUpdateAppReq struct { - OperationID string `form:"operationID" binding:"required"` - Type int `form:"type" binding:"required"` - Version string `form:"version" binding:"required"` - File multipart.FileHeader `form:"file" binding:"required"` - Yaml multipart.FileHeader `form:"yaml" binding:"required"` - ForceUpdate bool `form:"forceUpdate" binding:"required"` + OperationID string `form:"operationID" binding:"required"` + Type int `form:"type" binding:"required"` + Version string `form:"version" binding:"required"` + File *multipart.FileHeader `form:"file" binding:"required"` + Yaml *multipart.FileHeader `form:"yaml" binding:"required"` + ForceUpdate bool `form:"forceUpdate" binding:"required"` } type UploadUpdateAppResp struct { From f85645a78a456b4f62fafbd3e84ac28edba2bf72 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 14:17:31 +0800 Subject: [PATCH 075/143] update app --- internal/cms_api/admin/admin.go | 41 +++++++++++++++++++++++++++------ pkg/cms_api_struct/admin.go | 13 +++++------ 2 files changed, 40 insertions(+), 14 deletions(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 7e5226121..244f8a377 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -53,7 +53,7 @@ func UploadUpdateApp(c *gin.Context) { resp apiStruct.UploadUpdateAppResp ) if err := c.Bind(&req); err != nil { - log.NewError("0", utils.GetSelfFuncName(), "BindJSON failed ", err.Error()) + log.NewError(req.OperationID, utils.GetSelfFuncName(), "BindJSON failed ", err.Error()) c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) return } @@ -64,22 +64,49 @@ func UploadUpdateApp(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) return } - fileObj, err := req.File.Open() + //fileObj, err := req.File.Open() + //if err != nil { + // log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) + // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open file error" + err.Error()}) + // return + //} + //yamlObj, err := req.Yaml.Open() + //if err != nil { + // log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open Yaml error", err.Error()) + // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open Yaml error" + err.Error()}) + // return + //} + + // v2.0.9_app_linux v2.0.9_yaml_linux + file, err := c.FormFile("file") + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "FormFile failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file arg: " + err.Error()}) + return + } + fileObj, err := file.Open() if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open file error" + err.Error()}) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) return } - yamlObj, err := req.Yaml.Open() + + yaml, err := c.FormFile("yaml") if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open Yaml error", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open Yaml error" + err.Error()}) + log.NewError(req.OperationID, utils.GetSelfFuncName(), "FormFile failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file arg: " + err.Error()}) return } + yamlObj, err := yaml.Open() + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) + return + } + fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size) fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size) - // v2.0.9_app_linux v2.0.9_yaml_linux _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject file error") diff --git a/pkg/cms_api_struct/admin.go b/pkg/cms_api_struct/admin.go index 72df69529..02463f6e5 100644 --- a/pkg/cms_api_struct/admin.go +++ b/pkg/cms_api_struct/admin.go @@ -2,7 +2,6 @@ package cms_api_struct import ( apiStruct "Open_IM/pkg/base_info" - "mime/multipart" ) type AdminLoginRequest struct { @@ -15,12 +14,12 @@ type AdminLoginResponse struct { } type UploadUpdateAppReq struct { - OperationID string `form:"operationID" binding:"required"` - Type int `form:"type" binding:"required"` - Version string `form:"version" binding:"required"` - File *multipart.FileHeader `form:"file" binding:"required"` - Yaml *multipart.FileHeader `form:"yaml" binding:"required"` - ForceUpdate bool `form:"forceUpdate" binding:"required"` + OperationID string `form:"operationID" binding:"required"` + Type int `form:"type" binding:"required"` + Version string `form:"version" binding:"required"` + //File *multipart.FileHeader `form:"file" binding:"required"` + //Yaml *multipart.FileHeader `form:"yaml" binding:"required"` + ForceUpdate bool `form:"forceUpdate" binding:"required"` } type UploadUpdateAppResp struct { From ed3e299e0b353be72b7fde4390904c2bde7168aa Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 14:18:36 +0800 Subject: [PATCH 076/143] update app --- internal/cms_api/admin/admin.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 244f8a377..7cf205ae9 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -104,16 +104,16 @@ func UploadUpdateApp(c *gin.Context) { return } - fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size) - fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size) + fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size) + fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size) - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject file error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) return } - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject yaml error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject yaml error" + err.Error()}) From 1338cf875a25c81697585cd0d1ffdd9fb51e5dfb Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 14:20:15 +0800 Subject: [PATCH 077/143] update app --- internal/cms_api/admin/admin.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 7cf205ae9..b88680abe 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -58,12 +58,7 @@ func UploadUpdateApp(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - newFileName, newYamlName, err := utils.GetUploadAppNewName(req.Type, req.Version, req.File.Filename, req.Yaml.Filename) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUploadAppNewName failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) - return - } + //fileObj, err := req.File.Open() //if err != nil { // log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) @@ -103,6 +98,12 @@ func UploadUpdateApp(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) return } + newFileName, newYamlName, err := utils.GetUploadAppNewName(req.Type, req.Version, file.Filename, yaml.Filename) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUploadAppNewName failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) + return + } fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size) fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size) From dcf119ae59ce3e73f31f8c54c318f1117c271aa2 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 14:38:43 +0800 Subject: [PATCH 078/143] update app --- internal/cms_api/admin/admin.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index b88680abe..b407a0b39 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -114,7 +114,7 @@ func UploadUpdateApp(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) return } - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject yaml error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject yaml error" + err.Error()}) From ff37d1cb0271f0a3019499b793eff496522a2a54 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 14:57:54 +0800 Subject: [PATCH 079/143] update app --- internal/cms_api/admin/admin.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index b407a0b39..5261c55f8 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -108,13 +108,13 @@ func UploadUpdateApp(c *gin.Context) { fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size) fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size) - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.Bucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject file error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) return } - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.Bucket, newYamlName, yamlObj, yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject yaml error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject yaml error" + err.Error()}) From d58e34ed3dbdd8e9b23597a2e97a7badc44138d0 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 15:07:07 +0800 Subject: [PATCH 080/143] update app --- internal/cms_api/admin/admin.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 5261c55f8..1c5754008 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -14,7 +14,6 @@ import ( "fmt" "github.com/minio/minio-go/v7" "net/http" - "path" "strings" "Open_IM/internal/api/third" @@ -73,7 +72,7 @@ func UploadUpdateApp(c *gin.Context) { //} // v2.0.9_app_linux v2.0.9_yaml_linux - file, err := c.FormFile("file") + file, err := c.FormFile("app") if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "FormFile failed", err.Error()) c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file arg: " + err.Error()}) @@ -108,13 +107,13 @@ func UploadUpdateApp(c *gin.Context) { fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size) fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size) - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.Bucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject file error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) return } - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.Bucket, newYamlName, yamlObj, yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size, minio.PutObjectOptions{}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject yaml error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject yaml error" + err.Error()}) From 6c821dc42a89ad25d44618c2c89d8838627c8593 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 15:16:20 +0800 Subject: [PATCH 081/143] update app --- internal/api/third/minio_storage_credential.go | 2 +- internal/cms_api/admin/admin.go | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index d6552518a..40ae13c4a 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -83,7 +83,7 @@ func MinioUploadFile(c *gin.Context) { return } newName, newType := utils.GetNewFileNameAndContentType(file.Filename, req.FileType) - log.Debug(req.OperationID, utils.GetSelfFuncName(), newName, newType) + log.Debug(req.OperationID, utils.GetSelfFuncName(), config.Config.Credential.Minio.Bucket, newName, fileObj, file.Size, newType) _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.Bucket, newName, fileObj, file.Size, minio.PutObjectOptions{ContentType: newType}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "upload file error") diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 1c5754008..2f9d9e35c 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -14,6 +14,7 @@ import ( "fmt" "github.com/minio/minio-go/v7" "net/http" + "path" "strings" "Open_IM/internal/api/third" @@ -107,13 +108,13 @@ func UploadUpdateApp(c *gin.Context) { fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size) fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size) - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{}) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject file error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) return } - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size, minio.PutObjectOptions{}) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject yaml error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject yaml error" + err.Error()}) From d9a4fa3f49eb7909bb4403c88f4bf56d89eeff3f Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 15:21:51 +0800 Subject: [PATCH 082/143] update app --- internal/cms_api/admin/admin.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 2f9d9e35c..0a6be311e 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -105,8 +105,8 @@ func UploadUpdateApp(c *gin.Context) { return } - fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size) - fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size) + fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, "app.apk", fileObj, file.Size) + fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, "test.yaml", yamlObj, yaml.Size) _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) if err != nil { From 9fcc41aeff88ce6d15e638fdd0c5a8076904ef22 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 15:34:00 +0800 Subject: [PATCH 083/143] update app --- internal/cms_api/admin/admin.go | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 0a6be311e..d79b37a8c 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -13,12 +13,14 @@ import ( "context" "fmt" "github.com/minio/minio-go/v7" + "github.com/minio/minio-go/v7/pkg/credentials" "net/http" "path" "strings" "Open_IM/internal/api/third" "github.com/gin-gonic/gin" + url2 "net/url" ) // register @@ -105,10 +107,32 @@ func UploadUpdateApp(c *gin.Context) { return } - fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, "app.apk", fileObj, file.Size) - fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, "test.yaml", yamlObj, yaml.Size) + fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size) + fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size) - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) + var initUrl string + if config.Config.Credential.Minio.EndpointInnerEnable { + initUrl = config.Config.Credential.Minio.EndpointInner + } else { + initUrl = config.Config.Credential.Minio.Endpoint + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "use initUrl: ", initUrl) + minioUrl, err := url2.Parse(initUrl) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "parse failed, please check config/config.yaml", err.Error()) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "Parse ok ", config.Config.Credential.Minio) + MinioClient, err := minio.New(minioUrl.Host, &minio.Options{ + Creds: credentials.NewStaticV4(config.Config.Credential.Minio.AccessKeyID, config.Config.Credential.Minio.SecretAccessKey, ""), + Secure: false, + }) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "init minio client failed", err.Error()) + return + } + + _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject file error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) From ccfa48749314e3eb19a783728201abc56b817a68 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 15:41:59 +0800 Subject: [PATCH 084/143] update app --- internal/cms_api/admin/admin.go | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index d79b37a8c..067abf2d2 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -13,14 +13,12 @@ import ( "context" "fmt" "github.com/minio/minio-go/v7" - "github.com/minio/minio-go/v7/pkg/credentials" "net/http" "path" "strings" "Open_IM/internal/api/third" "github.com/gin-gonic/gin" - url2 "net/url" ) // register @@ -75,7 +73,7 @@ func UploadUpdateApp(c *gin.Context) { //} // v2.0.9_app_linux v2.0.9_yaml_linux - file, err := c.FormFile("app") + file, err := c.FormFile("file") if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "FormFile failed", err.Error()) c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file arg: " + err.Error()}) @@ -106,33 +104,12 @@ func UploadUpdateApp(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) return } + fmt.Println(apiThird.MinioClient.EndpointURL()) fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size) fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size) - var initUrl string - if config.Config.Credential.Minio.EndpointInnerEnable { - initUrl = config.Config.Credential.Minio.EndpointInner - } else { - initUrl = config.Config.Credential.Minio.Endpoint - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "use initUrl: ", initUrl) - minioUrl, err := url2.Parse(initUrl) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "parse failed, please check config/config.yaml", err.Error()) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "Parse ok ", config.Config.Credential.Minio) - MinioClient, err := minio.New(minioUrl.Host, &minio.Options{ - Creds: credentials.NewStaticV4(config.Config.Credential.Minio.AccessKeyID, config.Config.Credential.Minio.SecretAccessKey, ""), - Secure: false, - }) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "init minio client failed", err.Error()) - return - } - - _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject file error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) From 59aa71b3b85b5beb4584c073ecb6a9643bfbf2b0 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 15:58:29 +0800 Subject: [PATCH 085/143] update app --- internal/cms_api/admin/admin.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 067abf2d2..9886ba1dc 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -13,6 +13,7 @@ import ( "context" "fmt" "github.com/minio/minio-go/v7" + "github.com/minio/minio-go/v7/pkg/credentials" "net/http" "path" "strings" @@ -108,8 +109,12 @@ func UploadUpdateApp(c *gin.Context) { fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size) fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size) + minioClient, err := minio.New(config.Config.Credential.Minio.EndpointInner, &minio.Options{ + Creds: credentials.NewStaticV4(config.Config.Credential.Minio.AccessKeyID, config.Config.Credential.Minio.SecretAccessKey, ""), + Secure: false, + }) - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) + _, err = minioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject file error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) From db6acacf2ed4d3783467ff43798b57638da064a7 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 16:02:05 +0800 Subject: [PATCH 086/143] update app --- internal/cms_api/admin/admin.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 9886ba1dc..f079194f1 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -105,7 +105,6 @@ func UploadUpdateApp(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) return } - fmt.Println(apiThird.MinioClient.EndpointURL()) fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size) fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size) @@ -113,6 +112,7 @@ func UploadUpdateApp(c *gin.Context) { Creds: credentials.NewStaticV4(config.Config.Credential.Minio.AccessKeyID, config.Config.Credential.Minio.SecretAccessKey, ""), Secure: false, }) + fmt.Println(apiThird.MinioClient.EndpointURL()) _, err = minioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) if err != nil { From 4ea8cb5903652dcb6ef85929c74375ae57ef1082 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 16:04:26 +0800 Subject: [PATCH 087/143] update app --- internal/api/third/minio_init.go | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/internal/api/third/minio_init.go b/internal/api/third/minio_init.go index e49651061..a93ad9bb7 100644 --- a/internal/api/third/minio_init.go +++ b/internal/api/third/minio_init.go @@ -7,7 +7,6 @@ import ( "context" "github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7/pkg/credentials" - "github.com/minio/minio-go/v7/pkg/policy" url2 "net/url" ) @@ -30,11 +29,16 @@ func MinioInit() { log.NewError(operationID, utils.GetSelfFuncName(), "parse failed, please check config/config.yaml", err.Error()) return } + opts := &minio.Options{ + Creds: credentials.NewStaticV4(config.Config.Credential.Minio.AccessKeyID, config.Config.Credential.Minio.SecretAccessKey, ""), + } + if minioUrl.Scheme == "http" { + opts.Secure = false + } else if minioUrl.Scheme == "https" { + opts.Secure = true + } log.NewInfo(operationID, utils.GetSelfFuncName(), "Parse ok ", config.Config.Credential.Minio) - MinioClient, err = minio.New(minioUrl.Host, &minio.Options{ - Creds: credentials.NewStaticV4(config.Config.Credential.Minio.AccessKeyID, config.Config.Credential.Minio.SecretAccessKey, ""), - Secure: false, - }) + MinioClient, err = minio.New(minioUrl.Host, opts) log.NewInfo(operationID, utils.GetSelfFuncName(), "new ok ", config.Config.Credential.Minio) if err != nil { log.NewError(operationID, utils.GetSelfFuncName(), "init minio client failed", err.Error()) @@ -74,11 +78,11 @@ func MinioInit() { } } // 自动化桶public的代码 - err = MinioClient.SetBucketPolicy(context.Background(), config.Config.Credential.Minio.Bucket, policy.BucketPolicyReadWrite) - err = MinioClient.SetBucketPolicy(context.Background(), config.Config.Credential.Minio.AppBucket, policy.BucketPolicyReadWrite) - if err != nil { - log.NewDebug("", utils.GetSelfFuncName(), "SetBucketPolicy failed please set in web", err.Error()) - return - } + //err = MinioClient.SetBucketPolicy(context.Background(), config.Config.Credential.Minio.Bucket, policy.BucketPolicyReadWrite) + //err = MinioClient.SetBucketPolicy(context.Background(), config.Config.Credential.Minio.AppBucket, policy.BucketPolicyReadWrite) + //if err != nil { + // log.NewDebug("", utils.GetSelfFuncName(), "SetBucketPolicy failed please set in web", err.Error()) + // return + //} log.NewInfo(operationID, utils.GetSelfFuncName(), "minio create and set policy success") } From 928fc374c7af94c742ce225dc20b233cc78fbb20 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 16:07:58 +0800 Subject: [PATCH 088/143] update app --- internal/api/third/minio_storage_credential.go | 2 +- internal/cms_api/admin/admin.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index 40ae13c4a..7a6926360 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -83,7 +83,7 @@ func MinioUploadFile(c *gin.Context) { return } newName, newType := utils.GetNewFileNameAndContentType(file.Filename, req.FileType) - log.Debug(req.OperationID, utils.GetSelfFuncName(), config.Config.Credential.Minio.Bucket, newName, fileObj, file.Size, newType) + log.Debug(req.OperationID, utils.GetSelfFuncName(), config.Config.Credential.Minio.Bucket, newName, fileObj, file.Size, newType, MinioClient.EndpointURL()) _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.Bucket, newName, fileObj, file.Size, minio.PutObjectOptions{ContentType: newType}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "upload file error") diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index f079194f1..4fadfb180 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -112,7 +112,7 @@ func UploadUpdateApp(c *gin.Context) { Creds: credentials.NewStaticV4(config.Config.Credential.Minio.AccessKeyID, config.Config.Credential.Minio.SecretAccessKey, ""), Secure: false, }) - fmt.Println(apiThird.MinioClient.EndpointURL()) + fmt.Println(minioClient.EndpointURL()) _, err = minioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) if err != nil { From 7aa84607c84383edfd7f8841ed98bd78d5fa7095 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 16:21:26 +0800 Subject: [PATCH 089/143] update app --- internal/cms_api/admin/admin.go | 83 +++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 4fadfb180..4fef01c8a 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -1,12 +1,14 @@ package admin import ( + apiStruct2 "Open_IM/pkg/base_info" apiStruct "Open_IM/pkg/cms_api_struct" "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model" openIMHttp "Open_IM/pkg/common/http" "Open_IM/pkg/common/log" + "Open_IM/pkg/common/token_verify" "Open_IM/pkg/grpc-etcdv3/getcdv3" pbAdmin "Open_IM/pkg/proto/admin_cms" "Open_IM/pkg/utils" @@ -176,3 +178,84 @@ func GetDownloadURL(c *gin.Context) { c.JSON(http.StatusOK, resp) } } + +func MinioUploadFile(c *gin.Context) { + var ( + req apiStruct2.MinioUploadFileReq + resp apiStruct2.MinioUploadFileResp + ) + defer func() { + if r := recover(); r != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), r) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file or snapShot args"}) + return + } + }() + if err := c.Bind(&req); err != nil { + log.NewError("0", utils.GetSelfFuncName(), "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), req) + var ok bool + var errInfo string + ok, _, 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.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) + return + } + + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), req) + switch req.FileType { + // videoType upload snapShot + case constant.VideoType: + snapShotFile, err := c.FormFile("snapShot") + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing snapshot arg: " + err.Error()}) + return + } + snapShotFileObj, err := snapShotFile.Open() + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + snapShotNewName, snapShotNewType := utils.GetNewFileNameAndContentType(snapShotFile.Filename, constant.ImageType) + log.Debug(req.OperationID, utils.GetSelfFuncName(), snapShotNewName, snapShotNewType) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.Bucket, snapShotNewName, snapShotFileObj, snapShotFile.Size, minio.PutObjectOptions{ContentType: snapShotNewType}) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject snapShotFile error", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + resp.SnapshotURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.Bucket + "/" + snapShotNewName + resp.SnapshotNewName = snapShotNewName + } + file, err := c.FormFile("file") + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "FormFile failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file arg: " + err.Error()}) + return + } + fileObj, err := file.Open() + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) + return + } + newName, newType := utils.GetNewFileNameAndContentType(file.Filename, req.FileType) + log.Debug(req.OperationID, utils.GetSelfFuncName(), config.Config.Credential.Minio.Bucket, newName, fileObj, file.Size, newType, apiThird.MinioClient.EndpointURL()) + _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.Bucket, newName, fileObj, file.Size, minio.PutObjectOptions{ContentType: newType}) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "upload file error") + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "upload file error" + err.Error()}) + return + } + resp.NewName = newName + resp.URL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.Bucket + "/" + newName + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) + c.JSON(http.StatusOK, gin.H{"errCode": 0, "errMsg": "", "data": resp}) + return +} From e98ef5f5f24238ffd253d21b89aa81fbdc0c62c4 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 16:22:16 +0800 Subject: [PATCH 090/143] update app --- internal/cms_api/router.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/cms_api/router.go b/internal/cms_api/router.go index fbd3b9fcc..2ebee65fc 100644 --- a/internal/cms_api/router.go +++ b/internal/cms_api/router.go @@ -22,6 +22,7 @@ func NewGinRouter() *gin.Engine { adminRouterGroup.POST("/login", admin.AdminLogin) adminRouterGroup.POST("/upload_update_app", admin.UploadUpdateApp) adminRouterGroup.POST("/get_download_url", admin.GetDownloadURL) + adminRouterGroup.POST("/test", admin.UploadUpdateApp) } r2 := router.Group("") r2.Use(middleware.JWTAuth()) From fab52b6a5695603b3e806eed557da9d8a465837a Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 16:23:56 +0800 Subject: [PATCH 091/143] update app --- internal/cms_api/router.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/cms_api/router.go b/internal/cms_api/router.go index 2ebee65fc..9ec506fe9 100644 --- a/internal/cms_api/router.go +++ b/internal/cms_api/router.go @@ -22,7 +22,7 @@ func NewGinRouter() *gin.Engine { adminRouterGroup.POST("/login", admin.AdminLogin) adminRouterGroup.POST("/upload_update_app", admin.UploadUpdateApp) adminRouterGroup.POST("/get_download_url", admin.GetDownloadURL) - adminRouterGroup.POST("/test", admin.UploadUpdateApp) + adminRouterGroup.POST("/test", admin.MinioUploadFile) } r2 := router.Group("") r2.Use(middleware.JWTAuth()) From 8effca3a7c4e49eebdabe9693766b3b6394403b3 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 16:39:08 +0800 Subject: [PATCH 092/143] update app --- internal/cms_api/admin/admin.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 4fef01c8a..e1adb2318 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -184,13 +184,13 @@ func MinioUploadFile(c *gin.Context) { req apiStruct2.MinioUploadFileReq resp apiStruct2.MinioUploadFileResp ) - defer func() { - if r := recover(); r != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), r) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file or snapShot args"}) - return - } - }() + //defer func() { + // if r := recover(); r != nil { + // log.NewError(req.OperationID, utils.GetSelfFuncName(), r) + // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file or snapShot args"}) + // return + // } + //}() if err := c.Bind(&req); err != nil { log.NewError("0", utils.GetSelfFuncName(), "BindJSON failed ", err.Error()) c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) From 7a78e5d869468049af72580a6f7c0fb6f70676ec Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 16:53:58 +0800 Subject: [PATCH 093/143] update app --- cmd/open_im_api/main.go | 2 + .../api/third/minio_storage_credential.go | 127 ++++++++++++++++++ pkg/base_info/minio_api_struct.go | 31 +++++ 3 files changed, 160 insertions(+) diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index e5d7c9930..cd774627b 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -106,6 +106,8 @@ func main() { 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) } //Message chatGroup := r.Group("/msg") diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index 7a6926360..f1c4401e6 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -4,16 +4,19 @@ import ( apiStruct "Open_IM/pkg/base_info" "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" + 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/token_verify" "Open_IM/pkg/utils" "context" + "fmt" "github.com/gin-gonic/gin" "github.com/minio/minio-go/v7" _ "github.com/minio/minio-go/v7" cr "github.com/minio/minio-go/v7/pkg/credentials" "net/http" + "path" ) func MinioUploadFile(c *gin.Context) { @@ -147,3 +150,127 @@ func MinioStorageCredential(c *gin.Context) { resp.StsEndpointURL = config.Config.Credential.Minio.Endpoint c.JSON(http.StatusOK, gin.H{"errCode": 0, "errMsg": "", "data": resp}) } + +func UploadUpdateApp(c *gin.Context) { + var ( + req apiStruct.UploadUpdateAppReq + resp apiStruct.UploadUpdateAppResp + ) + if err := c.Bind(&req); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) + + fileObj, err := req.File.Open() + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open file error" + err.Error()}) + return + } + yamlObj, err := req.Yaml.Open() + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open Yaml error", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open Yaml error" + err.Error()}) + return + } + + // v2.0.9_app_linux v2.0.9_yaml_linux + + //file, err := c.FormFile("file") + //if err != nil { + // log.NewError(req.OperationID, utils.GetSelfFuncName(), "FormFile failed", err.Error()) + // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file arg: " + err.Error()}) + // return + //} + //fileObj, err := file.Open() + //if err != nil { + // log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) + // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) + // return + //} + // + //yaml, err := c.FormFile("yaml") + //if err != nil { + // log.NewError(req.OperationID, utils.GetSelfFuncName(), "FormFile failed", err.Error()) + // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file arg: " + err.Error()}) + // return + //} + //yamlObj, err := yaml.Open() + //if err != nil { + // log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) + // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) + // return + //} + newFileName, newYamlName, err := utils.GetUploadAppNewName(req.Type, req.Version, req.File.Filename, req.Yaml.Filename) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUploadAppNewName failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) + return + } + fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size) + fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size) + + _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject file error") + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) + return + } + _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject yaml error") + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject yaml error" + err.Error()}) + return + } + if err := imdb.UpdateAppVersion(req.Type, req.Version, req.ForceUpdate, newFileName, newYamlName); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "UpdateAppVersion error", err.Error()) + resp.ErrCode = http.StatusInternalServerError + resp.ErrMsg = err.Error() + c.JSON(http.StatusInternalServerError, resp) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName()) + c.JSON(http.StatusOK, resp) +} + +func GetDownloadURL(c *gin.Context) { + var ( + req apiStruct.GetDownloadURLReq + resp apiStruct.GetDownloadURLResp + ) + defer func() { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) + }() + if err := c.Bind(&req); err != nil { + log.NewError("0", utils.GetSelfFuncName(), "BindJSON failed ", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) + //fileName, yamlName, err := utils.GetUploadAppNewName(req.Type, req.Version, req.) + //if err != nil { + // log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUploadAppNewName failed", err.Error()) + // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) + // return + //} + app, err := imdb.GetNewestVersion(req.Type) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "getNewestVersion failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "getNewestVersion failed" + err.Error()}) + return + } + if app.Version != req.Version { + resp.Data.HasNewVersion = true + if app.ForceUpdate == true { + resp.Data.ForceUpdate = true + } + resp.Data.YamlURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.YamlName + resp.Data.FileURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.FileName + c.JSON(http.StatusOK, resp) + } else { + resp.Data.HasNewVersion = false + c.JSON(http.StatusOK, resp) + } +} diff --git a/pkg/base_info/minio_api_struct.go b/pkg/base_info/minio_api_struct.go index 6d3b0ecac..8a3f2d00a 100644 --- a/pkg/base_info/minio_api_struct.go +++ b/pkg/base_info/minio_api_struct.go @@ -1,5 +1,7 @@ package base_info +import "mime/multipart" + type MinioStorageCredentialReq struct { OperationID string `json:"operationID"` } @@ -23,3 +25,32 @@ type MinioUploadFileResp struct { SnapshotURL string `json:"snapshotURL,omitempty"` SnapshotNewName string `json:"snapshotName,omitempty"` } + +type UploadUpdateAppReq struct { + OperationID string `form:"operationID" binding:"required"` + Type int `form:"type" binding:"required"` + Version string `form:"version" binding:"required"` + File *multipart.FileHeader `form:"file" binding:"required"` + Yaml *multipart.FileHeader `form:"yaml" binding:"required"` + ForceUpdate bool `form:"forceUpdate" binding:"required"` +} + +type UploadUpdateAppResp struct { + CommResp +} + +type GetDownloadURLReq struct { + OperationID string `json:"operationID" binding:"required"` + Type int `json:"type" binding:"required"` + Version string `json:"version" binding:"required"` +} + +type GetDownloadURLResp struct { + CommResp + Data struct { + HasNewVersion bool `json:"hasNewVersion"` + ForceUpdate bool `json:"forceUpdate"` + FileURL string `json:"fileURL"` + YamlURL string `json:"yamlURL"` + } `json:"data"` +} From 472cda83159b6862b605645e223456a6961362a8 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 16:59:45 +0800 Subject: [PATCH 094/143] update app --- .../api/third/minio_storage_credential.go | 29 ------------------- .../mysql_model/im_mysql_model/file_model.go | 2 +- 2 files changed, 1 insertion(+), 30 deletions(-) diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index f1c4401e6..1b3b6aeb3 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -176,41 +176,12 @@ func UploadUpdateApp(c *gin.Context) { return } - // v2.0.9_app_linux v2.0.9_yaml_linux - - //file, err := c.FormFile("file") - //if err != nil { - // log.NewError(req.OperationID, utils.GetSelfFuncName(), "FormFile failed", err.Error()) - // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file arg: " + err.Error()}) - // return - //} - //fileObj, err := file.Open() - //if err != nil { - // log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) - // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) - // return - //} - // - //yaml, err := c.FormFile("yaml") - //if err != nil { - // log.NewError(req.OperationID, utils.GetSelfFuncName(), "FormFile failed", err.Error()) - // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file arg: " + err.Error()}) - // return - //} - //yamlObj, err := yaml.Open() - //if err != nil { - // log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) - // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) - // return - //} newFileName, newYamlName, err := utils.GetUploadAppNewName(req.Type, req.Version, req.File.Filename, req.Yaml.Filename) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUploadAppNewName failed", err.Error()) c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) return } - fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size) - fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size) _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) if err != nil { diff --git a/pkg/common/db/mysql_model/im_mysql_model/file_model.go b/pkg/common/db/mysql_model/im_mysql_model/file_model.go index 7d6144633..babcc13be 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/file_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/file_model.go @@ -18,7 +18,7 @@ func UpdateAppVersion(appType int, version string, forceUpdate bool, fileName, y FileName: fileName, YamlName: yamlName, } - result := dbConn.Model(db.AppVersion{}).Where("app_type = ?", appType).Updates(&app) + result := dbConn.Model(db.AppVersion{}).Where("type = ?", appType).Updates(&app) if result.Error != nil { return result.Error } From 608b166b32178734200fbf08eeb9beef545abb27 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 17:00:52 +0800 Subject: [PATCH 095/143] update app --- internal/api/third/minio_storage_credential.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index 1b3b6aeb3..2c0329fb9 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -10,7 +10,6 @@ import ( _ "Open_IM/pkg/common/token_verify" "Open_IM/pkg/utils" "context" - "fmt" "github.com/gin-gonic/gin" "github.com/minio/minio-go/v7" _ "github.com/minio/minio-go/v7" From f5d4397f0b48cd38f60bc5f820cac1039203ac6f Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 17:17:20 +0800 Subject: [PATCH 096/143] update app --- .../api/third/minio_storage_credential.go | 25 ++++++++------- internal/cms_api/admin/admin.go | 31 ++++++++----------- pkg/base_info/minio_api_struct.go | 2 +- .../mysql_model/im_mysql_model/file_model.go | 4 +-- 4 files changed, 29 insertions(+), 33 deletions(-) diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index 2c0329fb9..ff0802fc1 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -228,19 +228,20 @@ func GetDownloadURL(c *gin.Context) { app, err := imdb.GetNewestVersion(req.Type) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "getNewestVersion failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "getNewestVersion failed" + err.Error()}) - return } - if app.Version != req.Version { - resp.Data.HasNewVersion = true - if app.ForceUpdate == true { - resp.Data.ForceUpdate = true + if app != nil { + if app.Version != req.Version && app.Version != "" { + resp.Data.HasNewVersion = true + if app.ForceUpdate == true { + resp.Data.ForceUpdate = true + } + resp.Data.YamlURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.YamlName + resp.Data.FileURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.FileName + c.JSON(http.StatusOK, resp) + } else { + resp.Data.HasNewVersion = false + c.JSON(http.StatusOK, resp) } - resp.Data.YamlURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.YamlName - resp.Data.FileURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.FileName - c.JSON(http.StatusOK, resp) - } else { - resp.Data.HasNewVersion = false - c.JSON(http.StatusOK, resp) } + c.JSON(http.StatusBadRequest, gin.H{"errCode": 0, "errMsg": "not found app version"}) } diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index e1adb2318..8ee2c8d4f 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -153,30 +153,25 @@ func GetDownloadURL(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - //fileName, yamlName, err := utils.GetUploadAppNewName(req.Type, req.Version, req.) - //if err != nil { - // log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUploadAppNewName failed", err.Error()) - // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) - // return - //} app, err := imdb.GetNewestVersion(req.Type) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "getNewestVersion failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "getNewestVersion failed" + err.Error()}) - return } - if app.Version != req.Version { - resp.Data.HasNewVersion = true - if app.ForceUpdate == true { - resp.Data.ForceUpdate = true + if app != nil { + if app.Version != req.Version { + resp.Data.HasNewVersion = true + if app.ForceUpdate == true { + resp.Data.ForceUpdate = true + } + resp.Data.YamlURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.YamlName + resp.Data.FileURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.FileName + c.JSON(http.StatusOK, resp) + } else { + resp.Data.HasNewVersion = false + c.JSON(http.StatusOK, resp) } - resp.Data.YamlURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.YamlName - resp.Data.FileURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.FileName - c.JSON(http.StatusOK, resp) - } else { - resp.Data.HasNewVersion = false - c.JSON(http.StatusOK, resp) } + c.JSON(http.StatusBadRequest, gin.H{"errCode": 0, "errMsg": "not found app version"}) } func MinioUploadFile(c *gin.Context) { diff --git a/pkg/base_info/minio_api_struct.go b/pkg/base_info/minio_api_struct.go index 8a3f2d00a..902310de5 100644 --- a/pkg/base_info/minio_api_struct.go +++ b/pkg/base_info/minio_api_struct.go @@ -32,7 +32,7 @@ type UploadUpdateAppReq struct { Version string `form:"version" binding:"required"` File *multipart.FileHeader `form:"file" binding:"required"` Yaml *multipart.FileHeader `form:"yaml" binding:"required"` - ForceUpdate bool `form:"forceUpdate" binding:"required"` + ForceUpdate bool `form:"forceUpdate"` } type UploadUpdateAppResp struct { diff --git a/pkg/common/db/mysql_model/im_mysql_model/file_model.go b/pkg/common/db/mysql_model/im_mysql_model/file_model.go index babcc13be..62c032b75 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/file_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/file_model.go @@ -31,10 +31,10 @@ func UpdateAppVersion(appType int, version string, forceUpdate bool, fileName, y func GetNewestVersion(appType int) (*db.AppVersion, error) { dbConn, err := db.DB.MysqlDB.DefaultGormDB() + app := db.AppVersion{} if err != nil { - return nil, err + return &app, err } dbConn.LogMode(true) - app := db.AppVersion{} return &app, dbConn.Model(db.AppVersion{}).First(&app, appType).Error } From c998bce34ffbcdcc86d7b6e38980c7e60ff7629a Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 17:23:28 +0800 Subject: [PATCH 097/143] update app --- internal/api/third/minio_storage_credential.go | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index ff0802fc1..eed21b126 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -219,16 +219,11 @@ func GetDownloadURL(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - //fileName, yamlName, err := utils.GetUploadAppNewName(req.Type, req.Version, req.) - //if err != nil { - // log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUploadAppNewName failed", err.Error()) - // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) - // return - //} app, err := imdb.GetNewestVersion(req.Type) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "getNewestVersion failed", err.Error()) } + log.Debug(req.OperationID, utils.GetSelfFuncName(), "app: ", app) if app != nil { if app.Version != req.Version && app.Version != "" { resp.Data.HasNewVersion = true @@ -238,9 +233,11 @@ func GetDownloadURL(c *gin.Context) { resp.Data.YamlURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.YamlName resp.Data.FileURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.FileName c.JSON(http.StatusOK, resp) + return } else { resp.Data.HasNewVersion = false c.JSON(http.StatusOK, resp) + return } } c.JSON(http.StatusBadRequest, gin.H{"errCode": 0, "errMsg": "not found app version"}) From 7137924baabee0298e6cdf1e2b0401d59f4d7b55 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 17:39:27 +0800 Subject: [PATCH 098/143] update app --- internal/cms_api/admin/admin.go | 129 ++++++------------ internal/cms_api/router.go | 1 - .../mysql_model/im_mysql_model/file_model.go | 13 +- 3 files changed, 47 insertions(+), 96 deletions(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 8ee2c8d4f..06533bae8 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -22,8 +22,45 @@ import ( "Open_IM/internal/api/third" "github.com/gin-gonic/gin" + url2 "net/url" ) +var ( + minioClient *minio.Client +) + +func init() { + operationID := utils.OperationIDGenerator() + log.NewInfo(operationID, utils.GetSelfFuncName(), "minio config: ", config.Config.Credential.Minio) + var initUrl string + if config.Config.Credential.Minio.EndpointInnerEnable { + initUrl = config.Config.Credential.Minio.EndpointInner + } else { + initUrl = config.Config.Credential.Minio.Endpoint + } + log.NewInfo(operationID, utils.GetSelfFuncName(), "use initUrl: ", initUrl) + minioUrl, err := url2.Parse(initUrl) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), "parse failed, please check config/config.yaml", err.Error()) + return + } + opts := &minio.Options{ + Creds: credentials.NewStaticV4(config.Config.Credential.Minio.AccessKeyID, config.Config.Credential.Minio.SecretAccessKey, ""), + } + if minioUrl.Scheme == "http" { + opts.Secure = false + } else if minioUrl.Scheme == "https" { + opts.Secure = true + } + log.NewInfo(operationID, utils.GetSelfFuncName(), "Parse ok ", config.Config.Credential.Minio) + minioClient, err = minio.New(minioUrl.Host, opts) + log.NewInfo(operationID, utils.GetSelfFuncName(), "new ok ", config.Config.Credential.Minio) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), "init minio client failed", err.Error()) + return + } +} + // register func AdminLogin(c *gin.Context) { var ( @@ -110,11 +147,6 @@ func UploadUpdateApp(c *gin.Context) { fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size) fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size) - minioClient, err := minio.New(config.Config.Credential.Minio.EndpointInner, &minio.Options{ - Creds: credentials.NewStaticV4(config.Config.Credential.Minio.AccessKeyID, config.Config.Credential.Minio.SecretAccessKey, ""), - Secure: false, - }) - fmt.Println(minioClient.EndpointURL()) _, err = minioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) if err != nil { @@ -122,7 +154,7 @@ func UploadUpdateApp(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) return } - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) + _, err = minioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject yaml error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject yaml error" + err.Error()}) @@ -158,7 +190,7 @@ func GetDownloadURL(c *gin.Context) { log.NewError(req.OperationID, utils.GetSelfFuncName(), "getNewestVersion failed", err.Error()) } if app != nil { - if app.Version != req.Version { + if app.Version != req.Version && app.Version != "" { resp.Data.HasNewVersion = true if app.ForceUpdate == true { resp.Data.ForceUpdate = true @@ -166,91 +198,12 @@ func GetDownloadURL(c *gin.Context) { resp.Data.YamlURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.YamlName resp.Data.FileURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.FileName c.JSON(http.StatusOK, resp) + return } else { resp.Data.HasNewVersion = false c.JSON(http.StatusOK, resp) + return } } c.JSON(http.StatusBadRequest, gin.H{"errCode": 0, "errMsg": "not found app version"}) } - -func MinioUploadFile(c *gin.Context) { - var ( - req apiStruct2.MinioUploadFileReq - resp apiStruct2.MinioUploadFileResp - ) - //defer func() { - // if r := recover(); r != nil { - // log.NewError(req.OperationID, utils.GetSelfFuncName(), r) - // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file or snapShot args"}) - // return - // } - //}() - if err := c.Bind(&req); err != nil { - log.NewError("0", utils.GetSelfFuncName(), "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), req) - var ok bool - var errInfo string - ok, _, 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.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg}) - return - } - - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), req) - switch req.FileType { - // videoType upload snapShot - case constant.VideoType: - snapShotFile, err := c.FormFile("snapShot") - if err != nil { - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing snapshot arg: " + err.Error()}) - return - } - snapShotFileObj, err := snapShotFile.Open() - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - snapShotNewName, snapShotNewType := utils.GetNewFileNameAndContentType(snapShotFile.Filename, constant.ImageType) - log.Debug(req.OperationID, utils.GetSelfFuncName(), snapShotNewName, snapShotNewType) - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.Bucket, snapShotNewName, snapShotFileObj, snapShotFile.Size, minio.PutObjectOptions{ContentType: snapShotNewType}) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject snapShotFile error", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - resp.SnapshotURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.Bucket + "/" + snapShotNewName - resp.SnapshotNewName = snapShotNewName - } - file, err := c.FormFile("file") - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "FormFile failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file arg: " + err.Error()}) - return - } - fileObj, err := file.Open() - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) - return - } - newName, newType := utils.GetNewFileNameAndContentType(file.Filename, req.FileType) - log.Debug(req.OperationID, utils.GetSelfFuncName(), config.Config.Credential.Minio.Bucket, newName, fileObj, file.Size, newType, apiThird.MinioClient.EndpointURL()) - _, err = apiThird.MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.Bucket, newName, fileObj, file.Size, minio.PutObjectOptions{ContentType: newType}) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "upload file error") - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "upload file error" + err.Error()}) - return - } - resp.NewName = newName - resp.URL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.Bucket + "/" + newName - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) - c.JSON(http.StatusOK, gin.H{"errCode": 0, "errMsg": "", "data": resp}) - return -} diff --git a/internal/cms_api/router.go b/internal/cms_api/router.go index 9ec506fe9..fbd3b9fcc 100644 --- a/internal/cms_api/router.go +++ b/internal/cms_api/router.go @@ -22,7 +22,6 @@ func NewGinRouter() *gin.Engine { adminRouterGroup.POST("/login", admin.AdminLogin) adminRouterGroup.POST("/upload_update_app", admin.UploadUpdateApp) adminRouterGroup.POST("/get_download_url", admin.GetDownloadURL) - adminRouterGroup.POST("/test", admin.MinioUploadFile) } r2 := router.Group("") r2.Use(middleware.JWTAuth()) diff --git a/pkg/common/db/mysql_model/im_mysql_model/file_model.go b/pkg/common/db/mysql_model/im_mysql_model/file_model.go index 62c032b75..9a72b1ad0 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/file_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/file_model.go @@ -11,14 +11,13 @@ func UpdateAppVersion(appType int, version string, forceUpdate bool, fileName, y return err } app := db.AppVersion{ - Version: version, - Type: appType, - UpdateTime: int(time.Now().Unix()), - ForceUpdate: forceUpdate, - FileName: fileName, - YamlName: yamlName, + Version: version, + Type: appType, + UpdateTime: int(time.Now().Unix()), + FileName: fileName, + YamlName: yamlName, } - result := dbConn.Model(db.AppVersion{}).Where("type = ?", appType).Updates(&app) + result := dbConn.Model(db.AppVersion{}).Where("type = ?", appType).Updates(&app).Update(map[string]interface{}{"force_update": forceUpdate}) if result.Error != nil { return result.Error } From 7a423eb6e1d766164e28bbc67f2414ae60ab5be0 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 17:50:22 +0800 Subject: [PATCH 099/143] update app --- pkg/common/db/model_struct.go | 12 ++++++------ .../db/mysql_model/im_mysql_model/file_model.go | 15 +++++++++------ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/pkg/common/db/model_struct.go b/pkg/common/db/model_struct.go index 6eb18630d..03709a67d 100644 --- a/pkg/common/db/model_struct.go +++ b/pkg/common/db/model_struct.go @@ -274,12 +274,12 @@ func (DepartmentMember) TableName() string { } type AppVersion struct { - Version string `gorm:"column:version;size:64"` - Type int `gorm:"column:type;primary_key"` - UpdateTime int `gorm:"column:update_time"` - ForceUpdate bool `gorm:"column:force_update"` - FileName string `gorm:"column:file_name"` - YamlName string `gorm:"column:yaml_name"` + Version string `gorm:"column:version;size:64" json:"version"` + Type int `gorm:"column:type;primary_key" json:"type"` + UpdateTime int `gorm:"column:update_time" json:"update_time"` + ForceUpdate bool `gorm:"column:force_update" json:"force_update"` + FileName string `gorm:"column:file_name" json:"file_name"` + YamlName string `gorm:"column:yaml_name" json:"yaml_name"` } func (AppVersion) TableName() string { diff --git a/pkg/common/db/mysql_model/im_mysql_model/file_model.go b/pkg/common/db/mysql_model/im_mysql_model/file_model.go index 9a72b1ad0..983dec328 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/file_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/file_model.go @@ -10,14 +10,17 @@ func UpdateAppVersion(appType int, version string, forceUpdate bool, fileName, y if err != nil { return err } + updateTime := int(time.Now().Unix()) app := db.AppVersion{ - Version: version, - Type: appType, - UpdateTime: int(time.Now().Unix()), - FileName: fileName, - YamlName: yamlName, + Version: version, + Type: appType, + UpdateTime: updateTime, + FileName: fileName, + YamlName: yamlName, + ForceUpdate: forceUpdate, } - result := dbConn.Model(db.AppVersion{}).Where("type = ?", appType).Updates(&app).Update(map[string]interface{}{"force_update": forceUpdate}) + result := dbConn.Model(db.AppVersion{}).Where("type = ?", appType).Update(map[string]interface{}{"force_update": forceUpdate, + "version": version, "update_time": int(time.Now().Unix()), "file_name": fileName, "yaml_name": yamlName, "type": appType}) if result.Error != nil { return result.Error } From affbe9f5a972c0860d61bb1b83900ff5b9966397 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 17:50:57 +0800 Subject: [PATCH 100/143] update app --- internal/cms_api/admin/admin.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 06533bae8..6390fe166 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -1,14 +1,12 @@ package admin import ( - apiStruct2 "Open_IM/pkg/base_info" apiStruct "Open_IM/pkg/cms_api_struct" "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model" openIMHttp "Open_IM/pkg/common/http" "Open_IM/pkg/common/log" - "Open_IM/pkg/common/token_verify" "Open_IM/pkg/grpc-etcdv3/getcdv3" pbAdmin "Open_IM/pkg/proto/admin_cms" "Open_IM/pkg/utils" @@ -20,7 +18,6 @@ import ( "path" "strings" - "Open_IM/internal/api/third" "github.com/gin-gonic/gin" url2 "net/url" ) From e314fd4a0ab0b72c69b18fafc11af629f38829a3 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 18:22:18 +0800 Subject: [PATCH 101/143] update app --- .../api/third/minio_storage_credential.go | 42 +++++++++---------- pkg/base_info/minio_api_struct.go | 2 +- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index eed21b126..3f59deec9 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -161,38 +161,36 @@ func UploadUpdateApp(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - - fileObj, err := req.File.Open() - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open file error" + err.Error()}) - return - } - yamlObj, err := req.Yaml.Open() - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open Yaml error", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open Yaml error" + err.Error()}) - return - } - newFileName, newYamlName, err := utils.GetUploadAppNewName(req.Type, req.Version, req.File.Filename, req.Yaml.Filename) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUploadAppNewName failed", err.Error()) c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) return } - + fileObj, err := req.File.Open() + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open file error" + err.Error()}) + return + } _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject file error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) return } - _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject yaml error") - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject yaml error" + err.Error()}) - return + + yamlObj, err := req.Yaml.Open() + if err == nil { + _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject yaml error") + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject yaml error" + err.Error()}) + return + } + } else { + log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error()) + newYamlName = "" } if err := imdb.UpdateAppVersion(req.Type, req.Version, req.ForceUpdate, newFileName, newYamlName); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "UpdateAppVersion error", err.Error()) @@ -230,7 +228,9 @@ func GetDownloadURL(c *gin.Context) { if app.ForceUpdate == true { resp.Data.ForceUpdate = true } - resp.Data.YamlURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.YamlName + if app.YamlName != "" { + resp.Data.YamlURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.YamlName + } resp.Data.FileURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.FileName c.JSON(http.StatusOK, resp) return diff --git a/pkg/base_info/minio_api_struct.go b/pkg/base_info/minio_api_struct.go index 902310de5..a95b4c427 100644 --- a/pkg/base_info/minio_api_struct.go +++ b/pkg/base_info/minio_api_struct.go @@ -31,7 +31,7 @@ type UploadUpdateAppReq struct { Type int `form:"type" binding:"required"` Version string `form:"version" binding:"required"` File *multipart.FileHeader `form:"file" binding:"required"` - Yaml *multipart.FileHeader `form:"yaml" binding:"required"` + Yaml *multipart.FileHeader `form:"yaml"` ForceUpdate bool `form:"forceUpdate"` } From 2c89d80a27fdad34bbeb732b0c581a5de9a85621 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 18:28:57 +0800 Subject: [PATCH 102/143] update app --- .../api/third/minio_storage_credential.go | 31 ++++++++++++------- pkg/utils/file.go | 3 ++ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index 3f59deec9..c80035c5a 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -161,7 +161,13 @@ func UploadUpdateApp(c *gin.Context) { return } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - newFileName, newYamlName, err := utils.GetUploadAppNewName(req.Type, req.Version, req.File.Filename, req.Yaml.Filename) + var yamlName string + if req.Yaml == nil { + yamlName = "" + } else { + yamlName = req.Yaml.Filename + } + newFileName, newYamlName, err := utils.GetUploadAppNewName(req.Type, req.Version, req.File.Filename, yamlName) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUploadAppNewName failed", err.Error()) c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) @@ -179,18 +185,19 @@ func UploadUpdateApp(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) return } - - yamlObj, err := req.Yaml.Open() - if err == nil { - _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject yaml error") - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject yaml error" + err.Error()}) - return + if newYamlName != "" { + yamlObj, err := req.Yaml.Open() + if err == nil { + _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject yaml error") + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject yaml error" + err.Error()}) + return + } + } else { + log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error()) + newYamlName = "" } - } else { - log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error()) - newYamlName = "" } if err := imdb.UpdateAppVersion(req.Type, req.Version, req.ForceUpdate, newFileName, newYamlName); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "UpdateAppVersion error", err.Error()) diff --git a/pkg/utils/file.go b/pkg/utils/file.go index 94a30917b..9108ede8f 100644 --- a/pkg/utils/file.go +++ b/pkg/utils/file.go @@ -70,5 +70,8 @@ func GetUploadAppNewName(appType int, version, fileName, yamlName string) (strin suffixYaml := path.Ext(yamlName) newFileName = fmt.Sprintf("%s%s", newFileName, suffixFile) newYamlName = fmt.Sprintf("%s%s", newYamlName, suffixYaml) + if yamlName == "" { + newYamlName = "" + } return newFileName, newYamlName, nil } From 6c0e96213f1b715e132ad5fe382ffabcd5f7b8b3 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 19:04:08 +0800 Subject: [PATCH 103/143] update app --- pkg/common/db/model_struct.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/common/db/model_struct.go b/pkg/common/db/model_struct.go index 03709a67d..a4ab8c73f 100644 --- a/pkg/common/db/model_struct.go +++ b/pkg/common/db/model_struct.go @@ -280,6 +280,7 @@ type AppVersion struct { ForceUpdate bool `gorm:"column:force_update" json:"force_update"` FileName string `gorm:"column:file_name" json:"file_name"` YamlName string `gorm:"column:yaml_name" json:"yaml_name"` + TestField string `gorm:"column:test_field" json:"test_field"` } func (AppVersion) TableName() string { From 17759f9a98601297e35cea83c972a1c0f5149d74 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 10 May 2022 19:28:36 +0800 Subject: [PATCH 104/143] update app --- pkg/common/db/model_struct.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/common/db/model_struct.go b/pkg/common/db/model_struct.go index a4ab8c73f..03709a67d 100644 --- a/pkg/common/db/model_struct.go +++ b/pkg/common/db/model_struct.go @@ -280,7 +280,6 @@ type AppVersion struct { ForceUpdate bool `gorm:"column:force_update" json:"force_update"` FileName string `gorm:"column:file_name" json:"file_name"` YamlName string `gorm:"column:yaml_name" json:"yaml_name"` - TestField string `gorm:"column:test_field" json:"test_field"` } func (AppVersion) TableName() string { From 99f5c4e12f177a32b35576f670f74157555724ea Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 09:54:47 +0800 Subject: [PATCH 105/143] update sarama version --- go.mod | 4 +--- go.sum | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index ac7d6122f..c3dd5f1e8 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module Open_IM go 1.15 require ( - github.com/Shopify/sarama v1.19.0 + github.com/Shopify/sarama v1.32.0 github.com/Shopify/toxiproxy v2.1.4+incompatible // indirect github.com/alibabacloud-go/darabonba-openapi v0.1.11 github.com/alibabacloud-go/dysmsapi-20170525/v2 v2.0.8 @@ -15,7 +15,6 @@ require ( github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect github.com/eapache/queue v1.1.0 // indirect github.com/fatih/structs v1.1.0 - github.com/frankban/quicktest v1.14.0 // indirect github.com/garyburd/redigo v1.6.2 github.com/gin-gonic/gin v1.7.0 github.com/go-playground/validator/v10 v10.4.1 @@ -47,7 +46,6 @@ require ( go.etcd.io/etcd/api/v3 v3.5.4 go.etcd.io/etcd/client/v3 v3.5.4 go.mongodb.org/mongo-driver v1.8.3 - golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71 // indirect diff --git a/go.sum b/go.sum index f08695e8f..3b9694c5e 100644 --- a/go.sum +++ b/go.sum @@ -5,8 +5,12 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= github.com/Shopify/sarama v1.19.0 h1:9oksLxC6uxVPHPVYUmq6xhr1BOF/hHobWH2UzO67z1s= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/sarama v1.32.0 h1:P+RUjEaRU0GMMbYexGMDyrMkLhbbBVUVISDywi+IlFU= +github.com/Shopify/sarama v1.32.0/go.mod h1:+EmJJKZWVT/faR9RcOxJerP+LId4iWdQPBGLy1Y1Njs= github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/Shopify/toxiproxy/v2 v2.3.0 h1:62YkpiP4bzdhKMH+6uC5E95y608k3zDwdzuBMsnn3uQ= +github.com/Shopify/toxiproxy/v2 v2.3.0/go.mod h1:KvQTtB6RjCJY4zqNJn7C7JDFgsG5uoHYDirfUfpIm0c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -64,6 +68,7 @@ github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmf github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -94,6 +99,8 @@ github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8 github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/frankban/quicktest v1.14.0 h1:+cqqvzZV87b4adx/5ayVOaYZ2CrvM4ejQvUdBzPPUss= github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og= +github.com/frankban/quicktest v1.14.2 h1:SPb1KFFmM+ybpEjPUhCCkZOM5xlovT5UbrMvWnXyBns= +github.com/frankban/quicktest v1.14.2/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/garyburd/redigo v1.6.2 h1:yE/pwKCrbLpLpQICzYTeZ7JsTA/C53wFTJHaEtRqniM= github.com/garyburd/redigo v1.6.2/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -160,16 +167,37 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= +github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/sessions v1.2.1 h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI= +github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= +github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= +github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo= +github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= +github.com/jcmturner/gofork v1.0.0 h1:J7uCkflzTEhUZ64xqKnkDxq3kzc96ajM1Gli5ktUem8= +github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= +github.com/jcmturner/goidentity/v6 v6.0.1 h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJAxwOkZg6o= +github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= +github.com/jcmturner/gokrb5/v8 v8.4.2 h1:6ZIM6b/JJN0X8UM43ZOM6Z4SJzla+a/u7scXFJzodkA= +github.com/jcmturner/gokrb5/v8 v8.4.2/go.mod h1:sb+Xq/fTY5yktf/VxLsE3wlfPqQjp0aWNYyvBVK62bc= +github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY= +github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= github.com/jinzhu/copier v0.3.4 h1:mfU6jI9PtCeUjkjQ322dlff9ELjGDu975C2p/nrubVI= github.com/jinzhu/copier v0.3.4/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o= @@ -199,6 +227,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.14.4 h1:eijASRJcobkVtSt81Olfh7JX43osYLwy5krOJo6YEu4= +github.com/klauspost/compress v1.14.4/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.3.1 h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s= github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4= @@ -206,6 +236,7 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxv github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -289,6 +320,8 @@ github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBO github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= @@ -321,10 +354,13 @@ github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.0.2 h1:akYIkZ28e6A96dkWNJQu3nmCzH3YfwMPQExUYDaRv7w= github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= +github.com/xdg-go/scram v1.1.0 h1:d70R37I0HrDLsafRrMBXyrD4lmQbCHE873t00Vr0gm0= +github.com/xdg-go/scram v1.1.0/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= github.com/xdg-go/stringprep v1.0.2 h1:6iq84/ryjjeRmMJwxutI51F2GIPlP5BfTvXHeYjyhBc= github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA= @@ -357,9 +393,12 @@ golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220214200702-86341886e292 h1:f+lwQ+GtmgoY+A2YaQxlSOnDjXcQ7ZRLWOHbC6HtRqE= +golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb h1:fqpd0EBDzlHRCjiphRR5Zo/RSWWQlWv34418dnEixWk= golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -381,6 +420,7 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= @@ -392,6 +432,7 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -425,6 +466,7 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -437,6 +479,7 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -501,6 +544,8 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= @@ -510,6 +555,7 @@ gopkg.in/ini.v1 v1.66.2 h1:XfR1dOYubytKy4Shzc2LHrrGhU0lDCfDGG1yLPmpgsI= gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 h1:VpOs+IwYnYBaFnrNAeB8UUWtL3vEUnzSCL1nVjPhqrw= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From 98a903e60c685c2dba129aaeeab41d02407fb7b1 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 11 May 2022 10:19:58 +0800 Subject: [PATCH 106/143] update app --- .../api/third/minio_storage_credential.go | 4 +- internal/cms_api/admin/admin.go | 125 ------------------ internal/cms_api/router.go | 2 - pkg/base_info/minio_api_struct.go | 3 + pkg/common/db/model_struct.go | 1 + .../mysql_model/im_mysql_model/file_model.go | 5 +- 6 files changed, 10 insertions(+), 130 deletions(-) diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index c80035c5a..c1f8c1c70 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -199,7 +199,7 @@ func UploadUpdateApp(c *gin.Context) { newYamlName = "" } } - if err := imdb.UpdateAppVersion(req.Type, req.Version, req.ForceUpdate, newFileName, newYamlName); err != nil { + if err := imdb.UpdateAppVersion(req.Type, req.Version, req.ForceUpdate, newFileName, newYamlName, req.UpdateLog); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "UpdateAppVersion error", err.Error()) resp.ErrCode = http.StatusInternalServerError resp.ErrMsg = err.Error() @@ -239,6 +239,8 @@ func GetDownloadURL(c *gin.Context) { resp.Data.YamlURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.YamlName } resp.Data.FileURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.FileName + resp.Data.Version = app.Version + resp.Data.UpdateLog = app.UpdateLog c.JSON(http.StatusOK, resp) return } else { diff --git a/internal/cms_api/admin/admin.go b/internal/cms_api/admin/admin.go index 6390fe166..ff8882369 100644 --- a/internal/cms_api/admin/admin.go +++ b/internal/cms_api/admin/admin.go @@ -4,18 +4,14 @@ import ( apiStruct "Open_IM/pkg/cms_api_struct" "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" - imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model" openIMHttp "Open_IM/pkg/common/http" "Open_IM/pkg/common/log" "Open_IM/pkg/grpc-etcdv3/getcdv3" pbAdmin "Open_IM/pkg/proto/admin_cms" "Open_IM/pkg/utils" "context" - "fmt" "github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7/pkg/credentials" - "net/http" - "path" "strings" "github.com/gin-gonic/gin" @@ -83,124 +79,3 @@ func AdminLogin(c *gin.Context) { resp.Token = respPb.Token openIMHttp.RespHttp200(c, constant.OK, resp) } - -func UploadUpdateApp(c *gin.Context) { - var ( - req apiStruct.UploadUpdateAppReq - resp apiStruct.UploadUpdateAppResp - ) - if err := c.Bind(&req); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - - //fileObj, err := req.File.Open() - //if err != nil { - // log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) - // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open file error" + err.Error()}) - // return - //} - //yamlObj, err := req.Yaml.Open() - //if err != nil { - // log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open Yaml error", err.Error()) - // c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open Yaml error" + err.Error()}) - // return - //} - - // v2.0.9_app_linux v2.0.9_yaml_linux - file, err := c.FormFile("file") - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "FormFile failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file arg: " + err.Error()}) - return - } - fileObj, err := file.Open() - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) - return - } - - yaml, err := c.FormFile("yaml") - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "FormFile failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "missing file arg: " + err.Error()}) - return - } - yamlObj, err := yaml.Open() - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file path" + err.Error()}) - return - } - newFileName, newYamlName, err := utils.GetUploadAppNewName(req.Type, req.Version, file.Filename, yaml.Filename) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUploadAppNewName failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) - return - } - - fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size) - fmt.Println(req.OperationID, utils.GetSelfFuncName(), "name: ", config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size) - - _, err = minioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, file.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject file error") - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) - return - } - _, err = minioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject yaml error") - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject yaml error" + err.Error()}) - return - } - if err := imdb.UpdateAppVersion(req.Type, req.Version, req.ForceUpdate, newFileName, newYamlName); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "UpdateAppVersion error", err.Error()) - resp.ErrCode = http.StatusInternalServerError - resp.ErrMsg = err.Error() - c.JSON(http.StatusInternalServerError, resp) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName()) - c.JSON(http.StatusOK, resp) -} - -func GetDownloadURL(c *gin.Context) { - var ( - req apiStruct.GetDownloadURLReq - resp apiStruct.GetDownloadURLResp - ) - defer func() { - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) - }() - if err := c.Bind(&req); err != nil { - log.NewError("0", utils.GetSelfFuncName(), "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) - return - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req) - app, err := imdb.GetNewestVersion(req.Type) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "getNewestVersion failed", err.Error()) - } - if app != nil { - if app.Version != req.Version && app.Version != "" { - resp.Data.HasNewVersion = true - if app.ForceUpdate == true { - resp.Data.ForceUpdate = true - } - resp.Data.YamlURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.YamlName - resp.Data.FileURL = config.Config.Credential.Minio.Endpoint + "/" + config.Config.Credential.Minio.AppBucket + "/" + app.FileName - c.JSON(http.StatusOK, resp) - return - } else { - resp.Data.HasNewVersion = false - c.JSON(http.StatusOK, resp) - return - } - } - c.JSON(http.StatusBadRequest, gin.H{"errCode": 0, "errMsg": "not found app version"}) -} diff --git a/internal/cms_api/router.go b/internal/cms_api/router.go index fbd3b9fcc..a0221d536 100644 --- a/internal/cms_api/router.go +++ b/internal/cms_api/router.go @@ -20,8 +20,6 @@ func NewGinRouter() *gin.Engine { adminRouterGroup := router.Group("/admin") { adminRouterGroup.POST("/login", admin.AdminLogin) - adminRouterGroup.POST("/upload_update_app", admin.UploadUpdateApp) - adminRouterGroup.POST("/get_download_url", admin.GetDownloadURL) } r2 := router.Group("") r2.Use(middleware.JWTAuth()) diff --git a/pkg/base_info/minio_api_struct.go b/pkg/base_info/minio_api_struct.go index a95b4c427..0b6815df0 100644 --- a/pkg/base_info/minio_api_struct.go +++ b/pkg/base_info/minio_api_struct.go @@ -33,6 +33,7 @@ type UploadUpdateAppReq struct { File *multipart.FileHeader `form:"file" binding:"required"` Yaml *multipart.FileHeader `form:"yaml"` ForceUpdate bool `form:"forceUpdate"` + UpdateLog string `form:"updateLog" binding:"update_log"` } type UploadUpdateAppResp struct { @@ -52,5 +53,7 @@ type GetDownloadURLResp struct { ForceUpdate bool `json:"forceUpdate"` FileURL string `json:"fileURL"` YamlURL string `json:"yamlURL"` + Version string `json:"version"` + UpdateLog string `json:"update_log"` } `json:"data"` } diff --git a/pkg/common/db/model_struct.go b/pkg/common/db/model_struct.go index 03709a67d..e6915bcef 100644 --- a/pkg/common/db/model_struct.go +++ b/pkg/common/db/model_struct.go @@ -280,6 +280,7 @@ type AppVersion struct { ForceUpdate bool `gorm:"column:force_update" json:"force_update"` FileName string `gorm:"column:file_name" json:"file_name"` YamlName string `gorm:"column:yaml_name" json:"yaml_name"` + UpdateLog string `gorm:"column:update_log" json:"update_log"` } func (AppVersion) TableName() string { diff --git a/pkg/common/db/mysql_model/im_mysql_model/file_model.go b/pkg/common/db/mysql_model/im_mysql_model/file_model.go index 983dec328..c8ab188aa 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/file_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/file_model.go @@ -5,7 +5,7 @@ import ( "time" ) -func UpdateAppVersion(appType int, version string, forceUpdate bool, fileName, yamlName string) error { +func UpdateAppVersion(appType int, version string, forceUpdate bool, fileName, yamlName, updateLog string) error { dbConn, err := db.DB.MysqlDB.DefaultGormDB() if err != nil { return err @@ -18,9 +18,10 @@ func UpdateAppVersion(appType int, version string, forceUpdate bool, fileName, y FileName: fileName, YamlName: yamlName, ForceUpdate: forceUpdate, + UpdateLog: updateLog, } result := dbConn.Model(db.AppVersion{}).Where("type = ?", appType).Update(map[string]interface{}{"force_update": forceUpdate, - "version": version, "update_time": int(time.Now().Unix()), "file_name": fileName, "yaml_name": yamlName, "type": appType}) + "version": version, "update_time": int(time.Now().Unix()), "file_name": fileName, "yaml_name": yamlName, "type": appType, "update_log": updateLog}) if result.Error != nil { return result.Error } From b5e01dcb5e0df2ebd3cef2a8e80613c022465ca1 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 11 May 2022 10:24:11 +0800 Subject: [PATCH 107/143] update app --- pkg/base_info/minio_api_struct.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/base_info/minio_api_struct.go b/pkg/base_info/minio_api_struct.go index 0b6815df0..b553e22c7 100644 --- a/pkg/base_info/minio_api_struct.go +++ b/pkg/base_info/minio_api_struct.go @@ -33,7 +33,7 @@ type UploadUpdateAppReq struct { File *multipart.FileHeader `form:"file" binding:"required"` Yaml *multipart.FileHeader `form:"yaml"` ForceUpdate bool `form:"forceUpdate"` - UpdateLog string `form:"updateLog" binding:"update_log"` + UpdateLog string `form:"updateLog" binding:"required"` } type UploadUpdateAppResp struct { From 3fca78013281e0d537ab3636e5eb302fe0a4076d Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 11 May 2022 10:27:00 +0800 Subject: [PATCH 108/143] update app --- pkg/common/db/mysql.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/db/mysql.go b/pkg/common/db/mysql.go index bde529293..aea907fc1 100644 --- a/pkg/common/db/mysql.go +++ b/pkg/common/db/mysql.go @@ -59,7 +59,7 @@ func initMysqlDB() { &GroupMember{}, &GroupRequest{}, &User{}, - &Black{}, &ChatLog{}, &Register{}, &Conversation{}) + &Black{}, &ChatLog{}, &Register{}, &Conversation{}, &AppVersion{}) db.Set("gorm:table_options", "CHARSET=utf8") db.Set("gorm:table_options", "collation=utf8_unicode_ci") From 73665f62b3f24e447b616fa94f1e03a43550beab Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 11 May 2022 10:46:54 +0800 Subject: [PATCH 109/143] update app --- internal/api/third/minio_storage_credential.go | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index c1f8c1c70..6f48dc3c3 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -167,28 +167,22 @@ func UploadUpdateApp(c *gin.Context) { } else { yamlName = req.Yaml.Filename } - newFileName, newYamlName, err := utils.GetUploadAppNewName(req.Type, req.Version, req.File.Filename, yamlName) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUploadAppNewName failed", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "invalid file type" + err.Error()}) - return - } fileObj, err := req.File.Open() if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "Open file error", err.Error()) c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open file error" + err.Error()}) return } - _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newFileName, fileObj, req.File.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) + _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, req.File.Filename, fileObj, req.File.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject file error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) return } - if newYamlName != "" { + if yamlName != "" { yamlObj, err := req.Yaml.Open() if err == nil { - _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, newYamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) + _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, yamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject yaml error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject yaml error" + err.Error()}) @@ -196,10 +190,9 @@ func UploadUpdateApp(c *gin.Context) { } } else { log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error()) - newYamlName = "" } } - if err := imdb.UpdateAppVersion(req.Type, req.Version, req.ForceUpdate, newFileName, newYamlName, req.UpdateLog); err != nil { + if err := imdb.UpdateAppVersion(req.Type, req.Version, req.ForceUpdate, req.File.Filename, yamlName, req.UpdateLog); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "UpdateAppVersion error", err.Error()) resp.ErrCode = http.StatusInternalServerError resp.ErrMsg = err.Error() From b964e424b2fd68d011e3f68176d0e7a423a53d81 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 11 May 2022 10:47:32 +0800 Subject: [PATCH 110/143] update app --- internal/api/third/minio_storage_credential.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index 6f48dc3c3..06b01464f 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -173,7 +173,7 @@ func UploadUpdateApp(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open file error" + err.Error()}) return } - _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, req.File.Filename, fileObj, req.File.Size, minio.PutObjectOptions{ContentType: path.Ext(newFileName)}) + _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, req.File.Filename, fileObj, req.File.Size, minio.PutObjectOptions{ContentType: path.Ext(req.File.Filename)}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject file error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) @@ -182,7 +182,7 @@ func UploadUpdateApp(c *gin.Context) { if yamlName != "" { yamlObj, err := req.Yaml.Open() if err == nil { - _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, yamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(newYamlName)}) + _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, yamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(yamlName)}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject yaml error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject yaml error" + err.Error()}) From 626990214099f9976fb9fceeccda4766ff8345b9 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 11 May 2022 11:07:04 +0800 Subject: [PATCH 111/143] update app --- internal/api/third/minio_storage_credential.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/internal/api/third/minio_storage_credential.go b/internal/api/third/minio_storage_credential.go index 06b01464f..f294d6ba3 100644 --- a/internal/api/third/minio_storage_credential.go +++ b/internal/api/third/minio_storage_credential.go @@ -15,7 +15,6 @@ import ( _ "github.com/minio/minio-go/v7" cr "github.com/minio/minio-go/v7/pkg/credentials" "net/http" - "path" ) func MinioUploadFile(c *gin.Context) { @@ -173,7 +172,7 @@ func UploadUpdateApp(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "Open file error" + err.Error()}) return } - _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, req.File.Filename, fileObj, req.File.Size, minio.PutObjectOptions{ContentType: path.Ext(req.File.Filename)}) + _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, req.File.Filename, fileObj, req.File.Size, minio.PutObjectOptions{}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject file error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject file error" + err.Error()}) @@ -182,7 +181,7 @@ func UploadUpdateApp(c *gin.Context) { if yamlName != "" { yamlObj, err := req.Yaml.Open() if err == nil { - _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, yamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{ContentType: path.Ext(yamlName)}) + _, err = MinioClient.PutObject(context.Background(), config.Config.Credential.Minio.AppBucket, yamlName, yamlObj, req.Yaml.Size, minio.PutObjectOptions{}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "PutObject yaml error") c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "PutObject yaml error" + err.Error()}) From a4f5dd9d89d7e66256f93416ab8fa53853e0ccb3 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Wed, 11 May 2022 12:13:17 +0800 Subject: [PATCH 112/143] add log --- go.sum | 2 -- internal/msg_gateway/gate/logic.go | 2 +- internal/msg_transfer/logic/history_msg_handler.go | 4 ++-- internal/rpc/group/group.go | 1 + pkg/common/config/config.go | 2 +- 5 files changed, 5 insertions(+), 6 deletions(-) diff --git a/go.sum b/go.sum index f08695e8f..8777de457 100644 --- a/go.sum +++ b/go.sum @@ -476,8 +476,6 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0 h1:XT2/MFpuPFsEX2fWh3YQtHkZ+WYZFQRfaUgLZYj/p6A= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= diff --git a/internal/msg_gateway/gate/logic.go b/internal/msg_gateway/gate/logic.go index 3d65af106..51955f0fe 100644 --- a/internal/msg_gateway/gate/logic.go +++ b/internal/msg_gateway/gate/logic.go @@ -60,7 +60,7 @@ func (ws *WServer) msgParse(conn *UserConn, binaryMsg []byte) { ws.pullMsgBySeqListReq(conn, &m) default: } - log.NewInfo("", "goroutine num is ", runtime.NumGoroutine()) + log.NewInfo(m.OperationID, "goroutine num is ", runtime.NumGoroutine()) } func (ws *WServer) getSeqReq(conn *UserConn, m *Req) { log.NewInfo(m.OperationID, "Ws call success to getNewSeq", m.MsgIncr, m.SendID, m.ReqIdentifier, m.Data) diff --git a/internal/msg_transfer/logic/history_msg_handler.go b/internal/msg_transfer/logic/history_msg_handler.go index 424edd4e2..27d84d673 100644 --- a/internal/msg_transfer/logic/history_msg_handler.go +++ b/internal/msg_transfer/logic/history_msg_handler.go @@ -136,10 +136,10 @@ func sendMessageToPush(message *pbMsg.MsgDataToMQ, pushToUserID string) { log.Error(rpcPushMsg.OperationID, "rpc send failed", rpcPushMsg.OperationID, "push data", rpcPushMsg.String(), "err", err.Error()) pid, offset, err := producer.SendMessage(&mqPushMsg) if err != nil { - log.Error("kafka send failed", mqPushMsg.OperationID, "send data", mqPushMsg.String(), "pid", pid, "offset", offset, "err", err.Error()) + log.Error(message.OperationID, "kafka send failed", mqPushMsg.OperationID, "send data", mqPushMsg.String(), "pid", pid, "offset", offset, "err", err.Error()) } } else { - log.Info("rpc send success", rpcPushMsg.OperationID, "push data", rpcPushMsg.String()) + log.Info(message.OperationID, "rpc send success", rpcPushMsg.OperationID, "push data", rpcPushMsg.String()) } } diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 2b461896a..df60e7f2a 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -76,6 +76,7 @@ func (s *groupServer) Run() { log.NewError("", "RegisterEtcd failed ", err.Error()) return } + log.Info("", "RegisterEtcd ", s.etcdSchema, strings.Join(s.etcdAddr, ","), rpcRegisterIP, s.rpcPort, s.rpcRegisterName) err = srv.Serve(listener) if err != nil { log.NewError("", "Serve failed ", err.Error()) diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 478d1ba6d..9d2ca8e55 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -85,7 +85,7 @@ type config struct { DBMaxLifeTime int `yaml:"dbMaxLifeTime"` } Mongo struct { - DBUri string `yaml:"dbUri"` // 当dbUri值不为空则直接使用该值 + DBUri string `yaml:"dbUri"` DBAddress []string `yaml:"dbAddress"` DBDirect bool `yaml:"dbDirect"` DBTimeout int `yaml:"dbTimeout"` From 38535bde84eaa22ce2976b3bd8813cc7d9592eae Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Wed, 11 May 2022 12:20:28 +0800 Subject: [PATCH 113/143] add RpcRegisterIP --- internal/rpc/group/group.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index df60e7f2a..ccc8acf96 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -64,8 +64,8 @@ func (s *groupServer) Run() { //Service registers with etcd pbGroup.RegisterGroupServer(srv, s) - rpcRegisterIP := "" - if config.Config.RpcRegisterIP == "" { + rpcRegisterIP := config.Config.RpcRegisterIP + if rpcRegisterIP == "" { rpcRegisterIP, err = utils.GetLocalIP() if err != nil { log.Error("", "GetLocalIP failed ", err.Error()) From 03c0b1ea91b75929405988afcb76714f42d61e69 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 13:26:39 +0800 Subject: [PATCH 114/143] add kafka manager --- docker-compose.yaml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index a863b07eb..2b6eb1935 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -63,7 +63,16 @@ services: environment: TZ: Asia/Shanghai restart: always - + kafka-manager: + image: index.docker.io/sheepkiller/kafka-manager:latest + depends_on: + - zookeeper + ports: + - 9000:9000 + environment: + TZ: Asia/Shanghai + ZK_HOSTS: 127.0.0.1:2181 + restart: always kafka: image: wurstmeister/kafka From 804eb6c0763b9751f73f7b48fd6b016781ef1bd6 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 14:34:21 +0800 Subject: [PATCH 115/143] video message send --- internal/api/manage/management_chat.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/api/manage/management_chat.go b/internal/api/manage/management_chat.go index 2178fc840..962283eb9 100644 --- a/internal/api/manage/management_chat.go +++ b/internal/api/manage/management_chat.go @@ -40,11 +40,12 @@ func newUserSendMsgReq(params *ManagementSendMsgReq) *pbChat.SendMsgReq { fallthrough case constant.Voice: fallthrough + case constant.Video: + fallthrough case constant.File: newContent = utils.StructToJsonString(params.Content) case constant.Revoke: newContent = params.Content["revokeMsgClientID"].(string) - default: } var options map[string]bool From f8af109821d3fa3d56bf087ed8a2465de31ebbab Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 18:33:48 +0800 Subject: [PATCH 116/143] send group message split topic --- config/config.yaml | 4 + internal/msg_transfer/logic/init.go | 37 +++- .../logic/offline_history_msg_handler.go | 116 ++++++++++++ ...ndler.go => online_history_msg_handler.go} | 81 ++++++--- internal/rpc/msg/rpcChat.go | 6 +- internal/rpc/msg/send_msg.go | 168 +++++++++++------- pkg/common/config/config.go | 11 +- 7 files changed, 322 insertions(+), 101 deletions(-) create mode 100644 internal/msg_transfer/logic/offline_history_msg_handler.go rename internal/msg_transfer/logic/{history_msg_handler.go => online_history_msg_handler.go} (71%) diff --git a/config/config.yaml b/config/config.yaml index 8c1ffcc1a..c1134b9cf 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -41,11 +41,15 @@ kafka: ws2mschat: addr: [ 127.0.0.1:9092 ] #kafka配置,默认即可 topic: "ws2ms_chat" + ws2mschatoffline: + addr: [ 127.0.0.1:9092 ] #kafka配置,默认即可 + topic: "ws2ms_chat_offline" ms2pschat: addr: [ 127.0.0.1:9092 ] #kafka配置,默认即可 topic: "ms2ps_chat" consumergroupid: msgToMongo: mongo + MsgToMongoOffline: mongo_offline msgToMySql: mysql msgToPush: push diff --git a/internal/msg_transfer/logic/init.go b/internal/msg_transfer/logic/init.go index a67b9cff4..dff95334c 100644 --- a/internal/msg_transfer/logic/init.go +++ b/internal/msg_transfer/logic/init.go @@ -2,20 +2,36 @@ package logic import ( "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" "Open_IM/pkg/common/kafka" + "Open_IM/pkg/statistics" "fmt" + "sync" ) +const OnlineTopicBusy = "Busy" +const OnlineTopicVacancy = "Vacancy" + var ( - persistentCH PersistentConsumerHandler - historyCH HistoryConsumerHandler - producer *kafka.Producer + persistentCH PersistentConsumerHandler + historyCH OnlineHistoryConsumerHandler + offlineHistoryCH OfflineHistoryConsumerHandler + producer *kafka.Producer + cmdCh chan Cmd2Value + onlineTopicStatus string + w *sync.Mutex + singleMsgSuccessCount uint64 + groupMsgCount uint64 + singleMsgFailedCount uint64 ) func Init() { - + cmdCh = make(chan Cmd2Value, 10000) persistentCH.Init() - historyCH.Init() + historyCH.Init(cmdCh) + offlineHistoryCH.Init(cmdCh) + statistics.NewStatistics(&singleMsgSuccessCount, config.Config.ModuleName.MsgTransferName, fmt.Sprintf("%d second singleMsgCount insert to mongo", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval) + statistics.NewStatistics(&groupMsgCount, config.Config.ModuleName.MsgTransferName, fmt.Sprintf("%d second groupMsgCount insert to mongo", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval) producer = kafka.NewKafkaProducer(config.Config.Kafka.Ms2pschat.Addr, config.Config.Kafka.Ms2pschat.Topic) } func Run() { @@ -26,4 +42,15 @@ func Run() { fmt.Println("not start mysql consumer") } go historyCH.historyConsumerGroup.RegisterHandleAndConsumer(&historyCH) + go offlineHistoryCH.historyConsumerGroup.RegisterHandleAndConsumer(&offlineHistoryCH) +} +func SetOnlineTopicStatus(status string) { + w.Lock() + defer w.Unlock() + onlineTopicStatus = status +} +func GetOnlineTopicStatus() string { + w.Lock() + defer w.Unlock() + return onlineTopicStatus } diff --git a/internal/msg_transfer/logic/offline_history_msg_handler.go b/internal/msg_transfer/logic/offline_history_msg_handler.go new file mode 100644 index 000000000..c4e78f96d --- /dev/null +++ b/internal/msg_transfer/logic/offline_history_msg_handler.go @@ -0,0 +1,116 @@ +package logic + +import ( + "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" + kfk "Open_IM/pkg/common/kafka" + "Open_IM/pkg/common/log" + pbMsg "Open_IM/pkg/proto/chat" + "Open_IM/pkg/utils" + "github.com/Shopify/sarama" + "github.com/golang/protobuf/proto" + "time" +) + +type OfflineHistoryConsumerHandler struct { + msgHandle map[string]fcb + cmdCh chan Cmd2Value + historyConsumerGroup *kfk.MConsumerGroup +} + +func (mc *OfflineHistoryConsumerHandler) Init(cmdCh chan Cmd2Value) { + mc.msgHandle = make(map[string]fcb) + mc.cmdCh = cmdCh + mc.msgHandle[config.Config.Kafka.Ws2mschatOffline.Topic] = mc.handleChatWs2Mongo + mc.historyConsumerGroup = kfk.NewMConsumerGroup(&kfk.MConsumerGroupConfig{KafkaVersion: sarama.V0_10_2_0, + OffsetsInitial: sarama.OffsetNewest, IsReturnErr: false}, []string{config.Config.Kafka.Ws2mschatOffline.Topic}, + config.Config.Kafka.Ws2mschatOffline.Addr, config.Config.Kafka.ConsumerGroupID.MsgToMongoOffline) + +} + +func (mc *OfflineHistoryConsumerHandler) handleChatWs2Mongo(msg []byte, msgKey string) { + now := time.Now() + msgFromMQ := pbMsg.MsgDataToMQ{} + err := proto.Unmarshal(msg, &msgFromMQ) + if err != nil { + log.Error("msg_transfer Unmarshal msg err", "", "msg", string(msg), "err", err.Error()) + return + } + operationID := msgFromMQ.OperationID + log.NewInfo(operationID, "msg come mongo!!!", "", "msg", string(msg)) + //Control whether to store offline messages (mongo) + isHistory := utils.GetSwitchFromOptions(msgFromMQ.MsgData.Options, constant.IsHistory) + //Control whether to store history messages (mysql) + isPersist := utils.GetSwitchFromOptions(msgFromMQ.MsgData.Options, constant.IsPersistent) + isSenderSync := utils.GetSwitchFromOptions(msgFromMQ.MsgData.Options, constant.IsSenderSync) + switch msgFromMQ.MsgData.SessionType { + case constant.SingleChatType: + log.NewDebug(msgFromMQ.OperationID, "msg_transfer msg type = SingleChatType", isHistory, isPersist) + if isHistory { + err := saveUserChat(msgKey, &msgFromMQ) + if err != nil { + singleMsgFailedCount++ + log.NewError(operationID, "single data insert to mongo err", err.Error(), msgFromMQ.String()) + return + } + singleMsgSuccessCount++ + log.NewDebug(msgFromMQ.OperationID, "sendMessageToPush cost time ", time.Since(now)) + } + if !isSenderSync && msgKey == msgFromMQ.MsgData.SendID { + } else { + go sendMessageToPush(&msgFromMQ, msgKey) + } + log.NewDebug(operationID, "saveUserChat cost time ", time.Since(now)) + case constant.GroupChatType: + log.NewDebug(msgFromMQ.OperationID, "msg_transfer msg type = GroupChatType", isHistory, isPersist) + if isHistory { + err := saveUserChat(msgFromMQ.MsgData.RecvID, &msgFromMQ) + if err != nil { + log.NewError(operationID, "group data insert to mongo err", msgFromMQ.String(), msgFromMQ.MsgData.RecvID, err.Error()) + return + } + groupMsgCount++ + } + go sendMessageToPush(&msgFromMQ, msgFromMQ.MsgData.RecvID) + case constant.NotificationChatType: + log.NewDebug(msgFromMQ.OperationID, "msg_transfer msg type = NotificationChatType", isHistory, isPersist) + if isHistory { + err := saveUserChat(msgKey, &msgFromMQ) + if err != nil { + log.NewError(operationID, "single data insert to mongo err", err.Error(), msgFromMQ.String()) + return + } + log.NewDebug(msgFromMQ.OperationID, "sendMessageToPush cost time ", time.Since(now)) + } + if !isSenderSync && msgKey == msgFromMQ.MsgData.SendID { + } else { + go sendMessageToPush(&msgFromMQ, msgKey) + } + log.NewDebug(operationID, "saveUserChat cost time ", time.Since(now)) + default: + log.NewError(msgFromMQ.OperationID, "SessionType error", msgFromMQ.String()) + return + } + log.NewDebug(msgFromMQ.OperationID, "msg_transfer handle topic data to database success...", msgFromMQ.String()) +} + +func (OfflineHistoryConsumerHandler) Setup(_ sarama.ConsumerGroupSession) error { return nil } +func (OfflineHistoryConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error { return nil } +func (mc *OfflineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession, + claim sarama.ConsumerGroupClaim) error { // a instance in the consumer group + log.NewDebug("", "new session msg come", claim.HighWaterMarkOffset(), claim.Topic(), claim.Partition()) + select { + case cmd := <-mc.cmdCh: + if cmd.Cmd == OnlineTopicVacancy { + for msg := range claim.Messages() { + if GetOnlineTopicStatus() == OnlineTopicVacancy { + log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) + mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) + sess.MarkMessage(msg, "") + } + } + } + + } + return nil +} diff --git a/internal/msg_transfer/logic/history_msg_handler.go b/internal/msg_transfer/logic/online_history_msg_handler.go similarity index 71% rename from internal/msg_transfer/logic/history_msg_handler.go rename to internal/msg_transfer/logic/online_history_msg_handler.go index 27d84d673..597d39d05 100644 --- a/internal/msg_transfer/logic/history_msg_handler.go +++ b/internal/msg_transfer/logic/online_history_msg_handler.go @@ -8,10 +8,9 @@ import ( "Open_IM/pkg/grpc-etcdv3/getcdv3" pbMsg "Open_IM/pkg/proto/chat" pbPush "Open_IM/pkg/proto/push" - "Open_IM/pkg/statistics" "Open_IM/pkg/utils" "context" - "fmt" + "errors" "github.com/Shopify/sarama" "github.com/golang/protobuf/proto" "strings" @@ -19,28 +18,52 @@ import ( ) type fcb func(msg []byte, msgKey string) - -type HistoryConsumerHandler struct { - msgHandle map[string]fcb - historyConsumerGroup *kfk.MConsumerGroup - singleMsgFailedCount uint64 - singleMsgSuccessCount uint64 - groupMsgCount uint64 +type Cmd2Value struct { + Cmd string + Value interface{} +} +type OnlineHistoryConsumerHandler struct { + msgHandle map[string]fcb + historyConsumerGroup *kfk.MConsumerGroup + cmdCh chan Cmd2Value } -func (mc *HistoryConsumerHandler) Init() { - statistics.NewStatistics(&mc.singleMsgSuccessCount, config.Config.ModuleName.MsgTransferName, fmt.Sprintf("%d second singleMsgCount insert to mongo", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval) - statistics.NewStatistics(&mc.groupMsgCount, config.Config.ModuleName.MsgTransferName, fmt.Sprintf("%d second groupMsgCount insert to mongo", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval) - - mc.msgHandle = make(map[string]fcb) - mc.msgHandle[config.Config.Kafka.Ws2mschat.Topic] = mc.handleChatWs2Mongo - mc.historyConsumerGroup = kfk.NewMConsumerGroup(&kfk.MConsumerGroupConfig{KafkaVersion: sarama.V0_10_2_0, +func (och *OnlineHistoryConsumerHandler) Init(cmdCh chan Cmd2Value) { + och.msgHandle = make(map[string]fcb) + och.cmdCh = cmdCh + och.msgHandle[config.Config.Kafka.Ws2mschat.Topic] = och.handleChatWs2Mongo + och.historyConsumerGroup = kfk.NewMConsumerGroup(&kfk.MConsumerGroupConfig{KafkaVersion: sarama.V0_10_2_0, OffsetsInitial: sarama.OffsetNewest, IsReturnErr: false}, []string{config.Config.Kafka.Ws2mschat.Topic}, config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.ConsumerGroupID.MsgToMongo) } - -func (mc *HistoryConsumerHandler) handleChatWs2Mongo(msg []byte, msgKey string) { +func (och *OnlineHistoryConsumerHandler) TriggerCmd(status string) { + operationID := utils.OperationIDGenerator() + for { + err := sendCmd(och.cmdCh, Cmd2Value{Cmd: status, Value: ""}, 1) + if err != nil { + log.Error(operationID, "TriggerCmd failed ", err.Error(), status) + continue + } + log.Debug(operationID, "TriggerCmd success", status) + return + } +} +func sendCmd(ch chan Cmd2Value, value Cmd2Value, timeout int64) error { + var flag = 0 + select { + case ch <- value: + flag = 1 + case <-time.After(time.Second * time.Duration(timeout)): + flag = 2 + } + if flag == 1 { + return nil + } else { + return errors.New("send cmd timeout") + } +} +func (och *OnlineHistoryConsumerHandler) handleChatWs2Mongo(msg []byte, msgKey string) { now := time.Now() msgFromMQ := pbMsg.MsgDataToMQ{} err := proto.Unmarshal(msg, &msgFromMQ) @@ -61,11 +84,11 @@ func (mc *HistoryConsumerHandler) handleChatWs2Mongo(msg []byte, msgKey string) if isHistory { err := saveUserChat(msgKey, &msgFromMQ) if err != nil { - mc.singleMsgFailedCount++ + singleMsgFailedCount++ log.NewError(operationID, "single data insert to mongo err", err.Error(), msgFromMQ.String()) return } - mc.singleMsgSuccessCount++ + singleMsgSuccessCount++ log.NewDebug(msgFromMQ.OperationID, "sendMessageToPush cost time ", time.Since(now)) } if !isSenderSync && msgKey == msgFromMQ.MsgData.SendID { @@ -81,7 +104,7 @@ func (mc *HistoryConsumerHandler) handleChatWs2Mongo(msg []byte, msgKey string) log.NewError(operationID, "group data insert to mongo err", msgFromMQ.String(), msgFromMQ.MsgData.RecvID, err.Error()) return } - mc.groupMsgCount++ + groupMsgCount++ } go sendMessageToPush(&msgFromMQ, msgFromMQ.MsgData.RecvID) case constant.NotificationChatType: @@ -106,14 +129,20 @@ func (mc *HistoryConsumerHandler) handleChatWs2Mongo(msg []byte, msgKey string) log.NewDebug(msgFromMQ.OperationID, "msg_transfer handle topic data to database success...", msgFromMQ.String()) } -func (HistoryConsumerHandler) Setup(_ sarama.ConsumerGroupSession) error { return nil } -func (HistoryConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error { return nil } -func (mc *HistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession, - claim sarama.ConsumerGroupClaim) error { +func (OnlineHistoryConsumerHandler) Setup(_ sarama.ConsumerGroupSession) error { return nil } +func (OnlineHistoryConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error { return nil } +func (och *OnlineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession, + claim sarama.ConsumerGroupClaim) error { // a instance in the consumer group + och.TriggerCmd(OnlineTopicBusy) + SetOnlineTopicStatus(OnlineTopicBusy) for msg := range claim.Messages() { log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) - mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) + och.msgHandle[msg.Topic](msg.Value, string(msg.Key)) sess.MarkMessage(msg, "") + if claim.HighWaterMarkOffset()-msg.Offset <= 1 { + och.TriggerCmd(OnlineTopicVacancy) + SetOnlineTopicStatus(OnlineTopicVacancy) + } } return nil } diff --git a/internal/rpc/msg/rpcChat.go b/internal/rpc/msg/rpcChat.go index 8bed05810..002918bae 100644 --- a/internal/rpc/msg/rpcChat.go +++ b/internal/rpc/msg/rpcChat.go @@ -19,7 +19,8 @@ type rpcChat struct { rpcRegisterName string etcdSchema string etcdAddr []string - producer *kafka.Producer + onlineProducer *kafka.Producer + offlineProducer *kafka.Producer } func NewRpcChatServer(port int) *rpcChat { @@ -30,7 +31,8 @@ func NewRpcChatServer(port int) *rpcChat { etcdSchema: config.Config.Etcd.EtcdSchema, etcdAddr: config.Config.Etcd.EtcdAddr, } - rc.producer = kafka.NewKafkaProducer(config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.Ws2mschat.Topic) + rc.onlineProducer = kafka.NewKafkaProducer(config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.Ws2mschat.Topic) + rc.offlineProducer = kafka.NewKafkaProducer(config.Config.Kafka.Ws2mschatOffline.Addr, config.Config.Kafka.Ws2mschatOffline.Topic) return &rc } diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 78588cdf1..0cb78ca0a 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -10,9 +10,11 @@ import ( pbCache "Open_IM/pkg/proto/cache" pbChat "Open_IM/pkg/proto/chat" pbConversation "Open_IM/pkg/proto/conversation" + pbRelay "Open_IM/pkg/proto/relay" sdk_ws "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" "context" + "errors" "github.com/garyburd/redigo/redis" "github.com/golang/protobuf/proto" "math/rand" @@ -188,14 +190,14 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S if isSend { msgToMQSingle.MsgData = pb.MsgData log.NewInfo(msgToMQSingle.OperationID, msgToMQSingle) - err1 := rpc.sendMsgToKafka(&msgToMQSingle, msgToMQSingle.MsgData.RecvID) + err1 := rpc.sendMsgToKafka(&msgToMQSingle, msgToMQSingle.MsgData.RecvID, constant.OnlineStatus) if err1 != nil { log.NewError(msgToMQSingle.OperationID, "kafka send msg err:RecvID", msgToMQSingle.MsgData.RecvID, msgToMQSingle.String()) return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) } } if msgToMQSingle.MsgData.SendID != msgToMQSingle.MsgData.RecvID { //Filter messages sent to yourself - err2 := rpc.sendMsgToKafka(&msgToMQSingle, msgToMQSingle.MsgData.SendID) + err2 := rpc.sendMsgToKafka(&msgToMQSingle, msgToMQSingle.MsgData.SendID, constant.OnlineStatus) if err2 != nil { log.NewError(msgToMQSingle.OperationID, "kafka send msg err:SendID", msgToMQSingle.MsgData.SendID, msgToMQSingle.String()) return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) @@ -252,72 +254,33 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S default: } + onUserIDList, offUserIDList := getOnlineAndOfflineUserIDList(memberUserIDList, pb.OperationID) + log.Debug(pb.OperationID, onUserIDList, offUserIDList) groupID := pb.MsgData.GroupID //split parallel send var wg sync.WaitGroup var sendTag bool var split = 50 - remain := len(memberUserIDList) % split - for i := 0; i < len(memberUserIDList)/split; i++ { + remain := len(onUserIDList) % split + for i := 0; i < len(onUserIDList)/split; i++ { wg.Add(1) - go func(list []string) { - // log.Debug(pb.OperationID, "split userID ", list) - groupPB := pbChat.SendMsgReq{Token: pb.Token, OperationID: pb.OperationID, MsgData: &sdk_ws.MsgData{OfflinePushInfo: &sdk_ws.OfflinePushInfo{}}} - *groupPB.MsgData = *pb.MsgData - if pb.MsgData.OfflinePushInfo != nil { - *groupPB.MsgData.OfflinePushInfo = *pb.MsgData.OfflinePushInfo - } - msgToMQGroup := pbChat.MsgDataToMQ{Token: groupPB.Token, OperationID: groupPB.OperationID, MsgData: groupPB.MsgData} - for _, v := range list { - groupPB.MsgData.RecvID = v - isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, &groupPB) - if isSend { - msgToMQGroup.MsgData = groupPB.MsgData - // log.Debug(groupPB.OperationID, "sendMsgToKafka, ", v, groupID, msgToMQGroup.String()) - err := rpc.sendMsgToKafka(&msgToMQGroup, v) - if err != nil { - log.NewError(msgToMQGroup.OperationID, "kafka send msg err:UserId", v, msgToMQGroup.String()) - } else { - sendTag = true - } - } else { - log.Debug(groupPB.OperationID, "not sendMsgToKafka, ", v) - } - } - wg.Done() - }(memberUserIDList[i*split : (i+1)*split]) + go rpc.sendMsgToGroup(onUserIDList[i*split:(i+1)*split], pb, constant.OnlineStatus, &sendTag, &wg) } if remain > 0 { wg.Add(1) - go func(list []string) { - // log.Debug(pb.OperationID, "split userID ", list) - groupPB := pbChat.SendMsgReq{Token: pb.Token, OperationID: pb.OperationID, MsgData: &sdk_ws.MsgData{OfflinePushInfo: &sdk_ws.OfflinePushInfo{}}} - *groupPB.MsgData = *pb.MsgData - if pb.MsgData.OfflinePushInfo != nil { - *groupPB.MsgData.OfflinePushInfo = *pb.MsgData.OfflinePushInfo - } - msgToMQGroup := pbChat.MsgDataToMQ{Token: groupPB.Token, OperationID: groupPB.OperationID, MsgData: groupPB.MsgData} - for _, v := range list { - groupPB.MsgData.RecvID = v - isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, &groupPB) - if isSend { - msgToMQGroup.MsgData = groupPB.MsgData - // log.Debug(groupPB.OperationID, "sendMsgToKafka, ", v, groupID, msgToMQGroup.String()) - err := rpc.sendMsgToKafka(&msgToMQGroup, v) - if err != nil { - log.NewError(msgToMQGroup.OperationID, "kafka send msg err:UserId", v, msgToMQGroup.String()) - } else { - sendTag = true - } - } else { - log.Debug(groupPB.OperationID, "not sendMsgToKafka, ", v) - } - } - wg.Done() - }(memberUserIDList[split*(len(memberUserIDList)/split):]) + go rpc.sendMsgToGroup(onUserIDList[split*(len(onUserIDList)/split):], pb, constant.OnlineStatus, &sendTag, &wg) + } + wg.Wait() + remain = len(offUserIDList) % split + for i := 0; i < len(offUserIDList)/split; i++ { + wg.Add(1) + go rpc.sendMsgToGroup(offUserIDList[i*split:(i+1)*split], pb, constant.OfflineStatus, &sendTag, &wg) + } + if remain > 0 { + wg.Add(1) + go rpc.sendMsgToGroup(offUserIDList[split*(len(offUserIDList)/split):], pb, constant.OfflineStatus, &sendTag, &wg) } wg.Wait() - log.Info(msgToMQSingle.OperationID, "addUidList", addUidList) for _, v := range addUidList { pb.MsgData.RecvID = v @@ -325,7 +288,7 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S log.Info(msgToMQSingle.OperationID, "isSend", isSend) if isSend { msgToMQSingle.MsgData = pb.MsgData - err := rpc.sendMsgToKafka(&msgToMQSingle, v) + err := rpc.sendMsgToKafka(&msgToMQSingle, v, constant.OnlineStatus) if err != nil { log.NewError(msgToMQSingle.OperationID, "kafka send msg err:UserId", v, msgToMQSingle.String()) } else { @@ -397,14 +360,14 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S case constant.NotificationChatType: msgToMQSingle.MsgData = pb.MsgData log.NewInfo(msgToMQSingle.OperationID, msgToMQSingle) - err1 := rpc.sendMsgToKafka(&msgToMQSingle, msgToMQSingle.MsgData.RecvID) + err1 := rpc.sendMsgToKafka(&msgToMQSingle, msgToMQSingle.MsgData.RecvID, constant.OnlineStatus) if err1 != nil { log.NewError(msgToMQSingle.OperationID, "kafka send msg err:RecvID", msgToMQSingle.MsgData.RecvID, msgToMQSingle.String()) return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) } if msgToMQSingle.MsgData.SendID != msgToMQSingle.MsgData.RecvID { //Filter messages sent to yourself - err2 := rpc.sendMsgToKafka(&msgToMQSingle, msgToMQSingle.MsgData.SendID) + err2 := rpc.sendMsgToKafka(&msgToMQSingle, msgToMQSingle.MsgData.SendID, constant.OnlineStatus) if err2 != nil { log.NewError(msgToMQSingle.OperationID, "kafka send msg err:SendID", msgToMQSingle.MsgData.SendID, msgToMQSingle.String()) return returnMsg(&replay, pb, 201, "kafka send msg err", "", 0) @@ -416,12 +379,22 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S } } -func (rpc *rpcChat) sendMsgToKafka(m *pbChat.MsgDataToMQ, key string) error { - pid, offset, err := rpc.producer.SendMessage(m, key) - if err != nil { - log.Error(m.OperationID, "kafka send failed", "send data", m.String(), "pid", pid, "offset", offset, "err", err.Error(), "key", key) +func (rpc *rpcChat) sendMsgToKafka(m *pbChat.MsgDataToMQ, key string, status string) error { + switch status { + case constant.OnlineStatus: + pid, offset, err := rpc.onlineProducer.SendMessage(m, key) + if err != nil { + log.Error(m.OperationID, "kafka send failed", "send data", m.String(), "pid", pid, "offset", offset, "err", err.Error(), "key", key, status) + } + return err + case constant.OfflineStatus: + pid, offset, err := rpc.offlineProducer.SendMessage(m, key) + if err != nil { + log.Error(m.OperationID, "kafka send failed", "send data", m.String(), "pid", pid, "offset", offset, "err", err.Error(), "key", key, status) + } + return err } - return err + return errors.New("status error") } func GetMsgID(sendID string) string { t := time.Now().Format("2006-01-02 15:04:05") @@ -736,3 +709,68 @@ func Notification(n *NotificationMsg) { log.NewError(req.OperationID, "SendMsg rpc failed, ", req.String(), reply.ErrCode, reply.ErrMsg) } } +func getOnlineAndOfflineUserIDList(memberList []string, operationID string) (onllUserIDList []string, offlUserIDList []string) { + var wsResult []*pbRelay.GetUsersOnlineStatusResp_SuccessResult + req := &pbRelay.GetUsersOnlineStatusReq{} + req.UserIDList = memberList + req.OperationID = operationID + req.OpUserID = config.Config.Manager.AppManagerUid[0] + flag := false + grpcCons := getcdv3.GetConn4Unique(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOnlineMessageRelayName) + for _, v := range grpcCons { + client := pbRelay.NewOnlineMessageRelayServiceClient(v) + reply, err := client.GetUsersOnlineStatus(context.Background(), req) + if err != nil { + log.NewError(operationID, "GetUsersOnlineStatus rpc err", req.String(), err.Error()) + continue + } else { + if reply.ErrCode == 0 { + wsResult = append(wsResult, reply.SuccessResult...) + } + } + } + log.NewInfo(operationID, "call GetUsersOnlineStatus rpc server is success", wsResult) + //Online data merge of each node + for _, v1 := range memberList { + flag = false + + for _, v2 := range wsResult { + if v2.UserID == v1 { + flag = true + onllUserIDList = append(onllUserIDList, v1) + } + + } + if !flag { + offlUserIDList = append(offlUserIDList, v1) + } + } + return onllUserIDList, offlUserIDList +} + +func (rpc *rpcChat) sendMsgToGroup(list []string, pb *pbChat.SendMsgReq, status string, sendTag *bool, wg *sync.WaitGroup) { + // log.Debug(pb.OperationID, "split userID ", list) + groupPB := pbChat.SendMsgReq{Token: pb.Token, OperationID: pb.OperationID, MsgData: &sdk_ws.MsgData{OfflinePushInfo: &sdk_ws.OfflinePushInfo{}}} + *groupPB.MsgData = *pb.MsgData + if pb.MsgData.OfflinePushInfo != nil { + *groupPB.MsgData.OfflinePushInfo = *pb.MsgData.OfflinePushInfo + } + msgToMQGroup := pbChat.MsgDataToMQ{Token: groupPB.Token, OperationID: groupPB.OperationID, MsgData: groupPB.MsgData} + for _, v := range list { + groupPB.MsgData.RecvID = v + isSend := modifyMessageByUserMessageReceiveOpt(v, groupPB.MsgData.GroupID, constant.GroupChatType, &groupPB) + if isSend { + msgToMQGroup.MsgData = groupPB.MsgData + // log.Debug(groupPB.OperationID, "sendMsgToKafka, ", v, groupID, msgToMQGroup.String()) + err := rpc.sendMsgToKafka(&msgToMQGroup, v, status) + if err != nil { + log.NewError(msgToMQGroup.OperationID, "kafka send msg err:UserId", v, msgToMQGroup.String()) + } else { + *sendTag = true + } + } else { + log.Debug(groupPB.OperationID, "not sendMsgToKafka, ", v) + } + } + wg.Done() +} diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 9d2ca8e55..8c08da2f5 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -192,14 +192,19 @@ type config struct { Addr []string `yaml:"addr"` Topic string `yaml:"topic"` } + Ws2mschatOffline struct { + Addr []string `yaml:"addr"` + Topic string `yaml:"topic"` + } Ms2pschat struct { Addr []string `yaml:"addr"` Topic string `yaml:"topic"` } ConsumerGroupID struct { - MsgToMongo string `yaml:"msgToMongo"` - MsgToMySql string `yaml:"msgToMySql"` - MsgToPush string `yaml:"msgToPush"` + MsgToMongo string `yaml:"msgToMongo"` + MsgToMongoOffline string `yaml:"msgToMongoOffline"` + MsgToMySql string `yaml:"msgToMySql"` + MsgToPush string `yaml:"msgToPush"` } } Secret string `yaml:"secret"` From 8753f91a4ad2e041a90e2b267e6e03aa94d0e8f4 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 18:38:58 +0800 Subject: [PATCH 117/143] send group message split topic --- internal/msg_transfer/logic/init.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/msg_transfer/logic/init.go b/internal/msg_transfer/logic/init.go index dff95334c..a9c8778b8 100644 --- a/internal/msg_transfer/logic/init.go +++ b/internal/msg_transfer/logic/init.go @@ -27,6 +27,7 @@ var ( func Init() { cmdCh = make(chan Cmd2Value, 10000) + w = new(sync.Mutex) persistentCH.Init() historyCH.Init(cmdCh) offlineHistoryCH.Init(cmdCh) From ab747d03383c336811d9c89c1dfca041bf18d0df Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 18:49:21 +0800 Subject: [PATCH 118/143] test --- internal/msg_transfer/logic/offline_history_msg_handler.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/msg_transfer/logic/offline_history_msg_handler.go b/internal/msg_transfer/logic/offline_history_msg_handler.go index c4e78f96d..f8fb6f3af 100644 --- a/internal/msg_transfer/logic/offline_history_msg_handler.go +++ b/internal/msg_transfer/logic/offline_history_msg_handler.go @@ -19,6 +19,7 @@ type OfflineHistoryConsumerHandler struct { } func (mc *OfflineHistoryConsumerHandler) Init(cmdCh chan Cmd2Value) { + log.Debug("ts", config.Config.Kafka.ConsumerGroupID.MsgToMongoOffline, config.Config.Kafka.Ws2mschatOffline.Topic) mc.msgHandle = make(map[string]fcb) mc.cmdCh = cmdCh mc.msgHandle[config.Config.Kafka.Ws2mschatOffline.Topic] = mc.handleChatWs2Mongo From 9a90c2e56847d4b0d92336589db028eca641c856 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 18:54:22 +0800 Subject: [PATCH 119/143] test --- internal/msg_transfer/logic/init.go | 2 ++ internal/msg_transfer/logic/offline_history_msg_handler.go | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/msg_transfer/logic/init.go b/internal/msg_transfer/logic/init.go index a9c8778b8..2673665f7 100644 --- a/internal/msg_transfer/logic/init.go +++ b/internal/msg_transfer/logic/init.go @@ -4,6 +4,7 @@ import ( "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" "Open_IM/pkg/common/kafka" + "Open_IM/pkg/common/log" "Open_IM/pkg/statistics" "fmt" "sync" @@ -30,6 +31,7 @@ func Init() { w = new(sync.Mutex) persistentCH.Init() historyCH.Init(cmdCh) + log.Debug("come msg transfer ts", config.Config.Kafka.ConsumerGroupID.MsgToMongoOffline, config.Config.Kafka.Ws2mschatOffline.Topic) offlineHistoryCH.Init(cmdCh) statistics.NewStatistics(&singleMsgSuccessCount, config.Config.ModuleName.MsgTransferName, fmt.Sprintf("%d second singleMsgCount insert to mongo", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval) statistics.NewStatistics(&groupMsgCount, config.Config.ModuleName.MsgTransferName, fmt.Sprintf("%d second groupMsgCount insert to mongo", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval) diff --git a/internal/msg_transfer/logic/offline_history_msg_handler.go b/internal/msg_transfer/logic/offline_history_msg_handler.go index f8fb6f3af..c4e78f96d 100644 --- a/internal/msg_transfer/logic/offline_history_msg_handler.go +++ b/internal/msg_transfer/logic/offline_history_msg_handler.go @@ -19,7 +19,6 @@ type OfflineHistoryConsumerHandler struct { } func (mc *OfflineHistoryConsumerHandler) Init(cmdCh chan Cmd2Value) { - log.Debug("ts", config.Config.Kafka.ConsumerGroupID.MsgToMongoOffline, config.Config.Kafka.Ws2mschatOffline.Topic) mc.msgHandle = make(map[string]fcb) mc.cmdCh = cmdCh mc.msgHandle[config.Config.Kafka.Ws2mschatOffline.Topic] = mc.handleChatWs2Mongo From 3ecc1816be5c01827f2c027e001c3804d5dfe1e8 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 18:58:11 +0800 Subject: [PATCH 120/143] test --- config/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.yaml b/config/config.yaml index c1134b9cf..e49f73658 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -49,7 +49,7 @@ kafka: topic: "ms2ps_chat" consumergroupid: msgToMongo: mongo - MsgToMongoOffline: mongo_offline + msgToMongoOffline: mongo_offline msgToMySql: mysql msgToPush: push From dc6b0b4dde0d99f6b3f924b5009ba97c685f04ac Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 19:16:57 +0800 Subject: [PATCH 121/143] test --- .../logic/offline_history_msg_handler.go | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/internal/msg_transfer/logic/offline_history_msg_handler.go b/internal/msg_transfer/logic/offline_history_msg_handler.go index c4e78f96d..4d1618853 100644 --- a/internal/msg_transfer/logic/offline_history_msg_handler.go +++ b/internal/msg_transfer/logic/offline_history_msg_handler.go @@ -98,19 +98,24 @@ func (OfflineHistoryConsumerHandler) Setup(_ sarama.ConsumerGroupSession) error func (OfflineHistoryConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error { return nil } func (mc *OfflineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error { // a instance in the consumer group - log.NewDebug("", "new session msg come", claim.HighWaterMarkOffset(), claim.Topic(), claim.Partition()) - select { - case cmd := <-mc.cmdCh: - if cmd.Cmd == OnlineTopicVacancy { - for msg := range claim.Messages() { - if GetOnlineTopicStatus() == OnlineTopicVacancy { - log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) - mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) - sess.MarkMessage(msg, "") - } - } - } + log.NewDebug("", "new session msg come", claim.HighWaterMarkOffset(), claim.Topic(), claim.Partition()) + for msg := range claim.Messages() { + log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value), "offline") + mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) } + //select { + //case cmd := <-mc.cmdCh: + // if cmd.Cmd == OnlineTopicVacancy { + // for msg := range claim.Messages() { + // if GetOnlineTopicStatus() == OnlineTopicVacancy { + // log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) + // mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) + // sess.MarkMessage(msg, "") + // } + // } + // } + // + //} return nil } From cec5a6ceeb09430df4b509c5c0626ed000aa5e43 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 19:21:28 +0800 Subject: [PATCH 122/143] test --- internal/msg_transfer/logic/offline_history_msg_handler.go | 2 +- internal/msg_transfer/logic/online_history_msg_handler.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/msg_transfer/logic/offline_history_msg_handler.go b/internal/msg_transfer/logic/offline_history_msg_handler.go index 4d1618853..3b0a3b759 100644 --- a/internal/msg_transfer/logic/offline_history_msg_handler.go +++ b/internal/msg_transfer/logic/offline_history_msg_handler.go @@ -101,7 +101,7 @@ func (mc *OfflineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupS log.NewDebug("", "new session msg come", claim.HighWaterMarkOffset(), claim.Topic(), claim.Partition()) for msg := range claim.Messages() { - log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value), "offline") + log.NewDebug("", "kafka get info to delay mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", "offline") mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) } //select { diff --git a/internal/msg_transfer/logic/online_history_msg_handler.go b/internal/msg_transfer/logic/online_history_msg_handler.go index 597d39d05..0286a348b 100644 --- a/internal/msg_transfer/logic/online_history_msg_handler.go +++ b/internal/msg_transfer/logic/online_history_msg_handler.go @@ -136,7 +136,7 @@ func (och *OnlineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupS och.TriggerCmd(OnlineTopicBusy) SetOnlineTopicStatus(OnlineTopicBusy) for msg := range claim.Messages() { - log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) + log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "online") och.msgHandle[msg.Topic](msg.Value, string(msg.Key)) sess.MarkMessage(msg, "") if claim.HighWaterMarkOffset()-msg.Offset <= 1 { From 2edd3c56143b5a98e12bd6e75b1bae0ce4c7cfd5 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Wed, 11 May 2022 19:25:06 +0800 Subject: [PATCH 123/143] When you create a group chat, the group member can be empty --- internal/api/group/group.go | 1 + internal/rpc/group/group.go | 81 ++++++++++++++++--------------- pkg/base_info/group_api_struct.go | 5 +- 3 files changed, 47 insertions(+), 40 deletions(-) diff --git a/internal/api/group/group.go b/internal/api/group/group.go index 598f3f473..08ee1f274 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -287,6 +287,7 @@ func CreateGroup(c *gin.Context) { req.OwnerUserID = params.OwnerUserID req.OperationID = params.OperationID + log.NewInfo(req.OperationID, "CreateGroup args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index ccc8acf96..22fcc61af 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -97,8 +97,11 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR log.NewError(req.OperationID, utils.GetSelfFuncName(), "callbackBeforeCreateGroup failed") } } - //Time stamp + MD5 to generate group chat id - groupId := utils.Md5(strconv.FormatInt(time.Now().UnixNano(), 10)) + + groupId := req.GroupInfo.GroupID + if groupId == "" { + groupId = utils.Md5(strconv.FormatInt(time.Now().UnixNano(), 10)) + } //to group groupInfo := db.Group{} utils.CopyStructFields(&groupInfo, req.GroupInfo) @@ -109,15 +112,19 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR log.NewError(req.OperationID, "InsertIntoGroup failed, ", err.Error(), groupInfo) return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, http.WrapError(constant.ErrDB) } - - us, err := imdb.GetUserByUserID(req.OwnerUserID) + groupMember := db.GroupMember{} + us := &db.User{} + if req.OwnerUserID == "" { + goto initMemberList + } + us, err = imdb.GetUserByUserID(req.OwnerUserID) if err != nil { log.NewError(req.OperationID, "GetUserByUserID failed ", err.Error(), req.OwnerUserID) return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, http.WrapError(constant.ErrDB) } //to group member - groupMember := db.GroupMember{GroupID: groupId, RoleLevel: constant.GroupOwner, OperatorUserID: req.OpUserID} + groupMember = db.GroupMember{GroupID: groupId, RoleLevel: constant.GroupOwner, OperatorUserID: req.OpUserID} utils.CopyStructFields(&groupMember, us) err = imdb.InsertIntoGroupMember(groupMember) if err != nil { @@ -125,10 +132,7 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, http.WrapError(constant.ErrDB) } - err = db.DB.AddGroupMember(groupId, req.OwnerUserID) - if err != nil { - log.NewError(req.OperationID, "AddGroupMember failed ", err.Error(), groupId, req.OwnerUserID) - } +initMemberList: var okUserIDList []string //to group member for _, user := range req.InitMemberList { @@ -148,20 +152,14 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR log.NewError(req.OperationID, "InsertIntoGroupMember failed ", err.Error(), groupMember) continue } - okUserIDList = append(okUserIDList, user.UserID) - // mongoDB method - //err = db.DB.AddGroupMember(groupId, user.UserID) - //if err != nil { - // log.NewError(req.OperationID, "add mongo group member failed, db.DB.AddGroupMember failed ", err.Error()) - //} } resp := &pbGroup.CreateGroupResp{GroupInfo: &open_im_sdk.GroupInfo{}} group, err := imdb.GetGroupInfoByGroupID(groupId) if err != nil { log.NewError(req.OperationID, "GetGroupInfoByGroupID failed ", err.Error(), groupId) resp.ErrCode = constant.ErrDB.ErrCode - resp.ErrMsg = constant.ErrDB.ErrMsg + resp.ErrMsg = err.Error() return resp, nil } utils.CopyStructFields(resp.GroupInfo, group) @@ -169,32 +167,39 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR if err != nil { log.NewError(req.OperationID, "GetGroupMemberNumByGroupID failed ", err.Error(), groupId) resp.ErrCode = constant.ErrDB.ErrCode - resp.ErrMsg = constant.ErrDB.ErrMsg + resp.ErrMsg = err.Error() return resp, nil } - resp.GroupInfo.OwnerUserID = req.OwnerUserID - - okUserIDList = append(okUserIDList, req.OwnerUserID) - addGroupMemberToCacheReq := &pbCache.AddGroupMemberToCacheReq{ - UserIDList: okUserIDList, - GroupID: groupId, - OperationID: req.OperationID, - } - etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) - cacheClient := pbCache.NewCacheClient(etcdConn) - cacheResp, err := cacheClient.AddGroupMemberToCache(context.Background(), addGroupMemberToCacheReq) - if err != nil { - log.NewError(req.OperationID, "AddGroupMemberToCache rpc call failed ", err.Error()) - return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil - } - if cacheResp.CommonResp.ErrCode != 0 { - log.NewError(req.OperationID, "AddGroupMemberToCache rpc logic call failed ", cacheResp.String()) - return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil + if req.OwnerUserID != "" { + resp.GroupInfo.OwnerUserID = req.OwnerUserID + okUserIDList = append(okUserIDList, req.OwnerUserID) } - log.NewInfo(req.OperationID, "rpc CreateGroup return ", resp.String()) - chat.GroupCreatedNotification(req.OperationID, req.OpUserID, groupId, okUserIDList) - return resp, nil + if len(okUserIDList) != 0 { + addGroupMemberToCacheReq := &pbCache.AddGroupMemberToCacheReq{ + UserIDList: okUserIDList, + GroupID: groupId, + OperationID: req.OperationID, + } + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + cacheClient := pbCache.NewCacheClient(etcdConn) + cacheResp, err := cacheClient.AddGroupMemberToCache(context.Background(), addGroupMemberToCacheReq) + if err != nil { + log.NewError(req.OperationID, "AddGroupMemberToCache rpc call failed ", err.Error()) + return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil + } + if cacheResp.CommonResp.ErrCode != 0 { + log.NewError(req.OperationID, "AddGroupMemberToCache rpc logic call failed ", cacheResp.String()) + return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil + } + + log.NewInfo(req.OperationID, "rpc CreateGroup return ", resp.String()) + chat.GroupCreatedNotification(req.OperationID, req.OpUserID, groupId, okUserIDList) + return resp, nil + } else { + log.NewInfo(req.OperationID, "rpc CreateGroup return ", resp.String()) + return resp, nil + } } func (s *groupServer) GetJoinedGroupList(ctx context.Context, req *pbGroup.GetJoinedGroupListReq) (*pbGroup.GetJoinedGroupListResp, error) { diff --git a/pkg/base_info/group_api_struct.go b/pkg/base_info/group_api_struct.go index 94a152818..169cb0b6e 100644 --- a/pkg/base_info/group_api_struct.go +++ b/pkg/base_info/group_api_struct.go @@ -81,8 +81,8 @@ type GetGroupAllMemberResp struct { } type CreateGroupReq struct { - MemberList []*GroupAddMemberInfo `json:"memberList" binding:"required"` - OwnerUserID string `json:"ownerUserID" binding:"required"` + MemberList []*GroupAddMemberInfo `json:"memberList"` + OwnerUserID string `json:"ownerUserID"` GroupType int32 `json:"groupType"` GroupName string `json:"groupName"` Notification string `json:"notification"` @@ -90,6 +90,7 @@ type CreateGroupReq struct { FaceURL string `json:"faceURL"` Ex string `json:"ex"` OperationID string `json:"operationID" binding:"required"` + GroupID string `json:"groupID"` } type CreateGroupResp struct { CommResp From 3e90426d8e4f64398205207402117258b12c33c1 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 19:27:49 +0800 Subject: [PATCH 124/143] test --- internal/msg_transfer/logic/offline_history_msg_handler.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/msg_transfer/logic/offline_history_msg_handler.go b/internal/msg_transfer/logic/offline_history_msg_handler.go index 3b0a3b759..16e6181ac 100644 --- a/internal/msg_transfer/logic/offline_history_msg_handler.go +++ b/internal/msg_transfer/logic/offline_history_msg_handler.go @@ -102,7 +102,7 @@ func (mc *OfflineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupS log.NewDebug("", "new session msg come", claim.HighWaterMarkOffset(), claim.Topic(), claim.Partition()) for msg := range claim.Messages() { log.NewDebug("", "kafka get info to delay mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", "offline") - mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) + //mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) } //select { //case cmd := <-mc.cmdCh: From f373669f026cfa1ceeb96efe388cf80dc3d131e6 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 19:31:32 +0800 Subject: [PATCH 125/143] test --- internal/msg_transfer/logic/offline_history_msg_handler.go | 5 ++--- internal/msg_transfer/logic/online_history_msg_handler.go | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/msg_transfer/logic/offline_history_msg_handler.go b/internal/msg_transfer/logic/offline_history_msg_handler.go index 16e6181ac..a62bba4e2 100644 --- a/internal/msg_transfer/logic/offline_history_msg_handler.go +++ b/internal/msg_transfer/logic/offline_history_msg_handler.go @@ -98,10 +98,9 @@ func (OfflineHistoryConsumerHandler) Setup(_ sarama.ConsumerGroupSession) error func (OfflineHistoryConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error { return nil } func (mc *OfflineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error { // a instance in the consumer group - - log.NewDebug("", "new session msg come", claim.HighWaterMarkOffset(), claim.Topic(), claim.Partition()) + log.NewDebug("", "offline new session msg come", claim.HighWaterMarkOffset(), claim.Topic(), claim.Partition()) for msg := range claim.Messages() { - log.NewDebug("", "kafka get info to delay mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", "offline") + log.NewDebug("", "kafka get info to delay mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "offline") //mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) } //select { diff --git a/internal/msg_transfer/logic/online_history_msg_handler.go b/internal/msg_transfer/logic/online_history_msg_handler.go index 0286a348b..755ca4433 100644 --- a/internal/msg_transfer/logic/online_history_msg_handler.go +++ b/internal/msg_transfer/logic/online_history_msg_handler.go @@ -133,6 +133,7 @@ func (OnlineHistoryConsumerHandler) Setup(_ sarama.ConsumerGroupSession) error func (OnlineHistoryConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error { return nil } func (och *OnlineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error { // a instance in the consumer group + log.NewDebug("", "online new session msg come", claim.HighWaterMarkOffset(), claim.Topic(), claim.Partition()) och.TriggerCmd(OnlineTopicBusy) SetOnlineTopicStatus(OnlineTopicBusy) for msg := range claim.Messages() { From d36f4cf6f862fe104d47658c4fa6c96f27d77085 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 19:44:08 +0800 Subject: [PATCH 126/143] test --- .../logic/offline_history_msg_handler.go | 34 +++++++++---------- .../logic/online_history_msg_handler.go | 4 +-- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/internal/msg_transfer/logic/offline_history_msg_handler.go b/internal/msg_transfer/logic/offline_history_msg_handler.go index a62bba4e2..7a63965ff 100644 --- a/internal/msg_transfer/logic/offline_history_msg_handler.go +++ b/internal/msg_transfer/logic/offline_history_msg_handler.go @@ -98,23 +98,23 @@ func (OfflineHistoryConsumerHandler) Setup(_ sarama.ConsumerGroupSession) error func (OfflineHistoryConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error { return nil } func (mc *OfflineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error { // a instance in the consumer group - log.NewDebug("", "offline new session msg come", claim.HighWaterMarkOffset(), claim.Topic(), claim.Partition()) - for msg := range claim.Messages() { - log.NewDebug("", "kafka get info to delay mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "offline") - //mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) - } - //select { - //case cmd := <-mc.cmdCh: - // if cmd.Cmd == OnlineTopicVacancy { - // for msg := range claim.Messages() { - // if GetOnlineTopicStatus() == OnlineTopicVacancy { - // log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) - // mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) - // sess.MarkMessage(msg, "") - // } - // } - // } - // + //log.NewDebug("", "offline new session msg come", claim.HighWaterMarkOffset(), claim.Topic(), claim.Partition()) + //for msg := range claim.Messages() { + // log.NewDebug("", "kafka get info to delay mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "offline") + // //mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) //} + select { + case cmd := <-mc.cmdCh: + if cmd.Cmd == OnlineTopicVacancy { + for msg := range claim.Messages() { + if GetOnlineTopicStatus() == OnlineTopicVacancy { + log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) + mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) + sess.MarkMessage(msg, "") + } + } + } + + } return nil } diff --git a/internal/msg_transfer/logic/online_history_msg_handler.go b/internal/msg_transfer/logic/online_history_msg_handler.go index 755ca4433..179de1c79 100644 --- a/internal/msg_transfer/logic/online_history_msg_handler.go +++ b/internal/msg_transfer/logic/online_history_msg_handler.go @@ -134,9 +134,9 @@ func (OnlineHistoryConsumerHandler) Cleanup(_ sarama.ConsumerGroupSession) error func (och *OnlineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error { // a instance in the consumer group log.NewDebug("", "online new session msg come", claim.HighWaterMarkOffset(), claim.Topic(), claim.Partition()) - och.TriggerCmd(OnlineTopicBusy) - SetOnlineTopicStatus(OnlineTopicBusy) for msg := range claim.Messages() { + och.TriggerCmd(OnlineTopicBusy) + SetOnlineTopicStatus(OnlineTopicBusy) log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "online") och.msgHandle[msg.Topic](msg.Value, string(msg.Key)) sess.MarkMessage(msg, "") From eb7ff77461281676ac07b44bd247ca9e8d7dfe05 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 19:45:44 +0800 Subject: [PATCH 127/143] test --- internal/msg_transfer/logic/online_history_msg_handler.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/msg_transfer/logic/online_history_msg_handler.go b/internal/msg_transfer/logic/online_history_msg_handler.go index 179de1c79..570de54d9 100644 --- a/internal/msg_transfer/logic/online_history_msg_handler.go +++ b/internal/msg_transfer/logic/online_history_msg_handler.go @@ -141,6 +141,7 @@ func (och *OnlineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupS och.msgHandle[msg.Topic](msg.Value, string(msg.Key)) sess.MarkMessage(msg, "") if claim.HighWaterMarkOffset()-msg.Offset <= 1 { + log.Debug("", "online msg consume end", claim.HighWaterMarkOffset(), msg.Offset) och.TriggerCmd(OnlineTopicVacancy) SetOnlineTopicStatus(OnlineTopicVacancy) } From 3bc2e97e8b1d3d42f10f748d646566a3f7044a97 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 20:02:33 +0800 Subject: [PATCH 128/143] test --- .../logic/offline_history_msg_handler.go | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/internal/msg_transfer/logic/offline_history_msg_handler.go b/internal/msg_transfer/logic/offline_history_msg_handler.go index 7a63965ff..a0416d7ed 100644 --- a/internal/msg_transfer/logic/offline_history_msg_handler.go +++ b/internal/msg_transfer/logic/offline_history_msg_handler.go @@ -103,18 +103,23 @@ func (mc *OfflineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupS // log.NewDebug("", "kafka get info to delay mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "offline") // //mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) //} + cmd := Cmd2Value{} +repeat: select { - case cmd := <-mc.cmdCh: - if cmd.Cmd == OnlineTopicVacancy { - for msg := range claim.Messages() { - if GetOnlineTopicStatus() == OnlineTopicVacancy { - log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) - mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) - sess.MarkMessage(msg, "") - } + case cmd = <-mc.cmdCh: + case <-time.After(time.Millisecond * time.Duration(1)): + goto repeat + } + if cmd.Cmd == OnlineTopicVacancy { + for msg := range claim.Messages() { + if GetOnlineTopicStatus() == OnlineTopicVacancy { + log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) + mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) + sess.MarkMessage(msg, "") + } else { + goto repeat } } - } return nil } From 35958ca3a2d4d742a229d01af95cc84fe6a99cff Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 20:49:47 +0800 Subject: [PATCH 129/143] test --- internal/msg_transfer/logic/init.go | 11 ++++---- .../logic/offline_history_msg_handler.go | 27 +++++++++---------- .../logic/online_history_msg_handler.go | 10 +++---- 3 files changed, 23 insertions(+), 25 deletions(-) diff --git a/internal/msg_transfer/logic/init.go b/internal/msg_transfer/logic/init.go index 2673665f7..c382de7f0 100644 --- a/internal/msg_transfer/logic/init.go +++ b/internal/msg_transfer/logic/init.go @@ -10,8 +10,8 @@ import ( "sync" ) -const OnlineTopicBusy = "Busy" -const OnlineTopicVacancy = "Vacancy" +const OnlineTopicBusy = 1 +const OnlineTopicVacancy = 0 var ( persistentCH PersistentConsumerHandler @@ -19,7 +19,7 @@ var ( offlineHistoryCH OfflineHistoryConsumerHandler producer *kafka.Producer cmdCh chan Cmd2Value - onlineTopicStatus string + onlineTopicStatus int w *sync.Mutex singleMsgSuccessCount uint64 groupMsgCount uint64 @@ -31,6 +31,7 @@ func Init() { w = new(sync.Mutex) persistentCH.Init() historyCH.Init(cmdCh) + onlineTopicStatus = OnlineTopicVacancy log.Debug("come msg transfer ts", config.Config.Kafka.ConsumerGroupID.MsgToMongoOffline, config.Config.Kafka.Ws2mschatOffline.Topic) offlineHistoryCH.Init(cmdCh) statistics.NewStatistics(&singleMsgSuccessCount, config.Config.ModuleName.MsgTransferName, fmt.Sprintf("%d second singleMsgCount insert to mongo", constant.StatisticsTimeInterval), constant.StatisticsTimeInterval) @@ -47,12 +48,12 @@ func Run() { go historyCH.historyConsumerGroup.RegisterHandleAndConsumer(&historyCH) go offlineHistoryCH.historyConsumerGroup.RegisterHandleAndConsumer(&offlineHistoryCH) } -func SetOnlineTopicStatus(status string) { +func SetOnlineTopicStatus(status int) { w.Lock() defer w.Unlock() onlineTopicStatus = status } -func GetOnlineTopicStatus() string { +func GetOnlineTopicStatus() int { w.Lock() defer w.Unlock() return onlineTopicStatus diff --git a/internal/msg_transfer/logic/offline_history_msg_handler.go b/internal/msg_transfer/logic/offline_history_msg_handler.go index a0416d7ed..b6eba5575 100644 --- a/internal/msg_transfer/logic/offline_history_msg_handler.go +++ b/internal/msg_transfer/logic/offline_history_msg_handler.go @@ -103,23 +103,20 @@ func (mc *OfflineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupS // log.NewDebug("", "kafka get info to delay mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "offline") // //mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) //} - cmd := Cmd2Value{} -repeat: - select { - case cmd = <-mc.cmdCh: - case <-time.After(time.Millisecond * time.Duration(1)): - goto repeat - } - if cmd.Cmd == OnlineTopicVacancy { - for msg := range claim.Messages() { - if GetOnlineTopicStatus() == OnlineTopicVacancy { - log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) - mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) - sess.MarkMessage(msg, "") - } else { - goto repeat + for msg := range claim.Messages() { + if GetOnlineTopicStatus() == OnlineTopicVacancy { + log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) + mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) + sess.MarkMessage(msg, "") + } else { + select { + case <-mc.cmdCh: + case <-time.After(time.Millisecond * time.Duration(100)): } + mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) + sess.MarkMessage(msg, "") } } + return nil } diff --git a/internal/msg_transfer/logic/online_history_msg_handler.go b/internal/msg_transfer/logic/online_history_msg_handler.go index 570de54d9..a2424e476 100644 --- a/internal/msg_transfer/logic/online_history_msg_handler.go +++ b/internal/msg_transfer/logic/online_history_msg_handler.go @@ -19,7 +19,7 @@ import ( type fcb func(msg []byte, msgKey string) type Cmd2Value struct { - Cmd string + Cmd int Value interface{} } type OnlineHistoryConsumerHandler struct { @@ -37,7 +37,7 @@ func (och *OnlineHistoryConsumerHandler) Init(cmdCh chan Cmd2Value) { config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.ConsumerGroupID.MsgToMongo) } -func (och *OnlineHistoryConsumerHandler) TriggerCmd(status string) { +func (och *OnlineHistoryConsumerHandler) TriggerCmd(status int) { operationID := utils.OperationIDGenerator() for { err := sendCmd(och.cmdCh, Cmd2Value{Cmd: status, Value: ""}, 1) @@ -135,15 +135,15 @@ func (och *OnlineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupS claim sarama.ConsumerGroupClaim) error { // a instance in the consumer group log.NewDebug("", "online new session msg come", claim.HighWaterMarkOffset(), claim.Topic(), claim.Partition()) for msg := range claim.Messages() { - och.TriggerCmd(OnlineTopicBusy) SetOnlineTopicStatus(OnlineTopicBusy) - log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "online") + //och.TriggerCmd(OnlineTopicBusy) + log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "online", msg.Offset, claim.HighWaterMarkOffset()) och.msgHandle[msg.Topic](msg.Value, string(msg.Key)) sess.MarkMessage(msg, "") if claim.HighWaterMarkOffset()-msg.Offset <= 1 { log.Debug("", "online msg consume end", claim.HighWaterMarkOffset(), msg.Offset) - och.TriggerCmd(OnlineTopicVacancy) SetOnlineTopicStatus(OnlineTopicVacancy) + och.TriggerCmd(OnlineTopicVacancy) } } return nil From 9c19b5b785f5453971dd42ca04dcabf48ce60629 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 20:54:04 +0800 Subject: [PATCH 130/143] test --- internal/msg_transfer/logic/offline_history_msg_handler.go | 2 +- internal/msg_transfer/logic/online_history_msg_handler.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/msg_transfer/logic/offline_history_msg_handler.go b/internal/msg_transfer/logic/offline_history_msg_handler.go index b6eba5575..4179b1800 100644 --- a/internal/msg_transfer/logic/offline_history_msg_handler.go +++ b/internal/msg_transfer/logic/offline_history_msg_handler.go @@ -105,7 +105,7 @@ func (mc *OfflineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupS //} for msg := range claim.Messages() { if GetOnlineTopicStatus() == OnlineTopicVacancy { - log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) + log.NewDebug("", "offline kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) sess.MarkMessage(msg, "") } else { diff --git a/internal/msg_transfer/logic/online_history_msg_handler.go b/internal/msg_transfer/logic/online_history_msg_handler.go index a2424e476..9bf13e57a 100644 --- a/internal/msg_transfer/logic/online_history_msg_handler.go +++ b/internal/msg_transfer/logic/online_history_msg_handler.go @@ -137,7 +137,7 @@ func (och *OnlineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupS for msg := range claim.Messages() { SetOnlineTopicStatus(OnlineTopicBusy) //och.TriggerCmd(OnlineTopicBusy) - log.NewDebug("", "kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "online", msg.Offset, claim.HighWaterMarkOffset()) + log.NewDebug("", "online kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "online", msg.Offset, claim.HighWaterMarkOffset()) och.msgHandle[msg.Topic](msg.Value, string(msg.Key)) sess.MarkMessage(msg, "") if claim.HighWaterMarkOffset()-msg.Offset <= 1 { From 093a8f18ef90c78942d2f3eaf0db8f4cf107b536 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 11 May 2022 21:01:36 +0800 Subject: [PATCH 131/143] test --- internal/msg_transfer/logic/offline_history_msg_handler.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/msg_transfer/logic/offline_history_msg_handler.go b/internal/msg_transfer/logic/offline_history_msg_handler.go index 4179b1800..9355385d0 100644 --- a/internal/msg_transfer/logic/offline_history_msg_handler.go +++ b/internal/msg_transfer/logic/offline_history_msg_handler.go @@ -105,13 +105,15 @@ func (mc *OfflineHistoryConsumerHandler) ConsumeClaim(sess sarama.ConsumerGroupS //} for msg := range claim.Messages() { if GetOnlineTopicStatus() == OnlineTopicVacancy { - log.NewDebug("", "offline kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) + log.NewDebug("", "vacancy offline kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) sess.MarkMessage(msg, "") } else { select { case <-mc.cmdCh: + log.NewDebug("", "cmd offline kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) case <-time.After(time.Millisecond * time.Duration(100)): + log.NewDebug("", "timeout offline kafka get info to mongo", "msgTopic", msg.Topic, "msgPartition", msg.Partition, "msg", string(msg.Value)) } mc.msgHandle[msg.Topic](msg.Value, string(msg.Key)) sess.MarkMessage(msg, "") From 8f261970e9d098dd7cacaa9920c7fb865ea54b75 Mon Sep 17 00:00:00 2001 From: wenxu12345 <44203734@qq.com> Date: Thu, 12 May 2022 18:00:23 +0800 Subject: [PATCH 132/143] Update group members' faceURL immediately --- internal/rpc/user/user.go | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/internal/rpc/user/user.go b/internal/rpc/user/user.go index 0f628b77d..90f983a05 100644 --- a/internal/rpc/user/user.go +++ b/internal/rpc/user/user.go @@ -405,14 +405,28 @@ func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbUser.UpdateUserI chat.UserInfoUpdatedNotification(req.OperationID, req.UserInfo.UserID, v.FriendUser.UserID) } - //etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName) - //client := pbFriend.NewFriendClient(etcdConn) - chat.UserInfoUpdatedNotification(req.OperationID, req.UserInfo.UserID, req.OpUserID) log.Info(req.OperationID, "UserInfoUpdatedNotification ", req.UserInfo.UserID, req.OpUserID) + if req.UserInfo.FaceURL != "" { + go s.SyncJoinedGroupMemberFaceURL(req.UserInfo.UserID, req.UserInfo.FaceURL, req.OperationID, req.OpUserID) + } + return &pbUser.UpdateUserInfoResp{CommonResp: &pbUser.CommonResp{}}, nil } +func (s *userServer) SyncJoinedGroupMemberFaceURL(userID string, faceURL string, operationID string, opUserID string) { + joinedGroupIDList, err := imdb.GetJoinedGroupIDListByUserID(userID) + if err != nil { + log.NewWarn(operationID, "GetJoinedGroupIDListByUserID failed ", userID, err.Error()) + return + } + for _, v := range joinedGroupIDList { + groupMemberInfo := db.GroupMember{UserID: userID, GroupID: v, FaceURL: faceURL} + imdb.UpdateGroupMemberInfo(groupMemberInfo) + chat.GroupMemberInfoSetNotification(operationID, opUserID, v, userID) + } +} + func (s *userServer) GetUsersByName(ctx context.Context, req *pbUser.GetUsersByNameReq) (*pbUser.GetUsersByNameResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req:", req.String()) resp := &pbUser.GetUsersByNameResp{} From bb5991b111c2e2b4498b23598fa419bda3eb15cd Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 12 May 2022 19:00:48 +0800 Subject: [PATCH 133/143] organization --- config/config.yaml | 16 +- internal/demo/register/onboarding_process.go | 193 ++ internal/demo/register/set_password.go | 2 + internal/rpc/organization/organization.go | 57 + pkg/common/config/config.go | 6 + pkg/common/constant/constant.go | 4 + pkg/common/db/model_struct.go | 1 + pkg/common/db/mysql.go | 2 +- .../im_mysql_model/organization_model.go | 46 +- pkg/proto/organization/organization.pb.go | 1780 ----------------- pkg/proto/organization/organization.proto | 23 + 11 files changed, 347 insertions(+), 1783 deletions(-) create mode 100644 internal/demo/register/onboarding_process.go delete mode 100644 pkg/proto/organization/organization.pb.go diff --git a/config/config.yaml b/config/config.yaml index 8c1ffcc1a..a0e66fae2 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -638,6 +638,19 @@ notification: openTips: "burn after reading was opened" closeTips: "burn after reading was closed" + ###################organization################ + joinDepartmentNotification: + conversation: + reliabilityLevel: 3 + unreadCount: true + offlinePush: + switch: false + title: "welcome user join department" + desc: "welcome user join department" + ext: "welcome user join department" + defaultTips: + tips: "welcome user join department" + #---------------demo configuration---------------------# #The following configuration items are applied to openIM Demo configuration @@ -661,7 +674,8 @@ demo: senderAuthorizationCode: "gxyausfoevlzbfag" smtpAddr: "smtp.qq.com" smtpPort: 25 #需开放此端口 出口方向 + testDepartMentID: 001 rtc: port: 11300 - address: 127.0.0.1 \ No newline at end of file + address: 127.0.0.1 diff --git a/internal/demo/register/onboarding_process.go b/internal/demo/register/onboarding_process.go new file mode 100644 index 000000000..fe79a78d0 --- /dev/null +++ b/internal/demo/register/onboarding_process.go @@ -0,0 +1,193 @@ +package register + +import ( + "Open_IM/internal/rpc/msg" + "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/log" + "Open_IM/pkg/grpc-etcdv3/getcdv3" + groupRpc "Open_IM/pkg/proto/group" + organizationRpc "Open_IM/pkg/proto/organization" + commonPb "Open_IM/pkg/proto/sdk_ws" + "Open_IM/pkg/utils" + "context" + "errors" + "fmt" + "github.com/golang/protobuf/proto" + "math/rand" + "strings" + "time" +) + +func onboardingProcess(operationID, userID, userName string) { + if err := createOrganizationUser(operationID, userID, userName); err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), "createOrganizationUser failed", err.Error()) + } + departmentID := config.Config.Demo.TestDepartMentID + if err := joinTestDepartment(operationID, userID, departmentID); err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), "joinTestDepartment failed", err.Error()) + } + groupIDList, err := GetDepartmentGroupIDList(operationID, departmentID) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), err.Error()) + } + joinGroups(operationID, userID, userName, groupIDList) + log.NewInfo(operationID, utils.GetSelfFuncName(), "fineshed") +} + +func createOrganizationUser(operationID, userID, userName string) error { + defer func() { + log.NewInfo(operationID, utils.GetSelfFuncName(), userID) + }() + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + client := organizationRpc.NewOrganizationClient(etcdConn) + req := &organizationRpc.CreateOrganizationUserReq{ + OrganizationUser: &commonPb.OrganizationUser{ + UserID: userID, + Nickname: userName, + EnglishName: randomEnglishName(), + Gender: constant.Male, + CreateTime: uint32(time.Now().Unix()), + }, + OperationID: operationID, + OpUserID: userID, + } + if strings.Contains("@", userID) { + req.OrganizationUser.Email = userID + } else { + req.OrganizationUser.Telephone = userID + } + resp, err := client.CreateOrganizationUser(context.Background(), req) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), err.Error()) + return err + } + if resp.ErrCode != 0 { + log.NewError(req.OperationID, utils.GetSelfFuncName(), resp) + return errors.New(resp.ErrMsg) + } + return nil +} + +func joinTestDepartment(operationID, userID, departmentID string) error { + defer func() { + log.NewInfo(operationID, utils.GetSelfFuncName(), userID) + }() + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + client := organizationRpc.NewOrganizationClient(etcdConn) + req := &organizationRpc.CreateDepartmentMemberReq{DepartmentMember: &commonPb.DepartmentMember{ + UserID: userID, + DepartmentID: departmentID, + Position: randomPosition(), + }} + resp, err := client.CreateDepartmentMember(context.Background(), req) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), err.Error()) + return err + } + if resp.ErrCode != 0 { + log.NewError(req.OperationID, utils.GetSelfFuncName(), resp) + return errors.New(resp.ErrMsg) + } + return nil +} + +func GetDepartmentGroupIDList(operationID, departmentID string) ([]string, error) { + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) + client := organizationRpc.NewOrganizationClient(etcdConn) + req := organizationRpc.GetDepartmentParentIDListReq{ + DepartmentID: departmentID, + OperationID: operationID, + } + resp, err := client.GetDepartmentParentIDList(context.Background(), &req) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), req.String()) + return nil, err + } + if resp.ErrCode != 0 { + log.NewError(req.OperationID, utils.GetSelfFuncName(), resp) + return nil, errors.New(resp.ErrMsg) + } + + resp.ParentIDList = append(resp.ParentIDList, departmentID) + getDepartmentRelatedGroupIDListReq := organizationRpc.GetDepartmentRelatedGroupIDListReq{OperationID: operationID, DepartmentIDList: resp.ParentIDList} + getDepartmentParentIDListResp, err := client.GetDepartmentRelatedGroupIDList(context.Background(), &getDepartmentRelatedGroupIDListReq) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), getDepartmentRelatedGroupIDListReq.String()) + return nil, err + } + if getDepartmentParentIDListResp.ErrCode != 0 { + log.NewError(req.OperationID, utils.GetSelfFuncName(), getDepartmentParentIDListResp) + return nil, errors.New(getDepartmentParentIDListResp.ErrMsg) + } + return getDepartmentParentIDListResp.GroupIDList, nil +} + +func joinGroups(operationID, userID, userName string, groupIDList []string) { + defer func() { + log.NewInfo(operationID, utils.GetSelfFuncName(), userID, groupIDList) + }() + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + client := groupRpc.NewGroupClient(etcdConn) + for _, groupID := range groupIDList { + req := &groupRpc.InviteUserToGroupReq{ + OperationID: operationID, + GroupID: groupID, + Reason: "register auto join", + InvitedUserIDList: []string{userID}, + OpUserID: userID, + } + resp, err := client.InviteUserToGroup(context.Background(), req) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), req.String()) + continue + } + if resp.ErrCode != 0 { + log.NewError(req.OperationID, utils.GetSelfFuncName(), resp) + continue + } + onboardingProcessNotification(operationID, userID, groupID) + } +} + +// welcome user join department notification +func onboardingProcessNotification(operationID, userID, groupID string) { + defer func() { + log.NewInfo(operationID, utils.GetSelfFuncName(), userID, groupID) + }() + var tips commonPb.TipsComm + tips.DefaultTips = config.Config.Notification.JoinDepartmentNotification.DefaultTips.Tips + content, err := proto.Marshal(&tips) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), "proto marshal failed") + return + } + notification := &msg.NotificationMsg{ + SendID: userID, + RecvID: groupID, + Content: content, + MsgFrom: constant.UserMsgType, + ContentType: constant.Text, + SessionType: constant.SingleChatType, + OperationID: operationID, + } + // notification user join group + msg.Notification(notification) +} + +func randomEnglishName() string { + l := []string{"abandon", "entail", "nebula", "shrink", "accumulate", "etch", "nostalgia", "slide", + "feudal", "adverse", "exploit", "occupy", "solve", "amazing", "fantasy", "orchid", "spiky", "approve", "flap"} + rand.Seed(time.Now().UnixNano()) + index := rand.Intn(len(l) - 1) + fmt.Println(index) + return l[index] +} + +func randomPosition() string { + l := []string{"Golang工程师", "前端工程师", "后端工程师", "产品经理", "测试开发工程师", "运维开发工程师"} + rand.Seed(time.Now().UnixNano()) + index := rand.Intn(len(l) - 1) + fmt.Println(index) + return l[index] +} diff --git a/internal/demo/register/set_password.go b/internal/demo/register/set_password.go index 2e5268ca3..2b1bbbee1 100644 --- a/internal/demo/register/set_password.go +++ b/internal/demo/register/set_password.go @@ -84,6 +84,8 @@ func SetPassword(c *gin.Context) { return } log.Info(params.OperationID, "end setPassword", account, params.Password) + // demo onboarding + onboardingProcess(params.OperationID, account, params.Name) c.JSON(http.StatusOK, gin.H{"errCode": constant.NoError, "errMsg": "", "data": openIMRegisterResp.UserToken}) return } diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index 557539766..0f5a00993 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -10,6 +10,7 @@ import ( "Open_IM/pkg/common/token_verify" "Open_IM/pkg/grpc-etcdv3/getcdv3" "Open_IM/pkg/proto/auth" + groupRpc "Open_IM/pkg/proto/group" rpc "Open_IM/pkg/proto/organization" open_im_sdk "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" @@ -110,6 +111,34 @@ func (s *organizationServer) CreateDepartment(ctx context.Context, req *rpc.Crea utils.CopyStructFields(resp.DepartmentInfo, createdDepartment) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp) chat.OrganizationNotificationToAll(req.OpUserID, req.OperationID) + + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + client := groupRpc.NewGroupClient(etcdConn) + createGroupReq := &groupRpc.CreateGroupReq{ + InitMemberList: nil, + GroupInfo: &open_im_sdk.GroupInfo{ + GroupName: req.DepartmentInfo.Name, + FaceURL: req.DepartmentInfo.FaceURL, + CreateTime: uint32(time.Now().Unix()), + CreatorUserID: req.OpUserID, + GroupType: constant.DepartmentGroup, + }, + OperationID: req.OperationID, + OpUserID: req.OpUserID, + } + createGroupResp, err := client.CreateGroup(context.Background(), createGroupReq) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "CreateGroup rpc failed", createGroupReq, err.Error()) + resp.ErrCode = constant.ErrDB.ErrCode + resp.ErrMsg = constant.ErrDB.ErrMsg + " createGroup failed " + err.Error() + return resp, nil + } + if createGroupResp.ErrCode != 0 { + log.NewError(req.OperationID, utils.GetSelfFuncName(), resp) + resp.ErrCode = constant.ErrDB.ErrCode + resp.ErrMsg = constant.ErrDB.ErrMsg + " createGroup failed " + createGroupResp.ErrMsg + return resp, nil + } return resp, nil } @@ -307,6 +336,19 @@ func (s *organizationServer) CreateDepartmentMember(ctx context.Context, req *rp return resp, nil } +func (s *organizationServer) GetDepartmentParentIDListReq(_ context.Context, req *rpc.GetDepartmentParentIDListReq) (resp *rpc.GetDepartmentParentIDListResp, err error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req:", req.String()) + resp = &rpc.GetDepartmentParentIDListResp{} + resp.ParentIDList, err = imdb.GetDepartmentParentIDList(req.DepartmentID) + if err != nil { + resp.ErrMsg = constant.ErrDB.ErrMsg + ": " + err.Error() + resp.ErrCode = constant.ErrDB.ErrCode + return resp, nil + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp:", resp.String()) + return resp, nil +} + func (s *organizationServer) GetUserInDepartmentByUserID(userID string, operationID string) (*open_im_sdk.UserInDepartment, error) { err, organizationUser := imdb.GetOrganizationUser(userID) if err != nil { @@ -438,3 +480,18 @@ func (s *organizationServer) GetDepartmentMember(ctx context.Context, req *rpc.G log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", resp) return &resp, nil } + +func (s *organizationServer) GetDepartmentRelatedGroupIDList(ctx context.Context, req rpc.GetDepartmentRelatedGroupIDListReq) (resp *rpc.GetDepartmentRelatedGroupIDListResp, err error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp = &rpc.GetDepartmentRelatedGroupIDListResp{} + groupIDList, err := imdb.GetDepartmentRelatedGroupIDList(req.DepartmentIDList) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error()) + resp.ErrMsg = constant.ErrDB.ErrMsg + " GetDepartMentRelatedGroupIDList failed " + err.Error() + resp.ErrCode = constant.ErrDB.ErrCode + return resp, nil + } + resp.GroupIDList = groupIDList + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + return resp, nil +} diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 9d2ca8e55..af51cda21 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -397,6 +397,11 @@ type config struct { OfflinePush POfflinePush `yaml:"offlinePush"` DefaultTips PDefaultTips `yaml:"defaultTips"` } `yaml:"workMomentsNotification"` + JoinDepartmentNotification struct { + Conversation PConversation `yaml:"conversation"` + OfflinePush POfflinePush `yaml:"offlinePush"` + DefaultTips PDefaultTips `yaml:"defaultTips"` + } `yaml:"joinDepartmentNotification"` } Demo struct { Port []int `yaml:"openImDemoPort"` @@ -416,6 +421,7 @@ type config struct { SmtpAddr string `yaml:"smtpAddr"` SmtpPort int `yaml:"smtpPort"` } + TestDepartMentID string `yaml:"testDepartMentID"` } Rtc struct { Port int `yaml:"port"` diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index 8a95898cd..33e350003 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -151,6 +151,10 @@ const ( GroupStatusDismissed = 2 GroupStatusMuted = 3 + //GroupType + NormalGroup = 0 + DepartmentGroup = 1 + GroupBaned = 3 GroupBanPrivateChat = 4 diff --git a/pkg/common/db/model_struct.go b/pkg/common/db/model_struct.go index e6915bcef..b0854169e 100644 --- a/pkg/common/db/model_struct.go +++ b/pkg/common/db/model_struct.go @@ -232,6 +232,7 @@ type Department struct { ParentID string `gorm:"column:parent_id;size:64" json:"parentID" binding:"required"` // "0" or Real parent id Order int32 `gorm:"column:order" json:"order" ` // 1, 2, ... DepartmentType int32 `gorm:"column:department_type" json:"departmentType"` //1, 2... + RelatedGroupID string `gorm:"column:related_group_id;size:64" json:"relatedGroupID"` CreateTime time.Time `gorm:"column:create_time" json:"createTime"` Ex string `gorm:"column:ex;type:varchar(1024)" json:"ex"` } diff --git a/pkg/common/db/mysql.go b/pkg/common/db/mysql.go index aea907fc1..0f9f4303f 100644 --- a/pkg/common/db/mysql.go +++ b/pkg/common/db/mysql.go @@ -59,7 +59,7 @@ func initMysqlDB() { &GroupMember{}, &GroupRequest{}, &User{}, - &Black{}, &ChatLog{}, &Register{}, &Conversation{}, &AppVersion{}) + &Black{}, &ChatLog{}, &Register{}, &Conversation{}, &AppVersion{}, &Department{}) db.Set("gorm:table_options", "CHARSET=utf8") db.Set("gorm:table_options", "collation=utf8_unicode_ci") diff --git a/pkg/common/db/mysql_model/im_mysql_model/organization_model.go b/pkg/common/db/mysql_model/im_mysql_model/organization_model.go index 2eacf7a44..c87aa3f87 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/organization_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/organization_model.go @@ -3,6 +3,7 @@ package im_mysql_model import ( "Open_IM/pkg/common/db" "Open_IM/pkg/utils" + "github.com/jinzhu/gorm" "time" ) @@ -234,5 +235,48 @@ func GetSubDepartmentNum(departmentID string) (error, uint32) { return utils.Wrap(err, ""), 0 } return nil, number - +} + +func GetDepartmentRelatedGroupIDList(departmentIDList []string) ([]string, error) { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return nil, utils.Wrap(err, "DefaultGormDB failed") + } + var groupIDList []string + err = dbConn.Table("departments").Where("department_id IN (?) ", departmentIDList).Pluck("related_group_id", &groupIDList).Error + return groupIDList, err +} + +func getDepartmentParent(departmentID string, dbConn *gorm.DB) (*db.Department, error) { + var department db.Department + var parentID string + dbConn.LogMode(true) + // select * from departments where department_id = (select parent_id from departments where department_id= zx234fd); + err := dbConn.Table("departments").Where("department_id=?", dbConn.Table("departments").Where("department_id=?", departmentID).Pluck("parent_id", parentID)).Error + return &department, err +} + +func GetDepartmentParent(departmentID string, dbConn *gorm.DB, parentIDList []string) (*db.Department, error) { + department, err := getDepartmentParent(departmentID, dbConn) + if err != nil { + return nil, err + } + if department.ParentID != "" { + parentIDList = append(parentIDList, department.ParentID) + _, err = GetDepartmentParent(departmentID, dbConn, parentIDList) + if err != nil { + return nil, nil + } + } + return nil, nil +} + +func GetDepartmentParentIDList(departmentID string) ([]string, error) { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return nil, err + } + var parentIDList []string + _, err = GetDepartmentParent(departmentID, dbConn, parentIDList) + return parentIDList, err } diff --git a/pkg/proto/organization/organization.pb.go b/pkg/proto/organization/organization.pb.go deleted file mode 100644 index b91b96d1f..000000000 --- a/pkg/proto/organization/organization.pb.go +++ /dev/null @@ -1,1780 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: organization/organization.proto - -package organization // import "./organization" - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import sdk_ws "Open_IM/pkg/proto/sdk_ws" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type CreateDepartmentReq struct { - DepartmentInfo *sdk_ws.Department `protobuf:"bytes,1,opt,name=departmentInfo" json:"departmentInfo,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` - OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CreateDepartmentReq) Reset() { *m = CreateDepartmentReq{} } -func (m *CreateDepartmentReq) String() string { return proto.CompactTextString(m) } -func (*CreateDepartmentReq) ProtoMessage() {} -func (*CreateDepartmentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{0} -} -func (m *CreateDepartmentReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateDepartmentReq.Unmarshal(m, b) -} -func (m *CreateDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateDepartmentReq.Marshal(b, m, deterministic) -} -func (dst *CreateDepartmentReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateDepartmentReq.Merge(dst, src) -} -func (m *CreateDepartmentReq) XXX_Size() int { - return xxx_messageInfo_CreateDepartmentReq.Size(m) -} -func (m *CreateDepartmentReq) XXX_DiscardUnknown() { - xxx_messageInfo_CreateDepartmentReq.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateDepartmentReq proto.InternalMessageInfo - -func (m *CreateDepartmentReq) GetDepartmentInfo() *sdk_ws.Department { - if m != nil { - return m.DepartmentInfo - } - return nil -} - -func (m *CreateDepartmentReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -func (m *CreateDepartmentReq) GetOpUserID() string { - if m != nil { - return m.OpUserID - } - return "" -} - -type CreateDepartmentResp struct { - ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` - DepartmentInfo *sdk_ws.Department `protobuf:"bytes,3,opt,name=departmentInfo" json:"departmentInfo,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CreateDepartmentResp) Reset() { *m = CreateDepartmentResp{} } -func (m *CreateDepartmentResp) String() string { return proto.CompactTextString(m) } -func (*CreateDepartmentResp) ProtoMessage() {} -func (*CreateDepartmentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{1} -} -func (m *CreateDepartmentResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateDepartmentResp.Unmarshal(m, b) -} -func (m *CreateDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateDepartmentResp.Marshal(b, m, deterministic) -} -func (dst *CreateDepartmentResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateDepartmentResp.Merge(dst, src) -} -func (m *CreateDepartmentResp) XXX_Size() int { - return xxx_messageInfo_CreateDepartmentResp.Size(m) -} -func (m *CreateDepartmentResp) XXX_DiscardUnknown() { - xxx_messageInfo_CreateDepartmentResp.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateDepartmentResp proto.InternalMessageInfo - -func (m *CreateDepartmentResp) GetErrCode() int32 { - if m != nil { - return m.ErrCode - } - return 0 -} - -func (m *CreateDepartmentResp) GetErrMsg() string { - if m != nil { - return m.ErrMsg - } - return "" -} - -func (m *CreateDepartmentResp) GetDepartmentInfo() *sdk_ws.Department { - if m != nil { - return m.DepartmentInfo - } - return nil -} - -type UpdateDepartmentReq struct { - DepartmentInfo *sdk_ws.Department `protobuf:"bytes,1,opt,name=departmentInfo" json:"departmentInfo,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` - OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *UpdateDepartmentReq) Reset() { *m = UpdateDepartmentReq{} } -func (m *UpdateDepartmentReq) String() string { return proto.CompactTextString(m) } -func (*UpdateDepartmentReq) ProtoMessage() {} -func (*UpdateDepartmentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{2} -} -func (m *UpdateDepartmentReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateDepartmentReq.Unmarshal(m, b) -} -func (m *UpdateDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateDepartmentReq.Marshal(b, m, deterministic) -} -func (dst *UpdateDepartmentReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateDepartmentReq.Merge(dst, src) -} -func (m *UpdateDepartmentReq) XXX_Size() int { - return xxx_messageInfo_UpdateDepartmentReq.Size(m) -} -func (m *UpdateDepartmentReq) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateDepartmentReq.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateDepartmentReq proto.InternalMessageInfo - -func (m *UpdateDepartmentReq) GetDepartmentInfo() *sdk_ws.Department { - if m != nil { - return m.DepartmentInfo - } - return nil -} - -func (m *UpdateDepartmentReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -func (m *UpdateDepartmentReq) GetOpUserID() string { - if m != nil { - return m.OpUserID - } - return "" -} - -type UpdateDepartmentResp struct { - ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *UpdateDepartmentResp) Reset() { *m = UpdateDepartmentResp{} } -func (m *UpdateDepartmentResp) String() string { return proto.CompactTextString(m) } -func (*UpdateDepartmentResp) ProtoMessage() {} -func (*UpdateDepartmentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{3} -} -func (m *UpdateDepartmentResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateDepartmentResp.Unmarshal(m, b) -} -func (m *UpdateDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateDepartmentResp.Marshal(b, m, deterministic) -} -func (dst *UpdateDepartmentResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateDepartmentResp.Merge(dst, src) -} -func (m *UpdateDepartmentResp) XXX_Size() int { - return xxx_messageInfo_UpdateDepartmentResp.Size(m) -} -func (m *UpdateDepartmentResp) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateDepartmentResp.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateDepartmentResp proto.InternalMessageInfo - -func (m *UpdateDepartmentResp) GetErrCode() int32 { - if m != nil { - return m.ErrCode - } - return 0 -} - -func (m *UpdateDepartmentResp) GetErrMsg() string { - if m != nil { - return m.ErrMsg - } - return "" -} - -type GetSubDepartmentReq struct { - DepartmentID string `protobuf:"bytes,1,opt,name=departmentID" json:"departmentID,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` - OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetSubDepartmentReq) Reset() { *m = GetSubDepartmentReq{} } -func (m *GetSubDepartmentReq) String() string { return proto.CompactTextString(m) } -func (*GetSubDepartmentReq) ProtoMessage() {} -func (*GetSubDepartmentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{4} -} -func (m *GetSubDepartmentReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetSubDepartmentReq.Unmarshal(m, b) -} -func (m *GetSubDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetSubDepartmentReq.Marshal(b, m, deterministic) -} -func (dst *GetSubDepartmentReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetSubDepartmentReq.Merge(dst, src) -} -func (m *GetSubDepartmentReq) XXX_Size() int { - return xxx_messageInfo_GetSubDepartmentReq.Size(m) -} -func (m *GetSubDepartmentReq) XXX_DiscardUnknown() { - xxx_messageInfo_GetSubDepartmentReq.DiscardUnknown(m) -} - -var xxx_messageInfo_GetSubDepartmentReq proto.InternalMessageInfo - -func (m *GetSubDepartmentReq) GetDepartmentID() string { - if m != nil { - return m.DepartmentID - } - return "" -} - -func (m *GetSubDepartmentReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -func (m *GetSubDepartmentReq) GetOpUserID() string { - if m != nil { - return m.OpUserID - } - return "" -} - -type GetSubDepartmentResp struct { - ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` - DepartmentList []*sdk_ws.Department `protobuf:"bytes,3,rep,name=departmentList" json:"departmentList,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetSubDepartmentResp) Reset() { *m = GetSubDepartmentResp{} } -func (m *GetSubDepartmentResp) String() string { return proto.CompactTextString(m) } -func (*GetSubDepartmentResp) ProtoMessage() {} -func (*GetSubDepartmentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{5} -} -func (m *GetSubDepartmentResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetSubDepartmentResp.Unmarshal(m, b) -} -func (m *GetSubDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetSubDepartmentResp.Marshal(b, m, deterministic) -} -func (dst *GetSubDepartmentResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetSubDepartmentResp.Merge(dst, src) -} -func (m *GetSubDepartmentResp) XXX_Size() int { - return xxx_messageInfo_GetSubDepartmentResp.Size(m) -} -func (m *GetSubDepartmentResp) XXX_DiscardUnknown() { - xxx_messageInfo_GetSubDepartmentResp.DiscardUnknown(m) -} - -var xxx_messageInfo_GetSubDepartmentResp proto.InternalMessageInfo - -func (m *GetSubDepartmentResp) GetErrCode() int32 { - if m != nil { - return m.ErrCode - } - return 0 -} - -func (m *GetSubDepartmentResp) GetErrMsg() string { - if m != nil { - return m.ErrMsg - } - return "" -} - -func (m *GetSubDepartmentResp) GetDepartmentList() []*sdk_ws.Department { - if m != nil { - return m.DepartmentList - } - return nil -} - -type DeleteDepartmentReq struct { - DepartmentID string `protobuf:"bytes,1,opt,name=departmentID" json:"departmentID,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` - OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DeleteDepartmentReq) Reset() { *m = DeleteDepartmentReq{} } -func (m *DeleteDepartmentReq) String() string { return proto.CompactTextString(m) } -func (*DeleteDepartmentReq) ProtoMessage() {} -func (*DeleteDepartmentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{6} -} -func (m *DeleteDepartmentReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteDepartmentReq.Unmarshal(m, b) -} -func (m *DeleteDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteDepartmentReq.Marshal(b, m, deterministic) -} -func (dst *DeleteDepartmentReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteDepartmentReq.Merge(dst, src) -} -func (m *DeleteDepartmentReq) XXX_Size() int { - return xxx_messageInfo_DeleteDepartmentReq.Size(m) -} -func (m *DeleteDepartmentReq) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteDepartmentReq.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteDepartmentReq proto.InternalMessageInfo - -func (m *DeleteDepartmentReq) GetDepartmentID() string { - if m != nil { - return m.DepartmentID - } - return "" -} - -func (m *DeleteDepartmentReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -func (m *DeleteDepartmentReq) GetOpUserID() string { - if m != nil { - return m.OpUserID - } - return "" -} - -type DeleteDepartmentResp struct { - ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DeleteDepartmentResp) Reset() { *m = DeleteDepartmentResp{} } -func (m *DeleteDepartmentResp) String() string { return proto.CompactTextString(m) } -func (*DeleteDepartmentResp) ProtoMessage() {} -func (*DeleteDepartmentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{7} -} -func (m *DeleteDepartmentResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteDepartmentResp.Unmarshal(m, b) -} -func (m *DeleteDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteDepartmentResp.Marshal(b, m, deterministic) -} -func (dst *DeleteDepartmentResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteDepartmentResp.Merge(dst, src) -} -func (m *DeleteDepartmentResp) XXX_Size() int { - return xxx_messageInfo_DeleteDepartmentResp.Size(m) -} -func (m *DeleteDepartmentResp) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteDepartmentResp.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteDepartmentResp proto.InternalMessageInfo - -func (m *DeleteDepartmentResp) GetErrCode() int32 { - if m != nil { - return m.ErrCode - } - return 0 -} - -func (m *DeleteDepartmentResp) GetErrMsg() string { - if m != nil { - return m.ErrMsg - } - return "" -} - -type CreateOrganizationUserReq struct { - OrganizationUser *sdk_ws.OrganizationUser `protobuf:"bytes,1,opt,name=organizationUser" json:"organizationUser,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` - OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CreateOrganizationUserReq) Reset() { *m = CreateOrganizationUserReq{} } -func (m *CreateOrganizationUserReq) String() string { return proto.CompactTextString(m) } -func (*CreateOrganizationUserReq) ProtoMessage() {} -func (*CreateOrganizationUserReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{8} -} -func (m *CreateOrganizationUserReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateOrganizationUserReq.Unmarshal(m, b) -} -func (m *CreateOrganizationUserReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateOrganizationUserReq.Marshal(b, m, deterministic) -} -func (dst *CreateOrganizationUserReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateOrganizationUserReq.Merge(dst, src) -} -func (m *CreateOrganizationUserReq) XXX_Size() int { - return xxx_messageInfo_CreateOrganizationUserReq.Size(m) -} -func (m *CreateOrganizationUserReq) XXX_DiscardUnknown() { - xxx_messageInfo_CreateOrganizationUserReq.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateOrganizationUserReq proto.InternalMessageInfo - -func (m *CreateOrganizationUserReq) GetOrganizationUser() *sdk_ws.OrganizationUser { - if m != nil { - return m.OrganizationUser - } - return nil -} - -func (m *CreateOrganizationUserReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -func (m *CreateOrganizationUserReq) GetOpUserID() string { - if m != nil { - return m.OpUserID - } - return "" -} - -type CreateOrganizationUserResp struct { - ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CreateOrganizationUserResp) Reset() { *m = CreateOrganizationUserResp{} } -func (m *CreateOrganizationUserResp) String() string { return proto.CompactTextString(m) } -func (*CreateOrganizationUserResp) ProtoMessage() {} -func (*CreateOrganizationUserResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{9} -} -func (m *CreateOrganizationUserResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateOrganizationUserResp.Unmarshal(m, b) -} -func (m *CreateOrganizationUserResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateOrganizationUserResp.Marshal(b, m, deterministic) -} -func (dst *CreateOrganizationUserResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateOrganizationUserResp.Merge(dst, src) -} -func (m *CreateOrganizationUserResp) XXX_Size() int { - return xxx_messageInfo_CreateOrganizationUserResp.Size(m) -} -func (m *CreateOrganizationUserResp) XXX_DiscardUnknown() { - xxx_messageInfo_CreateOrganizationUserResp.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateOrganizationUserResp proto.InternalMessageInfo - -func (m *CreateOrganizationUserResp) GetErrCode() int32 { - if m != nil { - return m.ErrCode - } - return 0 -} - -func (m *CreateOrganizationUserResp) GetErrMsg() string { - if m != nil { - return m.ErrMsg - } - return "" -} - -type UpdateOrganizationUserReq struct { - OrganizationUser *sdk_ws.OrganizationUser `protobuf:"bytes,1,opt,name=organizationUser" json:"organizationUser,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` - OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *UpdateOrganizationUserReq) Reset() { *m = UpdateOrganizationUserReq{} } -func (m *UpdateOrganizationUserReq) String() string { return proto.CompactTextString(m) } -func (*UpdateOrganizationUserReq) ProtoMessage() {} -func (*UpdateOrganizationUserReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{10} -} -func (m *UpdateOrganizationUserReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateOrganizationUserReq.Unmarshal(m, b) -} -func (m *UpdateOrganizationUserReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateOrganizationUserReq.Marshal(b, m, deterministic) -} -func (dst *UpdateOrganizationUserReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateOrganizationUserReq.Merge(dst, src) -} -func (m *UpdateOrganizationUserReq) XXX_Size() int { - return xxx_messageInfo_UpdateOrganizationUserReq.Size(m) -} -func (m *UpdateOrganizationUserReq) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateOrganizationUserReq.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateOrganizationUserReq proto.InternalMessageInfo - -func (m *UpdateOrganizationUserReq) GetOrganizationUser() *sdk_ws.OrganizationUser { - if m != nil { - return m.OrganizationUser - } - return nil -} - -func (m *UpdateOrganizationUserReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -func (m *UpdateOrganizationUserReq) GetOpUserID() string { - if m != nil { - return m.OpUserID - } - return "" -} - -type UpdateOrganizationUserResp struct { - ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *UpdateOrganizationUserResp) Reset() { *m = UpdateOrganizationUserResp{} } -func (m *UpdateOrganizationUserResp) String() string { return proto.CompactTextString(m) } -func (*UpdateOrganizationUserResp) ProtoMessage() {} -func (*UpdateOrganizationUserResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{11} -} -func (m *UpdateOrganizationUserResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateOrganizationUserResp.Unmarshal(m, b) -} -func (m *UpdateOrganizationUserResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateOrganizationUserResp.Marshal(b, m, deterministic) -} -func (dst *UpdateOrganizationUserResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateOrganizationUserResp.Merge(dst, src) -} -func (m *UpdateOrganizationUserResp) XXX_Size() int { - return xxx_messageInfo_UpdateOrganizationUserResp.Size(m) -} -func (m *UpdateOrganizationUserResp) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateOrganizationUserResp.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateOrganizationUserResp proto.InternalMessageInfo - -func (m *UpdateOrganizationUserResp) GetErrCode() int32 { - if m != nil { - return m.ErrCode - } - return 0 -} - -func (m *UpdateOrganizationUserResp) GetErrMsg() string { - if m != nil { - return m.ErrMsg - } - return "" -} - -type CreateDepartmentMemberReq struct { - DepartmentMember *sdk_ws.DepartmentMember `protobuf:"bytes,1,opt,name=departmentMember" json:"departmentMember,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` - OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CreateDepartmentMemberReq) Reset() { *m = CreateDepartmentMemberReq{} } -func (m *CreateDepartmentMemberReq) String() string { return proto.CompactTextString(m) } -func (*CreateDepartmentMemberReq) ProtoMessage() {} -func (*CreateDepartmentMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{12} -} -func (m *CreateDepartmentMemberReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateDepartmentMemberReq.Unmarshal(m, b) -} -func (m *CreateDepartmentMemberReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateDepartmentMemberReq.Marshal(b, m, deterministic) -} -func (dst *CreateDepartmentMemberReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateDepartmentMemberReq.Merge(dst, src) -} -func (m *CreateDepartmentMemberReq) XXX_Size() int { - return xxx_messageInfo_CreateDepartmentMemberReq.Size(m) -} -func (m *CreateDepartmentMemberReq) XXX_DiscardUnknown() { - xxx_messageInfo_CreateDepartmentMemberReq.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateDepartmentMemberReq proto.InternalMessageInfo - -func (m *CreateDepartmentMemberReq) GetDepartmentMember() *sdk_ws.DepartmentMember { - if m != nil { - return m.DepartmentMember - } - return nil -} - -func (m *CreateDepartmentMemberReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -func (m *CreateDepartmentMemberReq) GetOpUserID() string { - if m != nil { - return m.OpUserID - } - return "" -} - -type CreateDepartmentMemberResp struct { - ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CreateDepartmentMemberResp) Reset() { *m = CreateDepartmentMemberResp{} } -func (m *CreateDepartmentMemberResp) String() string { return proto.CompactTextString(m) } -func (*CreateDepartmentMemberResp) ProtoMessage() {} -func (*CreateDepartmentMemberResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{13} -} -func (m *CreateDepartmentMemberResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateDepartmentMemberResp.Unmarshal(m, b) -} -func (m *CreateDepartmentMemberResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateDepartmentMemberResp.Marshal(b, m, deterministic) -} -func (dst *CreateDepartmentMemberResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateDepartmentMemberResp.Merge(dst, src) -} -func (m *CreateDepartmentMemberResp) XXX_Size() int { - return xxx_messageInfo_CreateDepartmentMemberResp.Size(m) -} -func (m *CreateDepartmentMemberResp) XXX_DiscardUnknown() { - xxx_messageInfo_CreateDepartmentMemberResp.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateDepartmentMemberResp proto.InternalMessageInfo - -func (m *CreateDepartmentMemberResp) GetErrCode() int32 { - if m != nil { - return m.ErrCode - } - return 0 -} - -func (m *CreateDepartmentMemberResp) GetErrMsg() string { - if m != nil { - return m.ErrMsg - } - return "" -} - -type GetUserInDepartmentReq struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` - OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetUserInDepartmentReq) Reset() { *m = GetUserInDepartmentReq{} } -func (m *GetUserInDepartmentReq) String() string { return proto.CompactTextString(m) } -func (*GetUserInDepartmentReq) ProtoMessage() {} -func (*GetUserInDepartmentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{14} -} -func (m *GetUserInDepartmentReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetUserInDepartmentReq.Unmarshal(m, b) -} -func (m *GetUserInDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetUserInDepartmentReq.Marshal(b, m, deterministic) -} -func (dst *GetUserInDepartmentReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetUserInDepartmentReq.Merge(dst, src) -} -func (m *GetUserInDepartmentReq) XXX_Size() int { - return xxx_messageInfo_GetUserInDepartmentReq.Size(m) -} -func (m *GetUserInDepartmentReq) XXX_DiscardUnknown() { - xxx_messageInfo_GetUserInDepartmentReq.DiscardUnknown(m) -} - -var xxx_messageInfo_GetUserInDepartmentReq proto.InternalMessageInfo - -func (m *GetUserInDepartmentReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *GetUserInDepartmentReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -func (m *GetUserInDepartmentReq) GetOpUserID() string { - if m != nil { - return m.OpUserID - } - return "" -} - -type GetUserInDepartmentResp struct { - ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` - UserInDepartment *sdk_ws.UserInDepartment `protobuf:"bytes,3,opt,name=userInDepartment" json:"userInDepartment,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetUserInDepartmentResp) Reset() { *m = GetUserInDepartmentResp{} } -func (m *GetUserInDepartmentResp) String() string { return proto.CompactTextString(m) } -func (*GetUserInDepartmentResp) ProtoMessage() {} -func (*GetUserInDepartmentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{15} -} -func (m *GetUserInDepartmentResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetUserInDepartmentResp.Unmarshal(m, b) -} -func (m *GetUserInDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetUserInDepartmentResp.Marshal(b, m, deterministic) -} -func (dst *GetUserInDepartmentResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetUserInDepartmentResp.Merge(dst, src) -} -func (m *GetUserInDepartmentResp) XXX_Size() int { - return xxx_messageInfo_GetUserInDepartmentResp.Size(m) -} -func (m *GetUserInDepartmentResp) XXX_DiscardUnknown() { - xxx_messageInfo_GetUserInDepartmentResp.DiscardUnknown(m) -} - -var xxx_messageInfo_GetUserInDepartmentResp proto.InternalMessageInfo - -func (m *GetUserInDepartmentResp) GetErrCode() int32 { - if m != nil { - return m.ErrCode - } - return 0 -} - -func (m *GetUserInDepartmentResp) GetErrMsg() string { - if m != nil { - return m.ErrMsg - } - return "" -} - -func (m *GetUserInDepartmentResp) GetUserInDepartment() *sdk_ws.UserInDepartment { - if m != nil { - return m.UserInDepartment - } - return nil -} - -type UpdateUserInDepartmentReq struct { - DepartmentMember *sdk_ws.DepartmentMember `protobuf:"bytes,1,opt,name=departmentMember" json:"departmentMember,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` - OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *UpdateUserInDepartmentReq) Reset() { *m = UpdateUserInDepartmentReq{} } -func (m *UpdateUserInDepartmentReq) String() string { return proto.CompactTextString(m) } -func (*UpdateUserInDepartmentReq) ProtoMessage() {} -func (*UpdateUserInDepartmentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{16} -} -func (m *UpdateUserInDepartmentReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateUserInDepartmentReq.Unmarshal(m, b) -} -func (m *UpdateUserInDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateUserInDepartmentReq.Marshal(b, m, deterministic) -} -func (dst *UpdateUserInDepartmentReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateUserInDepartmentReq.Merge(dst, src) -} -func (m *UpdateUserInDepartmentReq) XXX_Size() int { - return xxx_messageInfo_UpdateUserInDepartmentReq.Size(m) -} -func (m *UpdateUserInDepartmentReq) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateUserInDepartmentReq.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateUserInDepartmentReq proto.InternalMessageInfo - -func (m *UpdateUserInDepartmentReq) GetDepartmentMember() *sdk_ws.DepartmentMember { - if m != nil { - return m.DepartmentMember - } - return nil -} - -func (m *UpdateUserInDepartmentReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -func (m *UpdateUserInDepartmentReq) GetOpUserID() string { - if m != nil { - return m.OpUserID - } - return "" -} - -type UpdateUserInDepartmentResp struct { - ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *UpdateUserInDepartmentResp) Reset() { *m = UpdateUserInDepartmentResp{} } -func (m *UpdateUserInDepartmentResp) String() string { return proto.CompactTextString(m) } -func (*UpdateUserInDepartmentResp) ProtoMessage() {} -func (*UpdateUserInDepartmentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{17} -} -func (m *UpdateUserInDepartmentResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateUserInDepartmentResp.Unmarshal(m, b) -} -func (m *UpdateUserInDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateUserInDepartmentResp.Marshal(b, m, deterministic) -} -func (dst *UpdateUserInDepartmentResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateUserInDepartmentResp.Merge(dst, src) -} -func (m *UpdateUserInDepartmentResp) XXX_Size() int { - return xxx_messageInfo_UpdateUserInDepartmentResp.Size(m) -} -func (m *UpdateUserInDepartmentResp) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateUserInDepartmentResp.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateUserInDepartmentResp proto.InternalMessageInfo - -func (m *UpdateUserInDepartmentResp) GetErrCode() int32 { - if m != nil { - return m.ErrCode - } - return 0 -} - -func (m *UpdateUserInDepartmentResp) GetErrMsg() string { - if m != nil { - return m.ErrMsg - } - return "" -} - -type DeleteUserInDepartmentReq struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` - OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` - DepartmentID string `protobuf:"bytes,4,opt,name=departmentID" json:"departmentID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DeleteUserInDepartmentReq) Reset() { *m = DeleteUserInDepartmentReq{} } -func (m *DeleteUserInDepartmentReq) String() string { return proto.CompactTextString(m) } -func (*DeleteUserInDepartmentReq) ProtoMessage() {} -func (*DeleteUserInDepartmentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{18} -} -func (m *DeleteUserInDepartmentReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteUserInDepartmentReq.Unmarshal(m, b) -} -func (m *DeleteUserInDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteUserInDepartmentReq.Marshal(b, m, deterministic) -} -func (dst *DeleteUserInDepartmentReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteUserInDepartmentReq.Merge(dst, src) -} -func (m *DeleteUserInDepartmentReq) XXX_Size() int { - return xxx_messageInfo_DeleteUserInDepartmentReq.Size(m) -} -func (m *DeleteUserInDepartmentReq) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteUserInDepartmentReq.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteUserInDepartmentReq proto.InternalMessageInfo - -func (m *DeleteUserInDepartmentReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *DeleteUserInDepartmentReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -func (m *DeleteUserInDepartmentReq) GetOpUserID() string { - if m != nil { - return m.OpUserID - } - return "" -} - -func (m *DeleteUserInDepartmentReq) GetDepartmentID() string { - if m != nil { - return m.DepartmentID - } - return "" -} - -type DeleteUserInDepartmentResp struct { - ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DeleteUserInDepartmentResp) Reset() { *m = DeleteUserInDepartmentResp{} } -func (m *DeleteUserInDepartmentResp) String() string { return proto.CompactTextString(m) } -func (*DeleteUserInDepartmentResp) ProtoMessage() {} -func (*DeleteUserInDepartmentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{19} -} -func (m *DeleteUserInDepartmentResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteUserInDepartmentResp.Unmarshal(m, b) -} -func (m *DeleteUserInDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteUserInDepartmentResp.Marshal(b, m, deterministic) -} -func (dst *DeleteUserInDepartmentResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteUserInDepartmentResp.Merge(dst, src) -} -func (m *DeleteUserInDepartmentResp) XXX_Size() int { - return xxx_messageInfo_DeleteUserInDepartmentResp.Size(m) -} -func (m *DeleteUserInDepartmentResp) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteUserInDepartmentResp.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteUserInDepartmentResp proto.InternalMessageInfo - -func (m *DeleteUserInDepartmentResp) GetErrCode() int32 { - if m != nil { - return m.ErrCode - } - return 0 -} - -func (m *DeleteUserInDepartmentResp) GetErrMsg() string { - if m != nil { - return m.ErrMsg - } - return "" -} - -type DeleteOrganizationUserReq struct { - UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` - OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DeleteOrganizationUserReq) Reset() { *m = DeleteOrganizationUserReq{} } -func (m *DeleteOrganizationUserReq) String() string { return proto.CompactTextString(m) } -func (*DeleteOrganizationUserReq) ProtoMessage() {} -func (*DeleteOrganizationUserReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{20} -} -func (m *DeleteOrganizationUserReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteOrganizationUserReq.Unmarshal(m, b) -} -func (m *DeleteOrganizationUserReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteOrganizationUserReq.Marshal(b, m, deterministic) -} -func (dst *DeleteOrganizationUserReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteOrganizationUserReq.Merge(dst, src) -} -func (m *DeleteOrganizationUserReq) XXX_Size() int { - return xxx_messageInfo_DeleteOrganizationUserReq.Size(m) -} -func (m *DeleteOrganizationUserReq) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteOrganizationUserReq.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteOrganizationUserReq proto.InternalMessageInfo - -func (m *DeleteOrganizationUserReq) GetUserID() string { - if m != nil { - return m.UserID - } - return "" -} - -func (m *DeleteOrganizationUserReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -func (m *DeleteOrganizationUserReq) GetOpUserID() string { - if m != nil { - return m.OpUserID - } - return "" -} - -type DeleteOrganizationUserResp struct { - ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DeleteOrganizationUserResp) Reset() { *m = DeleteOrganizationUserResp{} } -func (m *DeleteOrganizationUserResp) String() string { return proto.CompactTextString(m) } -func (*DeleteOrganizationUserResp) ProtoMessage() {} -func (*DeleteOrganizationUserResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{21} -} -func (m *DeleteOrganizationUserResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteOrganizationUserResp.Unmarshal(m, b) -} -func (m *DeleteOrganizationUserResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteOrganizationUserResp.Marshal(b, m, deterministic) -} -func (dst *DeleteOrganizationUserResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteOrganizationUserResp.Merge(dst, src) -} -func (m *DeleteOrganizationUserResp) XXX_Size() int { - return xxx_messageInfo_DeleteOrganizationUserResp.Size(m) -} -func (m *DeleteOrganizationUserResp) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteOrganizationUserResp.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteOrganizationUserResp proto.InternalMessageInfo - -func (m *DeleteOrganizationUserResp) GetErrCode() int32 { - if m != nil { - return m.ErrCode - } - return 0 -} - -func (m *DeleteOrganizationUserResp) GetErrMsg() string { - if m != nil { - return m.ErrMsg - } - return "" -} - -type GetDepartmentMemberReq struct { - DepartmentID string `protobuf:"bytes,1,opt,name=departmentID" json:"departmentID,omitempty"` - OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` - OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetDepartmentMemberReq) Reset() { *m = GetDepartmentMemberReq{} } -func (m *GetDepartmentMemberReq) String() string { return proto.CompactTextString(m) } -func (*GetDepartmentMemberReq) ProtoMessage() {} -func (*GetDepartmentMemberReq) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{22} -} -func (m *GetDepartmentMemberReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetDepartmentMemberReq.Unmarshal(m, b) -} -func (m *GetDepartmentMemberReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetDepartmentMemberReq.Marshal(b, m, deterministic) -} -func (dst *GetDepartmentMemberReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetDepartmentMemberReq.Merge(dst, src) -} -func (m *GetDepartmentMemberReq) XXX_Size() int { - return xxx_messageInfo_GetDepartmentMemberReq.Size(m) -} -func (m *GetDepartmentMemberReq) XXX_DiscardUnknown() { - xxx_messageInfo_GetDepartmentMemberReq.DiscardUnknown(m) -} - -var xxx_messageInfo_GetDepartmentMemberReq proto.InternalMessageInfo - -func (m *GetDepartmentMemberReq) GetDepartmentID() string { - if m != nil { - return m.DepartmentID - } - return "" -} - -func (m *GetDepartmentMemberReq) GetOperationID() string { - if m != nil { - return m.OperationID - } - return "" -} - -func (m *GetDepartmentMemberReq) GetOpUserID() string { - if m != nil { - return m.OpUserID - } - return "" -} - -type GetDepartmentMemberResp struct { - ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` - ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` - UserDepartmentMemberList []*sdk_ws.UserDepartmentMember `protobuf:"bytes,3,rep,name=userDepartmentMemberList" json:"userDepartmentMemberList,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetDepartmentMemberResp) Reset() { *m = GetDepartmentMemberResp{} } -func (m *GetDepartmentMemberResp) String() string { return proto.CompactTextString(m) } -func (*GetDepartmentMemberResp) ProtoMessage() {} -func (*GetDepartmentMemberResp) Descriptor() ([]byte, []int) { - return fileDescriptor_organization_f9b83a1db54ed9cf, []int{23} -} -func (m *GetDepartmentMemberResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetDepartmentMemberResp.Unmarshal(m, b) -} -func (m *GetDepartmentMemberResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetDepartmentMemberResp.Marshal(b, m, deterministic) -} -func (dst *GetDepartmentMemberResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetDepartmentMemberResp.Merge(dst, src) -} -func (m *GetDepartmentMemberResp) XXX_Size() int { - return xxx_messageInfo_GetDepartmentMemberResp.Size(m) -} -func (m *GetDepartmentMemberResp) XXX_DiscardUnknown() { - xxx_messageInfo_GetDepartmentMemberResp.DiscardUnknown(m) -} - -var xxx_messageInfo_GetDepartmentMemberResp proto.InternalMessageInfo - -func (m *GetDepartmentMemberResp) GetErrCode() int32 { - if m != nil { - return m.ErrCode - } - return 0 -} - -func (m *GetDepartmentMemberResp) GetErrMsg() string { - if m != nil { - return m.ErrMsg - } - return "" -} - -func (m *GetDepartmentMemberResp) GetUserDepartmentMemberList() []*sdk_ws.UserDepartmentMember { - if m != nil { - return m.UserDepartmentMemberList - } - return nil -} - -func init() { - proto.RegisterType((*CreateDepartmentReq)(nil), "organization.CreateDepartmentReq") - proto.RegisterType((*CreateDepartmentResp)(nil), "organization.CreateDepartmentResp") - proto.RegisterType((*UpdateDepartmentReq)(nil), "organization.UpdateDepartmentReq") - proto.RegisterType((*UpdateDepartmentResp)(nil), "organization.UpdateDepartmentResp") - proto.RegisterType((*GetSubDepartmentReq)(nil), "organization.GetSubDepartmentReq") - proto.RegisterType((*GetSubDepartmentResp)(nil), "organization.GetSubDepartmentResp") - proto.RegisterType((*DeleteDepartmentReq)(nil), "organization.DeleteDepartmentReq") - proto.RegisterType((*DeleteDepartmentResp)(nil), "organization.DeleteDepartmentResp") - proto.RegisterType((*CreateOrganizationUserReq)(nil), "organization.CreateOrganizationUserReq") - proto.RegisterType((*CreateOrganizationUserResp)(nil), "organization.CreateOrganizationUserResp") - proto.RegisterType((*UpdateOrganizationUserReq)(nil), "organization.UpdateOrganizationUserReq") - proto.RegisterType((*UpdateOrganizationUserResp)(nil), "organization.UpdateOrganizationUserResp") - proto.RegisterType((*CreateDepartmentMemberReq)(nil), "organization.CreateDepartmentMemberReq") - proto.RegisterType((*CreateDepartmentMemberResp)(nil), "organization.CreateDepartmentMemberResp") - proto.RegisterType((*GetUserInDepartmentReq)(nil), "organization.GetUserInDepartmentReq") - proto.RegisterType((*GetUserInDepartmentResp)(nil), "organization.GetUserInDepartmentResp") - proto.RegisterType((*UpdateUserInDepartmentReq)(nil), "organization.UpdateUserInDepartmentReq") - proto.RegisterType((*UpdateUserInDepartmentResp)(nil), "organization.UpdateUserInDepartmentResp") - proto.RegisterType((*DeleteUserInDepartmentReq)(nil), "organization.DeleteUserInDepartmentReq") - proto.RegisterType((*DeleteUserInDepartmentResp)(nil), "organization.DeleteUserInDepartmentResp") - proto.RegisterType((*DeleteOrganizationUserReq)(nil), "organization.DeleteOrganizationUserReq") - proto.RegisterType((*DeleteOrganizationUserResp)(nil), "organization.DeleteOrganizationUserResp") - proto.RegisterType((*GetDepartmentMemberReq)(nil), "organization.GetDepartmentMemberReq") - proto.RegisterType((*GetDepartmentMemberResp)(nil), "organization.GetDepartmentMemberResp") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Organization service - -type OrganizationClient interface { - CreateDepartment(ctx context.Context, in *CreateDepartmentReq, opts ...grpc.CallOption) (*CreateDepartmentResp, error) - UpdateDepartment(ctx context.Context, in *UpdateDepartmentReq, opts ...grpc.CallOption) (*UpdateDepartmentResp, error) - GetSubDepartment(ctx context.Context, in *GetSubDepartmentReq, opts ...grpc.CallOption) (*GetSubDepartmentResp, error) - DeleteDepartment(ctx context.Context, in *DeleteDepartmentReq, opts ...grpc.CallOption) (*DeleteDepartmentResp, error) - CreateOrganizationUser(ctx context.Context, in *CreateOrganizationUserReq, opts ...grpc.CallOption) (*CreateOrganizationUserResp, error) - UpdateOrganizationUser(ctx context.Context, in *UpdateOrganizationUserReq, opts ...grpc.CallOption) (*UpdateOrganizationUserResp, error) - DeleteOrganizationUser(ctx context.Context, in *DeleteOrganizationUserReq, opts ...grpc.CallOption) (*DeleteOrganizationUserResp, error) - CreateDepartmentMember(ctx context.Context, in *CreateDepartmentMemberReq, opts ...grpc.CallOption) (*CreateDepartmentMemberResp, error) - GetUserInDepartment(ctx context.Context, in *GetUserInDepartmentReq, opts ...grpc.CallOption) (*GetUserInDepartmentResp, error) - DeleteUserInDepartment(ctx context.Context, in *DeleteUserInDepartmentReq, opts ...grpc.CallOption) (*DeleteUserInDepartmentResp, error) - UpdateUserInDepartment(ctx context.Context, in *UpdateUserInDepartmentReq, opts ...grpc.CallOption) (*UpdateUserInDepartmentResp, error) - GetDepartmentMember(ctx context.Context, in *GetDepartmentMemberReq, opts ...grpc.CallOption) (*GetDepartmentMemberResp, error) -} - -type organizationClient struct { - cc *grpc.ClientConn -} - -func NewOrganizationClient(cc *grpc.ClientConn) OrganizationClient { - return &organizationClient{cc} -} - -func (c *organizationClient) CreateDepartment(ctx context.Context, in *CreateDepartmentReq, opts ...grpc.CallOption) (*CreateDepartmentResp, error) { - out := new(CreateDepartmentResp) - err := grpc.Invoke(ctx, "/organization.organization/CreateDepartment", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationClient) UpdateDepartment(ctx context.Context, in *UpdateDepartmentReq, opts ...grpc.CallOption) (*UpdateDepartmentResp, error) { - out := new(UpdateDepartmentResp) - err := grpc.Invoke(ctx, "/organization.organization/UpdateDepartment", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationClient) GetSubDepartment(ctx context.Context, in *GetSubDepartmentReq, opts ...grpc.CallOption) (*GetSubDepartmentResp, error) { - out := new(GetSubDepartmentResp) - err := grpc.Invoke(ctx, "/organization.organization/GetSubDepartment", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationClient) DeleteDepartment(ctx context.Context, in *DeleteDepartmentReq, opts ...grpc.CallOption) (*DeleteDepartmentResp, error) { - out := new(DeleteDepartmentResp) - err := grpc.Invoke(ctx, "/organization.organization/DeleteDepartment", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationClient) CreateOrganizationUser(ctx context.Context, in *CreateOrganizationUserReq, opts ...grpc.CallOption) (*CreateOrganizationUserResp, error) { - out := new(CreateOrganizationUserResp) - err := grpc.Invoke(ctx, "/organization.organization/CreateOrganizationUser", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationClient) UpdateOrganizationUser(ctx context.Context, in *UpdateOrganizationUserReq, opts ...grpc.CallOption) (*UpdateOrganizationUserResp, error) { - out := new(UpdateOrganizationUserResp) - err := grpc.Invoke(ctx, "/organization.organization/UpdateOrganizationUser", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationClient) DeleteOrganizationUser(ctx context.Context, in *DeleteOrganizationUserReq, opts ...grpc.CallOption) (*DeleteOrganizationUserResp, error) { - out := new(DeleteOrganizationUserResp) - err := grpc.Invoke(ctx, "/organization.organization/DeleteOrganizationUser", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationClient) CreateDepartmentMember(ctx context.Context, in *CreateDepartmentMemberReq, opts ...grpc.CallOption) (*CreateDepartmentMemberResp, error) { - out := new(CreateDepartmentMemberResp) - err := grpc.Invoke(ctx, "/organization.organization/CreateDepartmentMember", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationClient) GetUserInDepartment(ctx context.Context, in *GetUserInDepartmentReq, opts ...grpc.CallOption) (*GetUserInDepartmentResp, error) { - out := new(GetUserInDepartmentResp) - err := grpc.Invoke(ctx, "/organization.organization/GetUserInDepartment", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationClient) DeleteUserInDepartment(ctx context.Context, in *DeleteUserInDepartmentReq, opts ...grpc.CallOption) (*DeleteUserInDepartmentResp, error) { - out := new(DeleteUserInDepartmentResp) - err := grpc.Invoke(ctx, "/organization.organization/DeleteUserInDepartment", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationClient) UpdateUserInDepartment(ctx context.Context, in *UpdateUserInDepartmentReq, opts ...grpc.CallOption) (*UpdateUserInDepartmentResp, error) { - out := new(UpdateUserInDepartmentResp) - err := grpc.Invoke(ctx, "/organization.organization/UpdateUserInDepartment", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *organizationClient) GetDepartmentMember(ctx context.Context, in *GetDepartmentMemberReq, opts ...grpc.CallOption) (*GetDepartmentMemberResp, error) { - out := new(GetDepartmentMemberResp) - err := grpc.Invoke(ctx, "/organization.organization/GetDepartmentMember", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Organization service - -type OrganizationServer interface { - CreateDepartment(context.Context, *CreateDepartmentReq) (*CreateDepartmentResp, error) - UpdateDepartment(context.Context, *UpdateDepartmentReq) (*UpdateDepartmentResp, error) - GetSubDepartment(context.Context, *GetSubDepartmentReq) (*GetSubDepartmentResp, error) - DeleteDepartment(context.Context, *DeleteDepartmentReq) (*DeleteDepartmentResp, error) - CreateOrganizationUser(context.Context, *CreateOrganizationUserReq) (*CreateOrganizationUserResp, error) - UpdateOrganizationUser(context.Context, *UpdateOrganizationUserReq) (*UpdateOrganizationUserResp, error) - DeleteOrganizationUser(context.Context, *DeleteOrganizationUserReq) (*DeleteOrganizationUserResp, error) - CreateDepartmentMember(context.Context, *CreateDepartmentMemberReq) (*CreateDepartmentMemberResp, error) - GetUserInDepartment(context.Context, *GetUserInDepartmentReq) (*GetUserInDepartmentResp, error) - DeleteUserInDepartment(context.Context, *DeleteUserInDepartmentReq) (*DeleteUserInDepartmentResp, error) - UpdateUserInDepartment(context.Context, *UpdateUserInDepartmentReq) (*UpdateUserInDepartmentResp, error) - GetDepartmentMember(context.Context, *GetDepartmentMemberReq) (*GetDepartmentMemberResp, error) -} - -func RegisterOrganizationServer(s *grpc.Server, srv OrganizationServer) { - s.RegisterService(&_Organization_serviceDesc, srv) -} - -func _Organization_CreateDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateDepartmentReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationServer).CreateDepartment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/organization.organization/CreateDepartment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationServer).CreateDepartment(ctx, req.(*CreateDepartmentReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _Organization_UpdateDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateDepartmentReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationServer).UpdateDepartment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/organization.organization/UpdateDepartment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationServer).UpdateDepartment(ctx, req.(*UpdateDepartmentReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _Organization_GetSubDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetSubDepartmentReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationServer).GetSubDepartment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/organization.organization/GetSubDepartment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationServer).GetSubDepartment(ctx, req.(*GetSubDepartmentReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _Organization_DeleteDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteDepartmentReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationServer).DeleteDepartment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/organization.organization/DeleteDepartment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationServer).DeleteDepartment(ctx, req.(*DeleteDepartmentReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _Organization_CreateOrganizationUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateOrganizationUserReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationServer).CreateOrganizationUser(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/organization.organization/CreateOrganizationUser", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationServer).CreateOrganizationUser(ctx, req.(*CreateOrganizationUserReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _Organization_UpdateOrganizationUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateOrganizationUserReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationServer).UpdateOrganizationUser(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/organization.organization/UpdateOrganizationUser", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationServer).UpdateOrganizationUser(ctx, req.(*UpdateOrganizationUserReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _Organization_DeleteOrganizationUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteOrganizationUserReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationServer).DeleteOrganizationUser(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/organization.organization/DeleteOrganizationUser", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationServer).DeleteOrganizationUser(ctx, req.(*DeleteOrganizationUserReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _Organization_CreateDepartmentMember_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateDepartmentMemberReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationServer).CreateDepartmentMember(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/organization.organization/CreateDepartmentMember", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationServer).CreateDepartmentMember(ctx, req.(*CreateDepartmentMemberReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _Organization_GetUserInDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetUserInDepartmentReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationServer).GetUserInDepartment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/organization.organization/GetUserInDepartment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationServer).GetUserInDepartment(ctx, req.(*GetUserInDepartmentReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _Organization_DeleteUserInDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteUserInDepartmentReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationServer).DeleteUserInDepartment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/organization.organization/DeleteUserInDepartment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationServer).DeleteUserInDepartment(ctx, req.(*DeleteUserInDepartmentReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _Organization_UpdateUserInDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateUserInDepartmentReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationServer).UpdateUserInDepartment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/organization.organization/UpdateUserInDepartment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationServer).UpdateUserInDepartment(ctx, req.(*UpdateUserInDepartmentReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _Organization_GetDepartmentMember_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetDepartmentMemberReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrganizationServer).GetDepartmentMember(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/organization.organization/GetDepartmentMember", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrganizationServer).GetDepartmentMember(ctx, req.(*GetDepartmentMemberReq)) - } - return interceptor(ctx, in, info, handler) -} - -var _Organization_serviceDesc = grpc.ServiceDesc{ - ServiceName: "organization.organization", - HandlerType: (*OrganizationServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateDepartment", - Handler: _Organization_CreateDepartment_Handler, - }, - { - MethodName: "UpdateDepartment", - Handler: _Organization_UpdateDepartment_Handler, - }, - { - MethodName: "GetSubDepartment", - Handler: _Organization_GetSubDepartment_Handler, - }, - { - MethodName: "DeleteDepartment", - Handler: _Organization_DeleteDepartment_Handler, - }, - { - MethodName: "CreateOrganizationUser", - Handler: _Organization_CreateOrganizationUser_Handler, - }, - { - MethodName: "UpdateOrganizationUser", - Handler: _Organization_UpdateOrganizationUser_Handler, - }, - { - MethodName: "DeleteOrganizationUser", - Handler: _Organization_DeleteOrganizationUser_Handler, - }, - { - MethodName: "CreateDepartmentMember", - Handler: _Organization_CreateDepartmentMember_Handler, - }, - { - MethodName: "GetUserInDepartment", - Handler: _Organization_GetUserInDepartment_Handler, - }, - { - MethodName: "DeleteUserInDepartment", - Handler: _Organization_DeleteUserInDepartment_Handler, - }, - { - MethodName: "UpdateUserInDepartment", - Handler: _Organization_UpdateUserInDepartment_Handler, - }, - { - MethodName: "GetDepartmentMember", - Handler: _Organization_GetDepartmentMember_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "organization/organization.proto", -} - -func init() { - proto.RegisterFile("organization/organization.proto", fileDescriptor_organization_f9b83a1db54ed9cf) -} - -var fileDescriptor_organization_f9b83a1db54ed9cf = []byte{ - // 715 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xdf, 0x6e, 0x12, 0x4f, - 0x14, 0xce, 0xfe, 0xf8, 0x59, 0xe5, 0xb4, 0x31, 0x64, 0x4a, 0x70, 0xbb, 0xa6, 0x91, 0xa2, 0x4d, - 0xb9, 0x82, 0xa4, 0x5e, 0x7a, 0x67, 0x31, 0x2d, 0x89, 0x48, 0x82, 0xe9, 0x05, 0xde, 0x90, 0x45, - 0x46, 0x42, 0x90, 0xdd, 0xe9, 0xcc, 0x22, 0x49, 0x5f, 0xc2, 0x2b, 0x6f, 0x8c, 0x4f, 0xe0, 0x95, - 0x8f, 0xe2, 0x23, 0x99, 0xdd, 0xa5, 0x38, 0x7b, 0xe6, 0x2c, 0xc5, 0x05, 0x4c, 0xbd, 0x9c, 0x61, - 0xe6, 0x7c, 0xe7, 0x7c, 0xe7, 0xcf, 0x7c, 0x2c, 0x3c, 0xf1, 0xe5, 0xd0, 0xf5, 0x46, 0xd7, 0x6e, - 0x30, 0xf2, 0xbd, 0xba, 0xbe, 0xa8, 0x09, 0xe9, 0x07, 0x3e, 0xdb, 0xd3, 0xf7, 0x9c, 0xa3, 0xb6, - 0xe0, 0x5e, 0xaf, 0xd9, 0xaa, 0x8b, 0xf1, 0xb0, 0x1e, 0x1d, 0xa8, 0xab, 0xc1, 0xb8, 0x37, 0x53, - 0xf5, 0x99, 0x8a, 0x2f, 0x54, 0xbe, 0x5a, 0xb0, 0x7f, 0x26, 0xb9, 0x1b, 0xf0, 0x06, 0x17, 0xae, - 0x0c, 0x26, 0xdc, 0x0b, 0x3a, 0xfc, 0x8a, 0xbd, 0x82, 0x87, 0x83, 0xc5, 0x46, 0xd3, 0xfb, 0xe0, - 0xdb, 0x56, 0xd9, 0xaa, 0xee, 0x9e, 0x1e, 0xd6, 0x14, 0x97, 0x9f, 0xb8, 0xec, 0xb9, 0x62, 0xd4, - 0x13, 0xae, 0x74, 0x27, 0xaa, 0xa6, 0xdd, 0x44, 0x97, 0x58, 0x19, 0x76, 0x7d, 0xc1, 0x65, 0xe4, - 0x4e, 0xb3, 0x61, 0xff, 0x57, 0xb6, 0xaa, 0xf9, 0x8e, 0xbe, 0xc5, 0x1c, 0x78, 0xe0, 0x8b, 0x4b, - 0xc5, 0x65, 0xb3, 0x61, 0xe7, 0xa2, 0x9f, 0x17, 0xeb, 0xca, 0x67, 0x0b, 0x8a, 0xa6, 0x73, 0x4a, - 0x30, 0x1b, 0xee, 0x73, 0x29, 0xcf, 0xfc, 0x01, 0x8f, 0xdc, 0xba, 0xd7, 0xb9, 0x59, 0xb2, 0x12, - 0xec, 0x70, 0x29, 0x5b, 0x6a, 0x38, 0xc7, 0x9a, 0xaf, 0x88, 0x78, 0x72, 0x19, 0xe2, 0x89, 0xe8, - 0xba, 0x14, 0x83, 0xbb, 0x49, 0xd7, 0x05, 0x14, 0x4d, 0xdf, 0xb2, 0xb0, 0x55, 0x99, 0xc1, 0xfe, - 0x39, 0x0f, 0xde, 0x4e, 0xfb, 0xc9, 0x28, 0x2b, 0xb0, 0xa7, 0x39, 0xdc, 0x88, 0xac, 0xe5, 0x3b, - 0x89, 0xbd, 0x0d, 0x64, 0xdc, 0x44, 0x5e, 0x3f, 0xe3, 0xaf, 0x47, 0x2a, 0xb0, 0x73, 0xe5, 0xdc, - 0x1f, 0xa5, 0x24, 0xbc, 0x14, 0x52, 0xd1, 0xe0, 0x1f, 0x39, 0x4e, 0xf8, 0xf6, 0xa9, 0xb8, 0x80, - 0xa2, 0x09, 0x9c, 0x29, 0x9b, 0xdf, 0x2d, 0x38, 0x88, 0xdb, 0xa8, 0xad, 0x4d, 0x87, 0x10, 0x26, - 0x8c, 0xa4, 0x0d, 0x05, 0x1f, 0x6d, 0xcf, 0x8b, 0xf7, 0x29, 0xc1, 0x94, 0x61, 0xc1, 0xb8, 0xbc, - 0x66, 0xd8, 0x6f, 0xc0, 0x49, 0xf3, 0x35, 0x73, 0xf0, 0x71, 0x57, 0xfc, 0x1b, 0xc1, 0xa7, 0xf9, - 0xba, 0x66, 0xe6, 0x7f, 0x17, 0x51, 0x8b, 0x4f, 0xfa, 0x8b, 0xe0, 0x07, 0x68, 0x7b, 0x49, 0xf0, - 0x86, 0x05, 0xe3, 0xf2, 0xa6, 0x32, 0x6f, 0xfa, 0x9a, 0x29, 0x78, 0x0f, 0x4a, 0xe7, 0x3c, 0x88, - 0x8c, 0x7b, 0xc9, 0xe6, 0x2d, 0xc1, 0xce, 0x34, 0xf6, 0x21, 0x6e, 0xdb, 0xf9, 0x6a, 0x4d, 0xff, - 0xbf, 0x59, 0xf0, 0x88, 0x04, 0xcc, 0x34, 0xbe, 0xda, 0x50, 0x98, 0x22, 0x4b, 0xf3, 0x27, 0x8b, - 0x4a, 0x8e, 0x01, 0x6a, 0x5c, 0xd6, 0x1a, 0x81, 0xa2, 0xe4, 0xee, 0xd5, 0x42, 0x9a, 0xaf, 0x99, - 0x6a, 0xe1, 0x8b, 0x05, 0x07, 0xf1, 0x34, 0xfd, 0x6b, 0xf5, 0x60, 0x3c, 0x11, 0xff, 0x9b, 0x4f, - 0x44, 0x18, 0x67, 0x9a, 0x5b, 0x99, 0xe2, 0xbc, 0xba, 0x09, 0x93, 0x1a, 0x76, 0xdb, 0x29, 0xfb, - 0x45, 0x08, 0x1b, 0x9a, 0x59, 0xd7, 0x51, 0xdb, 0x52, 0xf3, 0x6a, 0xfb, 0x6f, 0xee, 0x8f, 0xb8, - 0x85, 0x37, 0x33, 0x80, 0xd8, 0x7b, 0xb0, 0x43, 0x86, 0xb1, 0x35, 0x4d, 0x8b, 0x9c, 0xa4, 0xb4, - 0xb2, 0xe1, 0x40, 0xaa, 0xa1, 0xd3, 0x9f, 0x79, 0x48, 0x88, 0x7e, 0xd6, 0x85, 0x02, 0x1e, 0xa3, - 0xec, 0xa8, 0x96, 0xf8, 0xaf, 0x40, 0x08, 0x7e, 0xa7, 0x72, 0xdb, 0x11, 0x25, 0x42, 0xd3, 0x58, - 0x60, 0x62, 0xd3, 0x84, 0x38, 0xc6, 0xa6, 0x49, 0x8d, 0xda, 0x85, 0x02, 0xd6, 0x7d, 0xd8, 0x34, - 0xa1, 0x48, 0xb1, 0x69, 0x52, 0x3a, 0x76, 0xa1, 0x80, 0x85, 0x14, 0x36, 0x4d, 0x28, 0x3c, 0x6c, - 0x9a, 0xd4, 0x62, 0x63, 0x28, 0xd1, 0x62, 0x85, 0x9d, 0x50, 0x74, 0x12, 0x4d, 0xe9, 0x54, 0x57, - 0x3b, 0x18, 0x83, 0xd1, 0xe2, 0x00, 0x83, 0xa5, 0xca, 0x1d, 0x0c, 0xb6, 0x44, 0x6b, 0x8c, 0xa1, - 0x44, 0x77, 0x35, 0x06, 0x4b, 0x1d, 0x37, 0x18, 0x6c, 0xc9, 0x90, 0x58, 0xd0, 0x88, 0x2b, 0x9c, - 0xa6, 0x91, 0x98, 0x0d, 0x34, 0x8d, 0x64, 0x1f, 0xf7, 0xa3, 0xff, 0x36, 0x78, 0xde, 0xb2, 0x67, - 0x46, 0x25, 0x11, 0x2f, 0x85, 0x73, 0xbc, 0xc2, 0x29, 0x9d, 0x3d, 0x03, 0x86, 0x64, 0x8f, 0x42, - 0xaa, 0xae, 0x76, 0x50, 0xaf, 0x8b, 0xdb, 0xc0, 0x52, 0x5f, 0x7f, 0xba, 0x2e, 0x48, 0xb0, 0x98, - 0x3d, 0x23, 0x4f, 0x26, 0x7b, 0x54, 0x92, 0x8e, 0x57, 0x38, 0xa5, 0xc4, 0xcb, 0xc3, 0x77, 0x8f, - 0x6b, 0x89, 0x8f, 0x1b, 0x2f, 0xf4, 0x45, 0x7f, 0x27, 0xfa, 0x72, 0xf1, 0xfc, 0x57, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x63, 0xc0, 0xb1, 0xa3, 0x0d, 0x11, 0x00, 0x00, -} diff --git a/pkg/proto/organization/organization.proto b/pkg/proto/organization/organization.proto index 6e7165723..8c3bd5026 100644 --- a/pkg/proto/organization/organization.proto +++ b/pkg/proto/organization/organization.proto @@ -51,6 +51,17 @@ message DeleteDepartmentResp{ string errMsg = 2; } +message GetDepartmentParentIDListReq { + string departmentID = 1; + string operationID = 2; +} + +message GetDepartmentParentIDListResp { + int32 errCode = 1; + string errMsg = 2; + repeated string parentIDList = 3; +} + message CreateOrganizationUserReq{ server_api_params.OrganizationUser organizationUser = 1; @@ -148,12 +159,23 @@ message GetDepartmentMemberResp{ repeated server_api_params.UserDepartmentMember userDepartmentMemberList = 3; } +message GetDepartmentRelatedGroupIDListReq { + string operationID = 1; + repeated string departmentIDList = 2; +} + +message GetDepartmentRelatedGroupIDListResp { + int32 errCode = 1; + string errMsg = 2; + repeated string groupIDList = 3; +} service organization{ rpc CreateDepartment(CreateDepartmentReq) returns(CreateDepartmentResp); rpc UpdateDepartment(UpdateDepartmentReq) returns(UpdateDepartmentResp); rpc GetSubDepartment(GetSubDepartmentReq) returns(GetSubDepartmentResp); rpc DeleteDepartment(DeleteDepartmentReq) returns(DeleteDepartmentResp); + rpc GetDepartmentParentIDList(GetDepartmentParentIDListReq) returns(GetDepartmentParentIDListResp); rpc CreateOrganizationUser(CreateOrganizationUserReq) returns(CreateOrganizationUserResp); rpc UpdateOrganizationUser(UpdateOrganizationUserReq) returns(UpdateOrganizationUserResp); @@ -165,6 +187,7 @@ service organization{ rpc DeleteUserInDepartment(DeleteUserInDepartmentReq) returns(DeleteUserInDepartmentResp); rpc UpdateUserInDepartment(UpdateUserInDepartmentReq) returns(UpdateUserInDepartmentResp); rpc GetDepartmentMember(GetDepartmentMemberReq) returns(GetDepartmentMemberResp); + rpc GetDepartmentRelatedGroupIDList(GetDepartmentRelatedGroupIDListReq) returns(GetDepartmentRelatedGroupIDListResp); } From be10e6a9def03292b65f96983d7f3fa9f8207772 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 12 May 2022 19:07:26 +0800 Subject: [PATCH 134/143] organization --- pkg/proto/organization/organization.pb.go | 2058 +++++++++++++++++++++ 1 file changed, 2058 insertions(+) create mode 100644 pkg/proto/organization/organization.pb.go diff --git a/pkg/proto/organization/organization.pb.go b/pkg/proto/organization/organization.pb.go new file mode 100644 index 000000000..803c23fad --- /dev/null +++ b/pkg/proto/organization/organization.pb.go @@ -0,0 +1,2058 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: organization/organization.proto + +package organization // import "./organization" + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import sdk_ws "Open_IM/pkg/proto/sdk_ws" + +import ( + context "golang.org/x/net/context" + grpc "google.golang.org/grpc" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +type CreateDepartmentReq struct { + DepartmentInfo *sdk_ws.Department `protobuf:"bytes,1,opt,name=departmentInfo" json:"departmentInfo,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateDepartmentReq) Reset() { *m = CreateDepartmentReq{} } +func (m *CreateDepartmentReq) String() string { return proto.CompactTextString(m) } +func (*CreateDepartmentReq) ProtoMessage() {} +func (*CreateDepartmentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{0} +} +func (m *CreateDepartmentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateDepartmentReq.Unmarshal(m, b) +} +func (m *CreateDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateDepartmentReq.Marshal(b, m, deterministic) +} +func (dst *CreateDepartmentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateDepartmentReq.Merge(dst, src) +} +func (m *CreateDepartmentReq) XXX_Size() int { + return xxx_messageInfo_CreateDepartmentReq.Size(m) +} +func (m *CreateDepartmentReq) XXX_DiscardUnknown() { + xxx_messageInfo_CreateDepartmentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateDepartmentReq proto.InternalMessageInfo + +func (m *CreateDepartmentReq) GetDepartmentInfo() *sdk_ws.Department { + if m != nil { + return m.DepartmentInfo + } + return nil +} + +func (m *CreateDepartmentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *CreateDepartmentReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type CreateDepartmentResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + DepartmentInfo *sdk_ws.Department `protobuf:"bytes,3,opt,name=departmentInfo" json:"departmentInfo,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateDepartmentResp) Reset() { *m = CreateDepartmentResp{} } +func (m *CreateDepartmentResp) String() string { return proto.CompactTextString(m) } +func (*CreateDepartmentResp) ProtoMessage() {} +func (*CreateDepartmentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{1} +} +func (m *CreateDepartmentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateDepartmentResp.Unmarshal(m, b) +} +func (m *CreateDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateDepartmentResp.Marshal(b, m, deterministic) +} +func (dst *CreateDepartmentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateDepartmentResp.Merge(dst, src) +} +func (m *CreateDepartmentResp) XXX_Size() int { + return xxx_messageInfo_CreateDepartmentResp.Size(m) +} +func (m *CreateDepartmentResp) XXX_DiscardUnknown() { + xxx_messageInfo_CreateDepartmentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateDepartmentResp proto.InternalMessageInfo + +func (m *CreateDepartmentResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *CreateDepartmentResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +func (m *CreateDepartmentResp) GetDepartmentInfo() *sdk_ws.Department { + if m != nil { + return m.DepartmentInfo + } + return nil +} + +type UpdateDepartmentReq struct { + DepartmentInfo *sdk_ws.Department `protobuf:"bytes,1,opt,name=departmentInfo" json:"departmentInfo,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateDepartmentReq) Reset() { *m = UpdateDepartmentReq{} } +func (m *UpdateDepartmentReq) String() string { return proto.CompactTextString(m) } +func (*UpdateDepartmentReq) ProtoMessage() {} +func (*UpdateDepartmentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{2} +} +func (m *UpdateDepartmentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateDepartmentReq.Unmarshal(m, b) +} +func (m *UpdateDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateDepartmentReq.Marshal(b, m, deterministic) +} +func (dst *UpdateDepartmentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateDepartmentReq.Merge(dst, src) +} +func (m *UpdateDepartmentReq) XXX_Size() int { + return xxx_messageInfo_UpdateDepartmentReq.Size(m) +} +func (m *UpdateDepartmentReq) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateDepartmentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateDepartmentReq proto.InternalMessageInfo + +func (m *UpdateDepartmentReq) GetDepartmentInfo() *sdk_ws.Department { + if m != nil { + return m.DepartmentInfo + } + return nil +} + +func (m *UpdateDepartmentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *UpdateDepartmentReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type UpdateDepartmentResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateDepartmentResp) Reset() { *m = UpdateDepartmentResp{} } +func (m *UpdateDepartmentResp) String() string { return proto.CompactTextString(m) } +func (*UpdateDepartmentResp) ProtoMessage() {} +func (*UpdateDepartmentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{3} +} +func (m *UpdateDepartmentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateDepartmentResp.Unmarshal(m, b) +} +func (m *UpdateDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateDepartmentResp.Marshal(b, m, deterministic) +} +func (dst *UpdateDepartmentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateDepartmentResp.Merge(dst, src) +} +func (m *UpdateDepartmentResp) XXX_Size() int { + return xxx_messageInfo_UpdateDepartmentResp.Size(m) +} +func (m *UpdateDepartmentResp) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateDepartmentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateDepartmentResp proto.InternalMessageInfo + +func (m *UpdateDepartmentResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *UpdateDepartmentResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type GetSubDepartmentReq struct { + DepartmentID string `protobuf:"bytes,1,opt,name=departmentID" json:"departmentID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetSubDepartmentReq) Reset() { *m = GetSubDepartmentReq{} } +func (m *GetSubDepartmentReq) String() string { return proto.CompactTextString(m) } +func (*GetSubDepartmentReq) ProtoMessage() {} +func (*GetSubDepartmentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{4} +} +func (m *GetSubDepartmentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetSubDepartmentReq.Unmarshal(m, b) +} +func (m *GetSubDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetSubDepartmentReq.Marshal(b, m, deterministic) +} +func (dst *GetSubDepartmentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetSubDepartmentReq.Merge(dst, src) +} +func (m *GetSubDepartmentReq) XXX_Size() int { + return xxx_messageInfo_GetSubDepartmentReq.Size(m) +} +func (m *GetSubDepartmentReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetSubDepartmentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetSubDepartmentReq proto.InternalMessageInfo + +func (m *GetSubDepartmentReq) GetDepartmentID() string { + if m != nil { + return m.DepartmentID + } + return "" +} + +func (m *GetSubDepartmentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *GetSubDepartmentReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type GetSubDepartmentResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + DepartmentList []*sdk_ws.Department `protobuf:"bytes,3,rep,name=departmentList" json:"departmentList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetSubDepartmentResp) Reset() { *m = GetSubDepartmentResp{} } +func (m *GetSubDepartmentResp) String() string { return proto.CompactTextString(m) } +func (*GetSubDepartmentResp) ProtoMessage() {} +func (*GetSubDepartmentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{5} +} +func (m *GetSubDepartmentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetSubDepartmentResp.Unmarshal(m, b) +} +func (m *GetSubDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetSubDepartmentResp.Marshal(b, m, deterministic) +} +func (dst *GetSubDepartmentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetSubDepartmentResp.Merge(dst, src) +} +func (m *GetSubDepartmentResp) XXX_Size() int { + return xxx_messageInfo_GetSubDepartmentResp.Size(m) +} +func (m *GetSubDepartmentResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetSubDepartmentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetSubDepartmentResp proto.InternalMessageInfo + +func (m *GetSubDepartmentResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *GetSubDepartmentResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +func (m *GetSubDepartmentResp) GetDepartmentList() []*sdk_ws.Department { + if m != nil { + return m.DepartmentList + } + return nil +} + +type DeleteDepartmentReq struct { + DepartmentID string `protobuf:"bytes,1,opt,name=departmentID" json:"departmentID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteDepartmentReq) Reset() { *m = DeleteDepartmentReq{} } +func (m *DeleteDepartmentReq) String() string { return proto.CompactTextString(m) } +func (*DeleteDepartmentReq) ProtoMessage() {} +func (*DeleteDepartmentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{6} +} +func (m *DeleteDepartmentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteDepartmentReq.Unmarshal(m, b) +} +func (m *DeleteDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteDepartmentReq.Marshal(b, m, deterministic) +} +func (dst *DeleteDepartmentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteDepartmentReq.Merge(dst, src) +} +func (m *DeleteDepartmentReq) XXX_Size() int { + return xxx_messageInfo_DeleteDepartmentReq.Size(m) +} +func (m *DeleteDepartmentReq) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteDepartmentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteDepartmentReq proto.InternalMessageInfo + +func (m *DeleteDepartmentReq) GetDepartmentID() string { + if m != nil { + return m.DepartmentID + } + return "" +} + +func (m *DeleteDepartmentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *DeleteDepartmentReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type DeleteDepartmentResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteDepartmentResp) Reset() { *m = DeleteDepartmentResp{} } +func (m *DeleteDepartmentResp) String() string { return proto.CompactTextString(m) } +func (*DeleteDepartmentResp) ProtoMessage() {} +func (*DeleteDepartmentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{7} +} +func (m *DeleteDepartmentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteDepartmentResp.Unmarshal(m, b) +} +func (m *DeleteDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteDepartmentResp.Marshal(b, m, deterministic) +} +func (dst *DeleteDepartmentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteDepartmentResp.Merge(dst, src) +} +func (m *DeleteDepartmentResp) XXX_Size() int { + return xxx_messageInfo_DeleteDepartmentResp.Size(m) +} +func (m *DeleteDepartmentResp) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteDepartmentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteDepartmentResp proto.InternalMessageInfo + +func (m *DeleteDepartmentResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *DeleteDepartmentResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type GetDepartmentParentIDListReq struct { + DepartmentID string `protobuf:"bytes,1,opt,name=departmentID" json:"departmentID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetDepartmentParentIDListReq) Reset() { *m = GetDepartmentParentIDListReq{} } +func (m *GetDepartmentParentIDListReq) String() string { return proto.CompactTextString(m) } +func (*GetDepartmentParentIDListReq) ProtoMessage() {} +func (*GetDepartmentParentIDListReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{8} +} +func (m *GetDepartmentParentIDListReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetDepartmentParentIDListReq.Unmarshal(m, b) +} +func (m *GetDepartmentParentIDListReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetDepartmentParentIDListReq.Marshal(b, m, deterministic) +} +func (dst *GetDepartmentParentIDListReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetDepartmentParentIDListReq.Merge(dst, src) +} +func (m *GetDepartmentParentIDListReq) XXX_Size() int { + return xxx_messageInfo_GetDepartmentParentIDListReq.Size(m) +} +func (m *GetDepartmentParentIDListReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetDepartmentParentIDListReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetDepartmentParentIDListReq proto.InternalMessageInfo + +func (m *GetDepartmentParentIDListReq) GetDepartmentID() string { + if m != nil { + return m.DepartmentID + } + return "" +} + +func (m *GetDepartmentParentIDListReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +type GetDepartmentParentIDListResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + ParentIDList []string `protobuf:"bytes,3,rep,name=parentIDList" json:"parentIDList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetDepartmentParentIDListResp) Reset() { *m = GetDepartmentParentIDListResp{} } +func (m *GetDepartmentParentIDListResp) String() string { return proto.CompactTextString(m) } +func (*GetDepartmentParentIDListResp) ProtoMessage() {} +func (*GetDepartmentParentIDListResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{9} +} +func (m *GetDepartmentParentIDListResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetDepartmentParentIDListResp.Unmarshal(m, b) +} +func (m *GetDepartmentParentIDListResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetDepartmentParentIDListResp.Marshal(b, m, deterministic) +} +func (dst *GetDepartmentParentIDListResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetDepartmentParentIDListResp.Merge(dst, src) +} +func (m *GetDepartmentParentIDListResp) XXX_Size() int { + return xxx_messageInfo_GetDepartmentParentIDListResp.Size(m) +} +func (m *GetDepartmentParentIDListResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetDepartmentParentIDListResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetDepartmentParentIDListResp proto.InternalMessageInfo + +func (m *GetDepartmentParentIDListResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *GetDepartmentParentIDListResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +func (m *GetDepartmentParentIDListResp) GetParentIDList() []string { + if m != nil { + return m.ParentIDList + } + return nil +} + +type CreateOrganizationUserReq struct { + OrganizationUser *sdk_ws.OrganizationUser `protobuf:"bytes,1,opt,name=organizationUser" json:"organizationUser,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateOrganizationUserReq) Reset() { *m = CreateOrganizationUserReq{} } +func (m *CreateOrganizationUserReq) String() string { return proto.CompactTextString(m) } +func (*CreateOrganizationUserReq) ProtoMessage() {} +func (*CreateOrganizationUserReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{10} +} +func (m *CreateOrganizationUserReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateOrganizationUserReq.Unmarshal(m, b) +} +func (m *CreateOrganizationUserReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateOrganizationUserReq.Marshal(b, m, deterministic) +} +func (dst *CreateOrganizationUserReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateOrganizationUserReq.Merge(dst, src) +} +func (m *CreateOrganizationUserReq) XXX_Size() int { + return xxx_messageInfo_CreateOrganizationUserReq.Size(m) +} +func (m *CreateOrganizationUserReq) XXX_DiscardUnknown() { + xxx_messageInfo_CreateOrganizationUserReq.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateOrganizationUserReq proto.InternalMessageInfo + +func (m *CreateOrganizationUserReq) GetOrganizationUser() *sdk_ws.OrganizationUser { + if m != nil { + return m.OrganizationUser + } + return nil +} + +func (m *CreateOrganizationUserReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *CreateOrganizationUserReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type CreateOrganizationUserResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateOrganizationUserResp) Reset() { *m = CreateOrganizationUserResp{} } +func (m *CreateOrganizationUserResp) String() string { return proto.CompactTextString(m) } +func (*CreateOrganizationUserResp) ProtoMessage() {} +func (*CreateOrganizationUserResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{11} +} +func (m *CreateOrganizationUserResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateOrganizationUserResp.Unmarshal(m, b) +} +func (m *CreateOrganizationUserResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateOrganizationUserResp.Marshal(b, m, deterministic) +} +func (dst *CreateOrganizationUserResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateOrganizationUserResp.Merge(dst, src) +} +func (m *CreateOrganizationUserResp) XXX_Size() int { + return xxx_messageInfo_CreateOrganizationUserResp.Size(m) +} +func (m *CreateOrganizationUserResp) XXX_DiscardUnknown() { + xxx_messageInfo_CreateOrganizationUserResp.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateOrganizationUserResp proto.InternalMessageInfo + +func (m *CreateOrganizationUserResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *CreateOrganizationUserResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type UpdateOrganizationUserReq struct { + OrganizationUser *sdk_ws.OrganizationUser `protobuf:"bytes,1,opt,name=organizationUser" json:"organizationUser,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateOrganizationUserReq) Reset() { *m = UpdateOrganizationUserReq{} } +func (m *UpdateOrganizationUserReq) String() string { return proto.CompactTextString(m) } +func (*UpdateOrganizationUserReq) ProtoMessage() {} +func (*UpdateOrganizationUserReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{12} +} +func (m *UpdateOrganizationUserReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateOrganizationUserReq.Unmarshal(m, b) +} +func (m *UpdateOrganizationUserReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateOrganizationUserReq.Marshal(b, m, deterministic) +} +func (dst *UpdateOrganizationUserReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateOrganizationUserReq.Merge(dst, src) +} +func (m *UpdateOrganizationUserReq) XXX_Size() int { + return xxx_messageInfo_UpdateOrganizationUserReq.Size(m) +} +func (m *UpdateOrganizationUserReq) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateOrganizationUserReq.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateOrganizationUserReq proto.InternalMessageInfo + +func (m *UpdateOrganizationUserReq) GetOrganizationUser() *sdk_ws.OrganizationUser { + if m != nil { + return m.OrganizationUser + } + return nil +} + +func (m *UpdateOrganizationUserReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *UpdateOrganizationUserReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type UpdateOrganizationUserResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateOrganizationUserResp) Reset() { *m = UpdateOrganizationUserResp{} } +func (m *UpdateOrganizationUserResp) String() string { return proto.CompactTextString(m) } +func (*UpdateOrganizationUserResp) ProtoMessage() {} +func (*UpdateOrganizationUserResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{13} +} +func (m *UpdateOrganizationUserResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateOrganizationUserResp.Unmarshal(m, b) +} +func (m *UpdateOrganizationUserResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateOrganizationUserResp.Marshal(b, m, deterministic) +} +func (dst *UpdateOrganizationUserResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateOrganizationUserResp.Merge(dst, src) +} +func (m *UpdateOrganizationUserResp) XXX_Size() int { + return xxx_messageInfo_UpdateOrganizationUserResp.Size(m) +} +func (m *UpdateOrganizationUserResp) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateOrganizationUserResp.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateOrganizationUserResp proto.InternalMessageInfo + +func (m *UpdateOrganizationUserResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *UpdateOrganizationUserResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type CreateDepartmentMemberReq struct { + DepartmentMember *sdk_ws.DepartmentMember `protobuf:"bytes,1,opt,name=departmentMember" json:"departmentMember,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateDepartmentMemberReq) Reset() { *m = CreateDepartmentMemberReq{} } +func (m *CreateDepartmentMemberReq) String() string { return proto.CompactTextString(m) } +func (*CreateDepartmentMemberReq) ProtoMessage() {} +func (*CreateDepartmentMemberReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{14} +} +func (m *CreateDepartmentMemberReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateDepartmentMemberReq.Unmarshal(m, b) +} +func (m *CreateDepartmentMemberReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateDepartmentMemberReq.Marshal(b, m, deterministic) +} +func (dst *CreateDepartmentMemberReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateDepartmentMemberReq.Merge(dst, src) +} +func (m *CreateDepartmentMemberReq) XXX_Size() int { + return xxx_messageInfo_CreateDepartmentMemberReq.Size(m) +} +func (m *CreateDepartmentMemberReq) XXX_DiscardUnknown() { + xxx_messageInfo_CreateDepartmentMemberReq.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateDepartmentMemberReq proto.InternalMessageInfo + +func (m *CreateDepartmentMemberReq) GetDepartmentMember() *sdk_ws.DepartmentMember { + if m != nil { + return m.DepartmentMember + } + return nil +} + +func (m *CreateDepartmentMemberReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *CreateDepartmentMemberReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type CreateDepartmentMemberResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateDepartmentMemberResp) Reset() { *m = CreateDepartmentMemberResp{} } +func (m *CreateDepartmentMemberResp) String() string { return proto.CompactTextString(m) } +func (*CreateDepartmentMemberResp) ProtoMessage() {} +func (*CreateDepartmentMemberResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{15} +} +func (m *CreateDepartmentMemberResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CreateDepartmentMemberResp.Unmarshal(m, b) +} +func (m *CreateDepartmentMemberResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CreateDepartmentMemberResp.Marshal(b, m, deterministic) +} +func (dst *CreateDepartmentMemberResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateDepartmentMemberResp.Merge(dst, src) +} +func (m *CreateDepartmentMemberResp) XXX_Size() int { + return xxx_messageInfo_CreateDepartmentMemberResp.Size(m) +} +func (m *CreateDepartmentMemberResp) XXX_DiscardUnknown() { + xxx_messageInfo_CreateDepartmentMemberResp.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateDepartmentMemberResp proto.InternalMessageInfo + +func (m *CreateDepartmentMemberResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *CreateDepartmentMemberResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type GetUserInDepartmentReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserInDepartmentReq) Reset() { *m = GetUserInDepartmentReq{} } +func (m *GetUserInDepartmentReq) String() string { return proto.CompactTextString(m) } +func (*GetUserInDepartmentReq) ProtoMessage() {} +func (*GetUserInDepartmentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{16} +} +func (m *GetUserInDepartmentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserInDepartmentReq.Unmarshal(m, b) +} +func (m *GetUserInDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserInDepartmentReq.Marshal(b, m, deterministic) +} +func (dst *GetUserInDepartmentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserInDepartmentReq.Merge(dst, src) +} +func (m *GetUserInDepartmentReq) XXX_Size() int { + return xxx_messageInfo_GetUserInDepartmentReq.Size(m) +} +func (m *GetUserInDepartmentReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserInDepartmentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserInDepartmentReq proto.InternalMessageInfo + +func (m *GetUserInDepartmentReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *GetUserInDepartmentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *GetUserInDepartmentReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type GetUserInDepartmentResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + UserInDepartment *sdk_ws.UserInDepartment `protobuf:"bytes,3,opt,name=userInDepartment" json:"userInDepartment,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetUserInDepartmentResp) Reset() { *m = GetUserInDepartmentResp{} } +func (m *GetUserInDepartmentResp) String() string { return proto.CompactTextString(m) } +func (*GetUserInDepartmentResp) ProtoMessage() {} +func (*GetUserInDepartmentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{17} +} +func (m *GetUserInDepartmentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetUserInDepartmentResp.Unmarshal(m, b) +} +func (m *GetUserInDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetUserInDepartmentResp.Marshal(b, m, deterministic) +} +func (dst *GetUserInDepartmentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetUserInDepartmentResp.Merge(dst, src) +} +func (m *GetUserInDepartmentResp) XXX_Size() int { + return xxx_messageInfo_GetUserInDepartmentResp.Size(m) +} +func (m *GetUserInDepartmentResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetUserInDepartmentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetUserInDepartmentResp proto.InternalMessageInfo + +func (m *GetUserInDepartmentResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *GetUserInDepartmentResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +func (m *GetUserInDepartmentResp) GetUserInDepartment() *sdk_ws.UserInDepartment { + if m != nil { + return m.UserInDepartment + } + return nil +} + +type UpdateUserInDepartmentReq struct { + DepartmentMember *sdk_ws.DepartmentMember `protobuf:"bytes,1,opt,name=departmentMember" json:"departmentMember,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateUserInDepartmentReq) Reset() { *m = UpdateUserInDepartmentReq{} } +func (m *UpdateUserInDepartmentReq) String() string { return proto.CompactTextString(m) } +func (*UpdateUserInDepartmentReq) ProtoMessage() {} +func (*UpdateUserInDepartmentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{18} +} +func (m *UpdateUserInDepartmentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateUserInDepartmentReq.Unmarshal(m, b) +} +func (m *UpdateUserInDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateUserInDepartmentReq.Marshal(b, m, deterministic) +} +func (dst *UpdateUserInDepartmentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateUserInDepartmentReq.Merge(dst, src) +} +func (m *UpdateUserInDepartmentReq) XXX_Size() int { + return xxx_messageInfo_UpdateUserInDepartmentReq.Size(m) +} +func (m *UpdateUserInDepartmentReq) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateUserInDepartmentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateUserInDepartmentReq proto.InternalMessageInfo + +func (m *UpdateUserInDepartmentReq) GetDepartmentMember() *sdk_ws.DepartmentMember { + if m != nil { + return m.DepartmentMember + } + return nil +} + +func (m *UpdateUserInDepartmentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *UpdateUserInDepartmentReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type UpdateUserInDepartmentResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdateUserInDepartmentResp) Reset() { *m = UpdateUserInDepartmentResp{} } +func (m *UpdateUserInDepartmentResp) String() string { return proto.CompactTextString(m) } +func (*UpdateUserInDepartmentResp) ProtoMessage() {} +func (*UpdateUserInDepartmentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{19} +} +func (m *UpdateUserInDepartmentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpdateUserInDepartmentResp.Unmarshal(m, b) +} +func (m *UpdateUserInDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpdateUserInDepartmentResp.Marshal(b, m, deterministic) +} +func (dst *UpdateUserInDepartmentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateUserInDepartmentResp.Merge(dst, src) +} +func (m *UpdateUserInDepartmentResp) XXX_Size() int { + return xxx_messageInfo_UpdateUserInDepartmentResp.Size(m) +} +func (m *UpdateUserInDepartmentResp) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateUserInDepartmentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateUserInDepartmentResp proto.InternalMessageInfo + +func (m *UpdateUserInDepartmentResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *UpdateUserInDepartmentResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type DeleteUserInDepartmentReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + DepartmentID string `protobuf:"bytes,4,opt,name=departmentID" json:"departmentID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteUserInDepartmentReq) Reset() { *m = DeleteUserInDepartmentReq{} } +func (m *DeleteUserInDepartmentReq) String() string { return proto.CompactTextString(m) } +func (*DeleteUserInDepartmentReq) ProtoMessage() {} +func (*DeleteUserInDepartmentReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{20} +} +func (m *DeleteUserInDepartmentReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteUserInDepartmentReq.Unmarshal(m, b) +} +func (m *DeleteUserInDepartmentReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteUserInDepartmentReq.Marshal(b, m, deterministic) +} +func (dst *DeleteUserInDepartmentReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteUserInDepartmentReq.Merge(dst, src) +} +func (m *DeleteUserInDepartmentReq) XXX_Size() int { + return xxx_messageInfo_DeleteUserInDepartmentReq.Size(m) +} +func (m *DeleteUserInDepartmentReq) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteUserInDepartmentReq.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteUserInDepartmentReq proto.InternalMessageInfo + +func (m *DeleteUserInDepartmentReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *DeleteUserInDepartmentReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *DeleteUserInDepartmentReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +func (m *DeleteUserInDepartmentReq) GetDepartmentID() string { + if m != nil { + return m.DepartmentID + } + return "" +} + +type DeleteUserInDepartmentResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteUserInDepartmentResp) Reset() { *m = DeleteUserInDepartmentResp{} } +func (m *DeleteUserInDepartmentResp) String() string { return proto.CompactTextString(m) } +func (*DeleteUserInDepartmentResp) ProtoMessage() {} +func (*DeleteUserInDepartmentResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{21} +} +func (m *DeleteUserInDepartmentResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteUserInDepartmentResp.Unmarshal(m, b) +} +func (m *DeleteUserInDepartmentResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteUserInDepartmentResp.Marshal(b, m, deterministic) +} +func (dst *DeleteUserInDepartmentResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteUserInDepartmentResp.Merge(dst, src) +} +func (m *DeleteUserInDepartmentResp) XXX_Size() int { + return xxx_messageInfo_DeleteUserInDepartmentResp.Size(m) +} +func (m *DeleteUserInDepartmentResp) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteUserInDepartmentResp.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteUserInDepartmentResp proto.InternalMessageInfo + +func (m *DeleteUserInDepartmentResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *DeleteUserInDepartmentResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type DeleteOrganizationUserReq struct { + UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteOrganizationUserReq) Reset() { *m = DeleteOrganizationUserReq{} } +func (m *DeleteOrganizationUserReq) String() string { return proto.CompactTextString(m) } +func (*DeleteOrganizationUserReq) ProtoMessage() {} +func (*DeleteOrganizationUserReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{22} +} +func (m *DeleteOrganizationUserReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteOrganizationUserReq.Unmarshal(m, b) +} +func (m *DeleteOrganizationUserReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteOrganizationUserReq.Marshal(b, m, deterministic) +} +func (dst *DeleteOrganizationUserReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteOrganizationUserReq.Merge(dst, src) +} +func (m *DeleteOrganizationUserReq) XXX_Size() int { + return xxx_messageInfo_DeleteOrganizationUserReq.Size(m) +} +func (m *DeleteOrganizationUserReq) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteOrganizationUserReq.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteOrganizationUserReq proto.InternalMessageInfo + +func (m *DeleteOrganizationUserReq) GetUserID() string { + if m != nil { + return m.UserID + } + return "" +} + +func (m *DeleteOrganizationUserReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *DeleteOrganizationUserReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type DeleteOrganizationUserResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeleteOrganizationUserResp) Reset() { *m = DeleteOrganizationUserResp{} } +func (m *DeleteOrganizationUserResp) String() string { return proto.CompactTextString(m) } +func (*DeleteOrganizationUserResp) ProtoMessage() {} +func (*DeleteOrganizationUserResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{23} +} +func (m *DeleteOrganizationUserResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeleteOrganizationUserResp.Unmarshal(m, b) +} +func (m *DeleteOrganizationUserResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeleteOrganizationUserResp.Marshal(b, m, deterministic) +} +func (dst *DeleteOrganizationUserResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteOrganizationUserResp.Merge(dst, src) +} +func (m *DeleteOrganizationUserResp) XXX_Size() int { + return xxx_messageInfo_DeleteOrganizationUserResp.Size(m) +} +func (m *DeleteOrganizationUserResp) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteOrganizationUserResp.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteOrganizationUserResp proto.InternalMessageInfo + +func (m *DeleteOrganizationUserResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *DeleteOrganizationUserResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +type GetDepartmentMemberReq struct { + DepartmentID string `protobuf:"bytes,1,opt,name=departmentID" json:"departmentID,omitempty"` + OperationID string `protobuf:"bytes,2,opt,name=operationID" json:"operationID,omitempty"` + OpUserID string `protobuf:"bytes,3,opt,name=opUserID" json:"opUserID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetDepartmentMemberReq) Reset() { *m = GetDepartmentMemberReq{} } +func (m *GetDepartmentMemberReq) String() string { return proto.CompactTextString(m) } +func (*GetDepartmentMemberReq) ProtoMessage() {} +func (*GetDepartmentMemberReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{24} +} +func (m *GetDepartmentMemberReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetDepartmentMemberReq.Unmarshal(m, b) +} +func (m *GetDepartmentMemberReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetDepartmentMemberReq.Marshal(b, m, deterministic) +} +func (dst *GetDepartmentMemberReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetDepartmentMemberReq.Merge(dst, src) +} +func (m *GetDepartmentMemberReq) XXX_Size() int { + return xxx_messageInfo_GetDepartmentMemberReq.Size(m) +} +func (m *GetDepartmentMemberReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetDepartmentMemberReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetDepartmentMemberReq proto.InternalMessageInfo + +func (m *GetDepartmentMemberReq) GetDepartmentID() string { + if m != nil { + return m.DepartmentID + } + return "" +} + +func (m *GetDepartmentMemberReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *GetDepartmentMemberReq) GetOpUserID() string { + if m != nil { + return m.OpUserID + } + return "" +} + +type GetDepartmentMemberResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + UserDepartmentMemberList []*sdk_ws.UserDepartmentMember `protobuf:"bytes,3,rep,name=userDepartmentMemberList" json:"userDepartmentMemberList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetDepartmentMemberResp) Reset() { *m = GetDepartmentMemberResp{} } +func (m *GetDepartmentMemberResp) String() string { return proto.CompactTextString(m) } +func (*GetDepartmentMemberResp) ProtoMessage() {} +func (*GetDepartmentMemberResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{25} +} +func (m *GetDepartmentMemberResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetDepartmentMemberResp.Unmarshal(m, b) +} +func (m *GetDepartmentMemberResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetDepartmentMemberResp.Marshal(b, m, deterministic) +} +func (dst *GetDepartmentMemberResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetDepartmentMemberResp.Merge(dst, src) +} +func (m *GetDepartmentMemberResp) XXX_Size() int { + return xxx_messageInfo_GetDepartmentMemberResp.Size(m) +} +func (m *GetDepartmentMemberResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetDepartmentMemberResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetDepartmentMemberResp proto.InternalMessageInfo + +func (m *GetDepartmentMemberResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *GetDepartmentMemberResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +func (m *GetDepartmentMemberResp) GetUserDepartmentMemberList() []*sdk_ws.UserDepartmentMember { + if m != nil { + return m.UserDepartmentMemberList + } + return nil +} + +type GetDepartmentRelatedGroupIDListReq struct { + OperationID string `protobuf:"bytes,1,opt,name=operationID" json:"operationID,omitempty"` + DepartmentIDList []string `protobuf:"bytes,2,rep,name=departmentIDList" json:"departmentIDList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetDepartmentRelatedGroupIDListReq) Reset() { *m = GetDepartmentRelatedGroupIDListReq{} } +func (m *GetDepartmentRelatedGroupIDListReq) String() string { return proto.CompactTextString(m) } +func (*GetDepartmentRelatedGroupIDListReq) ProtoMessage() {} +func (*GetDepartmentRelatedGroupIDListReq) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{26} +} +func (m *GetDepartmentRelatedGroupIDListReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetDepartmentRelatedGroupIDListReq.Unmarshal(m, b) +} +func (m *GetDepartmentRelatedGroupIDListReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetDepartmentRelatedGroupIDListReq.Marshal(b, m, deterministic) +} +func (dst *GetDepartmentRelatedGroupIDListReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetDepartmentRelatedGroupIDListReq.Merge(dst, src) +} +func (m *GetDepartmentRelatedGroupIDListReq) XXX_Size() int { + return xxx_messageInfo_GetDepartmentRelatedGroupIDListReq.Size(m) +} +func (m *GetDepartmentRelatedGroupIDListReq) XXX_DiscardUnknown() { + xxx_messageInfo_GetDepartmentRelatedGroupIDListReq.DiscardUnknown(m) +} + +var xxx_messageInfo_GetDepartmentRelatedGroupIDListReq proto.InternalMessageInfo + +func (m *GetDepartmentRelatedGroupIDListReq) GetOperationID() string { + if m != nil { + return m.OperationID + } + return "" +} + +func (m *GetDepartmentRelatedGroupIDListReq) GetDepartmentIDList() []string { + if m != nil { + return m.DepartmentIDList + } + return nil +} + +type GetDepartmentRelatedGroupIDListResp struct { + ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"` + ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"` + GroupIDList []string `protobuf:"bytes,3,rep,name=groupIDList" json:"groupIDList,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetDepartmentRelatedGroupIDListResp) Reset() { *m = GetDepartmentRelatedGroupIDListResp{} } +func (m *GetDepartmentRelatedGroupIDListResp) String() string { return proto.CompactTextString(m) } +func (*GetDepartmentRelatedGroupIDListResp) ProtoMessage() {} +func (*GetDepartmentRelatedGroupIDListResp) Descriptor() ([]byte, []int) { + return fileDescriptor_organization_6d9a9b5829486353, []int{27} +} +func (m *GetDepartmentRelatedGroupIDListResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetDepartmentRelatedGroupIDListResp.Unmarshal(m, b) +} +func (m *GetDepartmentRelatedGroupIDListResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetDepartmentRelatedGroupIDListResp.Marshal(b, m, deterministic) +} +func (dst *GetDepartmentRelatedGroupIDListResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetDepartmentRelatedGroupIDListResp.Merge(dst, src) +} +func (m *GetDepartmentRelatedGroupIDListResp) XXX_Size() int { + return xxx_messageInfo_GetDepartmentRelatedGroupIDListResp.Size(m) +} +func (m *GetDepartmentRelatedGroupIDListResp) XXX_DiscardUnknown() { + xxx_messageInfo_GetDepartmentRelatedGroupIDListResp.DiscardUnknown(m) +} + +var xxx_messageInfo_GetDepartmentRelatedGroupIDListResp proto.InternalMessageInfo + +func (m *GetDepartmentRelatedGroupIDListResp) GetErrCode() int32 { + if m != nil { + return m.ErrCode + } + return 0 +} + +func (m *GetDepartmentRelatedGroupIDListResp) GetErrMsg() string { + if m != nil { + return m.ErrMsg + } + return "" +} + +func (m *GetDepartmentRelatedGroupIDListResp) GetGroupIDList() []string { + if m != nil { + return m.GroupIDList + } + return nil +} + +func init() { + proto.RegisterType((*CreateDepartmentReq)(nil), "organization.CreateDepartmentReq") + proto.RegisterType((*CreateDepartmentResp)(nil), "organization.CreateDepartmentResp") + proto.RegisterType((*UpdateDepartmentReq)(nil), "organization.UpdateDepartmentReq") + proto.RegisterType((*UpdateDepartmentResp)(nil), "organization.UpdateDepartmentResp") + proto.RegisterType((*GetSubDepartmentReq)(nil), "organization.GetSubDepartmentReq") + proto.RegisterType((*GetSubDepartmentResp)(nil), "organization.GetSubDepartmentResp") + proto.RegisterType((*DeleteDepartmentReq)(nil), "organization.DeleteDepartmentReq") + proto.RegisterType((*DeleteDepartmentResp)(nil), "organization.DeleteDepartmentResp") + proto.RegisterType((*GetDepartmentParentIDListReq)(nil), "organization.GetDepartmentParentIDListReq") + proto.RegisterType((*GetDepartmentParentIDListResp)(nil), "organization.GetDepartmentParentIDListResp") + proto.RegisterType((*CreateOrganizationUserReq)(nil), "organization.CreateOrganizationUserReq") + proto.RegisterType((*CreateOrganizationUserResp)(nil), "organization.CreateOrganizationUserResp") + proto.RegisterType((*UpdateOrganizationUserReq)(nil), "organization.UpdateOrganizationUserReq") + proto.RegisterType((*UpdateOrganizationUserResp)(nil), "organization.UpdateOrganizationUserResp") + proto.RegisterType((*CreateDepartmentMemberReq)(nil), "organization.CreateDepartmentMemberReq") + proto.RegisterType((*CreateDepartmentMemberResp)(nil), "organization.CreateDepartmentMemberResp") + proto.RegisterType((*GetUserInDepartmentReq)(nil), "organization.GetUserInDepartmentReq") + proto.RegisterType((*GetUserInDepartmentResp)(nil), "organization.GetUserInDepartmentResp") + proto.RegisterType((*UpdateUserInDepartmentReq)(nil), "organization.UpdateUserInDepartmentReq") + proto.RegisterType((*UpdateUserInDepartmentResp)(nil), "organization.UpdateUserInDepartmentResp") + proto.RegisterType((*DeleteUserInDepartmentReq)(nil), "organization.DeleteUserInDepartmentReq") + proto.RegisterType((*DeleteUserInDepartmentResp)(nil), "organization.DeleteUserInDepartmentResp") + proto.RegisterType((*DeleteOrganizationUserReq)(nil), "organization.DeleteOrganizationUserReq") + proto.RegisterType((*DeleteOrganizationUserResp)(nil), "organization.DeleteOrganizationUserResp") + proto.RegisterType((*GetDepartmentMemberReq)(nil), "organization.GetDepartmentMemberReq") + proto.RegisterType((*GetDepartmentMemberResp)(nil), "organization.GetDepartmentMemberResp") + proto.RegisterType((*GetDepartmentRelatedGroupIDListReq)(nil), "organization.GetDepartmentRelatedGroupIDListReq") + proto.RegisterType((*GetDepartmentRelatedGroupIDListResp)(nil), "organization.GetDepartmentRelatedGroupIDListResp") +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// Client API for Organization service + +type OrganizationClient interface { + CreateDepartment(ctx context.Context, in *CreateDepartmentReq, opts ...grpc.CallOption) (*CreateDepartmentResp, error) + UpdateDepartment(ctx context.Context, in *UpdateDepartmentReq, opts ...grpc.CallOption) (*UpdateDepartmentResp, error) + GetSubDepartment(ctx context.Context, in *GetSubDepartmentReq, opts ...grpc.CallOption) (*GetSubDepartmentResp, error) + DeleteDepartment(ctx context.Context, in *DeleteDepartmentReq, opts ...grpc.CallOption) (*DeleteDepartmentResp, error) + GetDepartmentParentIDList(ctx context.Context, in *GetDepartmentParentIDListReq, opts ...grpc.CallOption) (*GetDepartmentParentIDListResp, error) + CreateOrganizationUser(ctx context.Context, in *CreateOrganizationUserReq, opts ...grpc.CallOption) (*CreateOrganizationUserResp, error) + UpdateOrganizationUser(ctx context.Context, in *UpdateOrganizationUserReq, opts ...grpc.CallOption) (*UpdateOrganizationUserResp, error) + DeleteOrganizationUser(ctx context.Context, in *DeleteOrganizationUserReq, opts ...grpc.CallOption) (*DeleteOrganizationUserResp, error) + CreateDepartmentMember(ctx context.Context, in *CreateDepartmentMemberReq, opts ...grpc.CallOption) (*CreateDepartmentMemberResp, error) + GetUserInDepartment(ctx context.Context, in *GetUserInDepartmentReq, opts ...grpc.CallOption) (*GetUserInDepartmentResp, error) + DeleteUserInDepartment(ctx context.Context, in *DeleteUserInDepartmentReq, opts ...grpc.CallOption) (*DeleteUserInDepartmentResp, error) + UpdateUserInDepartment(ctx context.Context, in *UpdateUserInDepartmentReq, opts ...grpc.CallOption) (*UpdateUserInDepartmentResp, error) + GetDepartmentMember(ctx context.Context, in *GetDepartmentMemberReq, opts ...grpc.CallOption) (*GetDepartmentMemberResp, error) + GetDepartmentRelatedGroupIDList(ctx context.Context, in *GetDepartmentRelatedGroupIDListReq, opts ...grpc.CallOption) (*GetDepartmentRelatedGroupIDListResp, error) +} + +type organizationClient struct { + cc *grpc.ClientConn +} + +func NewOrganizationClient(cc *grpc.ClientConn) OrganizationClient { + return &organizationClient{cc} +} + +func (c *organizationClient) CreateDepartment(ctx context.Context, in *CreateDepartmentReq, opts ...grpc.CallOption) (*CreateDepartmentResp, error) { + out := new(CreateDepartmentResp) + err := grpc.Invoke(ctx, "/organization.organization/CreateDepartment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) UpdateDepartment(ctx context.Context, in *UpdateDepartmentReq, opts ...grpc.CallOption) (*UpdateDepartmentResp, error) { + out := new(UpdateDepartmentResp) + err := grpc.Invoke(ctx, "/organization.organization/UpdateDepartment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) GetSubDepartment(ctx context.Context, in *GetSubDepartmentReq, opts ...grpc.CallOption) (*GetSubDepartmentResp, error) { + out := new(GetSubDepartmentResp) + err := grpc.Invoke(ctx, "/organization.organization/GetSubDepartment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) DeleteDepartment(ctx context.Context, in *DeleteDepartmentReq, opts ...grpc.CallOption) (*DeleteDepartmentResp, error) { + out := new(DeleteDepartmentResp) + err := grpc.Invoke(ctx, "/organization.organization/DeleteDepartment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) GetDepartmentParentIDList(ctx context.Context, in *GetDepartmentParentIDListReq, opts ...grpc.CallOption) (*GetDepartmentParentIDListResp, error) { + out := new(GetDepartmentParentIDListResp) + err := grpc.Invoke(ctx, "/organization.organization/GetDepartmentParentIDList", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) CreateOrganizationUser(ctx context.Context, in *CreateOrganizationUserReq, opts ...grpc.CallOption) (*CreateOrganizationUserResp, error) { + out := new(CreateOrganizationUserResp) + err := grpc.Invoke(ctx, "/organization.organization/CreateOrganizationUser", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) UpdateOrganizationUser(ctx context.Context, in *UpdateOrganizationUserReq, opts ...grpc.CallOption) (*UpdateOrganizationUserResp, error) { + out := new(UpdateOrganizationUserResp) + err := grpc.Invoke(ctx, "/organization.organization/UpdateOrganizationUser", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) DeleteOrganizationUser(ctx context.Context, in *DeleteOrganizationUserReq, opts ...grpc.CallOption) (*DeleteOrganizationUserResp, error) { + out := new(DeleteOrganizationUserResp) + err := grpc.Invoke(ctx, "/organization.organization/DeleteOrganizationUser", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) CreateDepartmentMember(ctx context.Context, in *CreateDepartmentMemberReq, opts ...grpc.CallOption) (*CreateDepartmentMemberResp, error) { + out := new(CreateDepartmentMemberResp) + err := grpc.Invoke(ctx, "/organization.organization/CreateDepartmentMember", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) GetUserInDepartment(ctx context.Context, in *GetUserInDepartmentReq, opts ...grpc.CallOption) (*GetUserInDepartmentResp, error) { + out := new(GetUserInDepartmentResp) + err := grpc.Invoke(ctx, "/organization.organization/GetUserInDepartment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) DeleteUserInDepartment(ctx context.Context, in *DeleteUserInDepartmentReq, opts ...grpc.CallOption) (*DeleteUserInDepartmentResp, error) { + out := new(DeleteUserInDepartmentResp) + err := grpc.Invoke(ctx, "/organization.organization/DeleteUserInDepartment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) UpdateUserInDepartment(ctx context.Context, in *UpdateUserInDepartmentReq, opts ...grpc.CallOption) (*UpdateUserInDepartmentResp, error) { + out := new(UpdateUserInDepartmentResp) + err := grpc.Invoke(ctx, "/organization.organization/UpdateUserInDepartment", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) GetDepartmentMember(ctx context.Context, in *GetDepartmentMemberReq, opts ...grpc.CallOption) (*GetDepartmentMemberResp, error) { + out := new(GetDepartmentMemberResp) + err := grpc.Invoke(ctx, "/organization.organization/GetDepartmentMember", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *organizationClient) GetDepartmentRelatedGroupIDList(ctx context.Context, in *GetDepartmentRelatedGroupIDListReq, opts ...grpc.CallOption) (*GetDepartmentRelatedGroupIDListResp, error) { + out := new(GetDepartmentRelatedGroupIDListResp) + err := grpc.Invoke(ctx, "/organization.organization/GetDepartmentRelatedGroupIDList", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Server API for Organization service + +type OrganizationServer interface { + CreateDepartment(context.Context, *CreateDepartmentReq) (*CreateDepartmentResp, error) + UpdateDepartment(context.Context, *UpdateDepartmentReq) (*UpdateDepartmentResp, error) + GetSubDepartment(context.Context, *GetSubDepartmentReq) (*GetSubDepartmentResp, error) + DeleteDepartment(context.Context, *DeleteDepartmentReq) (*DeleteDepartmentResp, error) + GetDepartmentParentIDList(context.Context, *GetDepartmentParentIDListReq) (*GetDepartmentParentIDListResp, error) + CreateOrganizationUser(context.Context, *CreateOrganizationUserReq) (*CreateOrganizationUserResp, error) + UpdateOrganizationUser(context.Context, *UpdateOrganizationUserReq) (*UpdateOrganizationUserResp, error) + DeleteOrganizationUser(context.Context, *DeleteOrganizationUserReq) (*DeleteOrganizationUserResp, error) + CreateDepartmentMember(context.Context, *CreateDepartmentMemberReq) (*CreateDepartmentMemberResp, error) + GetUserInDepartment(context.Context, *GetUserInDepartmentReq) (*GetUserInDepartmentResp, error) + DeleteUserInDepartment(context.Context, *DeleteUserInDepartmentReq) (*DeleteUserInDepartmentResp, error) + UpdateUserInDepartment(context.Context, *UpdateUserInDepartmentReq) (*UpdateUserInDepartmentResp, error) + GetDepartmentMember(context.Context, *GetDepartmentMemberReq) (*GetDepartmentMemberResp, error) + GetDepartmentRelatedGroupIDList(context.Context, *GetDepartmentRelatedGroupIDListReq) (*GetDepartmentRelatedGroupIDListResp, error) +} + +func RegisterOrganizationServer(s *grpc.Server, srv OrganizationServer) { + s.RegisterService(&_Organization_serviceDesc, srv) +} + +func _Organization_CreateDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateDepartmentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).CreateDepartment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/CreateDepartment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).CreateDepartment(ctx, req.(*CreateDepartmentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_UpdateDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateDepartmentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).UpdateDepartment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/UpdateDepartment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).UpdateDepartment(ctx, req.(*UpdateDepartmentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_GetSubDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetSubDepartmentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).GetSubDepartment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/GetSubDepartment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).GetSubDepartment(ctx, req.(*GetSubDepartmentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_DeleteDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteDepartmentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).DeleteDepartment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/DeleteDepartment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).DeleteDepartment(ctx, req.(*DeleteDepartmentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_GetDepartmentParentIDList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetDepartmentParentIDListReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).GetDepartmentParentIDList(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/GetDepartmentParentIDList", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).GetDepartmentParentIDList(ctx, req.(*GetDepartmentParentIDListReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_CreateOrganizationUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateOrganizationUserReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).CreateOrganizationUser(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/CreateOrganizationUser", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).CreateOrganizationUser(ctx, req.(*CreateOrganizationUserReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_UpdateOrganizationUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateOrganizationUserReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).UpdateOrganizationUser(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/UpdateOrganizationUser", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).UpdateOrganizationUser(ctx, req.(*UpdateOrganizationUserReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_DeleteOrganizationUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteOrganizationUserReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).DeleteOrganizationUser(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/DeleteOrganizationUser", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).DeleteOrganizationUser(ctx, req.(*DeleteOrganizationUserReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_CreateDepartmentMember_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateDepartmentMemberReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).CreateDepartmentMember(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/CreateDepartmentMember", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).CreateDepartmentMember(ctx, req.(*CreateDepartmentMemberReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_GetUserInDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUserInDepartmentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).GetUserInDepartment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/GetUserInDepartment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).GetUserInDepartment(ctx, req.(*GetUserInDepartmentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_DeleteUserInDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteUserInDepartmentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).DeleteUserInDepartment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/DeleteUserInDepartment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).DeleteUserInDepartment(ctx, req.(*DeleteUserInDepartmentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_UpdateUserInDepartment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateUserInDepartmentReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).UpdateUserInDepartment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/UpdateUserInDepartment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).UpdateUserInDepartment(ctx, req.(*UpdateUserInDepartmentReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_GetDepartmentMember_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetDepartmentMemberReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).GetDepartmentMember(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/GetDepartmentMember", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).GetDepartmentMember(ctx, req.(*GetDepartmentMemberReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Organization_GetDepartmentRelatedGroupIDList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetDepartmentRelatedGroupIDListReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrganizationServer).GetDepartmentRelatedGroupIDList(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/organization.organization/GetDepartmentRelatedGroupIDList", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrganizationServer).GetDepartmentRelatedGroupIDList(ctx, req.(*GetDepartmentRelatedGroupIDListReq)) + } + return interceptor(ctx, in, info, handler) +} + +var _Organization_serviceDesc = grpc.ServiceDesc{ + ServiceName: "organization.organization", + HandlerType: (*OrganizationServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CreateDepartment", + Handler: _Organization_CreateDepartment_Handler, + }, + { + MethodName: "UpdateDepartment", + Handler: _Organization_UpdateDepartment_Handler, + }, + { + MethodName: "GetSubDepartment", + Handler: _Organization_GetSubDepartment_Handler, + }, + { + MethodName: "DeleteDepartment", + Handler: _Organization_DeleteDepartment_Handler, + }, + { + MethodName: "GetDepartmentParentIDList", + Handler: _Organization_GetDepartmentParentIDList_Handler, + }, + { + MethodName: "CreateOrganizationUser", + Handler: _Organization_CreateOrganizationUser_Handler, + }, + { + MethodName: "UpdateOrganizationUser", + Handler: _Organization_UpdateOrganizationUser_Handler, + }, + { + MethodName: "DeleteOrganizationUser", + Handler: _Organization_DeleteOrganizationUser_Handler, + }, + { + MethodName: "CreateDepartmentMember", + Handler: _Organization_CreateDepartmentMember_Handler, + }, + { + MethodName: "GetUserInDepartment", + Handler: _Organization_GetUserInDepartment_Handler, + }, + { + MethodName: "DeleteUserInDepartment", + Handler: _Organization_DeleteUserInDepartment_Handler, + }, + { + MethodName: "UpdateUserInDepartment", + Handler: _Organization_UpdateUserInDepartment_Handler, + }, + { + MethodName: "GetDepartmentMember", + Handler: _Organization_GetDepartmentMember_Handler, + }, + { + MethodName: "GetDepartmentRelatedGroupIDList", + Handler: _Organization_GetDepartmentRelatedGroupIDList_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "organization/organization.proto", +} + +func init() { + proto.RegisterFile("organization/organization.proto", fileDescriptor_organization_6d9a9b5829486353) +} + +var fileDescriptor_organization_6d9a9b5829486353 = []byte{ + // 846 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xcf, 0x6e, 0xd3, 0x4c, + 0x10, 0x97, 0x9b, 0xef, 0x2b, 0x74, 0x52, 0xa1, 0x68, 0x5b, 0x85, 0xd4, 0x50, 0x35, 0x75, 0x5b, + 0x35, 0x2a, 0x52, 0x02, 0xe5, 0xc8, 0x8d, 0x06, 0xa5, 0x91, 0x28, 0x41, 0x41, 0x3d, 0x94, 0x4b, + 0xe4, 0xe0, 0x25, 0x8a, 0xd2, 0xda, 0xdb, 0xb5, 0x43, 0x45, 0x1f, 0x80, 0x2b, 0x27, 0x2e, 0x88, + 0x27, 0xe0, 0xc4, 0x9b, 0xf0, 0x4a, 0xc8, 0x6b, 0x37, 0x59, 0xef, 0x8e, 0x93, 0xd4, 0x4d, 0x51, + 0x39, 0x7a, 0xb2, 0xfb, 0x9b, 0x7f, 0x3b, 0x33, 0xbf, 0x09, 0x6c, 0x78, 0xbc, 0x67, 0xbb, 0xfd, + 0x4b, 0x3b, 0xe8, 0x7b, 0x6e, 0x4d, 0xfe, 0xa8, 0x32, 0xee, 0x05, 0x1e, 0x59, 0x96, 0x65, 0xe6, + 0x66, 0x8b, 0x51, 0xb7, 0xd3, 0x3c, 0xaa, 0xb1, 0x41, 0xaf, 0x26, 0x0e, 0xd4, 0x7c, 0x67, 0xd0, + 0xb9, 0xf0, 0x6b, 0x17, 0x7e, 0x74, 0xc1, 0xfa, 0x6e, 0xc0, 0xca, 0x01, 0xa7, 0x76, 0x40, 0xeb, + 0x94, 0xd9, 0x3c, 0x38, 0xa3, 0x6e, 0xd0, 0xa6, 0xe7, 0xe4, 0x15, 0x3c, 0x70, 0x46, 0x82, 0xa6, + 0xfb, 0xd1, 0x2b, 0x19, 0x65, 0xa3, 0x92, 0xdf, 0x5f, 0xaf, 0xfa, 0x94, 0x7f, 0xa2, 0xbc, 0x63, + 0xb3, 0x7e, 0x87, 0xd9, 0xdc, 0x3e, 0xf3, 0xab, 0xd2, 0x4d, 0xe5, 0x12, 0x29, 0x43, 0xde, 0x63, + 0x94, 0x0b, 0x73, 0x9a, 0xf5, 0xd2, 0x42, 0xd9, 0xa8, 0x2c, 0xb5, 0x65, 0x11, 0x31, 0xe1, 0xbe, + 0xc7, 0x8e, 0x7d, 0xca, 0x9b, 0xf5, 0x52, 0x4e, 0xfc, 0x3c, 0xfa, 0xb6, 0xbe, 0x1a, 0xb0, 0xaa, + 0x1b, 0xe7, 0x33, 0x52, 0x82, 0x7b, 0x94, 0xf3, 0x03, 0xcf, 0xa1, 0xc2, 0xac, 0xff, 0xdb, 0x57, + 0x9f, 0xa4, 0x08, 0x8b, 0x94, 0xf3, 0x23, 0xbf, 0x17, 0xeb, 0x8a, 0xbf, 0x10, 0x7f, 0x72, 0x19, + 0xfc, 0x11, 0xe1, 0x3a, 0x66, 0xce, 0xdd, 0x0c, 0xd7, 0x21, 0xac, 0xea, 0xb6, 0x65, 0x89, 0x96, + 0x75, 0x01, 0x2b, 0x0d, 0x1a, 0xbc, 0x1b, 0x76, 0x93, 0x5e, 0x5a, 0xb0, 0x2c, 0x19, 0x5c, 0x17, + 0x68, 0x4b, 0xed, 0x84, 0x6c, 0x0e, 0x19, 0xd7, 0x35, 0xdf, 0x3c, 0xe3, 0xaf, 0xfb, 0x7e, 0x50, + 0xca, 0x95, 0x73, 0xd7, 0x4a, 0x49, 0x78, 0x29, 0x0c, 0x45, 0x9d, 0x9e, 0x52, 0x35, 0xe1, 0xb7, + 0x1f, 0x8a, 0x43, 0x58, 0xd5, 0x15, 0x67, 0xca, 0xa6, 0x03, 0x8f, 0x1b, 0x34, 0x18, 0xc3, 0xbc, + 0xb5, 0xb9, 0x30, 0x30, 0xf4, 0x6f, 0x6e, 0xbe, 0x58, 0x43, 0x58, 0x9f, 0xa0, 0x25, 0x53, 0x0a, + 0x2d, 0x58, 0x66, 0x12, 0x8a, 0x48, 0xe0, 0x52, 0x3b, 0x21, 0xb3, 0x7e, 0x1a, 0xb0, 0x16, 0xf5, + 0x88, 0x96, 0xd4, 0xfa, 0xc2, 0x18, 0x86, 0xae, 0xb5, 0xa0, 0xe0, 0x29, 0xe2, 0xb8, 0x32, 0xb7, + 0x90, 0x67, 0xa0, 0x21, 0x68, 0x97, 0x6f, 0x98, 0xd3, 0x37, 0x60, 0xa6, 0xd9, 0x9a, 0x29, 0xb3, + 0xa1, 0xf3, 0x51, 0xc9, 0xff, 0x1b, 0xce, 0xa7, 0xd9, 0x9a, 0xd9, 0x79, 0x75, 0x3a, 0x1c, 0xd1, + 0xb3, 0xee, 0xc8, 0x79, 0x47, 0x11, 0x4f, 0x70, 0x5e, 0x43, 0xd0, 0x2e, 0xcf, 0x2b, 0xf3, 0xba, + 0xad, 0x99, 0x9c, 0x77, 0xa1, 0xd8, 0xa0, 0x81, 0x00, 0x77, 0x93, 0x9d, 0xa9, 0x08, 0x8b, 0xc3, + 0xc8, 0x86, 0xa8, 0x8e, 0xe3, 0xaf, 0x1b, 0xda, 0xff, 0xc3, 0x80, 0x87, 0xa8, 0xc2, 0x4c, 0x85, + 0xdd, 0x82, 0xc2, 0x50, 0x41, 0x8a, 0xe7, 0x31, 0x96, 0x1c, 0x4d, 0xa9, 0x76, 0x59, 0x2a, 0x04, + 0x2c, 0x24, 0x77, 0xef, 0x2d, 0xa4, 0xd9, 0x9a, 0xe9, 0x2d, 0x7c, 0x33, 0x60, 0x2d, 0x1a, 0x15, + 0x7f, 0xed, 0x3d, 0x68, 0x33, 0xe3, 0x3f, 0x7d, 0x66, 0x84, 0x7e, 0xa6, 0x99, 0x95, 0xc9, 0xcf, + 0xf3, 0x2b, 0x37, 0xb1, 0x66, 0x77, 0x3b, 0xcf, 0x7e, 0xe4, 0xc2, 0x9c, 0x7a, 0xd6, 0xa5, 0x28, + 0x5b, 0xac, 0x5f, 0xdd, 0x3e, 0xa1, 0xf8, 0x15, 0x95, 0xf0, 0x7c, 0x1a, 0x10, 0xf9, 0x00, 0xa5, + 0x30, 0xc2, 0x2a, 0x9a, 0x44, 0xb4, 0x76, 0x53, 0x4a, 0x59, 0x33, 0x20, 0x15, 0xc8, 0xe2, 0x60, + 0x25, 0x2c, 0x6e, 0xd3, 0x53, 0x3b, 0xa0, 0x4e, 0x83, 0x7b, 0x43, 0x36, 0xe6, 0x2f, 0x4a, 0x58, + 0x0c, 0x3d, 0x2c, 0x7b, 0x72, 0x03, 0x88, 0xc9, 0xc4, 0x82, 0x20, 0x13, 0x9a, 0xdc, 0xfa, 0x0c, + 0x5b, 0x53, 0x75, 0x66, 0x8a, 0x58, 0x19, 0xf2, 0xbd, 0x31, 0x48, 0x4c, 0x66, 0x64, 0xd1, 0xfe, + 0xef, 0x3c, 0x24, 0x16, 0x38, 0x72, 0x02, 0x05, 0x75, 0x6a, 0x90, 0xcd, 0x6a, 0x62, 0xef, 0x43, + 0x96, 0x37, 0xd3, 0x9a, 0x76, 0xc4, 0x67, 0x21, 0xb4, 0xba, 0x2c, 0xa8, 0xd0, 0xc8, 0xa2, 0xa3, + 0x42, 0xa3, 0xfb, 0xc6, 0x09, 0x14, 0x54, 0x0e, 0xaf, 0x42, 0x23, 0xdb, 0x85, 0x0a, 0x8d, 0xae, + 0x01, 0x27, 0x50, 0x50, 0x49, 0xb1, 0x0a, 0x8d, 0xb0, 0x75, 0x15, 0x1a, 0xe5, 0xd5, 0x01, 0xac, + 0xa5, 0xf2, 0x57, 0xb2, 0xa7, 0xd9, 0x96, 0x4a, 0xa7, 0xcd, 0x27, 0x33, 0x9f, 0xf5, 0x19, 0x19, + 0x40, 0x11, 0x67, 0x84, 0x64, 0x17, 0x4b, 0x22, 0xd2, 0xf9, 0xcc, 0xca, 0x6c, 0x07, 0x23, 0x65, + 0x38, 0x03, 0x53, 0x95, 0xa5, 0x72, 0x4a, 0x55, 0xd9, 0x04, 0x42, 0x37, 0x80, 0x22, 0xde, 0x3a, + 0x55, 0x65, 0xa9, 0x3d, 0x5d, 0x55, 0x36, 0xa1, 0x13, 0x8f, 0xc2, 0xa8, 0xb6, 0x11, 0x3c, 0x8c, + 0x48, 0x03, 0xc6, 0xc3, 0x88, 0x36, 0xcb, 0xae, 0xd8, 0x8e, 0xd5, 0xa1, 0x46, 0xb6, 0xb5, 0xbc, + 0x23, 0xe3, 0xd8, 0xdc, 0x99, 0xe1, 0x94, 0x1c, 0x3d, 0x4d, 0x0d, 0x1a, 0x3d, 0x4c, 0x53, 0x65, + 0xb6, 0x83, 0xf2, 0xbb, 0x98, 0xa6, 0x2c, 0x95, 0x62, 0xe1, 0xef, 0x02, 0x55, 0x16, 0x45, 0x4f, + 0xcb, 0xd3, 0xf6, 0x84, 0xaa, 0x19, 0x27, 0x69, 0x67, 0x86, 0x53, 0x3e, 0x23, 0x5f, 0x0c, 0xd8, + 0x98, 0xd2, 0xc4, 0xc9, 0xd3, 0x09, 0x50, 0xe8, 0x9c, 0x31, 0x9f, 0x5d, 0xf3, 0x86, 0xcf, 0x5e, + 0xae, 0xbf, 0x7f, 0x54, 0x4d, 0xfc, 0x4f, 0xf7, 0x42, 0xfe, 0xe8, 0x2e, 0x8a, 0x3f, 0xe1, 0x9e, + 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0x3f, 0xfc, 0xb9, 0x33, 0xd8, 0x13, 0x00, 0x00, +} From 42c38de3e289834395eef0e9749499048a9f24f3 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 12 May 2022 19:09:25 +0800 Subject: [PATCH 135/143] organization --- internal/rpc/organization/organization.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index 0f5a00993..cc2f09a7d 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -336,7 +336,7 @@ func (s *organizationServer) CreateDepartmentMember(ctx context.Context, req *rp return resp, nil } -func (s *organizationServer) GetDepartmentParentIDListReq(_ context.Context, req *rpc.GetDepartmentParentIDListReq) (resp *rpc.GetDepartmentParentIDListResp, err error) { +func (s *organizationServer) GetDepartmentParentIDList(_ context.Context, req *rpc.GetDepartmentParentIDListReq) (resp *rpc.GetDepartmentParentIDListResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req:", req.String()) resp = &rpc.GetDepartmentParentIDListResp{} resp.ParentIDList, err = imdb.GetDepartmentParentIDList(req.DepartmentID) From 098dae964055aae2aaf6be81a739df9c2dae286f Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Thu, 12 May 2022 19:11:55 +0800 Subject: [PATCH 136/143] organization --- internal/rpc/organization/organization.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/rpc/organization/organization.go b/internal/rpc/organization/organization.go index cc2f09a7d..35a67b04c 100644 --- a/internal/rpc/organization/organization.go +++ b/internal/rpc/organization/organization.go @@ -481,7 +481,7 @@ func (s *organizationServer) GetDepartmentMember(ctx context.Context, req *rpc.G return &resp, nil } -func (s *organizationServer) GetDepartmentRelatedGroupIDList(ctx context.Context, req rpc.GetDepartmentRelatedGroupIDListReq) (resp *rpc.GetDepartmentRelatedGroupIDListResp, err error) { +func (s *organizationServer) GetDepartmentRelatedGroupIDList(ctx context.Context, req *rpc.GetDepartmentRelatedGroupIDListReq) (resp *rpc.GetDepartmentRelatedGroupIDListResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp = &rpc.GetDepartmentRelatedGroupIDListResp{} groupIDList, err := imdb.GetDepartmentRelatedGroupIDList(req.DepartmentIDList) From 3c8c402f104427dad4800bf45d06f9f52d36205d Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 13 May 2022 10:06:56 +0800 Subject: [PATCH 137/143] compose restore --- docker-compose.yaml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 2b6eb1935..a863b07eb 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -63,16 +63,7 @@ services: environment: TZ: Asia/Shanghai restart: always - kafka-manager: - image: index.docker.io/sheepkiller/kafka-manager:latest - depends_on: - - zookeeper - ports: - - 9000:9000 - environment: - TZ: Asia/Shanghai - ZK_HOSTS: 127.0.0.1:2181 - restart: always + kafka: image: wurstmeister/kafka From 2534921af9e27e13eb31313a61a3f38852de5d52 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 13 May 2022 15:38:05 +0800 Subject: [PATCH 138/143] organization --- internal/demo/register/onboarding_process.go | 14 ++-- internal/rpc/office/office.go | 64 ++++++++++++++----- .../im_mysql_model/organization_model.go | 2 +- 3 files changed, 58 insertions(+), 22 deletions(-) diff --git a/internal/demo/register/onboarding_process.go b/internal/demo/register/onboarding_process.go index fe79a78d0..28d4d9140 100644 --- a/internal/demo/register/onboarding_process.go +++ b/internal/demo/register/onboarding_process.go @@ -75,11 +75,15 @@ func joinTestDepartment(operationID, userID, departmentID string) error { }() etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOrganizationName) client := organizationRpc.NewOrganizationClient(etcdConn) - req := &organizationRpc.CreateDepartmentMemberReq{DepartmentMember: &commonPb.DepartmentMember{ - UserID: userID, - DepartmentID: departmentID, - Position: randomPosition(), - }} + req := &organizationRpc.CreateDepartmentMemberReq{ + DepartmentMember: &commonPb.DepartmentMember{ + UserID: userID, + DepartmentID: departmentID, + Position: randomPosition(), + }, + OperationID: operationID, + OpUserID: config.Config.Manager.AppManagerUid[0], + } resp, err := client.CreateDepartmentMember(context.Background(), req) if err != nil { log.NewError(operationID, utils.GetSelfFuncName(), err.Error()) diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index cd48527e6..38f9e1606 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -9,14 +9,17 @@ import ( imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model" "Open_IM/pkg/common/log" "Open_IM/pkg/grpc-etcdv3/getcdv3" + pbCache "Open_IM/pkg/proto/cache" pbOffice "Open_IM/pkg/proto/office" pbCommon "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" "context" + "golang.org/x/net/html/atom" "google.golang.org/grpc" "net" "strconv" "strings" + "sync" "time" ) @@ -172,13 +175,27 @@ func (s *officeServer) SendMsg2Tag(_ context.Context, req *pbOffice.SendMsg2TagR } var groupUserIDList []string for _, groupID := range req.GroupList { - userIDList, err := im_mysql_model.GetGroupMemberIDListByGroupID(groupID) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupMemberIDListByGroupID failed", err.Error(), groupID) - continue + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName) + cacheClient := pbCache.NewCacheClient(etcdConn) + req := pbCache.GetGroupMemberIDListFromCacheReq{ + OperationID: req.OperationID, + GroupID: groupID, } - log.NewDebug(req.OperationID, utils.GetSelfFuncName(), userIDList) - groupUserIDList = append(groupUserIDList, userIDList...) + getGroupMemberIDListFromCacheResp, err := cacheClient.GetGroupMemberIDListFromCache(context.Background(), &req) + if err != nil { + log.NewError(req.OperationID, "GetGroupMemberIDListFromCache rpc call failed ", err.Error(), req.String()) + resp.CommonResp.ErrCode = constant.ErrServer.ErrCode + resp.CommonResp.ErrMsg = err.Error() + return resp, nil + } + if getGroupMemberIDListFromCacheResp.CommonResp.ErrCode != 0 { + log.NewError(req.OperationID, "GetGroupMemberIDListFromCache rpc logic call failed ", getGroupMemberIDListFromCacheResp.CommonResp.ErrCode) + resp.CommonResp.ErrCode = getGroupMemberIDListFromCacheResp.CommonResp.ErrCode + resp.CommonResp.ErrMsg = getGroupMemberIDListFromCacheResp.CommonResp.ErrMsg + return resp, nil + } + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), getGroupMemberIDListFromCacheResp.UserIDList) + groupUserIDList = append(groupUserIDList, getGroupMemberIDListFromCacheResp.UserIDList...) } log.NewDebug(req.OperationID, utils.GetSelfFuncName(), groupUserIDList, req.GroupList) var userIDList []string @@ -195,22 +212,37 @@ func (s *officeServer) SendMsg2Tag(_ context.Context, req *pbOffice.SendMsg2TagR user, err := imdb.GetUserByUserID(req.SendID) if err != nil { log.NewError(req.OperationID, "GetUserByUserID failed ", err.Error(), req.SendID) + resp.CommonResp.ErrMsg = err.Error() + resp.CommonResp.ErrCode = constant.ErrDB.ErrCode + return resp, nil } + var wg sync.WaitGroup + wg.Add(len(userIDList)) for _, userID := range userIDList { - msg.TagSendMessage(req.OperationID, user, userID, req.Content, req.SenderPlatformID) + go func(userID string) { + defer wg.Done() + msg.TagSendMessage(req.OperationID, user, userID, req.Content, req.SenderPlatformID) + }(userID) } + wg.Wait() var tagSendLogs db.TagSendLog + + wg.Add(len(userIDList)) for _, userID := range userIDList { - userName, err := im_mysql_model.GetUserNameByUserID(userID) - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserNameByUserID failed", err.Error()) - continue - } - tagSendLogs.UserList = append(tagSendLogs.UserList, db.TagUser{ - UserID: userID, - UserName: userName, - }) + go func(userID string) { + defer wg.Done() + userName, err := im_mysql_model.GetUserNameByUserID(userID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserNameByUserID failed", err.Error()) + return + } + tagSendLogs.UserList = append(tagSendLogs.UserList, db.TagUser{ + UserID: userID, + UserName: userName, + }) + }(userID) } + wg.Wait() tagSendLogs.SendID = req.SendID tagSendLogs.Content = req.Content tagSendLogs.SenderPlatformID = req.SenderPlatformID diff --git a/pkg/common/db/mysql_model/im_mysql_model/organization_model.go b/pkg/common/db/mysql_model/im_mysql_model/organization_model.go index c87aa3f87..be06f7f38 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/organization_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/organization_model.go @@ -252,7 +252,7 @@ func getDepartmentParent(departmentID string, dbConn *gorm.DB) (*db.Department, var parentID string dbConn.LogMode(true) // select * from departments where department_id = (select parent_id from departments where department_id= zx234fd); - err := dbConn.Table("departments").Where("department_id=?", dbConn.Table("departments").Where("department_id=?", departmentID).Pluck("parent_id", parentID)).Error + err := dbConn.Table("departments").Where("department_id=?", dbConn.Table("departments").Where("department_id=?", departmentID).Pluck("parent_id", parentID)).Find(&department).Error return &department, err } From 4afc38523d2e4a9db83f5c0f7728fffce44291f8 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Fri, 13 May 2022 15:41:11 +0800 Subject: [PATCH 139/143] organization --- internal/rpc/office/office.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 38f9e1606..1e76fa2b6 100644 --- a/internal/rpc/office/office.go +++ b/internal/rpc/office/office.go @@ -14,7 +14,6 @@ import ( pbCommon "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" "context" - "golang.org/x/net/html/atom" "google.golang.org/grpc" "net" "strconv" From 3ef445eb2e013b924603504930ea99634e0cc00e Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 13 May 2022 15:59:38 +0800 Subject: [PATCH 140/143] msg bug fix --- internal/rpc/msg/send_msg.go | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 0cb78ca0a..87b79693c 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -264,21 +264,21 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S remain := len(onUserIDList) % split for i := 0; i < len(onUserIDList)/split; i++ { wg.Add(1) - go rpc.sendMsgToGroup(onUserIDList[i*split:(i+1)*split], pb, constant.OnlineStatus, &sendTag, &wg) + go rpc.sendMsgToGroup(onUserIDList[i*split:(i+1)*split], *pb, constant.OnlineStatus, &sendTag, &wg) } if remain > 0 { wg.Add(1) - go rpc.sendMsgToGroup(onUserIDList[split*(len(onUserIDList)/split):], pb, constant.OnlineStatus, &sendTag, &wg) + go rpc.sendMsgToGroup(onUserIDList[split*(len(onUserIDList)/split):], *pb, constant.OnlineStatus, &sendTag, &wg) } wg.Wait() remain = len(offUserIDList) % split for i := 0; i < len(offUserIDList)/split; i++ { wg.Add(1) - go rpc.sendMsgToGroup(offUserIDList[i*split:(i+1)*split], pb, constant.OfflineStatus, &sendTag, &wg) + go rpc.sendMsgToGroup(offUserIDList[i*split:(i+1)*split], *pb, constant.OfflineStatus, &sendTag, &wg) } if remain > 0 { wg.Add(1) - go rpc.sendMsgToGroup(offUserIDList[split*(len(offUserIDList)/split):], pb, constant.OfflineStatus, &sendTag, &wg) + go rpc.sendMsgToGroup(offUserIDList[split*(len(offUserIDList)/split):], *pb, constant.OfflineStatus, &sendTag, &wg) } wg.Wait() log.Info(msgToMQSingle.OperationID, "addUidList", addUidList) @@ -748,17 +748,26 @@ func getOnlineAndOfflineUserIDList(memberList []string, operationID string) (onl return onllUserIDList, offlUserIDList } -func (rpc *rpcChat) sendMsgToGroup(list []string, pb *pbChat.SendMsgReq, status string, sendTag *bool, wg *sync.WaitGroup) { +func (rpc *rpcChat) sendMsgToGroup(list []string, pb pbChat.SendMsgReq, status string, sendTag *bool, wg *sync.WaitGroup) { // log.Debug(pb.OperationID, "split userID ", list) - groupPB := pbChat.SendMsgReq{Token: pb.Token, OperationID: pb.OperationID, MsgData: &sdk_ws.MsgData{OfflinePushInfo: &sdk_ws.OfflinePushInfo{}}} - *groupPB.MsgData = *pb.MsgData + offlinePushInfo := sdk_ws.OfflinePushInfo{} if pb.MsgData.OfflinePushInfo != nil { - *groupPB.MsgData.OfflinePushInfo = *pb.MsgData.OfflinePushInfo + offlinePushInfo = *pb.MsgData.OfflinePushInfo } - msgToMQGroup := pbChat.MsgDataToMQ{Token: groupPB.Token, OperationID: groupPB.OperationID, MsgData: groupPB.MsgData} + msgData := sdk_ws.MsgData{} + msgData = *pb.MsgData + msgData.OfflinePushInfo = &offlinePushInfo + + groupPB := pbChat.SendMsgReq{Token: pb.Token, OperationID: pb.OperationID, MsgData: &msgData} + msgToMQGroup := pbChat.MsgDataToMQ{Token: pb.Token, OperationID: pb.OperationID, MsgData: &msgData} for _, v := range list { + options := make(map[string]bool, 10) + for key, value := range pb.MsgData.Options { + options[key] = value + } groupPB.MsgData.RecvID = v - isSend := modifyMessageByUserMessageReceiveOpt(v, groupPB.MsgData.GroupID, constant.GroupChatType, &groupPB) + groupPB.MsgData.Options = options + isSend := modifyMessageByUserMessageReceiveOpt(v, msgData.GroupID, constant.GroupChatType, &groupPB) if isSend { msgToMQGroup.MsgData = groupPB.MsgData // log.Debug(groupPB.OperationID, "sendMsgToKafka, ", v, groupID, msgToMQGroup.String()) From a472da9ea69db3cb6aa7e237b763aab1b69ca585 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 13 May 2022 16:19:11 +0800 Subject: [PATCH 141/143] msg bug fix --- internal/rpc/msg/send_msg.go | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 87b79693c..8f7e7f427 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -256,7 +256,6 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S } onUserIDList, offUserIDList := getOnlineAndOfflineUserIDList(memberUserIDList, pb.OperationID) log.Debug(pb.OperationID, onUserIDList, offUserIDList) - groupID := pb.MsgData.GroupID //split parallel send var wg sync.WaitGroup var sendTag bool @@ -281,21 +280,8 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S go rpc.sendMsgToGroup(offUserIDList[split*(len(offUserIDList)/split):], *pb, constant.OfflineStatus, &sendTag, &wg) } wg.Wait() - log.Info(msgToMQSingle.OperationID, "addUidList", addUidList) - for _, v := range addUidList { - pb.MsgData.RecvID = v - isSend := modifyMessageByUserMessageReceiveOpt(v, groupID, constant.GroupChatType, pb) - log.Info(msgToMQSingle.OperationID, "isSend", isSend) - if isSend { - msgToMQSingle.MsgData = pb.MsgData - err := rpc.sendMsgToKafka(&msgToMQSingle, v, constant.OnlineStatus) - if err != nil { - log.NewError(msgToMQSingle.OperationID, "kafka send msg err:UserId", v, msgToMQSingle.String()) - } else { - sendTag = true - } - } - } + wg.Add(1) + rpc.sendMsgToGroup(addUidList, *pb, constant.OnlineStatus, &sendTag, &wg) // callback if err := callbackAfterSendGroupMsg(pb); err != nil { log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackAfterSendGroupMsg failed", err.Error()) From 91fe549c2529ea3f697ea08228d6be44fe36c487 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 13 May 2022 16:30:36 +0800 Subject: [PATCH 142/143] add log --- internal/msg_transfer/logic/offline_history_msg_handler.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/msg_transfer/logic/offline_history_msg_handler.go b/internal/msg_transfer/logic/offline_history_msg_handler.go index 9355385d0..13d168ddb 100644 --- a/internal/msg_transfer/logic/offline_history_msg_handler.go +++ b/internal/msg_transfer/logic/offline_history_msg_handler.go @@ -60,7 +60,7 @@ func (mc *OfflineHistoryConsumerHandler) handleChatWs2Mongo(msg []byte, msgKey s } else { go sendMessageToPush(&msgFromMQ, msgKey) } - log.NewDebug(operationID, "saveUserChat cost time ", time.Since(now)) + log.NewDebug(operationID, "saveSingleMsg cost time ", time.Since(now)) case constant.GroupChatType: log.NewDebug(msgFromMQ.OperationID, "msg_transfer msg type = GroupChatType", isHistory, isPersist) if isHistory { @@ -72,6 +72,8 @@ func (mc *OfflineHistoryConsumerHandler) handleChatWs2Mongo(msg []byte, msgKey s groupMsgCount++ } go sendMessageToPush(&msgFromMQ, msgFromMQ.MsgData.RecvID) + log.NewDebug(operationID, "saveGroupMsg cost time ", time.Since(now)) + case constant.NotificationChatType: log.NewDebug(msgFromMQ.OperationID, "msg_transfer msg type = NotificationChatType", isHistory, isPersist) if isHistory { From 381e72f1ef048eb094d1d535d435f75ea1046974 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 13 May 2022 21:05:39 +0800 Subject: [PATCH 143/143] send message --- .../logic/online_history_msg_handler.go | 12 ++--- internal/rpc/msg/send_msg.go | 51 ++++++++++--------- 2 files changed, 32 insertions(+), 31 deletions(-) diff --git a/internal/msg_transfer/logic/online_history_msg_handler.go b/internal/msg_transfer/logic/online_history_msg_handler.go index 9bf13e57a..43bd240c4 100644 --- a/internal/msg_transfer/logic/online_history_msg_handler.go +++ b/internal/msg_transfer/logic/online_history_msg_handler.go @@ -39,15 +39,13 @@ func (och *OnlineHistoryConsumerHandler) Init(cmdCh chan Cmd2Value) { } func (och *OnlineHistoryConsumerHandler) TriggerCmd(status int) { operationID := utils.OperationIDGenerator() - for { - err := sendCmd(och.cmdCh, Cmd2Value{Cmd: status, Value: ""}, 1) - if err != nil { - log.Error(operationID, "TriggerCmd failed ", err.Error(), status) - continue - } - log.Debug(operationID, "TriggerCmd success", status) + err := sendCmd(och.cmdCh, Cmd2Value{Cmd: status, Value: ""}, 1) + if err != nil { + log.Error(operationID, "TriggerCmd failed ", err.Error(), status) return } + log.Debug(operationID, "TriggerCmd success", status) + } func sendCmd(ch chan Cmd2Value, value Cmd2Value, timeout int64) error { var flag = 0 diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 8f7e7f427..16e4c5ab6 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -24,6 +24,9 @@ import ( "time" ) +//When the number of group members is greater than this value,Online users will be sent first,Guaranteed service availability +const GroupMemberNum = 500 + type MsgCallBackReq struct { SendID string `json:"sendID"` RecvID string `json:"recvID"` @@ -254,34 +257,32 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S default: } - onUserIDList, offUserIDList := getOnlineAndOfflineUserIDList(memberUserIDList, pb.OperationID) - log.Debug(pb.OperationID, onUserIDList, offUserIDList) + m := make(map[string][]string, 2) + if len(memberUserIDList) > GroupMemberNum { + getOnlineAndOfflineUserIDList(memberUserIDList, m, pb.OperationID) + log.Debug(pb.OperationID, m[constant.OnlineStatus], m[constant.OfflineStatus]) + } else { + m[constant.OnlineStatus] = memberUserIDList + } + //split parallel send var wg sync.WaitGroup var sendTag bool var split = 50 - remain := len(onUserIDList) % split - for i := 0; i < len(onUserIDList)/split; i++ { - wg.Add(1) - go rpc.sendMsgToGroup(onUserIDList[i*split:(i+1)*split], *pb, constant.OnlineStatus, &sendTag, &wg) + for k, v := range m { + remain := len(v) % split + for i := 0; i < len(v)/split; i++ { + wg.Add(1) + go rpc.sendMsgToGroup(v[i*split:(i+1)*split], *pb, k, &sendTag, &wg) + } + if remain > 0 { + wg.Add(1) + go rpc.sendMsgToGroup(v[split*(len(v)/split):], *pb, k, &sendTag, &wg) + } } - if remain > 0 { - wg.Add(1) - go rpc.sendMsgToGroup(onUserIDList[split*(len(onUserIDList)/split):], *pb, constant.OnlineStatus, &sendTag, &wg) - } - wg.Wait() - remain = len(offUserIDList) % split - for i := 0; i < len(offUserIDList)/split; i++ { - wg.Add(1) - go rpc.sendMsgToGroup(offUserIDList[i*split:(i+1)*split], *pb, constant.OfflineStatus, &sendTag, &wg) - } - if remain > 0 { - wg.Add(1) - go rpc.sendMsgToGroup(offUserIDList[split*(len(offUserIDList)/split):], *pb, constant.OfflineStatus, &sendTag, &wg) - } - wg.Wait() wg.Add(1) - rpc.sendMsgToGroup(addUidList, *pb, constant.OnlineStatus, &sendTag, &wg) + go rpc.sendMsgToGroup(addUidList, *pb, constant.OnlineStatus, &sendTag, &wg) + wg.Wait() // callback if err := callbackAfterSendGroupMsg(pb); err != nil { log.NewError(pb.OperationID, utils.GetSelfFuncName(), "callbackAfterSendGroupMsg failed", err.Error()) @@ -695,7 +696,8 @@ func Notification(n *NotificationMsg) { log.NewError(req.OperationID, "SendMsg rpc failed, ", req.String(), reply.ErrCode, reply.ErrMsg) } } -func getOnlineAndOfflineUserIDList(memberList []string, operationID string) (onllUserIDList []string, offlUserIDList []string) { +func getOnlineAndOfflineUserIDList(memberList []string, m map[string][]string, operationID string) { + var onllUserIDList, offlUserIDList []string var wsResult []*pbRelay.GetUsersOnlineStatusResp_SuccessResult req := &pbRelay.GetUsersOnlineStatusReq{} req.UserIDList = memberList @@ -731,7 +733,8 @@ func getOnlineAndOfflineUserIDList(memberList []string, operationID string) (onl offlUserIDList = append(offlUserIDList, v1) } } - return onllUserIDList, offlUserIDList + m[constant.OnlineStatus] = onllUserIDList + m[constant.OfflineStatus] = offlUserIDList } func (rpc *rpcChat) sendMsgToGroup(list []string, pb pbChat.SendMsgReq, status string, sendTag *bool, wg *sync.WaitGroup) {