From 6e6508aafdbd0feba2f2618475a21ac220ad4871 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Mon, 18 Apr 2022 19:24:36 +0800 Subject: [PATCH] workMoments --- cmd/open_im_api/main.go | 1 + internal/api/office/work_moments.go | 38 ++ internal/rpc/msg/work_moments_notification.go | 47 ++ internal/rpc/office/office.go | 82 +++- internal/rpc/user/user.go | 15 +- pkg/base_info/work_moments_struct.go | 11 + pkg/common/constant/constant.go | 3 + pkg/common/db/model.go | 91 ++-- pkg/common/db/mongoModel.go | 179 ++++++-- pkg/proto/office/office.pb.go | 419 ++++++++++++------ pkg/proto/office/office.proto | 13 +- 11 files changed, 678 insertions(+), 221 deletions(-) create mode 100644 internal/rpc/msg/work_moments_notification.go diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 18e31d9e3..ba98bc0ec 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -140,6 +140,7 @@ func main() { officeGroup.POST("/delete_one_work_moment", office.DeleteOneWorkMoment) officeGroup.POST("/like_one_work_moment", office.LikeOneWorkMoment) officeGroup.POST("/comment_one_work_moment", office.CommentOneWorkMoment) + officeGroup.POST("/get_work_moment_by_id", office.GetWorkMomentByID) officeGroup.POST("/get_user_work_moments", office.GetUserWorkMoments) officeGroup.POST("/get_user_friend_work_moments", office.GetUserFriendWorkMoments) officeGroup.POST("/get_user_work_moments_comments_msg", office.GetUserWorkMomentsCommentsMsg) diff --git a/internal/api/office/work_moments.go b/internal/api/office/work_moments.go index ac7619dda..d1be4cb4e 100644 --- a/internal/api/office/work_moments.go +++ b/internal/api/office/work_moments.go @@ -167,6 +167,44 @@ func CommentOneWorkMoment(c *gin.Context) { c.JSON(http.StatusOK, resp) } +func GetWorkMomentByID(c *gin.Context) { + var ( + req apiStruct.GetWorkMomentByIDReq + resp apiStruct.GetWorkMomentByIDResp + reqPb pbOffice.GetWorkMomentByIDReq + respPb *pbOffice.GetWorkMomentByIDResp + ) + 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) + ok, userID := 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 + } + reqPb.OperationID = req.OperationID + reqPb.OpUserID = userID + reqPb.WorkMomentID = req.WorkMomentID + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName) + client := pbOffice.NewOfficeServiceClient(etcdConn) + respPb, err := client.GetWorkMomentByID(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserWorkMoments rpc failed", err.Error()) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserWorkMoments 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()) + } + resp.Data.WorkMoment = respPb.WorkMoment + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) + c.JSON(http.StatusOK, resp) +} + func GetUserWorkMoments(c *gin.Context) { var ( req apiStruct.GetUserWorkMomentsReq diff --git a/internal/rpc/msg/work_moments_notification.go b/internal/rpc/msg/work_moments_notification.go new file mode 100644 index 000000000..8e55ece11 --- /dev/null +++ b/internal/rpc/msg/work_moments_notification.go @@ -0,0 +1,47 @@ +package msg + +import ( + "Open_IM/pkg/common/config" + "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/db" + "Open_IM/pkg/common/log" + "Open_IM/pkg/grpc-etcdv3/getcdv3" + pbChat "Open_IM/pkg/proto/chat" + pbCommon "Open_IM/pkg/proto/sdk_ws" + "Open_IM/pkg/utils" + "context" + "encoding/json" + "strings" +) + +func CommentOneWorkMomentNotification(operationID, recvID string, comment db.CommentMsg, user db.User) { + log.NewInfo(operationID, utils.GetSelfFuncName(), "args: ", recvID, user, comment) + var req pbChat.SendMsgReq + var msgData pbCommon.MsgData + msgData.SendID = user.UserID + msgData.RecvID = recvID + msgData.ContentType = constant.WorkMomentNewCommentNotification + msgData.SessionType = constant.SingleChatType + msgData.MsgFrom = constant.UserMsgType + bytes, err := json.Marshal(comment) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), "marshal failed", err.Error()) + } + msgData.Content = bytes + msgData.SenderFaceURL = user.FaceURL + msgData.SenderNickname = user.Nickname + msgData.CreateTime = utils.GetCurrentTimestampByMill() + msgData.ClientMsgID = utils.GetMsgID(user.UserID) + req.MsgData = &msgData + req.OperationID = operationID + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName) + client := pbChat.NewChatClient(etcdConn) + respPb, err := client.SendMsg(context.Background(), &req) + if err != nil { + log.NewError(operationID, utils.GetSelfFuncName(), "send msg failed", err.Error()) + return + } + if respPb.ErrCode != 0 { + log.NewError(operationID, utils.GetSelfFuncName(), "send tag msg failed ", respPb) + } +} diff --git a/internal/rpc/office/office.go b/internal/rpc/office/office.go index 53e58f223..9dc7d91db 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 func (s *officeServer) DeleteOneWorkMoment(_ context.Context, req *pbOffice.DeleteOneWorkMomentReq) (resp *pbOffice.DeleteOneWorkMomentResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp = &pbOffice.DeleteOneWorkMomentResp{} + 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 + } + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "workMoment", workMoment) + if workMoment.UserID != req.UserID { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "workMoment.UserID != req.WorkMomentID ", workMoment, req.WorkMomentID) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg} + return resp, nil + } err = db.DB.DeleteOneWorkMoment(req.WorkMomentID) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "DeleteOneWorkMoment", err.Error()) @@ -297,20 +309,24 @@ func (s *officeServer) DeleteOneWorkMoment(_ context.Context, req *pbOffice.Dele return resp, nil } +func isUserCanSeeWorkMoment(userID string, workMoment db.WorkMoment) bool { + if userID != workMoment.UserID { + if utils.IsContain(userID, workMoment.WhoCantSeeUserIDList) { + return false + } + if utils.IsContain(userID, workMoment.WhoCanSeeUserIDList) { + return true + } + if workMoment.IsPrivate { + return false + } + } + return true +} + func (s *officeServer) LikeOneWorkMoment(_ context.Context, req *pbOffice.LikeOneWorkMomentReq) (resp *pbOffice.LikeOneWorkMomentResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp = &pbOffice.LikeOneWorkMomentResp{} - 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 - } - if workMoment.UserID != req.WorkMomentID { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "workMoment.UserID != req.WorkMomentID ", workMoment, req.WorkMomentID) - resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg} - return resp, nil - } if err = db.DB.LikeOneWorkMoment(req.UserID, req.WorkMomentID); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "LikeOneWorkMoment failed ", err.Error()) resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} @@ -323,9 +339,11 @@ func (s *officeServer) LikeOneWorkMoment(_ context.Context, req *pbOffice.LikeOn func (s *officeServer) CommentOneWorkMoment(_ context.Context, req *pbOffice.CommentOneWorkMomentReq) (resp *pbOffice.CommentOneWorkMomentResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp = &pbOffice.CommentOneWorkMomentResp{} - commentUserName, err := imdb.GetUserNameByUserID(req.UserID) + commentUser, err := imdb.GetUserByUserID(req.UserID) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserNameByUserID commentUserName failed", req.UserID, err.Error()) + resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil } var replyUserName string if req.ReplyUserID != "" { @@ -338,18 +356,45 @@ func (s *officeServer) CommentOneWorkMoment(_ context.Context, req *pbOffice.Com } comment := db.Comment{ UserID: req.UserID, - UserName: commentUserName, + UserName: commentUser.Nickname, ReplyUserID: req.ReplyUserID, ReplyUserName: replyUserName, - ContentID: "", Content: req.Content, CreateTime: int32(time.Now().Unix()), } - if err = db.DB.CommentOneWorkMoment(comment, req.WorkMomentID); err != nil { + workMoment, err := db.DB.CommentOneWorkMoment(comment, req.WorkMomentID) + if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "CommentOneWorkMoment failed", err.Error()) resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} return resp, nil } + commentMsg := db.CommentMsg{ + Comment: comment, + WorkMomentID: workMoment.WorkMomentID, + WorkMomentContent: workMoment.Content, + } + msg.CommentOneWorkMomentNotification(req.OperationID, workMoment.UserID, commentMsg, *commentUser) + if req.ReplyUserID != "" { + msg.CommentOneWorkMomentNotification(req.OperationID, req.ReplyUserID, commentMsg, *commentUser) + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + return resp, nil +} + +func (s *officeServer) GetWorkMomentByID(_ context.Context, req *pbOffice.GetWorkMomentByIDReq) (resp *pbOffice.GetWorkMomentByIDResp, err error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp = &pbOffice.GetWorkMomentByIDResp{} + 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) + log.Debug(req.OperationID, utils.GetSelfFuncName(), canSee, req.OpUserID, workMoment) + if err := utils.CopyStructFields(resp.WorkMoment, workMoment); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields", err.Error()) + } log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) return resp, nil } @@ -357,6 +402,7 @@ func (s *officeServer) CommentOneWorkMoment(_ context.Context, req *pbOffice.Com func (s *officeServer) GetUserWorkMoments(_ context.Context, req *pbOffice.GetUserWorkMomentsReq) (resp *pbOffice.GetUserWorkMomentsResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp = &pbOffice.GetUserWorkMomentsResp{} + resp.WorkMoments = make([]*pbOffice.WorkMoment, req.Pagination.ShowNumber) workMoments, err := db.DB.GetUserWorkMoments(req.UserID, req.Pagination.ShowNumber, req.Pagination.PageNumber) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), err) @@ -374,6 +420,7 @@ func (s *officeServer) GetUserWorkMoments(_ context.Context, req *pbOffice.GetUs func (s *officeServer) GetUserFriendWorkMoments(_ context.Context, req *pbOffice.GetUserFriendWorkMomentsReq) (resp *pbOffice.GetUserFriendWorkMomentsResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp = &pbOffice.GetUserFriendWorkMomentsResp{} + resp.WorkMoments = make([]*pbOffice.WorkMoment, req.Pagination.ShowNumber) friendIDList, err := imdb.GetFriendIDListByUserID(req.UserID) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetFriendIDListByUserID", err.Error()) @@ -381,7 +428,7 @@ func (s *officeServer) GetUserFriendWorkMoments(_ context.Context, req *pbOffice return resp, nil } log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "friendIDList: ", friendIDList) - workMoments, err := db.DB.GetUserFriendWorkMoments(friendIDList, req.Pagination.ShowNumber, req.Pagination.PageNumber) + workMoments, err := db.DB.GetUserFriendWorkMoments(friendIDList, req.Pagination.ShowNumber, req.Pagination.PageNumber, req.UserID) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserFriendWorkMoments", err.Error()) resp.CommonResp = &pbOffice.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} @@ -397,7 +444,8 @@ func (s *officeServer) GetUserFriendWorkMoments(_ context.Context, req *pbOffice func (s *officeServer) GetUserWorkMomentsCommentsMsg(_ context.Context, req *pbOffice.GetUserWorkMomentsCommentsMsgReq) (resp *pbOffice.GetUserWorkMomentsCommentsMsgResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) - resp = &pbOffice.GetUserWorkMomentsCommentsMsgResp{CommentsMsgs: []*pbOffice.CommentsMsg{}} + resp = &pbOffice.GetUserWorkMomentsCommentsMsgResp{} + resp.CommentsMsgs = make([]*pbOffice.CommentsMsg, req.Pagination.ShowNumber) workMomentsCommentMsgs, err := db.DB.GetUserWorkMomentsCommentsMsg(req.UserID, req.Pagination.ShowNumber, req.Pagination.PageNumber) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserWorkMomentsCommentsMsg", err.Error()) diff --git a/internal/rpc/user/user.go b/internal/rpc/user/user.go index 8e57ba2bf..f7a9874c8 100644 --- a/internal/rpc/user/user.go +++ b/internal/rpc/user/user.go @@ -206,10 +206,23 @@ func (s *userServer) GetConversations(ctx context.Context, req *pbUser.GetConver func (s *userServer) SetConversation(ctx context.Context, req *pbUser.SetConversationReq) (*pbUser.SetConversationResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp := &pbUser.SetConversationResp{} if req.NotificationType == 0 { req.NotificationType = constant.ConversationOptChangeNotification } - resp := &pbUser.SetConversationResp{} + if req.Conversation.ConversationType == constant.GroupChatType { + groupInfo, err := imdb.GetGroupInfoByGroupID(req.Conversation.GroupID) + if err != nil { + log.NewError(req.OperationID, "GetGroupInfoByGroupID failed ", req.Conversation.GroupID, err.Error()) + resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + if groupInfo.Status == constant.GroupStatusDismissed { + errMsg := "group status is dismissed" + resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg} + return resp, nil + } + } var conversation db.Conversation if err := utils.CopyStructFields(&conversation, req.Conversation); err != nil { log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", *req.Conversation, err.Error()) diff --git a/pkg/base_info/work_moments_struct.go b/pkg/base_info/work_moments_struct.go index 22d38df37..c9feb5c0a 100644 --- a/pkg/base_info/work_moments_struct.go +++ b/pkg/base_info/work_moments_struct.go @@ -41,6 +41,17 @@ type WorkMomentsUserCommonReq struct { UserID string `json:"UserID" binding:"required"` } +type GetWorkMomentByIDReq struct { + office.GetWorkMomentByIDReq +} + +type GetWorkMomentByIDResp struct { + CommResp + Data struct { + WorkMoment *office.WorkMoment `json:"workMoment"` + } `json:"data"` +} + type GetUserWorkMomentsReq struct { WorkMomentsUserCommonReq } diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index fdee4f2b7..e6268ce3d 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -88,6 +88,9 @@ const ( ConversationPrivateChatNotification = 1701 + WorkMomentNotificationStart = 1800 + WorkMomentNewCommentNotification = 1801 + NotificationEnd = 2000 //status diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index bd465d6ff..3ffce9ddf 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -2,6 +2,8 @@ package db import ( "Open_IM/pkg/common/config" + "go.mongodb.org/mongo-driver/bson" + //"Open_IM/pkg/common/log" "Open_IM/pkg/utils" "fmt" @@ -34,7 +36,6 @@ func key(dbAddress, dbName string) string { func init() { //log.NewPrivateLog(constant.LogFileName) - //var mgoSession *mgo.Session var mongoClient *mongo.Client var err1 error //mysql init @@ -66,39 +67,67 @@ 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) + cCommentMsgModels := []mongo.IndexModel{ + { + Keys: bson.M{"create_time": -1, "user_id": -1}, + }, + } + result, err := dataBase.Collection(cCommentMsg).Indexes().CreateMany(context.Background(), cCommentMsgModels, opts) + if err != nil { + fmt.Println("mongodb create cCommentMsgModels failed", result, err.Error()) + } + + cSendLogModels := []mongo.IndexModel{ + { + Keys: bson.M{"user_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()) + } + + cChatModels := []mongo.IndexModel{ + { + Keys: bson.M{"uid": -1}, + }, + } + result, 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: bson.M{"work_moment_id": -1}, + }, + { + Keys: bson.M{"user_id": -1, "create_time": -1}, + }, + } + result, err = dataBase.Collection(cWorkMoment).Indexes().CreateMany(context.Background(), cWorkMomentModels, opts) + if err != nil { + fmt.Println("mongodb create cWorkMomentModels failed", result, err.Error()) + } + + cTagModels := []mongo.IndexModel{ + { + Keys: bson.M{"tag_id": -1}, + }, + { + Keys: bson.M{"user_id": -1, "tag_id": -1}, + }, + } + result, err = dataBase.Collection(cTag).Indexes().CreateMany(context.Background(), cTagModels, opts) + if err != nil { + fmt.Println("mongodb create cTagModels failed", result, err.Error()) + } DB.mongoClient = mongoClient - //mgoDailInfo := &mgo.DialInfo{ - // Addrs: config.Config.Mongo.DBAddress, - // Direct: config.Config.Mongo.DBDirect, - // Timeout: time.Second * time.Duration(config.Config.Mongo.DBTimeout), - // Database: config.Config.Mongo.DBDatabase, - // Source: config.Config.Mongo.DBSource, - // Username: config.Config.Mongo.DBUserName, - // Password: config.Config.Mongo.DBPassword, - // PoolLimit: config.Config.Mongo.DBMaxPoolSize, - //} - //mgoSession, err = mgo.DialWithInfo(mgoDailInfo) - // - //if err != nil { - // - // mgoSession, err1 = mgo.DialWithInfo(mgoDailInfo) - // if err1 != nil { - // log.NewError(" mongo.Connect failed, panic", err.Error()) - // panic(err1.Error()) - // } - //} - - //DB.mgoSession = mgoSession - //DB.mgoSession.SetMode(mgo.Monotonic, true) - //c := DB.mgoSession.DB(config.Config.Mongo.DBDatabase).C(cChat) - //err = c.EnsureIndexKey("uid") - //if err != nil { - // panic(err.Error()) - //} - // - // redis pool init DB.redisPool = &redis.Pool{ MaxIdle: config.Config.Redis.DBMaxIdle, diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 6d7ff3f7c..ff7cc0d35 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -26,6 +26,8 @@ const cChat = "msg" const cGroup = "group" const cTag = "tag" const cSendLog = "send_log" +const cWorkMoment = "work_moment" +const cCommentMsg = "comment_msg" const singleGocMsgNum = 5000 type MsgInfo struct { @@ -571,39 +573,68 @@ type WorkMoment struct { Comments []*Comment `bson:"comments"` WhoCanSeeUserIDList []string `bson:"who_can_see_user_id_list"` WhoCantSeeUserIDList []string `bson:"who_cant_see_user_id_list"` - IsPrivate bool - IsPublic bool - CreateTime int32 + IsPrivate bool `bson:"is_private"` + CreateTime int32 `bson:"create_time"` } type LikeUser struct { - UserID string - UserName string + UserID string `bson:"user_id"` + UserName string `bson:"user_name"` } type Comment struct { - UserID string - UserName string - ReplyUserID string - ReplyUserName string - ContentID string - Content string - CreateTime int32 + UserID string `bson:"user_id" json:"user_id"` + UserName string `bson:"user_id" json:"user_name"` + ReplyUserID string `bson:"reply_user_id" json:"reply_user_id"` + ReplyUserName string `bson:"reply_user_name" json:"reply_user_name"` + ContentID string `bson:"content_id" json:"content_id"` + Content string `bson:"content" json:"content"` + CreateTime int32 `bson:"create_time" json:"create_time"` } func (d *DataBases) CreateOneWorkMoment(workMoment *WorkMoment) error { - return nil + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cWorkMoment) + workMomentID := generateWorkMomentID(workMoment.UserID) + workMoment.WorkMomentID = workMomentID + workMoment.CreateTime = int32(time.Now().Unix()) + _, err := c.InsertOne(ctx, workMoment) + return err } func (d *DataBases) DeleteOneWorkMoment(workMomentID string) error { - return nil + 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.DeleteOne(ctx, bson.M{"work_moment_id": workMomentID}) + return err } func (d *DataBases) GetWorkMomentByID(workMomentID string) (*WorkMoment, error) { - return nil, nil + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cWorkMoment) + workMoment := &WorkMoment{} + err := c.FindOne(ctx, bson.M{"work_moment_id": workMomentID}).Decode(workMoment) + return workMoment, err } func (d *DataBases) LikeOneWorkMoment(likeUserID, workMomentID string) error { + workMoment, err := d.GetWorkMomentByID(workMomentID) + if err != nil { + return err + } + for i, user := range workMoment.LikeUsers { + if likeUserID == user.UserID { + workMoment.LikeUsers = append(workMoment.LikeUsers[0:i], workMoment.LikeUsers[i+1:]...) + return nil + } + } + workMoment.LikeUsers = append(workMoment.LikeUsers, &LikeUser{UserID: likeUserID}) + 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.M{"work_id": workMomentID}, bson.M{"$set": bson.M{"like_users": workMoment.LikeUsers}}) + if err != nil { + return err + } return nil } @@ -611,30 +642,124 @@ func (d *DataBases) SetUserWorkMomentsLevel(userID string, level int32) error { return nil } +func (d *DataBases) CreateUserWorkMomentsCommentsMsg(msg CommentMsg) error { + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cCommentMsg) + _, err := c.InsertOne(ctx, msg) + return err +} + func (d *DataBases) ClearUserWorkMomentsCommentsMsg(userID string) error { - return nil + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cCommentMsg) + _, err := c.DeleteOne(ctx, bson.M{"user_id": userID}) + return err } type CommentMsg struct { - WorkMomentID string `bson:"workMoment"` - CommentContent string `bson:"content"` + WorkMomentID string `bson:"work_moment" json:"work_moment"` + WorkMomentContent string `bson:"work_moment_content" json:"work_moment_content"` Comment } func (d *DataBases) GetUserWorkMomentsCommentsMsg(userID string, showNumber, pageNumber int32) ([]CommentMsg, error) { - return nil, nil + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cCommentMsg) + var commentMsgList []CommentMsg + findOpts := options.Find().SetLimit(int64(showNumber)).SetSkip(int64(showNumber) * (int64(pageNumber) - 1)).SetSort(bson.M{"create_time": -1}) + result, err := c.Find(ctx, bson.M{"user_id": userID}, findOpts) + if err != nil { + return commentMsgList, err + } + err = result.All(ctx, &commentMsgList) + return commentMsgList, err } -func (d *DataBases) CommentOneWorkMoment(comment Comment, workMomentID string) error { - return nil +func (d *DataBases) CommentOneWorkMoment(comment Comment, workMomentID string) (WorkMoment, error) { + comment.ContentID = generateWorkMomentCommentID(workMomentID) + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cWorkMoment) + var workMoment WorkMoment + err := c.FindOneAndUpdate(ctx, bson.M{"work_moment_id": workMomentID}, bson.M{"$push": bson.M{"comments": comment}}).Decode(&workMoment) + return workMoment, err } func (d *DataBases) GetUserWorkMoments(userID string, showNumber, pageNumber int32) ([]WorkMoment, error) { - return nil, nil + ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) + c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cWorkMoment) + var workMomentList []WorkMoment + findOpts := options.Find().SetLimit(int64(showNumber)).SetSkip(int64(showNumber) * (int64(pageNumber) - 1)).SetSort(bson.M{"create_time": -1}) + result, err := c.Find(ctx, bson.M{"user_id": userID}, findOpts) + if err != nil { + return workMomentList, nil + } + err = result.All(ctx, &workMomentList) + return workMomentList, err } -func (d *DataBases) GetUserFriendWorkMoments(friendIDList []string, showNumber, pageNumber int32) ([]WorkMoment, error) { - return nil, nil +// recursion +func (d *DataBases) GetUserFriendWorkMomentsRecursion(friendIDList []string, showNumber, pageNumber int32, userID 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) + var workMomentList []WorkMoment + findOpts := options.Find().SetLimit(int64(showNumber)).SetSkip(int64(showNumber) * (int64(pageNumber) - 1)).SetSort(bson.M{"create_time": -1}) + result, err := c.Find(ctx, bson.M{"user_id": friendIDList, "is_private": false, "who_can_see_user_id_list": bson.M{"$elemMatch": bson.M{"$eq": userID}}, "who_cant_see_user_id_list": ""}, findOpts) + if err != nil { + return workMomentList, nil + } + err = result.All(ctx, &workMomentList) + //if len(workMomentList) == 0 { + // return workMomentList, nil + //} + //for i, workMoment := range workMomentList { + // if workMoment.IsPrivate { + // workMomentList = append(workMomentList[0:i], workMomentList[i+1:]...) + // continue + // } + // + // var isContain bool + // for _, WhoCanSeeUserID := range workMoment.WhoCanSeeUserIDList { + // if WhoCanSeeUserID == userID { + // isContain = true + // break + // } + // } + // if !isContain { + // workMomentList = append(workMomentList[0:i], workMomentList[i+1:]...) + // continue + // } + // + // for _, whoCantSeeUserID := range workMoment.WhoCantSeeUserIDList { + // if whoCantSeeUserID == userID { + // workMomentList = append(workMomentList[0:i], workMomentList[i+1:]...) + // break + // } + // } + //} + // + //if len(workMomentList) < int(pageNumber) { + // workMomentListWorkMomentList, err := d.GetUserFriendWorkMomentsRecursion(friendIDList, showNumber, pageNumber, userID) + // workMomentList = append(workMomentList, workMomentListWorkMomentList...) + // if err != nil { + // return workMomentList, err + // } + //} + return workMomentList, err +} + +func (d *DataBases) GetUserFriendWorkMoments(friendIDList []string, showNumber, pageNumber int32, userID 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) + var workMomentList []WorkMoment + findOpts := options.Find().SetLimit(int64(showNumber)).SetSkip(int64(showNumber) * (int64(pageNumber) - 1)).SetSort(bson.M{"create_time": -1}) + result, err := c.Find(ctx, bson.M{"user_id": friendIDList, "is_private": false, "$or": bson.M{"who_can_see_user_id_list": bson.M{"$elemMatch": bson.M{"$eq": userID}}, + "who_cant_see_user_id_list": bson.M{"$nin": userID}}, + }, findOpts) + if err != nil { + return workMomentList, nil + } + err = result.All(ctx, &workMomentList) + return workMomentList, err } func generateTagID(tagName, userID string) string { @@ -645,6 +770,10 @@ func generateWorkMomentID(userID string) string { return utils.Md5(userID + strconv.Itoa(rand.Int()) + time.Now().String()) } +func generateWorkMomentCommentID(workMomentID string) string { + return utils.Md5(workMomentID + strconv.Itoa(rand.Int()) + time.Now().String()) +} + func getCurrentTimestampByMill() int64 { return time.Now().UnixNano() / 1e6 } @@ -666,9 +795,7 @@ func getMsgIndex(seq uint32) int { } func isContainInt32(target uint32, List []uint32) bool { - for _, element := range List { - if target == element { return true } diff --git a/pkg/proto/office/office.pb.go b/pkg/proto/office/office.pb.go index 32a6a004d..30eed4b2e 100644 --- a/pkg/proto/office/office.pb.go +++ b/pkg/proto/office/office.pb.go @@ -36,7 +36,7 @@ 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_8a5f7d4f1783db20, []int{0} + return fileDescriptor_office_7066d9c5c43d9815, []int{0} } func (m *CommonResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommonResp.Unmarshal(m, b) @@ -82,7 +82,7 @@ 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_8a5f7d4f1783db20, []int{1} + return fileDescriptor_office_7066d9c5c43d9815, []int{1} } func (m *TagUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TagUser.Unmarshal(m, b) @@ -129,7 +129,7 @@ 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_8a5f7d4f1783db20, []int{2} + return fileDescriptor_office_7066d9c5c43d9815, []int{2} } func (m *Tag) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Tag.Unmarshal(m, b) @@ -182,7 +182,7 @@ 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_8a5f7d4f1783db20, []int{3} + return fileDescriptor_office_7066d9c5c43d9815, []int{3} } func (m *GetUserTagsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserTagsReq.Unmarshal(m, b) @@ -228,7 +228,7 @@ 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_8a5f7d4f1783db20, []int{4} + return fileDescriptor_office_7066d9c5c43d9815, []int{4} } func (m *GetUserTagsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserTagsResp.Unmarshal(m, b) @@ -276,7 +276,7 @@ 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_8a5f7d4f1783db20, []int{5} + return fileDescriptor_office_7066d9c5c43d9815, []int{5} } func (m *CreateTagReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateTagReq.Unmarshal(m, b) @@ -335,7 +335,7 @@ 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_8a5f7d4f1783db20, []int{6} + return fileDescriptor_office_7066d9c5c43d9815, []int{6} } func (m *CreateTagResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateTagResp.Unmarshal(m, b) @@ -375,7 +375,7 @@ 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_8a5f7d4f1783db20, []int{7} + return fileDescriptor_office_7066d9c5c43d9815, []int{7} } func (m *DeleteTagReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteTagReq.Unmarshal(m, b) @@ -427,7 +427,7 @@ 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_8a5f7d4f1783db20, []int{8} + return fileDescriptor_office_7066d9c5c43d9815, []int{8} } func (m *DeleteTagResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteTagResp.Unmarshal(m, b) @@ -470,7 +470,7 @@ 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_8a5f7d4f1783db20, []int{9} + return fileDescriptor_office_7066d9c5c43d9815, []int{9} } func (m *SetTagReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetTagReq.Unmarshal(m, b) @@ -543,7 +543,7 @@ 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_8a5f7d4f1783db20, []int{10} + return fileDescriptor_office_7066d9c5c43d9815, []int{10} } func (m *SetTagResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetTagResp.Unmarshal(m, b) @@ -587,7 +587,7 @@ 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_8a5f7d4f1783db20, []int{11} + return fileDescriptor_office_7066d9c5c43d9815, []int{11} } func (m *SendMsg2TagReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SendMsg2TagReq.Unmarshal(m, b) @@ -667,7 +667,7 @@ 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_8a5f7d4f1783db20, []int{12} + return fileDescriptor_office_7066d9c5c43d9815, []int{12} } func (m *SendMsg2TagResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SendMsg2TagResp.Unmarshal(m, b) @@ -707,7 +707,7 @@ 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_8a5f7d4f1783db20, []int{13} + return fileDescriptor_office_7066d9c5c43d9815, []int{13} } func (m *GetTagSendLogsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetTagSendLogsReq.Unmarshal(m, b) @@ -761,7 +761,7 @@ 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_8a5f7d4f1783db20, []int{14} + return fileDescriptor_office_7066d9c5c43d9815, []int{14} } func (m *TagSendLog) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TagSendLog.Unmarshal(m, b) @@ -815,7 +815,7 @@ 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_8a5f7d4f1783db20, []int{15} + return fileDescriptor_office_7066d9c5c43d9815, []int{15} } func (m *GetTagSendLogsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetTagSendLogsResp.Unmarshal(m, b) @@ -869,7 +869,7 @@ 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_8a5f7d4f1783db20, []int{16} + return fileDescriptor_office_7066d9c5c43d9815, []int{16} } func (m *GetUserTagByIDReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserTagByIDReq.Unmarshal(m, b) @@ -922,7 +922,7 @@ 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_8a5f7d4f1783db20, []int{17} + return fileDescriptor_office_7066d9c5c43d9815, []int{17} } func (m *GetUserTagByIDResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserTagByIDResp.Unmarshal(m, b) @@ -968,7 +968,7 @@ 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_8a5f7d4f1783db20, []int{18} + return fileDescriptor_office_7066d9c5c43d9815, []int{18} } func (m *LikeUser) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeUser.Unmarshal(m, b) @@ -1019,7 +1019,7 @@ 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_8a5f7d4f1783db20, []int{19} + return fileDescriptor_office_7066d9c5c43d9815, []int{19} } func (m *Comment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Comment.Unmarshal(m, b) @@ -1097,7 +1097,6 @@ type WorkMoment struct { WhoCanSeeUserIDList []string `protobuf:"bytes,6,rep,name=whoCanSeeUserIDList" json:"whoCanSeeUserIDList,omitempty"` WhoCantSeeUserIDList []string `protobuf:"bytes,7,rep,name=whoCantSeeUserIDList" json:"whoCantSeeUserIDList,omitempty"` IsPrivate bool `protobuf:"varint,8,opt,name=isPrivate" json:"isPrivate,omitempty"` - IsPublic bool `protobuf:"varint,9,opt,name=isPublic" json:"isPublic,omitempty"` CreateTime int32 `protobuf:"varint,10,opt,name=CreateTime" json:"CreateTime,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -1108,7 +1107,7 @@ 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_8a5f7d4f1783db20, []int{20} + return fileDescriptor_office_7066d9c5c43d9815, []int{20} } func (m *WorkMoment) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_WorkMoment.Unmarshal(m, b) @@ -1184,13 +1183,6 @@ func (m *WorkMoment) GetIsPrivate() bool { return false } -func (m *WorkMoment) GetIsPublic() bool { - if m != nil { - return m.IsPublic - } - return false -} - func (m *WorkMoment) GetCreateTime() int32 { if m != nil { return m.CreateTime @@ -1211,7 +1203,7 @@ 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_8a5f7d4f1783db20, []int{21} + return fileDescriptor_office_7066d9c5c43d9815, []int{21} } func (m *CreateOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOneWorkMomentReq.Unmarshal(m, b) @@ -1263,7 +1255,7 @@ 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_8a5f7d4f1783db20, []int{22} + return fileDescriptor_office_7066d9c5c43d9815, []int{22} } func (m *CreateOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateOneWorkMomentResp.Unmarshal(m, b) @@ -1303,7 +1295,7 @@ 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_8a5f7d4f1783db20, []int{23} + return fileDescriptor_office_7066d9c5c43d9815, []int{23} } func (m *DeleteOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOneWorkMomentReq.Unmarshal(m, b) @@ -1355,7 +1347,7 @@ 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_8a5f7d4f1783db20, []int{24} + return fileDescriptor_office_7066d9c5c43d9815, []int{24} } func (m *DeleteOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteOneWorkMomentResp.Unmarshal(m, b) @@ -1395,7 +1387,7 @@ 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_8a5f7d4f1783db20, []int{25} + return fileDescriptor_office_7066d9c5c43d9815, []int{25} } func (m *LikeOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeOneWorkMomentReq.Unmarshal(m, b) @@ -1447,7 +1439,7 @@ 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_8a5f7d4f1783db20, []int{26} + return fileDescriptor_office_7066d9c5c43d9815, []int{26} } func (m *LikeOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LikeOneWorkMomentResp.Unmarshal(m, b) @@ -1489,7 +1481,7 @@ 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_8a5f7d4f1783db20, []int{27} + return fileDescriptor_office_7066d9c5c43d9815, []int{27} } func (m *CommentOneWorkMomentReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentOneWorkMomentReq.Unmarshal(m, b) @@ -1555,7 +1547,7 @@ func (m *CommentOneWorkMomentResp) Reset() { *m = CommentOneWorkMomentRe func (m *CommentOneWorkMomentResp) String() string { return proto.CompactTextString(m) } func (*CommentOneWorkMomentResp) ProtoMessage() {} func (*CommentOneWorkMomentResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{28} + return fileDescriptor_office_7066d9c5c43d9815, []int{28} } func (m *CommentOneWorkMomentResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentOneWorkMomentResp.Unmarshal(m, b) @@ -1582,6 +1574,106 @@ func (m *CommentOneWorkMomentResp) GetCommonResp() *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_7066d9c5c43d9815, []int{29} +} +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_7066d9c5c43d9815, []int{30} +} +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 GetUserWorkMomentsReq 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"` @@ -1595,7 +1687,7 @@ 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_8a5f7d4f1783db20, []int{29} + return fileDescriptor_office_7066d9c5c43d9815, []int{31} } func (m *GetUserWorkMomentsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsReq.Unmarshal(m, b) @@ -1649,7 +1741,7 @@ 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_8a5f7d4f1783db20, []int{30} + return fileDescriptor_office_7066d9c5c43d9815, []int{32} } func (m *GetUserWorkMomentsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsResp.Unmarshal(m, b) @@ -1703,7 +1795,7 @@ func (m *GetUserFriendWorkMomentsReq) Reset() { *m = GetUserFriendWorkMo func (m *GetUserFriendWorkMomentsReq) String() string { return proto.CompactTextString(m) } func (*GetUserFriendWorkMomentsReq) ProtoMessage() {} func (*GetUserFriendWorkMomentsReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{31} + return fileDescriptor_office_7066d9c5c43d9815, []int{33} } func (m *GetUserFriendWorkMomentsReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserFriendWorkMomentsReq.Unmarshal(m, b) @@ -1757,7 +1849,7 @@ func (m *GetUserFriendWorkMomentsResp) Reset() { *m = GetUserFriendWorkM func (m *GetUserFriendWorkMomentsResp) String() string { return proto.CompactTextString(m) } func (*GetUserFriendWorkMomentsResp) ProtoMessage() {} func (*GetUserFriendWorkMomentsResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{32} + return fileDescriptor_office_7066d9c5c43d9815, []int{34} } func (m *GetUserFriendWorkMomentsResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserFriendWorkMomentsResp.Unmarshal(m, b) @@ -1811,7 +1903,7 @@ func (m *CommentsMsg) Reset() { *m = CommentsMsg{} } func (m *CommentsMsg) String() string { return proto.CompactTextString(m) } func (*CommentsMsg) ProtoMessage() {} func (*CommentsMsg) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{33} + return fileDescriptor_office_7066d9c5c43d9815, []int{35} } func (m *CommentsMsg) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CommentsMsg.Unmarshal(m, b) @@ -1865,7 +1957,7 @@ func (m *GetUserWorkMomentsCommentsMsgReq) Reset() { *m = GetUserWorkMom func (m *GetUserWorkMomentsCommentsMsgReq) String() string { return proto.CompactTextString(m) } func (*GetUserWorkMomentsCommentsMsgReq) ProtoMessage() {} func (*GetUserWorkMomentsCommentsMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{34} + return fileDescriptor_office_7066d9c5c43d9815, []int{36} } func (m *GetUserWorkMomentsCommentsMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsCommentsMsgReq.Unmarshal(m, b) @@ -1919,7 +2011,7 @@ func (m *GetUserWorkMomentsCommentsMsgResp) Reset() { *m = GetUserWorkMo func (m *GetUserWorkMomentsCommentsMsgResp) String() string { return proto.CompactTextString(m) } func (*GetUserWorkMomentsCommentsMsgResp) ProtoMessage() {} func (*GetUserWorkMomentsCommentsMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{35} + return fileDescriptor_office_7066d9c5c43d9815, []int{37} } func (m *GetUserWorkMomentsCommentsMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetUserWorkMomentsCommentsMsgResp.Unmarshal(m, b) @@ -1972,7 +2064,7 @@ func (m *ClearUserWorkMomentsCommentsMsgReq) Reset() { *m = ClearUserWor func (m *ClearUserWorkMomentsCommentsMsgReq) String() string { return proto.CompactTextString(m) } func (*ClearUserWorkMomentsCommentsMsgReq) ProtoMessage() {} func (*ClearUserWorkMomentsCommentsMsgReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{36} + return fileDescriptor_office_7066d9c5c43d9815, []int{38} } func (m *ClearUserWorkMomentsCommentsMsgReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgReq.Unmarshal(m, b) @@ -2017,7 +2109,7 @@ func (m *ClearUserWorkMomentsCommentsMsgResp) Reset() { *m = ClearUserWo func (m *ClearUserWorkMomentsCommentsMsgResp) String() string { return proto.CompactTextString(m) } func (*ClearUserWorkMomentsCommentsMsgResp) ProtoMessage() {} func (*ClearUserWorkMomentsCommentsMsgResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{37} + return fileDescriptor_office_7066d9c5c43d9815, []int{39} } func (m *ClearUserWorkMomentsCommentsMsgResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ClearUserWorkMomentsCommentsMsgResp.Unmarshal(m, b) @@ -2057,7 +2149,7 @@ func (m *SetUserWorkMomentsLevelReq) Reset() { *m = SetUserWorkMomentsLe func (m *SetUserWorkMomentsLevelReq) String() string { return proto.CompactTextString(m) } func (*SetUserWorkMomentsLevelReq) ProtoMessage() {} func (*SetUserWorkMomentsLevelReq) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{38} + return fileDescriptor_office_7066d9c5c43d9815, []int{40} } func (m *SetUserWorkMomentsLevelReq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetUserWorkMomentsLevelReq.Unmarshal(m, b) @@ -2109,7 +2201,7 @@ func (m *SetUserWorkMomentsLevelResp) Reset() { *m = SetUserWorkMomentsL func (m *SetUserWorkMomentsLevelResp) String() string { return proto.CompactTextString(m) } func (*SetUserWorkMomentsLevelResp) ProtoMessage() {} func (*SetUserWorkMomentsLevelResp) Descriptor() ([]byte, []int) { - return fileDescriptor_office_8a5f7d4f1783db20, []int{39} + return fileDescriptor_office_7066d9c5c43d9815, []int{41} } func (m *SetUserWorkMomentsLevelResp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetUserWorkMomentsLevelResp.Unmarshal(m, b) @@ -2166,6 +2258,8 @@ func init() { 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((*GetUserWorkMomentsReq)(nil), "office.GetUserWorkMomentsReq") proto.RegisterType((*GetUserWorkMomentsResp)(nil), "office.GetUserWorkMomentsResp") proto.RegisterType((*GetUserFriendWorkMomentsReq)(nil), "office.GetUserFriendWorkMomentsReq") @@ -2201,6 +2295,7 @@ type OfficeServiceClient interface { 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) // / user self GetUserWorkMoments(ctx context.Context, in *GetUserWorkMomentsReq, opts ...grpc.CallOption) (*GetUserWorkMomentsResp, error) // / users friend @@ -2317,6 +2412,15 @@ func (c *officeServiceClient) CommentOneWorkMoment(ctx context.Context, in *Comm 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) 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...) @@ -2376,6 +2480,7 @@ type OfficeServiceServer interface { DeleteOneWorkMoment(context.Context, *DeleteOneWorkMomentReq) (*DeleteOneWorkMomentResp, error) LikeOneWorkMoment(context.Context, *LikeOneWorkMomentReq) (*LikeOneWorkMomentResp, error) CommentOneWorkMoment(context.Context, *CommentOneWorkMomentReq) (*CommentOneWorkMomentResp, error) + GetWorkMomentByID(context.Context, *GetWorkMomentByIDReq) (*GetWorkMomentByIDResp, error) // / user self GetUserWorkMoments(context.Context, *GetUserWorkMomentsReq) (*GetUserWorkMomentsResp, error) // / users friend @@ -2587,6 +2692,24 @@ func _OfficeService_CommentOneWorkMoment_Handler(srv interface{}, ctx context.Co 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_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 { @@ -2725,6 +2848,10 @@ var _OfficeService_serviceDesc = grpc.ServiceDesc{ MethodName: "CommentOneWorkMoment", Handler: _OfficeService_CommentOneWorkMoment_Handler, }, + { + MethodName: "GetWorkMomentByID", + Handler: _OfficeService_GetWorkMomentByID_Handler, + }, { MethodName: "GetUserWorkMoments", Handler: _OfficeService_GetUserWorkMoments_Handler, @@ -2750,102 +2877,104 @@ var _OfficeService_serviceDesc = grpc.ServiceDesc{ Metadata: "office/office.proto", } -func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_8a5f7d4f1783db20) } +func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_7066d9c5c43d9815) } -var fileDescriptor_office_8a5f7d4f1783db20 = []byte{ - // 1494 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcd, 0x6e, 0xdb, 0xc6, - 0x13, 0x07, 0x25, 0x4b, 0xb2, 0x46, 0x4e, 0x1c, 0xaf, 0x1d, 0x5b, 0x7f, 0x26, 0xb6, 0x15, 0x26, - 0x7f, 0xc0, 0x49, 0x00, 0xa9, 0x50, 0x03, 0xb4, 0x40, 0xd1, 0xa0, 0x88, 0x94, 0x1a, 0x6e, 0xad, - 0xc4, 0xa5, 0x9c, 0x06, 0xe9, 0x21, 0x06, 0x2d, 0xad, 0x59, 0xc2, 0x12, 0xc9, 0x70, 0x69, 0x09, - 0xe9, 0xb1, 0x87, 0xbe, 0x40, 0x0f, 0x3d, 0xf5, 0xd2, 0x57, 0x28, 0xfa, 0x08, 0x3d, 0xf4, 0x54, - 0xf4, 0xd4, 0x53, 0x6f, 0x7d, 0x8f, 0x16, 0xbb, 0xfc, 0xda, 0xe5, 0x87, 0xa4, 0xd0, 0x0d, 0xd0, - 0x9e, 0xc4, 0x99, 0x9d, 0x9d, 0x9d, 0xf9, 0xcd, 0xee, 0xcc, 0xee, 0x08, 0xd6, 0xad, 0xb3, 0x33, - 0x63, 0x80, 0x5b, 0xde, 0x4f, 0xd3, 0x76, 0x2c, 0xd7, 0x42, 0x65, 0x8f, 0x92, 0x6f, 0x3d, 0xb5, - 0xb1, 0x79, 0x72, 0xd0, 0x6b, 0xd9, 0xe7, 0x7a, 0x8b, 0x0d, 0xb5, 0xc8, 0xf0, 0xfc, 0x64, 0x4a, - 0x5a, 0x53, 0xe2, 0x89, 0x2a, 0x0f, 0x01, 0x3a, 0xd6, 0x78, 0x6c, 0x99, 0x2a, 0x26, 0x36, 0xaa, - 0x43, 0x05, 0x3b, 0x4e, 0xc7, 0x1a, 0xe2, 0xba, 0xd4, 0x90, 0xf6, 0x4a, 0x6a, 0x40, 0xa2, 0x4d, - 0x28, 0x63, 0xc7, 0xe9, 0x11, 0xbd, 0x5e, 0x68, 0x48, 0x7b, 0x55, 0xd5, 0xa7, 0x94, 0x0f, 0xa1, - 0x72, 0xac, 0xe9, 0xcf, 0x08, 0x76, 0xa8, 0xc8, 0x05, 0xc1, 0xce, 0x41, 0x97, 0xcd, 0xad, 0xaa, - 0x3e, 0x85, 0x64, 0x58, 0xa6, 0x5f, 0x4f, 0xb4, 0x31, 0xf6, 0x27, 0x87, 0xb4, 0x72, 0x0a, 0xc5, - 0x63, 0x4d, 0x47, 0x1b, 0x50, 0x72, 0x35, 0x3d, 0x9c, 0xe9, 0x11, 0xd4, 0x1a, 0x57, 0xd3, 0xb9, - 0x79, 0x01, 0x89, 0xee, 0x7b, 0x2a, 0x0f, 0x0d, 0xe2, 0xd6, 0x8b, 0x8d, 0xe2, 0x5e, 0xad, 0xbd, - 0xda, 0xf4, 0x11, 0xf0, 0xad, 0x51, 0x43, 0x01, 0xe5, 0x13, 0xb8, 0xba, 0x8f, 0x5d, 0xca, 0x3c, - 0xd6, 0x74, 0xa2, 0xe2, 0x57, 0x99, 0x96, 0x36, 0xa0, 0x66, 0xd9, 0xd8, 0xd1, 0x5c, 0xc3, 0x32, - 0x0f, 0xba, 0xfe, 0xa2, 0x3c, 0x4b, 0x39, 0x83, 0x55, 0x41, 0x17, 0xb1, 0x51, 0x1b, 0x60, 0x10, - 0x22, 0xc8, 0x14, 0xd6, 0xda, 0x28, 0xb0, 0x26, 0xc2, 0x56, 0xe5, 0xa4, 0xd0, 0x2e, 0x2c, 0xb9, - 0x9a, 0x4e, 0xea, 0x05, 0x66, 0x7b, 0x8d, 0xb3, 0x5d, 0x65, 0x03, 0xca, 0xd7, 0x12, 0xac, 0x74, - 0x1c, 0xac, 0xb9, 0x98, 0xf2, 0xf0, 0x2b, 0x1e, 0x0b, 0x49, 0xc4, 0x22, 0x72, 0xa6, 0x20, 0x38, - 0xb3, 0x03, 0xe0, 0x7d, 0x85, 0x28, 0x55, 0x55, 0x8e, 0x13, 0x77, 0x76, 0x29, 0xe9, 0x6c, 0x07, - 0xae, 0x70, 0x36, 0xe4, 0x73, 0x55, 0x79, 0x09, 0x2b, 0x5d, 0x3c, 0xc2, 0xa1, 0x23, 0x59, 0xd8, - 0x87, 0x5b, 0xa0, 0xc0, 0x6f, 0x81, 0x98, 0x91, 0xc5, 0x54, 0x23, 0x39, 0xfd, 0x39, 0x8d, 0xfc, - 0x4d, 0x82, 0x6a, 0x1f, 0xbb, 0xb9, 0x4c, 0xac, 0x43, 0xc5, 0xc4, 0x53, 0x16, 0x19, 0xcf, 0xbc, - 0x80, 0x44, 0x4d, 0x40, 0x86, 0x39, 0x70, 0xb0, 0x46, 0xf0, 0xb3, 0x28, 0x12, 0x4b, 0x2c, 0x12, - 0x29, 0x23, 0xe8, 0x1e, 0x5c, 0x73, 0xf0, 0xf0, 0x62, 0xc0, 0x4b, 0x97, 0x98, 0x74, 0x82, 0x1f, - 0x07, 0xa6, 0x9c, 0x04, 0xe6, 0x23, 0x80, 0xc0, 0xa5, 0x9c, 0xa8, 0xfc, 0x29, 0xc1, 0xd5, 0x3e, - 0x36, 0x87, 0x3d, 0xa2, 0xb7, 0x85, 0x6d, 0xc8, 0x2c, 0x93, 0x98, 0x65, 0x01, 0x49, 0x4f, 0xf9, - 0xb3, 0xe0, 0x48, 0x16, 0xd8, 0x50, 0x48, 0xa3, 0x9b, 0x50, 0xdd, 0x77, 0xac, 0x0b, 0x9b, 0xdb, - 0x89, 0x11, 0x83, 0xc2, 0x4d, 0xb0, 0x39, 0x0c, 0xf7, 0xa0, 0x4f, 0x51, 0x38, 0xe8, 0x17, 0x76, - 0x8e, 0x46, 0x9a, 0x7b, 0x66, 0x39, 0xe3, 0x83, 0x6e, 0xbd, 0xc4, 0xb2, 0x52, 0x82, 0x4f, 0xed, - 0x1a, 0x58, 0xa6, 0x8b, 0x4d, 0xd7, 0x87, 0x22, 0x20, 0xe3, 0x40, 0x55, 0x92, 0x40, 0x3d, 0x86, - 0x55, 0xc1, 0xcb, 0x9c, 0x68, 0x7d, 0x2b, 0xc1, 0xda, 0x3e, 0x03, 0x9c, 0x6a, 0x3b, 0xb4, 0xbc, - 0x54, 0xd3, 0x05, 0x38, 0xd2, 0x74, 0xc3, 0x64, 0x8b, 0xf9, 0x9a, 0xee, 0x34, 0x09, 0x76, 0x26, - 0xd8, 0x39, 0xd1, 0x6c, 0xe3, 0xc4, 0xd6, 0x1c, 0x6d, 0x4c, 0x9a, 0x2a, 0x7e, 0x75, 0x81, 0x89, - 0x1b, 0xc9, 0xaa, 0xdc, 0xbc, 0xcc, 0x33, 0x3e, 0xff, 0x78, 0x58, 0x00, 0x91, 0x45, 0x42, 0xde, - 0x94, 0xe6, 0xe4, 0x4d, 0x1e, 0xd3, 0x82, 0x88, 0xa9, 0x0c, 0xcb, 0x34, 0x02, 0xc7, 0x86, 0xbf, - 0xe7, 0x8b, 0x6a, 0x48, 0x2b, 0x3f, 0x4b, 0x80, 0xe2, 0x30, 0xe4, 0xcc, 0x92, 0x8f, 0x05, 0xec, - 0x0a, 0x6c, 0xce, 0xff, 0x53, 0xb1, 0x23, 0xb6, 0x65, 0x12, 0x9c, 0x01, 0xde, 0x03, 0xa8, 0xb9, - 0x91, 0x35, 0x7e, 0xbd, 0x40, 0x9c, 0xdf, 0xfe, 0x90, 0xca, 0x8b, 0x29, 0x03, 0x16, 0x4d, 0x3f, - 0xd3, 0x3f, 0x7a, 0x7d, 0xd0, 0x7d, 0x1b, 0xc9, 0x4b, 0x67, 0x58, 0x09, 0x8b, 0xe4, 0xc4, 0x6a, - 0x1b, 0x8a, 0xae, 0xa6, 0xfb, 0x20, 0x09, 0x05, 0x85, 0xf2, 0x95, 0x87, 0xb0, 0x7c, 0x68, 0x9c, - 0xe3, 0xdc, 0x75, 0xfa, 0x0f, 0x09, 0x2a, 0x74, 0x65, 0x1a, 0xfd, 0x1c, 0xf3, 0x29, 0x14, 0x0e, - 0xb6, 0x47, 0xaf, 0xbd, 0x0c, 0x16, 0x40, 0xc1, 0xb1, 0xd0, 0x1d, 0xb8, 0x12, 0x92, 0x4c, 0x85, - 0x97, 0x0c, 0x44, 0x26, 0xcd, 0x24, 0xfe, 0x26, 0xf4, 0x93, 0x41, 0x55, 0x8d, 0x18, 0x33, 0xb2, - 0xc0, 0x0e, 0xc0, 0xc0, 0x2b, 0x65, 0x74, 0xcf, 0x56, 0x58, 0x16, 0xe1, 0x38, 0xca, 0x5f, 0x05, - 0x80, 0xe7, 0x96, 0x73, 0xde, 0xb3, 0x98, 0x8b, 0x0a, 0xac, 0x4c, 0x43, 0x2a, 0x74, 0x54, 0xe0, - 0x65, 0x9e, 0x49, 0xce, 0x88, 0xa2, 0x68, 0x44, 0x13, 0xaa, 0x23, 0x3f, 0x08, 0x84, 0x95, 0x81, - 0x5a, 0xfb, 0x5a, 0x10, 0xa9, 0x20, 0x3a, 0x6a, 0x24, 0x42, 0x4f, 0xeb, 0xc0, 0xc3, 0x9c, 0xb0, - 0x3a, 0xc0, 0x9d, 0x56, 0x3f, 0x16, 0x6a, 0x28, 0x80, 0xde, 0x81, 0xf5, 0xe9, 0x97, 0x56, 0x47, - 0x33, 0xfb, 0x98, 0xaf, 0x1f, 0x65, 0x96, 0x6d, 0xd3, 0x86, 0x50, 0x1b, 0x36, 0x3c, 0xb6, 0x2b, - 0x4e, 0xa9, 0xb0, 0x29, 0xa9, 0x63, 0x14, 0x7f, 0x83, 0x1c, 0x39, 0xc6, 0x44, 0x73, 0x71, 0x7d, - 0xb9, 0x21, 0xed, 0x2d, 0xab, 0x11, 0x83, 0xee, 0x00, 0x83, 0x1c, 0x5d, 0x9c, 0x8e, 0x8c, 0x41, - 0xbd, 0xca, 0x06, 0x43, 0x9a, 0x46, 0xa0, 0x13, 0x45, 0x00, 0xbc, 0x08, 0x44, 0x1c, 0xe5, 0x1b, - 0x09, 0x36, 0x3d, 0xf2, 0xa9, 0x89, 0xa3, 0x50, 0xd0, 0x53, 0xd7, 0x06, 0x88, 0x90, 0x8f, 0x9f, - 0x07, 0x4e, 0x94, 0x93, 0xba, 0x44, 0xc6, 0xec, 0xc1, 0x56, 0xaa, 0x1d, 0x39, 0xcb, 0xc2, 0x04, - 0x36, 0xbd, 0xfb, 0x49, 0xc2, 0xad, 0xcb, 0x6c, 0xb2, 0x85, 0xdc, 0x48, 0x5d, 0x37, 0xa7, 0x1b, - 0x2e, 0x6c, 0xd0, 0x2d, 0x9a, 0x70, 0x22, 0x2b, 0x19, 0x28, 0xb0, 0xf2, 0x9c, 0x77, 0xce, 0x33, - 0x5f, 0xe0, 0x2d, 0xe0, 0xc4, 0xa7, 0x70, 0x3d, 0x65, 0xd5, 0x9c, 0x2e, 0xfc, 0x28, 0xc1, 0x96, - 0x7f, 0x6e, 0xde, 0xc4, 0x8d, 0x69, 0x8a, 0x1b, 0xd3, 0x98, 0x1b, 0x73, 0x72, 0x1b, 0x97, 0x12, - 0x96, 0x66, 0xde, 0x4e, 0x4a, 0x49, 0x08, 0x9e, 0x40, 0x3d, 0xdd, 0xe8, 0x9c, 0x28, 0x7c, 0x27, - 0xc1, 0x75, 0xbf, 0xe6, 0x44, 0xda, 0x66, 0xbe, 0x8a, 0xba, 0x29, 0x65, 0xf8, 0xcd, 0xaf, 0x30, - 0xf3, 0x83, 0xfd, 0x8b, 0x04, 0x9b, 0x69, 0x96, 0xe5, 0xac, 0x88, 0x0f, 0xa0, 0x16, 0x85, 0x29, - 0x78, 0x6a, 0xa5, 0xa5, 0x0d, 0x5e, 0x2c, 0x76, 0xe7, 0x28, 0xe6, 0xbc, 0x73, 0x28, 0xdf, 0x4b, - 0x70, 0xc3, 0xf7, 0xe5, 0x63, 0xc7, 0xc0, 0xe6, 0xf0, 0x5f, 0x86, 0xf5, 0xaf, 0x12, 0xdc, 0xcc, - 0xb6, 0xef, 0xbf, 0x88, 0xf8, 0x04, 0x6a, 0xfe, 0x39, 0x21, 0x3d, 0xa2, 0xa3, 0xbb, 0xf4, 0xc8, - 0x8d, 0xb9, 0x82, 0x91, 0x28, 0x9d, 0xc1, 0xf8, 0x42, 0x67, 0x3c, 0xb3, 0xa8, 0x2b, 0x3f, 0x48, - 0xd0, 0x48, 0xee, 0x5a, 0xce, 0x94, 0x4b, 0x35, 0x1c, 0x62, 0x1b, 0xa2, 0x98, 0x6f, 0x43, 0x28, - 0xbf, 0x4b, 0x70, 0x6b, 0x8e, 0x91, 0x39, 0x63, 0xfe, 0x1e, 0xac, 0x0c, 0x22, 0x35, 0x41, 0xd0, - 0xd7, 0x63, 0x60, 0xb3, 0x25, 0x04, 0xc1, 0x7f, 0x2a, 0xec, 0x2f, 0x41, 0xe9, 0x8c, 0xb0, 0xe6, - 0xbc, 0x25, 0xfc, 0x95, 0x17, 0x70, 0x7b, 0xae, 0xfe, 0x9c, 0x99, 0x78, 0x04, 0x72, 0x3f, 0x11, - 0x93, 0x43, 0x3c, 0xc1, 0xa3, 0x39, 0x4f, 0x8d, 0x11, 0x95, 0x61, 0xc6, 0x96, 0x54, 0x8f, 0x58, - 0xe0, 0xc4, 0x7f, 0x06, 0x37, 0x32, 0x57, 0xcb, 0xe7, 0x40, 0xfb, 0x27, 0x80, 0x2b, 0x4f, 0x99, - 0x44, 0x1f, 0x3b, 0x13, 0x63, 0x80, 0xd1, 0x43, 0xa8, 0x71, 0xed, 0x31, 0xb4, 0x19, 0x28, 0x10, - 0xfb, 0x6f, 0xf2, 0x56, 0x2a, 0x9f, 0xd8, 0xe8, 0x7d, 0xa8, 0x86, 0x1d, 0x27, 0xb4, 0x11, 0x2e, - 0xcf, 0x35, 0xc2, 0xe4, 0xeb, 0x29, 0x5c, 0x6f, 0x66, 0xd8, 0x06, 0x8a, 0x66, 0xf2, 0x9d, 0xa7, - 0x68, 0xa6, 0xd8, 0x2f, 0x6a, 0x41, 0xd9, 0xeb, 0x93, 0xa0, 0xb5, 0x40, 0x20, 0x6c, 0x05, 0xc9, - 0x28, 0xce, 0x22, 0x36, 0x75, 0x92, 0xeb, 0x17, 0x44, 0x4e, 0x8a, 0xad, 0x92, 0xc8, 0xc9, 0x78, - 0x73, 0x61, 0x9f, 0xf5, 0x23, 0xb9, 0x07, 0x32, 0xfa, 0x1f, 0x87, 0x87, 0xd8, 0x3f, 0x90, 0xe5, - 0xac, 0xa1, 0x50, 0x11, 0xf7, 0x7a, 0x14, 0x14, 0x89, 0x4f, 0x57, 0x41, 0x51, 0xfc, 0xc1, 0xf9, - 0x39, 0xac, 0xa7, 0x5c, 0x79, 0xd1, 0x8e, 0x08, 0x75, 0xfc, 0xd2, 0x24, 0xef, 0xce, 0x1c, 0xf7, - 0xf4, 0xa6, 0xdc, 0x41, 0x23, 0xbd, 0xe9, 0x17, 0xe3, 0x48, 0x6f, 0xd6, 0x05, 0xf6, 0x08, 0xd6, - 0x12, 0xd7, 0x42, 0x74, 0x93, 0x7f, 0x4a, 0x25, 0x74, 0x6e, 0xcf, 0x18, 0x25, 0x36, 0x7a, 0x01, - 0x1b, 0x69, 0xb7, 0x2c, 0xb4, 0x1b, 0x4b, 0x64, 0x09, 0xbd, 0x8d, 0xd9, 0x02, 0xc4, 0x46, 0xfd, - 0xf0, 0x8d, 0xcf, 0x1d, 0x3c, 0xb4, 0x1d, 0x0b, 0x87, 0x78, 0x3f, 0x90, 0x77, 0x66, 0x0d, 0x13, - 0x1b, 0x61, 0xa8, 0x67, 0x95, 0x6f, 0x74, 0x3b, 0x36, 0x37, 0xed, 0x02, 0x22, 0xdf, 0x99, 0x2f, - 0x44, 0x6c, 0xe4, 0xc2, 0xf6, 0xcc, 0xb2, 0x81, 0xf6, 0xb2, 0xed, 0x14, 0x53, 0xb0, 0x7c, 0x77, - 0x41, 0x49, 0x62, 0xa3, 0xaf, 0x60, 0x77, 0x4e, 0xce, 0x45, 0xf7, 0x42, 0xd8, 0xe7, 0x26, 0x7f, - 0xf9, 0xfe, 0xc2, 0xb2, 0xc4, 0x46, 0xa7, 0xb0, 0x95, 0x91, 0x26, 0x91, 0xc2, 0xe5, 0x82, 0x8c, - 0xac, 0x2d, 0xdf, 0x9e, 0x2b, 0x43, 0xec, 0x47, 0x6b, 0x5f, 0xac, 0x36, 0xfd, 0x3f, 0x6c, 0x3e, - 0xf0, 0x7e, 0x4e, 0xcb, 0xec, 0xdf, 0x98, 0x77, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xb2, 0xc1, - 0x31, 0xd6, 0xcf, 0x19, 0x00, 0x00, +var fileDescriptor_office_7066d9c5c43d9815 = []byte{ + // 1531 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0xcf, 0x6f, 0x1b, 0xc5, + 0x17, 0xd7, 0xda, 0x49, 0x1c, 0x3f, 0xa7, 0x4d, 0x33, 0x49, 0x13, 0x7f, 0xb7, 0x4d, 0xe2, 0x6e, + 0xfb, 0x95, 0xd2, 0x56, 0x72, 0x90, 0xa9, 0x04, 0x12, 0xa2, 0x42, 0xb5, 0x4b, 0x14, 0x48, 0xda, + 0xb0, 0x4e, 0xa8, 0xca, 0xa1, 0xd1, 0xd6, 0x9e, 0x2c, 0xab, 0xd8, 0xbb, 0xdb, 0x9d, 0x8d, 0x4d, + 0xb9, 0x20, 0x71, 0x80, 0x3f, 0x80, 0x03, 0x27, 0x2e, 0xfc, 0x0b, 0xfc, 0x0d, 0x1c, 0x38, 0x21, + 0x4e, 0x9c, 0x38, 0xc1, 0x1f, 0x82, 0x66, 0xf6, 0xc7, 0xcc, 0xec, 0x0f, 0xdb, 0xdd, 0x52, 0x09, + 0x4e, 0xf1, 0x7b, 0xf3, 0xe6, 0xcd, 0xe7, 0x7d, 0xde, 0xcc, 0x9b, 0xb7, 0x13, 0x58, 0x75, 0xce, + 0xce, 0xac, 0x1e, 0xde, 0x0d, 0xfe, 0x34, 0x5d, 0xcf, 0xf1, 0x1d, 0xb4, 0x10, 0x48, 0xea, 0x8d, + 0xc7, 0x2e, 0xb6, 0x4f, 0xf7, 0x0f, 0x77, 0xdd, 0x73, 0x73, 0x97, 0x0d, 0xed, 0x92, 0xfe, 0xf9, + 0xe9, 0x98, 0xec, 0x8e, 0x49, 0x60, 0xaa, 0xdd, 0x07, 0x68, 0x3b, 0xc3, 0xa1, 0x63, 0xeb, 0x98, + 0xb8, 0xa8, 0x0e, 0x15, 0xec, 0x79, 0x6d, 0xa7, 0x8f, 0xeb, 0x4a, 0x43, 0xd9, 0x99, 0xd7, 0x23, + 0x11, 0xad, 0xc3, 0x02, 0xf6, 0xbc, 0x43, 0x62, 0xd6, 0x4b, 0x0d, 0x65, 0xa7, 0xaa, 0x87, 0x92, + 0xf6, 0x3e, 0x54, 0x8e, 0x0d, 0xf3, 0x84, 0x60, 0x8f, 0x9a, 0x5c, 0x10, 0xec, 0xed, 0x77, 0xd8, + 0xdc, 0xaa, 0x1e, 0x4a, 0x48, 0x85, 0x45, 0xfa, 0xeb, 0x91, 0x31, 0xc4, 0xe1, 0xe4, 0x58, 0xd6, + 0x9e, 0x43, 0xf9, 0xd8, 0x30, 0xd1, 0x1a, 0xcc, 0xfb, 0x86, 0x19, 0xcf, 0x0c, 0x04, 0x8a, 0xc6, + 0x37, 0x4c, 0x61, 0x5e, 0x24, 0xa2, 0xbb, 0x81, 0xcb, 0x03, 0x8b, 0xf8, 0xf5, 0x72, 0xa3, 0xbc, + 0x53, 0x6b, 0x2d, 0x37, 0x43, 0x06, 0x42, 0x34, 0x7a, 0x6c, 0xa0, 0x7d, 0x04, 0x97, 0xf7, 0xb0, + 0x4f, 0x95, 0xc7, 0x86, 0x49, 0x74, 0xfc, 0x22, 0x17, 0x69, 0x03, 0x6a, 0x8e, 0x8b, 0x3d, 0xc3, + 0xb7, 0x1c, 0x7b, 0xbf, 0x13, 0x2e, 0x2a, 0xaa, 0xb4, 0x33, 0x58, 0x96, 0x7c, 0x11, 0x17, 0xb5, + 0x00, 0x7a, 0x31, 0x83, 0xcc, 0x61, 0xad, 0x85, 0x22, 0x34, 0x9c, 0x5b, 0x5d, 0xb0, 0x42, 0xdb, + 0x30, 0xe7, 0x1b, 0x26, 0xa9, 0x97, 0x18, 0xf6, 0x9a, 0x80, 0x5d, 0x67, 0x03, 0xda, 0xd7, 0x0a, + 0x2c, 0xb5, 0x3d, 0x6c, 0xf8, 0x98, 0xea, 0xf0, 0x0b, 0x91, 0x0b, 0x45, 0xe6, 0x82, 0x07, 0x53, + 0x92, 0x82, 0xd9, 0x02, 0x08, 0x7e, 0xc5, 0x2c, 0x55, 0x75, 0x41, 0x93, 0x0c, 0x76, 0x2e, 0x1d, + 0x6c, 0x1b, 0x2e, 0x09, 0x18, 0x8a, 0x85, 0xaa, 0x3d, 0x83, 0xa5, 0x0e, 0x1e, 0xe0, 0x38, 0x90, + 0x3c, 0xee, 0xe3, 0x2d, 0x50, 0x12, 0xb7, 0x40, 0x02, 0x64, 0x39, 0x13, 0xa4, 0xe0, 0xbf, 0x20, + 0xc8, 0xdf, 0x14, 0xa8, 0x76, 0xb1, 0x5f, 0x08, 0x62, 0x1d, 0x2a, 0x36, 0x1e, 0xb3, 0xcc, 0x04, + 0xf0, 0x22, 0x11, 0x35, 0x01, 0x59, 0x76, 0xcf, 0xc3, 0x06, 0xc1, 0x27, 0x3c, 0x13, 0x73, 0x2c, + 0x13, 0x19, 0x23, 0xe8, 0x0e, 0x5c, 0xf1, 0x70, 0xff, 0xa2, 0x27, 0x5a, 0xcf, 0x33, 0xeb, 0x94, + 0x3e, 0x49, 0xcc, 0x42, 0x9a, 0x98, 0x0f, 0x00, 0xa2, 0x90, 0x0a, 0xb2, 0xf2, 0x97, 0x02, 0x97, + 0xbb, 0xd8, 0xee, 0x1f, 0x12, 0xb3, 0x25, 0x6d, 0x43, 0x86, 0x4c, 0x61, 0xc8, 0x22, 0x91, 0x9e, + 0xf2, 0x93, 0xe8, 0x48, 0x96, 0xd8, 0x50, 0x2c, 0xa3, 0xeb, 0x50, 0xdd, 0xf3, 0x9c, 0x0b, 0x57, + 0xd8, 0x89, 0x5c, 0x41, 0xe9, 0x26, 0xd8, 0xee, 0xc7, 0x7b, 0x30, 0x94, 0x28, 0x1d, 0xf4, 0x17, + 0xf6, 0x8e, 0x06, 0x86, 0x7f, 0xe6, 0x78, 0xc3, 0xfd, 0x4e, 0x7d, 0x9e, 0x55, 0xa5, 0x94, 0x9e, + 0xe2, 0xea, 0x39, 0xb6, 0x8f, 0x6d, 0x3f, 0xa4, 0x22, 0x12, 0x93, 0x44, 0x55, 0xd2, 0x44, 0x3d, + 0x84, 0x65, 0x29, 0xca, 0x82, 0x6c, 0x7d, 0xa7, 0xc0, 0xca, 0x1e, 0x23, 0x9c, 0x7a, 0x3b, 0x70, + 0x82, 0x52, 0xd3, 0x01, 0x38, 0x32, 0x4c, 0xcb, 0x66, 0x8b, 0x85, 0x9e, 0x6e, 0x35, 0x09, 0xf6, + 0x46, 0xd8, 0x3b, 0x35, 0x5c, 0xeb, 0xd4, 0x35, 0x3c, 0x63, 0x48, 0x9a, 0x3a, 0x7e, 0x71, 0x81, + 0x89, 0xcf, 0x6d, 0x75, 0x61, 0x5e, 0xee, 0x19, 0x9f, 0x7e, 0x3c, 0x1c, 0x00, 0x8e, 0x48, 0xaa, + 0x9b, 0xca, 0x94, 0xba, 0x29, 0x72, 0x5a, 0x92, 0x39, 0x55, 0x61, 0x91, 0x66, 0xe0, 0xd8, 0x0a, + 0xf7, 0x7c, 0x59, 0x8f, 0x65, 0xed, 0x67, 0x05, 0x50, 0x92, 0x86, 0x82, 0x55, 0xf2, 0xa1, 0xc4, + 0x5d, 0x89, 0xcd, 0xf9, 0x7f, 0x26, 0x77, 0xc4, 0x75, 0x6c, 0x82, 0x73, 0xc8, 0xbb, 0x07, 0x35, + 0x9f, 0xa3, 0x09, 0xef, 0x0b, 0x24, 0xc4, 0x1d, 0x0e, 0xe9, 0xa2, 0x99, 0xd6, 0x63, 0xd9, 0x0c, + 0x2b, 0xfd, 0x83, 0x97, 0xfb, 0x9d, 0x37, 0x51, 0xbc, 0x4c, 0xc6, 0x95, 0xb4, 0x48, 0x41, 0xae, + 0x36, 0xa1, 0xec, 0x1b, 0x66, 0x48, 0x92, 0x74, 0xa1, 0x50, 0xbd, 0x76, 0x1f, 0x16, 0x0f, 0xac, + 0x73, 0x5c, 0xf8, 0x9e, 0xfe, 0x43, 0x81, 0x0a, 0x5d, 0x99, 0x66, 0xbf, 0xc0, 0x7c, 0x4a, 0x85, + 0x87, 0xdd, 0xc1, 0xcb, 0xa0, 0x82, 0x45, 0x54, 0x08, 0x2a, 0x74, 0x0b, 0x2e, 0xc5, 0x22, 0x73, + 0x11, 0x14, 0x03, 0x59, 0x49, 0x2b, 0x49, 0xb8, 0x09, 0xc3, 0x62, 0x50, 0xd5, 0xb9, 0x62, 0x42, + 0x15, 0xd8, 0x02, 0xe8, 0x05, 0x57, 0x19, 0xdd, 0xb3, 0x15, 0x56, 0x45, 0x04, 0x8d, 0xf6, 0x67, + 0x09, 0xe0, 0x89, 0xe3, 0x9d, 0x1f, 0x3a, 0x2c, 0x44, 0x0d, 0x96, 0xc6, 0xb1, 0x14, 0x07, 0x2a, + 0xe9, 0x72, 0xcf, 0xa4, 0x00, 0xa2, 0x2c, 0x83, 0x68, 0x42, 0x75, 0x10, 0x26, 0x81, 0xb0, 0x6b, + 0xa0, 0xd6, 0xba, 0x12, 0x65, 0x2a, 0xca, 0x8e, 0xce, 0x4d, 0xe8, 0x69, 0xed, 0x05, 0x9c, 0x13, + 0x76, 0x0f, 0x08, 0xa7, 0x35, 0xcc, 0x85, 0x1e, 0x1b, 0xa0, 0xb7, 0x60, 0x75, 0xfc, 0xb9, 0xd3, + 0x36, 0xec, 0x2e, 0x16, 0xef, 0x8f, 0x05, 0x56, 0x6d, 0xb3, 0x86, 0x50, 0x0b, 0xd6, 0x02, 0xb5, + 0x2f, 0x4f, 0xa9, 0xb0, 0x29, 0x99, 0x63, 0x94, 0x7f, 0x8b, 0x1c, 0x79, 0xd6, 0xc8, 0xf0, 0x71, + 0x7d, 0xb1, 0xa1, 0xec, 0x2c, 0xea, 0x5c, 0x41, 0x59, 0x6e, 0x73, 0x96, 0x21, 0x60, 0x99, 0x6b, + 0xb4, 0x6f, 0x14, 0x58, 0x0f, 0xc4, 0xc7, 0x36, 0xe6, 0x74, 0xd3, 0x93, 0xd5, 0x02, 0xe0, 0xec, + 0x26, 0xf7, 0xbc, 0x60, 0x2a, 0x58, 0xbd, 0x46, 0x55, 0x3c, 0x84, 0x8d, 0x4c, 0x1c, 0x05, 0x4b, + 0xff, 0x08, 0xd6, 0x83, 0x1e, 0x24, 0x15, 0xd6, 0xeb, 0x6c, 0xa4, 0x99, 0xc2, 0xc8, 0x5c, 0xb7, + 0x60, 0x18, 0x3e, 0xac, 0xd1, 0x6d, 0x98, 0x0a, 0x22, 0xef, 0xc0, 0x6b, 0xb0, 0xf4, 0x44, 0x0c, + 0x2e, 0x80, 0x2f, 0xe9, 0x66, 0x08, 0xe2, 0x63, 0xb8, 0x9a, 0xb1, 0x6a, 0xc1, 0x10, 0x7e, 0x52, + 0x60, 0x23, 0x3c, 0x1b, 0xaf, 0x12, 0xc6, 0x38, 0x23, 0x8c, 0x71, 0x22, 0x8c, 0x29, 0xf5, 0x4b, + 0x38, 0xf6, 0x73, 0x13, 0x3b, 0x90, 0xf9, 0x34, 0x05, 0x8f, 0xa0, 0x9e, 0x0d, 0xba, 0x20, 0x0b, + 0x5f, 0xc0, 0xda, 0x1e, 0xf6, 0xb9, 0xa3, 0xe8, 0xfa, 0x9a, 0x65, 0x37, 0xaa, 0xb0, 0xe8, 0xb8, + 0x27, 0xe2, 0x7e, 0x8c, 0xe5, 0x19, 0x92, 0xf9, 0x15, 0x5c, 0xcd, 0x58, 0xb9, 0xe0, 0x9d, 0x26, + 0xd7, 0x84, 0xd2, 0x2c, 0x35, 0x41, 0xfb, 0x5e, 0x61, 0x08, 0x28, 0x60, 0x6e, 0x31, 0xf1, 0xa3, + 0xaf, 0x93, 0xd1, 0x65, 0xbc, 0x7a, 0x87, 0x36, 0x9d, 0x9a, 0x5f, 0x14, 0x58, 0xcf, 0x42, 0x56, + 0x90, 0x9c, 0x7b, 0x50, 0xe3, 0x61, 0x47, 0x5f, 0x92, 0x59, 0xec, 0x88, 0x66, 0x89, 0x96, 0xaa, + 0x5c, 0xb0, 0xa5, 0xd2, 0x7e, 0x50, 0xe0, 0x5a, 0x18, 0xcb, 0x87, 0x9e, 0x85, 0xed, 0xfe, 0xbf, + 0x8c, 0xeb, 0x5f, 0x15, 0xb8, 0x9e, 0x8f, 0xef, 0xbf, 0xc8, 0xf8, 0x08, 0x6a, 0x61, 0x89, 0x20, + 0x87, 0xc4, 0x44, 0xb7, 0x69, 0xb5, 0x19, 0x0a, 0x77, 0x65, 0xaa, 0x33, 0x88, 0xc6, 0x67, 0x2a, + 0x6f, 0xb9, 0x3d, 0x8b, 0xf6, 0xa3, 0x02, 0x8d, 0xf4, 0xae, 0x15, 0xa0, 0xbc, 0xd6, 0x7b, 0x4a, + 0x62, 0x43, 0x94, 0x8b, 0x6d, 0x08, 0xed, 0x77, 0x05, 0x6e, 0x4c, 0x01, 0x59, 0x30, 0xe7, 0xef, + 0xc0, 0x52, 0x8f, 0xbb, 0x89, 0x92, 0xbe, 0x9a, 0x20, 0x9b, 0x2d, 0x21, 0x19, 0xfe, 0x53, 0x69, + 0x7f, 0x06, 0x5a, 0x7b, 0x80, 0x0d, 0xef, 0x0d, 0xf1, 0xaf, 0x3d, 0x85, 0x9b, 0x53, 0xfd, 0x17, + 0xbc, 0x84, 0x06, 0xa0, 0x76, 0x53, 0x39, 0x39, 0xc0, 0x23, 0x3c, 0x98, 0xf2, 0x25, 0x35, 0xa0, + 0x36, 0x0c, 0xec, 0xbc, 0x1e, 0x08, 0x33, 0x9c, 0xf8, 0x4f, 0xe0, 0x5a, 0xee, 0x6a, 0xc5, 0x02, + 0x68, 0x7d, 0x5b, 0x83, 0x4b, 0x8f, 0x99, 0x45, 0x17, 0x7b, 0x23, 0xab, 0x87, 0xd1, 0x7d, 0xa8, + 0x09, 0xaf, 0x7f, 0x68, 0x3d, 0x72, 0x20, 0x3f, 0x2f, 0xaa, 0x1b, 0x99, 0x7a, 0xe2, 0xa2, 0x77, + 0xa1, 0x1a, 0x3f, 0xa8, 0xa1, 0xb5, 0x78, 0x79, 0xe1, 0x9d, 0x4f, 0xbd, 0x9a, 0xa1, 0x0d, 0x66, + 0xc6, 0xaf, 0x5c, 0x7c, 0xa6, 0xf8, 0xb0, 0xc6, 0x67, 0xca, 0xcf, 0x61, 0xbb, 0xb0, 0x10, 0x3c, + 0x03, 0xa1, 0x95, 0xc8, 0x20, 0x7e, 0xe9, 0x52, 0x51, 0x52, 0x45, 0x5c, 0x1a, 0xa4, 0xf0, 0x1c, + 0xc2, 0x83, 0x94, 0x5f, 0x82, 0x78, 0x90, 0xc9, 0xb7, 0x93, 0x3d, 0xf6, 0xdc, 0x2a, 0x7c, 0xff, + 0xa3, 0xff, 0x09, 0x7c, 0xc8, 0xcf, 0x23, 0xaa, 0x9a, 0x37, 0x14, 0x3b, 0x12, 0x3e, 0x8e, 0x25, + 0x47, 0xf2, 0x97, 0xb9, 0xe4, 0x28, 0xf9, 0x3d, 0xfd, 0x29, 0xac, 0x66, 0x74, 0xfb, 0x68, 0x4b, + 0xa6, 0x3a, 0xd9, 0x2f, 0xaa, 0xdb, 0x13, 0xc7, 0x03, 0xbf, 0x19, 0xed, 0x37, 0xf7, 0x9b, 0xfd, + 0x4d, 0xc0, 0xfd, 0xe6, 0xf5, 0xee, 0x47, 0xb0, 0x92, 0xea, 0x88, 0xd1, 0x75, 0xf1, 0x4b, 0x31, + 0xe5, 0x73, 0x73, 0xc2, 0x28, 0x71, 0xd1, 0x53, 0x58, 0xcb, 0x6a, 0x30, 0xd1, 0x76, 0xa2, 0x90, + 0xa5, 0xfc, 0x36, 0x26, 0x1b, 0x04, 0x60, 0x53, 0x1d, 0x1f, 0x07, 0x9b, 0xd5, 0x86, 0x72, 0xb0, + 0xd9, 0xad, 0x62, 0x37, 0x7e, 0x14, 0x11, 0x8e, 0x32, 0xda, 0x4c, 0x24, 0x58, 0xee, 0x38, 0xd4, + 0xad, 0x49, 0xc3, 0xc4, 0x45, 0x18, 0xea, 0x79, 0x0d, 0x01, 0xba, 0x99, 0x98, 0x9b, 0xd5, 0xd2, + 0xa8, 0xb7, 0xa6, 0x1b, 0x11, 0x17, 0xf9, 0xb0, 0x39, 0xf1, 0x22, 0x42, 0x3b, 0xf9, 0x38, 0xe5, + 0xa2, 0xae, 0xde, 0x9e, 0xd1, 0x92, 0xb8, 0xe8, 0x4b, 0xd8, 0x9e, 0x52, 0xc5, 0xd1, 0x9d, 0x38, + 0x91, 0x53, 0xaf, 0x13, 0xf5, 0xee, 0xcc, 0xb6, 0xc4, 0x45, 0xcf, 0x61, 0x23, 0xa7, 0xf0, 0x22, + 0x4d, 0xa8, 0x2e, 0x39, 0xf7, 0x80, 0x7a, 0x73, 0xaa, 0x0d, 0x71, 0x1f, 0xac, 0x7c, 0xb6, 0xdc, + 0x0c, 0xff, 0xc3, 0xf5, 0x5e, 0xf0, 0xe7, 0xf9, 0x02, 0xfb, 0xf7, 0xd5, 0xdb, 0x7f, 0x07, 0x00, + 0x00, 0xff, 0xff, 0xc0, 0xa8, 0x93, 0x9b, 0x00, 0x1b, 0x00, 0x00, } diff --git a/pkg/proto/office/office.proto b/pkg/proto/office/office.proto index 6642f674f..c57c72f2e 100644 --- a/pkg/proto/office/office.proto +++ b/pkg/proto/office/office.proto @@ -132,7 +132,6 @@ message WorkMoment { repeated string whoCanSeeUserIDList = 6; repeated string whoCantSeeUserIDList = 7; bool isPrivate = 8; - bool isPublic = 9; int32 CreateTime = 10; } @@ -178,6 +177,17 @@ message CommentOneWorkMomentResp { CommonResp commonResp = 1; } +message GetWorkMomentByIDReq { + string workMomentID = 1; + string opUserID = 2; + string operationID = 3; +} + +message GetWorkMomentByIDResp { + CommonResp commonResp = 1; + WorkMoment workMoment = 2; +} + message GetUserWorkMomentsReq { string userID = 1; server_api_params.RequestPagination Pagination = 2; @@ -252,6 +262,7 @@ service OfficeService { rpc DeleteOneWorkMoment(DeleteOneWorkMomentReq) returns(DeleteOneWorkMomentResp); rpc LikeOneWorkMoment(LikeOneWorkMomentReq) returns(LikeOneWorkMomentResp); rpc CommentOneWorkMoment(CommentOneWorkMomentReq) returns(CommentOneWorkMomentResp); + rpc GetWorkMomentByID(GetWorkMomentByIDReq) returns(GetWorkMomentByIDResp); /// user self rpc GetUserWorkMoments(GetUserWorkMomentsReq) returns(GetUserWorkMomentsResp); /// users friend