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

test-errcode
withchao 3 years ago
commit 5bb42593ba

@ -1,27 +1,11 @@
package main
import (
rpcConversation "Open_IM/internal/rpc/conversation"
"Open_IM/internal/rpc/conversation"
"Open_IM/internal/startrpc"
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/constant"
prome "Open_IM/pkg/common/prome"
"flag"
"fmt"
)
func main() {
defaultPorts := config.Config.RpcPort.OpenImConversationPort
rpcPort := flag.Int("port", defaultPorts[0], "RpcConversation default listen port 11300")
prometheusPort := flag.Int("prometheus_port", config.Config.Prometheus.ConversationPrometheusPort[0], "conversationPrometheusPort default listen port")
flag.Parse()
fmt.Println("start conversation rpc server, port: ", *rpcPort, ", OpenIM version: ", constant.CurrentVersion, "\n")
rpcServer := rpcConversation.NewRpcConversationServer(*rpcPort)
go func() {
err := prome.StartPromeSrv(*prometheusPort)
if err != nil {
panic(err)
}
}()
rpcServer.Run()
startrpc.Start(config.Config.RpcPort.OpenImConversationPort, config.Config.RpcRegisterName.OpenImConversationName, config.Config.Prometheus.ConversationPrometheusPort, conversation.Start)
}

@ -2,6 +2,7 @@ package check
import (
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/constant"
discoveryRegistry "Open_IM/pkg/discoveryregistry"
"Open_IM/pkg/proto/friend"
sdkws "Open_IM/pkg/proto/sdkws"
@ -37,5 +38,38 @@ func (f *FriendChecker) getConn() (*grpc.ClientConn, error) {
// possibleFriendUserID是否在userID的好友中
func (f *FriendChecker) IsFriend(ctx context.Context, possibleFriendUserID, userID string) (bool, error) {
return false, nil
cc, err := f.getConn()
if err != nil {
return false, err
}
resp, err := friend.NewFriendClient(cc).IsFriend(ctx, &friend.IsFriendReq{UserID1: userID, UserID2: possibleFriendUserID})
if err != nil {
return false, err
}
return resp.InUser1Friends, nil
}
func (f *FriendChecker) GetAllPageFriends(ctx context.Context, ownerUserID string) (resp []*sdkws.FriendInfo, err error) {
cc, err := f.getConn()
if err != nil {
return nil, err
}
page := int32(0)
req := friend.GetPaginationFriendsReq{UserID: ownerUserID}
for {
req.Pagination = &sdkws.RequestPagination{PageNumber: page, ShowNumber: constant.ShowNumber}
tmp, err := friend.NewFriendClient(cc).GetPaginationFriends(ctx, &req)
if err != nil {
return nil, err
}
if len(tmp.FriendsInfo) == 0 {
if tmp.Total == int32(len(resp)) {
return resp, nil
}
return nil, constant.ErrData.Wrap("total != resp, but result is nil")
}
resp = append(resp, tmp.FriendsInfo...)
page++
}
}

@ -2,132 +2,41 @@ package conversation
import (
"Open_IM/internal/common/check"
chat "Open_IM/internal/rpc/msg"
"Open_IM/pkg/common/constant"
"Open_IM/pkg/common/db/cache"
"Open_IM/pkg/common/db/controller"
"Open_IM/pkg/common/db/relation"
tableRelation "Open_IM/pkg/common/db/table/relation"
"github.com/OpenIMSDK/openKeeper"
"Open_IM/pkg/common/log"
promePkg "Open_IM/pkg/common/prome"
"Open_IM/internal/common/notification"
pbConversation "Open_IM/pkg/proto/conversation"
"Open_IM/pkg/utils"
"context"
"github.com/dtm-labs/rockscache"
"net"
"strconv"
"strings"
grpcPrometheus "github.com/grpc-ecosystem/go-grpc-prometheus"
"Open_IM/pkg/common/config"
"google.golang.org/grpc"
)
type conversationServer struct {
rpcPort int
rpcRegisterName string
etcdSchema string
etcdAddr []string
groupChecker *check.GroupChecker
groupChecker *check.GroupChecker
controller.ConversationInterface
notify *notification.Check
}
func NewConversationServer(port int) *conversationServer {
log.NewPrivateLog(constant.LogFileName)
c := conversationServer{
rpcPort: port,
rpcRegisterName: config.Config.RpcRegisterName.OpenImConversationName,
etcdSchema: config.Config.Etcd.EtcdSchema,
etcdAddr: config.Config.Etcd.EtcdAddr,
groupChecker: check.NewGroupChecker(),
}
var cDB relation.Conversation
var cCache cache.ConversationCache
//mysql init
var mysql relation.Mysql
err := mysql.InitConn().AutoMigrateModel(&tableRelation.ConversationModel{})
func Start(client *openKeeper.ZkClient, server *grpc.Server) error {
db, err := relation.NewGormDB()
if err != nil {
panic("db init err:" + err.Error())
return err
}
if mysql.GormConn() != nil {
//get gorm model
cDB = relation.NewConversationGorm(mysql.GormConn())
} else {
panic("db init err:" + "conn is nil")
if err := db.AutoMigrate(&tableRelation.ConversationModel{}); err != nil {
return err
}
//redis init
var redis cache.RedisClient
redis.InitRedis()
rcClient := rockscache.NewClient(redis.GetClient(), rockscache.Options{
RandomExpireAdjustment: 0.2,
DisableCacheRead: false,
DisableCacheDelete: false,
StrongConsistency: true,
pbConversation.RegisterConversationServer(server, &conversationServer{
groupChecker: check.NewGroupChecker(client),
ConversationInterface: controller.NewConversationController(controller.NewConversationDataBase(controller.NewConversationGorm(db), cache.NewConversationRedis(nil))),
})
cCache = cache.NewConversationRedis(rcClient)
database := controller.NewConversationDataBase(cDB, cCache)
c.ConversationInterface = controller.NewConversationController(database)
return &c
}
func (c *conversationServer) Run() {
log.NewInfo("0", "rpc conversation start...")
listenIP := ""
if config.Config.ListenIP == "" {
listenIP = "0.0.0.0"
} else {
listenIP = config.Config.ListenIP
}
address := listenIP + ":" + strconv.Itoa(c.rpcPort)
listener, err := net.Listen("tcp", address)
if err != nil {
panic("listening err:" + err.Error() + c.rpcRegisterName)
}
log.NewInfo("0", "listen network success, ", address, listener)
//grpc server
var grpcOpts []grpc.ServerOption
if config.Config.Prometheus.Enable {
promePkg.NewGrpcRequestCounter()
promePkg.NewGrpcRequestFailedCounter()
promePkg.NewGrpcRequestSuccessCounter()
grpcOpts = append(grpcOpts, []grpc.ServerOption{
// grpc.UnaryInterceptor(promePkg.UnaryServerInterceptorProme),
grpc.StreamInterceptor(grpcPrometheus.StreamServerInterceptor),
grpc.UnaryInterceptor(grpcPrometheus.UnaryServerInterceptor),
}...)
}
srv := grpc.NewServer(grpcOpts...)
defer srv.GracefulStop()
//service registers with etcd
pbConversation.RegisterConversationServer(srv, c)
rpcRegisterIP := config.Config.RpcRegisterIP
if config.Config.RpcRegisterIP == "" {
rpcRegisterIP, err = utils.GetLocalIP()
if err != nil {
log.Error("", "GetLocalIP failed ", err.Error())
}
}
log.NewInfo("", "rpcRegisterIP", rpcRegisterIP)
err = rpc.RegisterEtcd(c.etcdSchema, strings.Join(c.etcdAddr, ","), rpcRegisterIP, c.rpcPort, c.rpcRegisterName, 10, "")
if err != nil {
log.NewError("0", "RegisterEtcd failed ", err.Error(),
c.etcdSchema, strings.Join(c.etcdAddr, ","), rpcRegisterIP, c.rpcPort, c.rpcRegisterName)
panic(utils.Wrap(err, "register conversation module rpc to etcd err"))
}
log.NewInfo("0", "RegisterConversationServer ok ", c.etcdSchema, strings.Join(c.etcdAddr, ","), rpcRegisterIP, c.rpcPort, c.rpcRegisterName)
err = srv.Serve(listener)
if err != nil {
log.NewError("0", "Serve failed ", err.Error())
return
}
log.NewInfo("0", "rpc conversation ok")
controller.NewConversationDataBase()
controller.NewConversationController()
return nil
}
func (c *conversationServer) GetConversation(ctx context.Context, req *pbConversation.GetConversationReq) (*pbConversation.GetConversationResp, error) {
@ -179,7 +88,7 @@ func (c *conversationServer) BatchSetConversations(ctx context.Context, req *pbC
if err != nil {
return nil, err
}
chat.ConversationChangeNotification(ctx, req.OwnerUserID)
c.notify.ConversationChangeNotification(ctx, req.OwnerUserID)
return resp, nil
}
@ -196,7 +105,7 @@ func (c *conversationServer) ModifyConversationField(ctx context.Context, req *p
var err error
isSyncConversation := true
if req.Conversation.ConversationType == constant.GroupChatType {
groupInfo, err := c.groupChecker.GetGroupInfo(req.Conversation.GroupID)
groupInfo, err := c.groupChecker.GetGroupInfo(ctx, req.Conversation.GroupID)
if err != nil {
return nil, err
}
@ -213,7 +122,7 @@ func (c *conversationServer) ModifyConversationField(ctx context.Context, req *p
if err != nil {
return nil, err
}
chat.ConversationSetPrivateNotification(ctx, req.Conversation.OwnerUserID, req.Conversation.UserID, req.Conversation.IsPrivateChat)
c.notify.ConversationSetPrivateNotification(ctx, req.Conversation.OwnerUserID, req.Conversation.UserID, req.Conversation.IsPrivateChat)
return resp, nil
}
//haveUserID, err := c.ConversationInterface.GetUserIDExistConversation(ctx, req.UserIDList, req.Conversation.ConversationID)
@ -247,11 +156,11 @@ func (c *conversationServer) ModifyConversationField(ctx context.Context, req *p
if isSyncConversation {
for _, v := range req.UserIDList {
chat.ConversationChangeNotification(ctx, v)
c.notify.ConversationChangeNotification(ctx, v)
}
} else {
for _, v := range req.UserIDList {
chat.ConversationUnreadChangeNotification(ctx, v, req.Conversation.ConversationID, req.Conversation.UpdateUnreadCountTime)
c.notify.ConversationUnreadChangeNotification(ctx, v, req.Conversation.ConversationID, req.Conversation.UpdateUnreadCountTime)
}
}
return resp, nil

@ -7,10 +7,10 @@ import (
"Open_IM/pkg/common/constant"
"Open_IM/pkg/common/db/controller"
"Open_IM/pkg/common/db/relation"
relationTb "Open_IM/pkg/common/db/table/relation"
tablerelation "Open_IM/pkg/common/db/table/relation"
"Open_IM/pkg/common/tokenverify"
"Open_IM/pkg/common/tracelog"
discoveryRegistry "Open_IM/pkg/discoveryregistry"
registry "Open_IM/pkg/discoveryregistry"
pbfriend "Open_IM/pkg/proto/friend"
"Open_IM/pkg/utils"
"context"
@ -23,7 +23,7 @@ type friendServer struct {
controller.BlackInterface
notification *notification.Check
userCheck *check.UserCheck
RegisterCenter discoveryRegistry.SvcDiscoveryRegistry
RegisterCenter registry.SvcDiscoveryRegistry
}
func Start(client *openKeeper.ZkClient, server *grpc.Server) error {
@ -31,7 +31,7 @@ func Start(client *openKeeper.ZkClient, server *grpc.Server) error {
if err != nil {
return err
}
if err := mysql.AutoMigrate(&relationTb.FriendModel{}, &relationTb.FriendRequestModel{}, &relationTb.BlackModel{}); err != nil {
if err := mysql.AutoMigrate(&tablerelation.FriendModel{}, &tablerelation.FriendRequestModel{}, &tablerelation.BlackModel{}); err != nil {
return err
}
pbfriend.RegisterFriendServer(server, &friendServer{
@ -102,7 +102,7 @@ func (s *friendServer) RespondFriendApply(ctx context.Context, req *pbfriend.Res
if err := s.userCheck.Access(ctx, req.ToUserID); err != nil {
return nil, err
}
friendRequest := relationTb.FriendRequestModel{FromUserID: req.FromUserID, ToUserID: req.ToUserID, HandleMsg: req.HandleMsg, HandleResult: req.HandleResult}
friendRequest := tablerelation.FriendRequestModel{FromUserID: req.FromUserID, ToUserID: req.ToUserID, HandleMsg: req.HandleMsg, HandleResult: req.HandleResult}
if req.HandleResult == constant.FriendResponseAgree {
err := s.AgreeFriendRequest(ctx, &friendRequest)
if err != nil {
@ -158,20 +158,21 @@ func (s *friendServer) SetFriendRemark(ctx context.Context, req *pbfriend.SetFri
// ok
func (s *friendServer) GetDesignatedFriends(ctx context.Context, req *pbfriend.GetDesignatedFriendsReq) (resp *pbfriend.GetDesignatedFriendsResp, err error) {
resp = &pbfriend.GetDesignatedFriendsResp{}
if err := s.userCheck.Access(ctx, req.UserID); err != nil {
return nil, err
if utils.Duplicate(req.FriendUserIDs) {
return nil, constant.ErrArgs.Wrap("friend userID repeated")
}
friends, total, err := s.FriendInterface.PageOwnerFriends(ctx, req.UserID, req.Pagination.PageNumber, req.Pagination.ShowNumber)
friends, err := s.FriendInterface.FindFriendsWithError(ctx, req.OwnerUserID, req.FriendUserIDs)
if err != nil {
return nil, err
}
resp.FriendsInfo, err = (*convert.NewDBFriend(nil, s.RegisterCenter)).DB2PB(ctx, friends)
if err != nil {
if resp.FriendsInfo, err = (*convert.NewDBFriend(nil, s.RegisterCenter)).DB2PB(ctx, friends); err != nil {
return nil, err
}
resp.Total = int32(total)
return resp, nil
}
// ok 获取接收到的好友申请(即别人主动申请的)
@ -223,15 +224,17 @@ func (s *friendServer) IsFriend(ctx context.Context, req *pbfriend.IsFriendReq)
// ok
func (s *friendServer) GetPaginationFriends(ctx context.Context, req *pbfriend.GetPaginationFriendsReq) (resp *pbfriend.GetPaginationFriendsResp, err error) {
resp = &pbfriend.GetPaginationFriendsResp{}
if utils.Duplicate(req.FriendUserIDs) {
return nil, constant.ErrArgs.Wrap("friend userID repeated")
if err := s.userCheck.Access(ctx, req.UserID); err != nil {
return nil, err
}
friends, err := s.FriendInterface.FindFriendsWithError(ctx, req.OwnerUserID, req.FriendUserIDs)
friends, total, err := s.FriendInterface.PageOwnerFriends(ctx, req.UserID, req.Pagination.PageNumber, req.Pagination.ShowNumber)
if err != nil {
return nil, err
}
if resp.FriendsInfo, err = (*convert.NewDBFriend(nil, s.RegisterCenter)).DB2PB(ctx, friends); err != nil {
resp.FriendsInfo, err = (*convert.NewDBFriend(nil, s.RegisterCenter)).DB2PB(ctx, friends)
if err != nil {
return nil, err
}
resp.Total = int32(total)
return resp, nil
}

@ -10,7 +10,7 @@ import (
tablerelation "Open_IM/pkg/common/db/table/relation"
"Open_IM/pkg/common/tokenverify"
"Open_IM/pkg/common/tracelog"
discoveryRegistry "Open_IM/pkg/discoveryregistry"
registry "Open_IM/pkg/discoveryregistry"
"Open_IM/pkg/proto/sdkws"
pbuser "Open_IM/pkg/proto/user"
"Open_IM/pkg/utils"
@ -24,7 +24,8 @@ type userServer struct {
notification *notification.Check
userCheck *check.UserCheck
ConversationChecker *check.ConversationChecker
RegisterCenter discoveryRegistry.SvcDiscoveryRegistry
RegisterCenter registry.SvcDiscoveryRegistry
friendCheck *check.FriendChecker
}
func Start(client *openKeeper.ZkClient, server *grpc.Server) error {
@ -58,10 +59,6 @@ func (s *userServer) GetDesignateUsers(ctx context.Context, req *pbuser.GetDesig
return resp, nil
}
func (s *userServer) GetAllPageFriends(ctx context.Context, ownerUserID string) (resp []*sdkws.FriendInfo, err error) {
return
}
// ok
func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbuser.UpdateUserInfoReq) (resp *pbuser.UpdateUserInfoResp, err error) {
resp = &pbuser.UpdateUserInfoResp{}
@ -69,14 +66,6 @@ func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbuser.UpdateUserI
if err != nil {
return nil, err
}
//oldNickname := ""
//if req.UserInfo.Nickname != "" {
// u, err := s.FindWithError(ctx, []string{req.UserInfo.UserID})
// if err != nil {
// return nil, err
// }
// oldNickname = u[0].Nickname
//}
user, err := convert.NewPBUser(req.UserInfo).Convert()
if err != nil {
return nil, err
@ -85,7 +74,7 @@ func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbuser.UpdateUserI
if err != nil {
return nil, err
}
friends, err := s.GetAllPageFriends(ctx, req.UserInfo.UserID)
friends, err := s.friendCheck.GetAllPageFriends(ctx, req.UserInfo.UserID)
if err != nil {
return nil, err
}
@ -94,9 +83,7 @@ func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbuser.UpdateUserI
s.notification.FriendInfoUpdatedNotification(ctx, req.UserInfo.UserID, v.FriendUser.UserID, tracelog.GetOpUserID(ctx))
}
}()
s.notification.UserInfoUpdatedNotification(ctx, tracelog.GetOpUserID(ctx), req.UserInfo.UserID)
return resp, nil
}
@ -184,3 +171,13 @@ func (s *userServer) UserRegister(ctx context.Context, req *pbuser.UserRegisterR
}
return resp, nil
}
func (s *userServer) GetGlobalRecvMessageOpt(ctx context.Context, req *pbuser.GetGlobalRecvMessageOptReq) (resp *pbuser.GetGlobalRecvMessageOptResp, err error) {
resp = &pbuser.GetGlobalRecvMessageOptResp{}
user, err := s.FindWithError(ctx, []string{req.UserID})
if err != nil {
return nil, err
}
resp.GlobalRecvMsgOpt = user[0].GlobalRecvMsgOpt
return resp, nil
}

@ -315,10 +315,6 @@ func GroupIsBanPrivateChat(status int32) bool {
return true
}
const (
TokenKicked = 1001
)
const BigVersion = "v2"
const LogFileName = "OpenIM.log"

@ -35,6 +35,8 @@ const (
sendMsgFailedFlag = "SEND_MSG_FAILED_FLAG:"
userBadgeUnreadCountSum = "USER_BADGE_UNREAD_COUNT_SUM:"
exTypeKeyLocker = "EX_LOCK:"
uidPidToken = "UID_PID_TOKEN_STATUS:"
)
type Cache interface {
@ -52,7 +54,9 @@ type Cache interface {
SetGroupMinSeq(ctx context.Context, groupID string, minSeq int64) error
AddTokenFlag(ctx context.Context, userID string, platformID int, token string, flag int) error
GetTokenMapByUidPid(ctx context.Context, userID, platformID string) (map[string]int, error)
GetTokensWithoutError(ctx context.Context, userID, platformID string) (map[string]int, error)
SetTokenMapByUidPid(ctx context.Context, userID string, platformID int, m map[string]int) error
DeleteTokenByUidPid(ctx context.Context, userID string, platformID int, fields []string) error
GetMessageListBySeq(ctx context.Context, userID string, seqList []int64) (seqMsg []*sdkws.MsgData, failedSeqList []int64, err error)
@ -209,11 +213,12 @@ func (r *RedisClient) SetGroupMinSeq(ctx context.Context, groupID string, minSeq
}
// Store userid and platform class to redis
func (r *RedisClient) AddTokenFlag(ctx context.Context, userID string, platformID int, token string, flag int) error {
key := uidPidToken + userID + ":" + constant.PlatformIDToName(platformID)
func (r *RedisClient) AddTokenFlag(ctx context.Context, userID string, platform string, token string, flag int) error {
key := uidPidToken + userID + ":" + platform
return r.rdb.HSet(context.Background(), key, token, flag).Err()
}
//key:userID+platform-> <token, flag>
func (r *RedisClient) GetTokenMapByUidPid(ctx context.Context, userID, platformID string) (map[string]int, error) {
key := uidPidToken + userID + ":" + platformID
m, err := r.rdb.HGetAll(context.Background(), key).Result()
@ -223,8 +228,22 @@ func (r *RedisClient) GetTokenMapByUidPid(ctx context.Context, userID, platformI
}
return mm, err
}
func (r *RedisClient) SetTokenMapByUidPid(ctx context.Context, userID string, platformID int, m map[string]int) error {
key := uidPidToken + userID + ":" + constant.PlatformIDToName(platformID)
func (r *RedisClient) GetTokensWithoutError(ctx context.Context, userID, platform string) (map[string]int, error) {
key := uidPidToken + userID + ":" + platform
m, err := r.rdb.HGetAll(context.Background(), key).Result()
if err != nil && err == redis.Nil {
return nil, nil
}
mm := make(map[string]int)
for k, v := range m {
mm[k] = utils.StringToInt(v)
}
return mm, utils.Wrap(err, "")
}
func (r *RedisClient) SetTokenMapByUidPid(ctx context.Context, userID string, platform string, m map[string]int) error {
key := uidPidToken + userID + ":" + platform
mm := make(map[string]interface{})
for k, v := range m {
mm[k] = v
@ -232,8 +251,8 @@ func (r *RedisClient) SetTokenMapByUidPid(ctx context.Context, userID string, pl
return r.rdb.HSet(context.Background(), key, mm).Err()
}
func (r *RedisClient) DeleteTokenByUidPid(ctx context.Context, userID string, platformID int, fields []string) error {
key := uidPidToken + userID + ":" + constant.PlatformIDToName(platformID)
func (r *RedisClient) DeleteTokenByUidPid(ctx context.Context, userID string, platform string, fields []string) error {
key := uidPidToken + userID + ":" + platform
return r.rdb.HDel(context.Background(), key, fields...).Err()
}

@ -5,14 +5,9 @@ import (
"Open_IM/pkg/common/tokenverify"
"Open_IM/pkg/utils"
"context"
"github.com/go-redis/redis/v8"
"github.com/golang-jwt/jwt/v4"
)
const (
uidPidToken = "UID_PID_TOKEN_STATUS:"
)
type Token interface {
//结果为空 不返回错误
GetTokensWithoutError(ctx context.Context, userID, platform string) (map[string]int, error)
@ -21,9 +16,9 @@ type Token interface {
}
type TokenRedis struct {
RedisClient *RedisClient
AccessSecret string
AccessExpire int64
redisClient *RedisClient
accessSecret string
accessExpire int64
}
func NewTokenRedis(redisClient *RedisClient, accessSecret string, accessExpire int64) *TokenRedis {
@ -32,21 +27,12 @@ func NewTokenRedis(redisClient *RedisClient, accessSecret string, accessExpire i
// 结果为空 不返回错误
func (t *TokenRedis) GetTokensWithoutError(ctx context.Context, userID, platform string) (map[string]int, error) {
key := uidPidToken + userID + ":" + platform
m, err := t.RedisClient.GetClient().HGetAll(context.Background(), key).Result()
if err != nil && err == redis.Nil {
return nil, nil
}
mm := make(map[string]int)
for k, v := range m {
mm[k] = utils.StringToInt(v)
}
return mm, utils.Wrap(err, "")
return t.redisClient.GetTokensWithoutError(ctx, userID, platform)
}
// 创建token
func (t *TokenRedis) CreateToken(ctx context.Context, userID string, platform string) (string, error) {
tokens, err := t.GetTokensWithoutError(ctx, userID, platform)
tokens, err := t.redisClient.GetTokensWithoutError(ctx, userID, platform)
if err != nil {
return "", err
}
@ -58,18 +44,16 @@ func (t *TokenRedis) CreateToken(ctx context.Context, userID string, platform st
}
}
if len(deleteTokenKey) != 0 {
key := uidPidToken + userID + ":" + platform
err := t.RedisClient.GetClient().HDel(context.Background(), key, deleteTokenKey...).Err()
err := t.redisClient.DeleteTokenByUidPid(ctx, userID, platform, deleteTokenKey)
if err != nil {
return "", err
}
}
claims := tokenverify.BuildClaims(userID, platform, t.AccessExpire)
claims := tokenverify.BuildClaims(userID, platform, t.accessExpire)
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
tokenString, err := token.SignedString([]byte(t.AccessSecret))
tokenString, err := token.SignedString([]byte(t.accessSecret))
if err != nil {
return "", utils.Wrap(err, "")
}
key := uidPidToken + userID + ":" + platform
return "", utils.Wrap(t.RedisClient.GetClient().HSet(context.Background(), key, tokenString, constant.NormalToken).Err(), "")
return tokenString, t.redisClient.AddTokenFlag(ctx, userID, platform, tokenString, constant.NormalToken)
}

@ -9,7 +9,6 @@ import (
type AuthInterface interface {
//结果为空 不返回错误
GetTokensWithoutError(ctx context.Context, userID, platform string) (map[string]int, error)
//创建token
CreateToken(ctx context.Context, userID string, platform string) (string, error)
}

@ -94,17 +94,17 @@ var _ ConversationDataBaseInterface = (*ConversationDataBase)(nil)
type ConversationDataBase struct {
conversationDB relation.Conversation
cache cache.ConversationCache
db *gorm.DB
}
func (c ConversationDataBase) SetUsersConversationFiledTx(ctx context.Context, userIDList []string, conversation *relationTb.ConversationModel, filedMap map[string]interface{}) error {
return c.db.Transaction(func(tx *gorm.DB) error {
haveUserID, err := c.conversationDB.FindUserID(ctx, userIDList, conversation.ConversationID, tx)
fn := func(tx any) error {
temp := c.conversationDB.NewTx(tx)
haveUserID, err := temp.FindUserID(ctx, userIDList, conversation.ConversationID, tx)
if err != nil {
return err
}
if len(haveUserID) > 0 {
err = c.conversationDB.UpdateByMap(ctx, haveUserID, conversation.ConversationID, filedMap, tx)
err = temp.UpdateByMap(ctx, haveUserID, conversation.ConversationID, filedMap, tx)
if err != nil {
return err
}
@ -119,7 +119,7 @@ func (c ConversationDataBase) SetUsersConversationFiledTx(ctx context.Context, u
temp.OwnerUserID = v
cList = append(cList, temp)
}
err = c.conversationDB.Create(ctx, cList)
err = temp.Create(ctx, cList)
if err != nil {
return err
}
@ -134,7 +134,9 @@ func (c ConversationDataBase) SetUsersConversationFiledTx(ctx context.Context, u
return err
}
return nil
})
}
return c.conversationDB.Transaction(fn)
}
func NewConversationDataBase(db relation.Conversation, cache cache.ConversationCache) *ConversationDataBase {

@ -18,6 +18,8 @@ type Conversation interface {
FindUserIDAllConversationID(ctx context.Context, userID string, tx ...any) ([]string, error)
Take(ctx context.Context, userID, conversationID string, tx ...any) (conversation *relation.ConversationModel, err error)
FindConversationID(ctx context.Context, userID string, conversationIDList []string, tx ...any) (existConversationID []string, err error)
Transaction(func(tx any) error) error
NewTx(tx any) Conversation
}
type ConversationGorm struct {
DB *gorm.DB
@ -26,6 +28,15 @@ type ConversationGorm struct {
func NewConversationGorm(DB *gorm.DB) Conversation {
return &ConversationGorm{DB: DB}
}
func (c *ConversationGorm) Transaction(fn func(tx any) error) error {
return c.DB.Transaction(func(tx *gorm.DB) error {
return fn(tx)
})
}
func (c *ConversationGorm) NewTx(tx any) Conversation {
return &ConversationGorm{DB: tx.(*gorm.DB)}
}
func (c *ConversationGorm) Create(ctx context.Context, conversations []*relation.ConversationModel, tx ...any) (err error) {
defer func() {

@ -30,8 +30,11 @@ message parseTokenResp{
}
service Auth {
//token
rpc userToken(userTokenReq) returns(userTokenResp);
//退
rpc forceLogout(forceLogoutReq) returns(forceLogoutResp);
//token
rpc parseToken(parseTokenReq)returns(parseTokenResp);
}

@ -25,18 +25,18 @@ var _ = math.Inf
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
type GetPaginationFriendsReq struct {
OwnerUserID string `protobuf:"bytes,1,opt,name=ownerUserID" json:"ownerUserID,omitempty"`
FriendUserIDs []string `protobuf:"bytes,2,rep,name=friendUserIDs" json:"friendUserIDs,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
Pagination *sdkws.RequestPagination `protobuf:"bytes,1,opt,name=pagination" json:"pagination,omitempty"`
UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetPaginationFriendsReq) Reset() { *m = GetPaginationFriendsReq{} }
func (m *GetPaginationFriendsReq) String() string { return proto.CompactTextString(m) }
func (*GetPaginationFriendsReq) ProtoMessage() {}
func (*GetPaginationFriendsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{0}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{0}
}
func (m *GetPaginationFriendsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetPaginationFriendsReq.Unmarshal(m, b)
@ -56,22 +56,23 @@ func (m *GetPaginationFriendsReq) XXX_DiscardUnknown() {
var xxx_messageInfo_GetPaginationFriendsReq proto.InternalMessageInfo
func (m *GetPaginationFriendsReq) GetOwnerUserID() string {
func (m *GetPaginationFriendsReq) GetPagination() *sdkws.RequestPagination {
if m != nil {
return m.OwnerUserID
return m.Pagination
}
return ""
return nil
}
func (m *GetPaginationFriendsReq) GetFriendUserIDs() []string {
func (m *GetPaginationFriendsReq) GetUserID() string {
if m != nil {
return m.FriendUserIDs
return m.UserID
}
return nil
return ""
}
type GetPaginationFriendsResp struct {
FriendsInfo []*sdkws.FriendInfo `protobuf:"bytes,1,rep,name=friendsInfo" json:"friendsInfo,omitempty"`
FriendsInfo []*sdkws.FriendInfo `protobuf:"bytes,1,rep,name=FriendsInfo" json:"FriendsInfo,omitempty"`
Total int32 `protobuf:"varint,2,opt,name=total" json:"total,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -81,7 +82,7 @@ func (m *GetPaginationFriendsResp) Reset() { *m = GetPaginationFriendsRe
func (m *GetPaginationFriendsResp) String() string { return proto.CompactTextString(m) }
func (*GetPaginationFriendsResp) ProtoMessage() {}
func (*GetPaginationFriendsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{1}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{1}
}
func (m *GetPaginationFriendsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetPaginationFriendsResp.Unmarshal(m, b)
@ -108,6 +109,13 @@ func (m *GetPaginationFriendsResp) GetFriendsInfo() []*sdkws.FriendInfo {
return nil
}
func (m *GetPaginationFriendsResp) GetTotal() int32 {
if m != nil {
return m.Total
}
return 0
}
type ApplyToAddFriendReq struct {
FromUserID string `protobuf:"bytes,1,opt,name=fromUserID" json:"fromUserID,omitempty"`
ToUserID string `protobuf:"bytes,2,opt,name=toUserID" json:"toUserID,omitempty"`
@ -122,7 +130,7 @@ func (m *ApplyToAddFriendReq) Reset() { *m = ApplyToAddFriendReq{} }
func (m *ApplyToAddFriendReq) String() string { return proto.CompactTextString(m) }
func (*ApplyToAddFriendReq) ProtoMessage() {}
func (*ApplyToAddFriendReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{2}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{2}
}
func (m *ApplyToAddFriendReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ApplyToAddFriendReq.Unmarshal(m, b)
@ -180,7 +188,7 @@ func (m *ApplyToAddFriendResp) Reset() { *m = ApplyToAddFriendResp{} }
func (m *ApplyToAddFriendResp) String() string { return proto.CompactTextString(m) }
func (*ApplyToAddFriendResp) ProtoMessage() {}
func (*ApplyToAddFriendResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{3}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{3}
}
func (m *ApplyToAddFriendResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ApplyToAddFriendResp.Unmarshal(m, b)
@ -212,7 +220,7 @@ func (m *ImportFriendReq) Reset() { *m = ImportFriendReq{} }
func (m *ImportFriendReq) String() string { return proto.CompactTextString(m) }
func (*ImportFriendReq) ProtoMessage() {}
func (*ImportFriendReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{4}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{4}
}
func (m *ImportFriendReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ImportFriendReq.Unmarshal(m, b)
@ -256,7 +264,7 @@ func (m *ImportFriendResp) Reset() { *m = ImportFriendResp{} }
func (m *ImportFriendResp) String() string { return proto.CompactTextString(m) }
func (*ImportFriendResp) ProtoMessage() {}
func (*ImportFriendResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{5}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{5}
}
func (m *ImportFriendResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ImportFriendResp.Unmarshal(m, b)
@ -288,7 +296,7 @@ func (m *GetPaginationFriendsApplyToReq) Reset() { *m = GetPaginationFri
func (m *GetPaginationFriendsApplyToReq) String() string { return proto.CompactTextString(m) }
func (*GetPaginationFriendsApplyToReq) ProtoMessage() {}
func (*GetPaginationFriendsApplyToReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{6}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{6}
}
func (m *GetPaginationFriendsApplyToReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetPaginationFriendsApplyToReq.Unmarshal(m, b)
@ -334,7 +342,7 @@ func (m *GetPaginationFriendsApplyToResp) Reset() { *m = GetPaginationFr
func (m *GetPaginationFriendsApplyToResp) String() string { return proto.CompactTextString(m) }
func (*GetPaginationFriendsApplyToResp) ProtoMessage() {}
func (*GetPaginationFriendsApplyToResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{7}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{7}
}
func (m *GetPaginationFriendsApplyToResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetPaginationFriendsApplyToResp.Unmarshal(m, b)
@ -369,18 +377,18 @@ func (m *GetPaginationFriendsApplyToResp) GetTotal() int32 {
}
type GetDesignatedFriendsReq struct {
Pagination *sdkws.RequestPagination `protobuf:"bytes,1,opt,name=pagination" json:"pagination,omitempty"`
UserID string `protobuf:"bytes,2,opt,name=userID" json:"userID,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
OwnerUserID string `protobuf:"bytes,1,opt,name=ownerUserID" json:"ownerUserID,omitempty"`
FriendUserIDs []string `protobuf:"bytes,2,rep,name=friendUserIDs" json:"friendUserIDs,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetDesignatedFriendsReq) Reset() { *m = GetDesignatedFriendsReq{} }
func (m *GetDesignatedFriendsReq) String() string { return proto.CompactTextString(m) }
func (*GetDesignatedFriendsReq) ProtoMessage() {}
func (*GetDesignatedFriendsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{8}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{8}
}
func (m *GetDesignatedFriendsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetDesignatedFriendsReq.Unmarshal(m, b)
@ -400,23 +408,22 @@ func (m *GetDesignatedFriendsReq) XXX_DiscardUnknown() {
var xxx_messageInfo_GetDesignatedFriendsReq proto.InternalMessageInfo
func (m *GetDesignatedFriendsReq) GetPagination() *sdkws.RequestPagination {
func (m *GetDesignatedFriendsReq) GetOwnerUserID() string {
if m != nil {
return m.Pagination
return m.OwnerUserID
}
return nil
return ""
}
func (m *GetDesignatedFriendsReq) GetUserID() string {
func (m *GetDesignatedFriendsReq) GetFriendUserIDs() []string {
if m != nil {
return m.UserID
return m.FriendUserIDs
}
return ""
return nil
}
type GetDesignatedFriendsResp struct {
FriendsInfo []*sdkws.FriendInfo `protobuf:"bytes,1,rep,name=FriendsInfo" json:"FriendsInfo,omitempty"`
Total int32 `protobuf:"varint,2,opt,name=total" json:"total,omitempty"`
FriendsInfo []*sdkws.FriendInfo `protobuf:"bytes,1,rep,name=friendsInfo" json:"friendsInfo,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -426,7 +433,7 @@ func (m *GetDesignatedFriendsResp) Reset() { *m = GetDesignatedFriendsRe
func (m *GetDesignatedFriendsResp) String() string { return proto.CompactTextString(m) }
func (*GetDesignatedFriendsResp) ProtoMessage() {}
func (*GetDesignatedFriendsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{9}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{9}
}
func (m *GetDesignatedFriendsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetDesignatedFriendsResp.Unmarshal(m, b)
@ -453,13 +460,6 @@ func (m *GetDesignatedFriendsResp) GetFriendsInfo() []*sdkws.FriendInfo {
return nil
}
func (m *GetDesignatedFriendsResp) GetTotal() int32 {
if m != nil {
return m.Total
}
return 0
}
type AddBlackReq struct {
OwnerUserID string `protobuf:"bytes,1,opt,name=ownerUserID" json:"ownerUserID,omitempty"`
BlackUserID string `protobuf:"bytes,2,opt,name=blackUserID" json:"blackUserID,omitempty"`
@ -472,7 +472,7 @@ func (m *AddBlackReq) Reset() { *m = AddBlackReq{} }
func (m *AddBlackReq) String() string { return proto.CompactTextString(m) }
func (*AddBlackReq) ProtoMessage() {}
func (*AddBlackReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{10}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{10}
}
func (m *AddBlackReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddBlackReq.Unmarshal(m, b)
@ -516,7 +516,7 @@ func (m *AddBlackResp) Reset() { *m = AddBlackResp{} }
func (m *AddBlackResp) String() string { return proto.CompactTextString(m) }
func (*AddBlackResp) ProtoMessage() {}
func (*AddBlackResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{11}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{11}
}
func (m *AddBlackResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddBlackResp.Unmarshal(m, b)
@ -548,7 +548,7 @@ func (m *RemoveBlackReq) Reset() { *m = RemoveBlackReq{} }
func (m *RemoveBlackReq) String() string { return proto.CompactTextString(m) }
func (*RemoveBlackReq) ProtoMessage() {}
func (*RemoveBlackReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{12}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{12}
}
func (m *RemoveBlackReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RemoveBlackReq.Unmarshal(m, b)
@ -592,7 +592,7 @@ func (m *RemoveBlackResp) Reset() { *m = RemoveBlackResp{} }
func (m *RemoveBlackResp) String() string { return proto.CompactTextString(m) }
func (*RemoveBlackResp) ProtoMessage() {}
func (*RemoveBlackResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{13}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{13}
}
func (m *RemoveBlackResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RemoveBlackResp.Unmarshal(m, b)
@ -624,7 +624,7 @@ func (m *GetPaginationBlacksReq) Reset() { *m = GetPaginationBlacksReq{}
func (m *GetPaginationBlacksReq) String() string { return proto.CompactTextString(m) }
func (*GetPaginationBlacksReq) ProtoMessage() {}
func (*GetPaginationBlacksReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{14}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{14}
}
func (m *GetPaginationBlacksReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetPaginationBlacksReq.Unmarshal(m, b)
@ -670,7 +670,7 @@ func (m *GetPaginationBlacksResp) Reset() { *m = GetPaginationBlacksResp
func (m *GetPaginationBlacksResp) String() string { return proto.CompactTextString(m) }
func (*GetPaginationBlacksResp) ProtoMessage() {}
func (*GetPaginationBlacksResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{15}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{15}
}
func (m *GetPaginationBlacksResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetPaginationBlacksResp.Unmarshal(m, b)
@ -716,7 +716,7 @@ func (m *IsFriendReq) Reset() { *m = IsFriendReq{} }
func (m *IsFriendReq) String() string { return proto.CompactTextString(m) }
func (*IsFriendReq) ProtoMessage() {}
func (*IsFriendReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{16}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{16}
}
func (m *IsFriendReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_IsFriendReq.Unmarshal(m, b)
@ -762,7 +762,7 @@ func (m *IsFriendResp) Reset() { *m = IsFriendResp{} }
func (m *IsFriendResp) String() string { return proto.CompactTextString(m) }
func (*IsFriendResp) ProtoMessage() {}
func (*IsFriendResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{17}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{17}
}
func (m *IsFriendResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_IsFriendResp.Unmarshal(m, b)
@ -808,7 +808,7 @@ func (m *IsBlackReq) Reset() { *m = IsBlackReq{} }
func (m *IsBlackReq) String() string { return proto.CompactTextString(m) }
func (*IsBlackReq) ProtoMessage() {}
func (*IsBlackReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{18}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{18}
}
func (m *IsBlackReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_IsBlackReq.Unmarshal(m, b)
@ -854,7 +854,7 @@ func (m *IsBlackResp) Reset() { *m = IsBlackResp{} }
func (m *IsBlackResp) String() string { return proto.CompactTextString(m) }
func (*IsBlackResp) ProtoMessage() {}
func (*IsBlackResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{19}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{19}
}
func (m *IsBlackResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_IsBlackResp.Unmarshal(m, b)
@ -900,7 +900,7 @@ func (m *DeleteFriendReq) Reset() { *m = DeleteFriendReq{} }
func (m *DeleteFriendReq) String() string { return proto.CompactTextString(m) }
func (*DeleteFriendReq) ProtoMessage() {}
func (*DeleteFriendReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{20}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{20}
}
func (m *DeleteFriendReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteFriendReq.Unmarshal(m, b)
@ -944,7 +944,7 @@ func (m *DeleteFriendResp) Reset() { *m = DeleteFriendResp{} }
func (m *DeleteFriendResp) String() string { return proto.CompactTextString(m) }
func (*DeleteFriendResp) ProtoMessage() {}
func (*DeleteFriendResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{21}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{21}
}
func (m *DeleteFriendResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteFriendResp.Unmarshal(m, b)
@ -979,7 +979,7 @@ func (m *RespondFriendApplyReq) Reset() { *m = RespondFriendApplyReq{} }
func (m *RespondFriendApplyReq) String() string { return proto.CompactTextString(m) }
func (*RespondFriendApplyReq) ProtoMessage() {}
func (*RespondFriendApplyReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{22}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{22}
}
func (m *RespondFriendApplyReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RespondFriendApplyReq.Unmarshal(m, b)
@ -1037,7 +1037,7 @@ func (m *RespondFriendApplyResp) Reset() { *m = RespondFriendApplyResp{}
func (m *RespondFriendApplyResp) String() string { return proto.CompactTextString(m) }
func (*RespondFriendApplyResp) ProtoMessage() {}
func (*RespondFriendApplyResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{23}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{23}
}
func (m *RespondFriendApplyResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RespondFriendApplyResp.Unmarshal(m, b)
@ -1070,7 +1070,7 @@ func (m *SetFriendRemarkReq) Reset() { *m = SetFriendRemarkReq{} }
func (m *SetFriendRemarkReq) String() string { return proto.CompactTextString(m) }
func (*SetFriendRemarkReq) ProtoMessage() {}
func (*SetFriendRemarkReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{24}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{24}
}
func (m *SetFriendRemarkReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetFriendRemarkReq.Unmarshal(m, b)
@ -1121,7 +1121,7 @@ func (m *SetFriendRemarkResp) Reset() { *m = SetFriendRemarkResp{} }
func (m *SetFriendRemarkResp) String() string { return proto.CompactTextString(m) }
func (*SetFriendRemarkResp) ProtoMessage() {}
func (*SetFriendRemarkResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{25}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{25}
}
func (m *SetFriendRemarkResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetFriendRemarkResp.Unmarshal(m, b)
@ -1153,7 +1153,7 @@ func (m *GetPaginationFriendsApplyFromReq) Reset() { *m = GetPaginationF
func (m *GetPaginationFriendsApplyFromReq) String() string { return proto.CompactTextString(m) }
func (*GetPaginationFriendsApplyFromReq) ProtoMessage() {}
func (*GetPaginationFriendsApplyFromReq) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{26}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{26}
}
func (m *GetPaginationFriendsApplyFromReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetPaginationFriendsApplyFromReq.Unmarshal(m, b)
@ -1199,7 +1199,7 @@ func (m *GetPaginationFriendsApplyFromResp) Reset() { *m = GetPagination
func (m *GetPaginationFriendsApplyFromResp) String() string { return proto.CompactTextString(m) }
func (*GetPaginationFriendsApplyFromResp) ProtoMessage() {}
func (*GetPaginationFriendsApplyFromResp) Descriptor() ([]byte, []int) {
return fileDescriptor_friend_80e3d7661e2d6b50, []int{27}
return fileDescriptor_friend_2a356ccaa517dcdd, []int{27}
}
func (m *GetPaginationFriendsApplyFromResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetPaginationFriendsApplyFromResp.Unmarshal(m, b)
@ -1793,68 +1793,68 @@ var _Friend_serviceDesc = grpc.ServiceDesc{
Metadata: "friend/friend.proto",
}
func init() { proto.RegisterFile("friend/friend.proto", fileDescriptor_friend_80e3d7661e2d6b50) }
var fileDescriptor_friend_80e3d7661e2d6b50 = []byte{
// 955 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xe1, 0x6e, 0xdb, 0x36,
0x10, 0x86, 0x9d, 0xc5, 0x4d, 0xce, 0xae, 0x93, 0x9e, 0x5d, 0x57, 0x50, 0xda, 0xc4, 0x25, 0x86,
0xd6, 0xfb, 0xd1, 0x18, 0x75, 0x31, 0x60, 0xc0, 0x86, 0x61, 0x09, 0x8a, 0x00, 0x19, 0x10, 0x74,
0x53, 0xbb, 0x0d, 0xd9, 0x8f, 0x0d, 0xea, 0x44, 0x7b, 0x9e, 0x6d, 0x89, 0xd1, 0x29, 0x75, 0xfb,
0x20, 0x7b, 0xb4, 0xbd, 0xcf, 0x20, 0x92, 0x92, 0x28, 0x59, 0x56, 0xdd, 0x2d, 0xf9, 0x65, 0xf0,
0xee, 0xe3, 0xdd, 0xf1, 0x78, 0xfe, 0x3e, 0x0a, 0x3a, 0xe3, 0x70, 0xca, 0x7d, 0x6f, 0xa8, 0x7e,
0x8e, 0x45, 0x18, 0x44, 0x01, 0x36, 0xd4, 0xca, 0x7e, 0xfa, 0x4a, 0x70, 0xff, 0xd9, 0xf9, 0xc5,
0xb3, 0xd7, 0x3c, 0x7c, 0xc7, 0xc3, 0xa1, 0x98, 0x4d, 0x86, 0x12, 0x31, 0x24, 0x6f, 0xb6, 0xa4,
0xe1, 0x92, 0xd4, 0x06, 0xe6, 0xc2, 0x83, 0x09, 0x8f, 0x7e, 0x70, 0x27, 0x53, 0xdf, 0x8d, 0xa6,
0x81, 0x7f, 0x26, 0xf7, 0x93, 0xc3, 0xaf, 0xb0, 0x0f, 0xcd, 0x60, 0xe9, 0xf3, 0xf0, 0x27, 0xe2,
0xe1, 0xf9, 0x4b, 0xab, 0xd6, 0xaf, 0x0d, 0x76, 0x1d, 0xd3, 0x84, 0x9f, 0xc3, 0x5d, 0x95, 0x4f,
0xad, 0xc9, 0xaa, 0xf7, 0xb7, 0x06, 0xbb, 0x4e, 0xde, 0xc8, 0x5e, 0x81, 0x55, 0x9e, 0x82, 0x04,
0xbe, 0x80, 0xa6, 0x02, 0xd3, 0xb9, 0x3f, 0x0e, 0xac, 0x5a, 0x7f, 0x6b, 0xd0, 0x1c, 0xdd, 0x3b,
0x96, 0x45, 0x1e, 0x2b, 0x60, 0xec, 0x70, 0x4c, 0x14, 0xfb, 0x00, 0x1d, 0x57, 0x88, 0xf9, 0x87,
0x37, 0xc1, 0x89, 0xe7, 0x29, 0x50, 0x5c, 0xef, 0x21, 0xc0, 0x38, 0x0c, 0x16, 0xb9, 0x72, 0x0d,
0x0b, 0xda, 0xb0, 0x13, 0x05, 0xda, 0x5b, 0x97, 0xde, 0x74, 0x8d, 0x3d, 0x68, 0x84, 0xfc, 0xea,
0x82, 0x26, 0xd6, 0x96, 0xf4, 0xe8, 0x15, 0xb6, 0xa1, 0xce, 0xdf, 0x5b, 0x9f, 0x49, 0x5b, 0x9d,
0xbf, 0x67, 0x3d, 0xe8, 0xae, 0xa6, 0x26, 0xc1, 0x2e, 0x61, 0x6f, 0xba, 0x10, 0x41, 0x18, 0x65,
0xe5, 0xdc, 0x54, 0xfb, 0x10, 0xf6, 0xf3, 0xa1, 0x49, 0xb0, 0x10, 0x0e, 0xcb, 0x5a, 0x7a, 0xa2,
0x4a, 0x8b, 0xb3, 0xf7, 0xa0, 0x71, 0x6d, 0x26, 0xd6, 0x2b, 0xfc, 0x0a, 0x40, 0xa4, 0xdb, 0x64,
0x1b, 0x9a, 0x23, 0x4b, 0xf7, 0xdb, 0xe1, 0x57, 0xd7, 0x9c, 0x8c, 0xb0, 0x8e, 0x81, 0x65, 0xd7,
0x70, 0x54, 0x99, 0x93, 0x04, 0x7e, 0x03, 0xed, 0xf4, 0xfc, 0x71, 0x24, 0xd2, 0x17, 0xda, 0xcd,
0x5d, 0xa8, 0x76, 0x3a, 0x05, 0x2c, 0x76, 0x61, 0x3b, 0x0a, 0x22, 0x77, 0x2e, 0xab, 0xda, 0x76,
0xd4, 0x82, 0xcd, 0xe4, 0x80, 0xbe, 0xe4, 0x34, 0x9d, 0xf8, 0x6e, 0xc4, 0x3d, 0x63, 0x40, 0xf3,
0x67, 0xa9, 0x6d, 0x7e, 0x16, 0xa3, 0x3b, 0x75, 0xb3, 0x3b, 0x8c, 0xcb, 0x51, 0x2d, 0x49, 0xa6,
0x46, 0xf5, 0x6c, 0xa3, 0x51, 0x35, 0x50, 0x6b, 0xce, 0xf4, 0x23, 0x34, 0x5d, 0xcf, 0x3b, 0x9d,
0xbb, 0x7f, 0xcc, 0x36, 0x9b, 0x94, 0x3e, 0x34, 0xdf, 0xc6, 0xe8, 0xdc, 0xf4, 0x9a, 0x26, 0xd6,
0x86, 0x56, 0x16, 0x92, 0x04, 0x7b, 0x03, 0xed, 0x90, 0x2f, 0x82, 0x77, 0xfc, 0x46, 0xb3, 0xdc,
0x83, 0xbd, 0x5c, 0x54, 0x12, 0xec, 0x2f, 0xe8, 0xe5, 0xc6, 0x42, 0x7a, 0xe8, 0x76, 0x46, 0xf0,
0xb2, 0x40, 0x56, 0x49, 0x2e, 0x12, 0x38, 0x80, 0x86, 0x2c, 0x34, 0x19, 0xb9, 0x7d, 0x1d, 0x50,
0x42, 0xe4, 0xbd, 0x68, 0xff, 0x9a, 0x2b, 0x39, 0x81, 0xe6, 0x94, 0xb2, 0x3f, 0xaf, 0x05, 0x77,
0x54, 0xb5, 0xcf, 0x75, 0xf1, 0xc9, 0x32, 0xf3, 0x8c, 0x74, 0x83, 0x92, 0x25, 0xfb, 0x0d, 0x5a,
0x59, 0x08, 0x12, 0xf8, 0x04, 0xda, 0x53, 0x3f, 0x6e, 0xdc, 0x73, 0x3d, 0x11, 0x32, 0xd4, 0x8e,
0x53, 0xb0, 0x66, 0xb8, 0x51, 0x82, 0xab, 0x9b, 0xb8, 0xc4, 0xca, 0xbe, 0x03, 0x98, 0x52, 0x7a,
0x9d, 0xff, 0xa5, 0xc2, 0xcb, 0xf8, 0x90, 0xe9, 0xd5, 0xc5, 0xfc, 0xa3, 0x4b, 0x39, 0x4d, 0x5a,
0x17, 0xe7, 0xcd, 0x1b, 0x33, 0xd4, 0x48, 0xa3, 0xea, 0x26, 0x4a, 0x1b, 0xd9, 0x2f, 0xb0, 0xe7,
0xf1, 0x39, 0x8f, 0xf8, 0xa7, 0x10, 0x20, 0x83, 0x96, 0xc9, 0x75, 0xba, 0xdc, 0x9c, 0x2d, 0xa6,
0xbf, 0x7c, 0x60, 0x12, 0xec, 0xef, 0x1a, 0xdc, 0x0f, 0x39, 0x89, 0xc0, 0xd7, 0xff, 0x50, 0x49,
0x42, 0xff, 0x57, 0x03, 0x18, 0xb4, 0xfe, 0x74, 0x7d, 0x6f, 0xce, 0x1d, 0x4e, 0xd7, 0xf3, 0x48,
0x2a, 0xc1, 0xb6, 0x93, 0xb3, 0xe1, 0x43, 0xd8, 0x55, 0xeb, 0x58, 0x2a, 0x94, 0x2c, 0x64, 0x06,
0x66, 0x41, 0xaf, 0xac, 0x2c, 0x49, 0xd8, 0x48, 0x3c, 0x65, 0xf0, 0x85, 0x1b, 0xce, 0x6e, 0xac,
0x43, 0x4a, 0xbb, 0xe2, 0x90, 0x99, 0x76, 0xc5, 0x2b, 0x76, 0x1f, 0x3a, 0x2b, 0x39, 0x49, 0xb0,
0x08, 0xfa, 0x6b, 0x79, 0xfc, 0x2c, 0x0c, 0x16, 0xb7, 0xf3, 0xd7, 0x5d, 0xc2, 0xe3, 0x8f, 0x64,
0x55, 0xfa, 0x31, 0xfe, 0x04, 0xfd, 0x18, 0x6f, 0xa0, 0x1f, 0xa3, 0x7f, 0x76, 0x40, 0x3f, 0x8a,
0xf0, 0x02, 0xf6, 0x8b, 0xe2, 0x8d, 0x07, 0xc7, 0xfa, 0xfd, 0x54, 0xf2, 0xa2, 0xb0, 0x1f, 0xae,
0x77, 0x92, 0x40, 0x1f, 0x0e, 0x2a, 0x04, 0x11, 0x9f, 0x24, 0x9b, 0xab, 0x95, 0xda, 0x7e, 0xba,
0x11, 0x8e, 0x04, 0x46, 0xf0, 0xa8, 0xb2, 0x85, 0x38, 0xf8, 0x68, 0x24, 0x7d, 0xbf, 0xf6, 0x17,
0x1b, 0x22, 0x49, 0xe0, 0x97, 0xb0, 0x93, 0x08, 0x0b, 0x76, 0xd2, 0x7e, 0x64, 0xea, 0x65, 0x77,
0x57, 0x8d, 0x24, 0xf0, 0x5b, 0x68, 0x1a, 0x4a, 0x81, 0xbd, 0x04, 0x94, 0x17, 0x25, 0xfb, 0x41,
0xa9, 0x5d, 0xa5, 0x4d, 0xc8, 0x34, 0x4b, 0x6b, 0x30, 0x74, 0x96, 0x36, 0xc7, 0xb9, 0x23, 0xb8,
0xa3, 0x19, 0x0e, 0x31, 0x03, 0xa4, 0xe9, 0x3a, 0x2b, 0x36, 0x12, 0xf8, 0x33, 0x74, 0x4a, 0x54,
0x05, 0x0f, 0x4b, 0x7b, 0x94, 0xca, 0x9b, 0x7d, 0x54, 0xe9, 0x27, 0x81, 0x27, 0xd0, 0x32, 0x99,
0x0b, 0xd3, 0xb3, 0x16, 0x88, 0xd2, 0xb6, 0xca, 0x1d, 0x24, 0xf0, 0x35, 0xe0, 0x2a, 0xa1, 0xe0,
0xa3, 0xac, 0x69, 0x25, 0x1c, 0x68, 0x1f, 0x56, 0xb9, 0x49, 0xe0, 0xf7, 0xb0, 0x57, 0xe0, 0x05,
0xb4, 0x93, 0x2d, 0xab, 0x24, 0x65, 0x1f, 0xac, 0xf5, 0x91, 0xc0, 0x53, 0xb8, 0x6b, 0x3e, 0x4e,
0x29, 0x3b, 0x64, 0xe1, 0x39, 0x9c, 0x1d, 0xb2, 0xf8, 0x98, 0xc5, 0x4b, 0xe8, 0x96, 0x3d, 0xba,
0xd0, 0x6c, 0x70, 0xd9, 0xfb, 0xcf, 0xee, 0x57, 0x03, 0xd2, 0xd0, 0x2b, 0x13, 0x8e, 0x47, 0x55,
0xf3, 0x5f, 0x0c, 0x5d, 0xfa, 0xe5, 0x72, 0xfa, 0xf8, 0xd7, 0xa3, 0xf8, 0x1b, 0xeb, 0xf7, 0xf3,
0x0b, 0xe3, 0xe3, 0x4a, 0x6d, 0xfa, 0x5a, 0xfd, 0xbc, 0x6d, 0x48, 0xe3, 0x8b, 0x7f, 0x03, 0x00,
0x00, 0xff, 0xff, 0x0d, 0x30, 0x9d, 0x85, 0xaa, 0x0d, 0x00, 0x00,
func init() { proto.RegisterFile("friend/friend.proto", fileDescriptor_friend_2a356ccaa517dcdd) }
var fileDescriptor_friend_2a356ccaa517dcdd = []byte{
// 957 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xe1, 0x6e, 0xdb, 0x46,
0x0c, 0x86, 0x9d, 0x25, 0x4d, 0x68, 0xd7, 0x49, 0x69, 0xd7, 0x15, 0x94, 0x36, 0x71, 0x0f, 0x43,
0xeb, 0xfd, 0x68, 0x8c, 0xba, 0x18, 0x30, 0x60, 0xc3, 0xb0, 0x04, 0x45, 0x81, 0x0c, 0x08, 0xba,
0xa9, 0xed, 0x86, 0xec, 0xc7, 0x06, 0x75, 0x3a, 0x7b, 0x9e, 0x6d, 0xe9, 0x22, 0x2a, 0x4d, 0xfb,
0x20, 0x7b, 0xb4, 0xbd, 0xcf, 0xa0, 0xbb, 0x93, 0xee, 0x24, 0xcb, 0xae, 0xbb, 0x26, 0xbf, 0x0c,
0x92, 0xdf, 0x91, 0x3c, 0x92, 0xfa, 0x78, 0x86, 0xf6, 0x28, 0x9e, 0xf0, 0x30, 0x18, 0xa8, 0x9f,
0x23, 0x11, 0x47, 0x49, 0x84, 0x5b, 0x4a, 0x72, 0x1f, 0xbf, 0x14, 0x3c, 0x7c, 0x72, 0x7a, 0xf6,
0xe4, 0x15, 0x8f, 0xdf, 0xf1, 0x78, 0x20, 0xa6, 0xe3, 0x81, 0x44, 0x0c, 0x28, 0x98, 0x5e, 0xd1,
0xe0, 0x8a, 0xd4, 0x01, 0x36, 0x85, 0x7b, 0x63, 0x9e, 0xfc, 0xe4, 0x8f, 0x27, 0xa1, 0x9f, 0x4c,
0xa2, 0xf0, 0x85, 0x3c, 0x4f, 0x1e, 0xbf, 0xc0, 0x6f, 0x00, 0x44, 0xae, 0x77, 0x6a, 0xbd, 0x5a,
0xbf, 0x31, 0x74, 0x8e, 0xe4, 0xf9, 0x23, 0x8f, 0x5f, 0x5c, 0x72, 0xb2, 0xce, 0x79, 0x16, 0x16,
0xbb, 0xb0, 0x75, 0x49, 0x3c, 0x3e, 0x7d, 0xee, 0xd4, 0x7b, 0xb5, 0xfe, 0x8e, 0xa7, 0x25, 0xc6,
0xc1, 0xa9, 0x0e, 0x46, 0x02, 0x9f, 0x41, 0x43, 0x8b, 0xa7, 0xe1, 0x28, 0x72, 0x6a, 0xbd, 0x8d,
0x7e, 0x63, 0x78, 0x47, 0x87, 0x53, 0x96, 0xd4, 0xe0, 0xd9, 0x28, 0xec, 0xc0, 0x66, 0x12, 0x25,
0xfe, 0x4c, 0xc6, 0xd9, 0xf4, 0x94, 0xc0, 0x3e, 0x40, 0xdb, 0x17, 0x62, 0xf6, 0xe1, 0x75, 0x74,
0x1c, 0x04, 0x0a, 0x9e, 0xde, 0xe7, 0x00, 0x60, 0x14, 0x47, 0xf3, 0x37, 0x2a, 0xb3, 0x9a, 0xcc,
0xcc, 0xd2, 0xa0, 0x0b, 0xdb, 0x49, 0xf4, 0xc6, 0xce, 0x3b, 0x97, 0xd3, 0x1b, 0xc5, 0xfc, 0xe2,
0x8c, 0xc6, 0xce, 0x86, 0xba, 0x91, 0x92, 0xb0, 0x05, 0x75, 0xfe, 0xde, 0xf9, 0x42, 0xea, 0xea,
0xfc, 0x3d, 0xeb, 0x42, 0x67, 0x31, 0x34, 0x09, 0x76, 0x0e, 0xbb, 0x93, 0xb9, 0x88, 0xe2, 0xc4,
0xa4, 0xd3, 0x83, 0x46, 0x74, 0x15, 0xf2, 0xb8, 0x90, 0x8f, 0xad, 0xc2, 0x2f, 0xe1, 0xb6, 0x6a,
0xa7, 0x92, 0xc9, 0xa9, 0xf7, 0x36, 0xfa, 0x3b, 0x5e, 0x51, 0xc9, 0x10, 0xf6, 0x8a, 0xae, 0x49,
0xb0, 0x18, 0x0e, 0xaa, 0x0a, 0x7d, 0xac, 0x52, 0x4b, 0xa3, 0x9b, 0x16, 0xd5, 0xec, 0x16, 0x95,
0x9a, 0x5e, 0x5f, 0xbf, 0xe9, 0xec, 0x12, 0x0e, 0x57, 0xc6, 0x24, 0x81, 0xdf, 0x41, 0x2b, 0xbf,
0x7f, 0xea, 0x89, 0x74, 0x9b, 0x3b, 0x85, 0x36, 0x6b, 0xa3, 0x57, 0xc2, 0x2e, 0x69, 0xb6, 0x2f,
0x07, 0xf8, 0x39, 0xa7, 0xc9, 0x38, 0xf4, 0x13, 0x1e, 0x58, 0x03, 0x7c, 0x5d, 0x15, 0x7e, 0x29,
0xc7, 0xb6, 0x22, 0x84, 0x1a, 0xdb, 0xd1, 0x5a, 0x63, 0x6b, 0xa1, 0xd8, 0xcf, 0xd0, 0xf0, 0x83,
0xe0, 0x64, 0xe6, 0xff, 0x39, 0x5d, 0x2f, 0xcf, 0x1e, 0x34, 0xde, 0xa6, 0xe8, 0xc2, 0x74, 0xda,
0x2a, 0xd6, 0x82, 0xa6, 0x71, 0x49, 0x82, 0xbd, 0x86, 0x56, 0xcc, 0xe7, 0xd1, 0x3b, 0x7e, 0xad,
0x51, 0xee, 0xc0, 0x6e, 0xc1, 0x2b, 0x09, 0xf6, 0x37, 0x74, 0x0b, 0x6d, 0x97, 0x16, 0xba, 0x99,
0x11, 0x3b, 0x2f, 0x91, 0x55, 0x16, 0x8b, 0x04, 0xf6, 0x61, 0x4b, 0x26, 0x9a, 0x8d, 0xd4, 0x9e,
0x76, 0x28, 0x21, 0xb2, 0x03, 0xda, 0xbe, 0x64, 0x8c, 0x8e, 0xa1, 0x31, 0x21, 0xf3, 0x71, 0x3a,
0x70, 0x4b, 0x65, 0xfb, 0x54, 0x27, 0x9f, 0x89, 0xc6, 0x32, 0xd4, 0x05, 0xca, 0x44, 0xf6, 0x3b,
0x34, 0x8d, 0x0b, 0x12, 0xf8, 0x08, 0x5a, 0x93, 0x30, 0x2d, 0xdc, 0x53, 0x3d, 0x30, 0xd2, 0xd5,
0xb6, 0x57, 0xd2, 0x1a, 0xdc, 0x30, 0xc3, 0xd5, 0x6d, 0x5c, 0xa6, 0x65, 0x3f, 0x00, 0x4c, 0x28,
0x6f, 0xe7, 0xff, 0xc9, 0xf0, 0x3c, 0xbd, 0x64, 0xde, 0xba, 0x74, 0xfa, 0x75, 0x2a, 0x27, 0x59,
0xe9, 0xd2, 0xb8, 0x45, 0xa5, 0x41, 0x0d, 0x35, 0xaa, 0x6e, 0xa3, 0xb4, 0x92, 0xfd, 0x0a, 0xbb,
0x01, 0x9f, 0xf1, 0x84, 0x7f, 0x0a, 0xc1, 0x31, 0x68, 0xda, 0x5f, 0x9a, 0x4e, 0xb7, 0xa0, 0x4b,
0xe9, 0xad, 0xe8, 0x98, 0x04, 0xfb, 0xa7, 0x06, 0x77, 0x63, 0x4e, 0x22, 0x0a, 0xf5, 0xb7, 0x28,
0x49, 0xe6, 0x73, 0x39, 0x9e, 0x41, 0xf3, 0x2f, 0x3f, 0x0c, 0x66, 0xdc, 0xe3, 0x74, 0x39, 0x4b,
0x24, 0xd3, 0x6f, 0x7a, 0x05, 0x1d, 0xde, 0x87, 0x1d, 0x25, 0xa7, 0xab, 0x40, 0xd1, 0xbe, 0x51,
0x30, 0x07, 0xba, 0x55, 0x69, 0x49, 0x42, 0x46, 0xe2, 0x39, 0x43, 0xcf, 0xfd, 0x78, 0x7a, 0x6d,
0x15, 0x52, 0xbb, 0x29, 0x75, 0x69, 0x76, 0x53, 0x2a, 0xb1, 0xbb, 0xd0, 0x5e, 0x88, 0x49, 0x82,
0x25, 0xd0, 0x5b, 0xca, 0xd3, 0x2f, 0xe2, 0x68, 0x7e, 0x33, 0x9f, 0xee, 0x15, 0x3c, 0xfc, 0x48,
0x54, 0xb5, 0x1f, 0x46, 0x9f, 0xb0, 0x1f, 0x46, 0x6b, 0xec, 0x87, 0xe1, 0xbf, 0xdb, 0xa0, 0x1f,
0x45, 0x78, 0x06, 0x7b, 0xe5, 0xe5, 0x8c, 0xfb, 0x47, 0xfa, 0xfd, 0x54, 0xf1, 0x62, 0x70, 0xef,
0x2f, 0x37, 0x92, 0xc0, 0x10, 0xf6, 0x57, 0x2c, 0x3c, 0x7c, 0x94, 0x1d, 0x5e, 0xbd, 0x89, 0xdd,
0xc7, 0x6b, 0xe1, 0x48, 0x60, 0x02, 0x0f, 0x56, 0x96, 0x10, 0xfb, 0x1f, 0xf5, 0xa4, 0xfb, 0xeb,
0x7e, 0xb5, 0x26, 0x92, 0x04, 0x7e, 0x0d, 0xdb, 0xd9, 0x62, 0xc1, 0x76, 0x5e, 0x0f, 0xb3, 0xbd,
0xdc, 0xce, 0xa2, 0x92, 0x04, 0x7e, 0x0f, 0x0d, 0x6b, 0x53, 0x60, 0x37, 0x03, 0x15, 0x97, 0x92,
0x7b, 0xaf, 0x52, 0xaf, 0xc2, 0x66, 0x64, 0x6a, 0xc2, 0x5a, 0x0c, 0x6d, 0xc2, 0x16, 0x38, 0x77,
0x08, 0xb7, 0x34, 0xc3, 0x21, 0x1a, 0x40, 0x1e, 0xae, 0xbd, 0xa0, 0x23, 0x81, 0xbf, 0x40, 0xbb,
0x62, 0xab, 0xe0, 0x41, 0x65, 0x8d, 0xf2, 0xf5, 0xe6, 0x1e, 0xae, 0xb4, 0x93, 0xc0, 0x63, 0x68,
0xda, 0xcc, 0x85, 0xf9, 0x5d, 0x4b, 0x44, 0xe9, 0x3a, 0xd5, 0x06, 0x12, 0xf8, 0x0a, 0x70, 0x91,
0x50, 0xf0, 0x81, 0x29, 0x5a, 0x05, 0x07, 0xba, 0x07, 0xab, 0xcc, 0x24, 0xf0, 0x47, 0xd8, 0x2d,
0xf1, 0x02, 0xba, 0xd9, 0x91, 0x45, 0x92, 0x72, 0xf7, 0x97, 0xda, 0x48, 0xe0, 0x09, 0xdc, 0xb6,
0x1f, 0x9f, 0x64, 0x2e, 0x59, 0x7a, 0xee, 0x9a, 0x4b, 0x96, 0x1f, 0xab, 0x78, 0x0e, 0x9d, 0xaa,
0xe7, 0x15, 0xda, 0x05, 0xae, 0x7a, 0xdf, 0xb9, 0xbd, 0xd5, 0x80, 0xdc, 0xf5, 0xc2, 0x84, 0xe3,
0xe1, 0xaa, 0xf9, 0x2f, 0xbb, 0xae, 0xfc, 0xbf, 0x72, 0xf2, 0xf0, 0xb7, 0xc3, 0xf4, 0x3f, 0xd6,
0x1f, 0xa7, 0x67, 0xd6, 0x9f, 0x2b, 0x75, 0xe8, 0x5b, 0xf5, 0xf3, 0x76, 0x4b, 0x2a, 0x9f, 0xfd,
0x17, 0x00, 0x00, 0xff, 0xff, 0x90, 0x2a, 0xf6, 0x16, 0xaa, 0x0d, 0x00, 0x00,
}

@ -4,11 +4,15 @@ option go_package = "Open_IM/pkg/proto/friend;friend";
package friend;
message getPaginationFriendsReq{
string ownerUserID = 1;
repeated string friendUserIDs = 2;
sdkws.RequestPagination pagination = 1;
string userID = 2;
}
message getPaginationFriendsResp{
repeated sdkws.FriendInfo friendsInfo = 1;
repeated sdkws.FriendInfo FriendsInfo = 1;
int32 total = 2;
}
@ -43,12 +47,11 @@ message getPaginationFriendsApplyToResp{
message getDesignatedFriendsReq{
sdkws.RequestPagination pagination = 1;
string userID = 2;
string ownerUserID = 1;
repeated string friendUserIDs = 2;
}
message getDesignatedFriendsResp{
repeated sdkws.FriendInfo FriendsInfo = 1;
int32 total = 2;
repeated sdkws.FriendInfo friendsInfo = 1;
}
@ -160,4 +163,9 @@ service friend{
rpc getDesignatedFriends(getDesignatedFriendsReq) returns(getDesignatedFriendsResp);
// id
rpc getPaginationFriends(getPaginationFriendsReq) returns (getPaginationFriendsResp);
}
Loading…
Cancel
Save