Merge remote-tracking branch 'origin/tuoyun' into tuoyun

pull/218/head
skiffer-git 3 years ago
commit fc688dca99

@ -145,6 +145,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)

@ -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

@ -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)
}
}

@ -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())

@ -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())

@ -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
}

@ -91,6 +91,9 @@ const (
OrganizationChangedNotification = 1801
WorkMomentNotificationStart = 1900
WorkMomentNewCommentNotification = 1901
NotificationEnd = 2000
//status

@ -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,38 +67,66 @@ 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)
DB.mongoClient = mongoClient
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())
}
//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())
// }
//}
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())
}
//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())
//}
//
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
// redis pool init
DB.redisPool = &redis.Pool{

@ -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
}

@ -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) }
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,
func init() { proto.RegisterFile("office/office.proto", fileDescriptor_office_7066d9c5c43d9815) }
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,
}

@ -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

Loading…
Cancel
Save