mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-06 04:15:46 +08:00
Merge branch 'v2.3.0release'
This commit is contained in:
commit
026f61126a
@ -139,15 +139,16 @@ func main() {
|
||||
chatGroup.POST("/send_msg", apiChat.SendMsg)
|
||||
chatGroup.POST("/pull_msg_by_seq", apiChat.PullMsgBySeqList)
|
||||
chatGroup.POST("/del_msg", apiChat.DelMsg)
|
||||
chatGroup.POST("/del_super_group_msg", apiChat.DelSuperGroupMsg)
|
||||
chatGroup.POST("/clear_msg", apiChat.ClearMsg)
|
||||
chatGroup.POST("/manage_send_msg", manage.ManagementSendMsg)
|
||||
chatGroup.POST("/batch_send_msg", manage.ManagementBatchSendMsg)
|
||||
}
|
||||
//Manager
|
||||
managementGroup := r.Group("/manager")
|
||||
{
|
||||
managementGroup.POST("/delete_user", manage.DeleteUser) //1
|
||||
}
|
||||
//managementGroup := r.Group("/manager")
|
||||
//{
|
||||
// managementGroup.POST("/delete_user", manage.DeleteUser) //1
|
||||
//}
|
||||
//Conversation
|
||||
conversationGroup := r.Group("/conversation")
|
||||
{ //1
|
||||
|
@ -38,6 +38,7 @@ redis:
|
||||
dbMaxIdle: 128
|
||||
dbMaxActive: 0
|
||||
dbIdleTimeout: 120
|
||||
dbUserName: #only redis version 6.0+ need username
|
||||
dbPassWord: openIM #redis密码 建议修改
|
||||
enableCluster: false #如果外部redis以集群方式启动,需要打开此开关
|
||||
|
||||
@ -174,7 +175,7 @@ rpcregistername: #rpc注册服务名,默认即可
|
||||
log:
|
||||
storageLocation: ../logs/
|
||||
rotationTime: 24
|
||||
remainRotationCount: 3 #日志数量
|
||||
remainRotationCount: 2 #日志数量
|
||||
#日志级别 6表示全都打印,测试阶段建议设置为6
|
||||
remainLogLevel: 6
|
||||
elasticSearchSwitch: false
|
||||
@ -706,6 +707,7 @@ demo:
|
||||
superCode: 666666 #超级验证码,建议修改掉,收不到短信验证码时可以用此替代
|
||||
# second
|
||||
codeTTL: 60
|
||||
useSuperCode: true
|
||||
mail: #仅支持qq邮箱,具体操作参考 https://service.mail.qq.com/cgi-bin/help?subtype=1&id=28&no=1001256 必须修改
|
||||
title: "openIM"
|
||||
senderMail: "765567899@qq.com"
|
||||
|
139
docker-compose-mongos.yaml
Normal file
139
docker-compose-mongos.yaml
Normal file
@ -0,0 +1,139 @@
|
||||
version: "3"
|
||||
#fixme Clone openIM Server project before using docker-compose,project address:https://github.com/OpenIMSDK/Open-IM-Server.git
|
||||
|
||||
services:
|
||||
mysql:
|
||||
image: mysql:5.7
|
||||
ports:
|
||||
- 13306:3306
|
||||
- 23306:33060
|
||||
container_name: mysql
|
||||
volumes:
|
||||
- ./components/mysql/data:/var/lib/mysql
|
||||
- /etc/localtime:/etc/localtime
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: openIM
|
||||
restart: always
|
||||
|
||||
mongos:
|
||||
image: mongo:latest
|
||||
ports:
|
||||
- 37017:27017
|
||||
container_name: mongos
|
||||
command: mongos --configdb config/103.116.45.174:27019 --bind_ip_all
|
||||
volumes:
|
||||
- ./components/mongos_mongodb/data/db:/data/db
|
||||
- ./components/mongos_mongodb/data/logs:/data/logs
|
||||
- ./components/mongos_mongodb/data/conf:/etc/mongo
|
||||
- ./components/mongos_mongodb/data/configdb:/data/configdb
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
# cache
|
||||
- wiredTigerCacheSizeGB=1
|
||||
# environment:
|
||||
# - MONGO_INITDB_ROOT_USERNAME=openIM
|
||||
# - MONGO_INITDB_ROOT_PASSWORD=openIM
|
||||
|
||||
|
||||
#TZ: Asia/Shanghai
|
||||
restart: always
|
||||
|
||||
|
||||
redis:
|
||||
image: redis
|
||||
ports:
|
||||
- 16379:6379
|
||||
container_name: redis
|
||||
volumes:
|
||||
- ./components/redis/data:/data
|
||||
#redis config file
|
||||
- ./components/redis/config/redis.conf:/usr/local/redis/config/redis.conf
|
||||
environment:
|
||||
TZ: Asia/Shanghai
|
||||
restart: always
|
||||
sysctls:
|
||||
net.core.somaxconn: 1024
|
||||
command: redis-server --requirepass openIM --appendonly yes
|
||||
|
||||
|
||||
zookeeper:
|
||||
image: wurstmeister/zookeeper
|
||||
ports:
|
||||
- 2181:2181
|
||||
container_name: zookeeper
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime
|
||||
environment:
|
||||
TZ: Asia/Shanghai
|
||||
restart: always
|
||||
|
||||
|
||||
kafka:
|
||||
image: wurstmeister/kafka
|
||||
container_name: kafka
|
||||
restart: always
|
||||
ports:
|
||||
- 9092:9092
|
||||
environment:
|
||||
TZ: Asia/Shanghai
|
||||
KAFKA_BROKER_ID: 0
|
||||
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
|
||||
KAFKA_CREATE_TOPICS: "ws2ms_chat:8:1,ms2ps_chat:8:1,msg_to_mongo:8:1"
|
||||
KAFKA_ADVERTISED_LISTENERS: INSIDE://127.0.0.1:9092,OUTSIDE://103.116.45.174:9092
|
||||
KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9093
|
||||
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT"
|
||||
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
|
||||
depends_on:
|
||||
- zookeeper
|
||||
|
||||
etcd:
|
||||
image: quay.io/coreos/etcd
|
||||
ports:
|
||||
- 2379:2379
|
||||
- 2380:2380
|
||||
container_name: etcd
|
||||
volumes:
|
||||
- /etc/timezone:/etc/timezone
|
||||
- /etc/localtime:/etc/localtime
|
||||
environment:
|
||||
ETCDCTL_API: 3
|
||||
restart: always
|
||||
command: /usr/local/bin/etcd --name etcd0 --data-dir /etcd-data --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380 --initial-advertise-peer-urls http://0.0.0.0:2380 --initial-cluster etcd0=http://0.0.0.0:2380 --initial-cluster-token tkn --initial-cluster-state new
|
||||
|
||||
minio:
|
||||
image: minio/minio
|
||||
ports:
|
||||
- 10005:9000
|
||||
- 9090:9090
|
||||
container_name: minio
|
||||
volumes:
|
||||
- /mnt/data:/data
|
||||
- /mnt/config:/root/.minio
|
||||
environment:
|
||||
MINIO_ROOT_USER: user12345
|
||||
MINIO_ROOT_PASSWORD: key12345
|
||||
restart: always
|
||||
command: minio server /data --console-address ':9090'
|
||||
|
||||
open_im_server:
|
||||
image: openim/open_im_server:v2.2.0
|
||||
container_name: open_im_server
|
||||
volumes:
|
||||
- ./logs:/Open-IM-Server/logs
|
||||
- ./config/config.yaml:/Open-IM-Server/config/config.yaml
|
||||
- ./db/sdk:/Open-IM-Server/db/sdk
|
||||
- ./script:/Open-IM-Server/script
|
||||
restart: always
|
||||
depends_on:
|
||||
- kafka
|
||||
- mysql
|
||||
- mongos
|
||||
- redis
|
||||
- etcd
|
||||
- minio
|
||||
network_mode: "host"
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "1g"
|
||||
max-file: "2"
|
113
docker-compose-shard-cluster.yaml
Normal file
113
docker-compose-shard-cluster.yaml
Normal file
@ -0,0 +1,113 @@
|
||||
version: '3'
|
||||
networks:
|
||||
mongo-network:
|
||||
external: false
|
||||
services:
|
||||
# 配置服务器configsvr
|
||||
config:
|
||||
image: mongo:latest
|
||||
networks:
|
||||
- mongo-network
|
||||
container_name: config
|
||||
restart: always
|
||||
ports:
|
||||
- 27019:27019
|
||||
command: --configsvr --replSet "config" --bind_ip_all
|
||||
volumes:
|
||||
- ./components/config_mongodb/data/db:/data/db
|
||||
- ./components/config_mongodb/data/logs:/data/logs
|
||||
- ./components/config_mongodb/data/conf:/etc/mongo
|
||||
- ./components/config_mongodb/data/configdb:/data/configdb
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
# cache
|
||||
- wiredTigerCacheSizeGB=1
|
||||
|
||||
# shard分片1
|
||||
shard1:
|
||||
image: mongo:latest
|
||||
networks:
|
||||
- mongo-network
|
||||
container_name: shard1
|
||||
restart: always
|
||||
ports:
|
||||
- 27118:27018
|
||||
command: --shardsvr --replSet "shard1" --bind_ip_all
|
||||
volumes:
|
||||
- /data01/mongo/shard1/db:/data/db
|
||||
- /data01/mongo/shard1/configdb:/data/configdb
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
# cache
|
||||
- wiredTigerCacheSizeGB=1
|
||||
|
||||
# shard分片2
|
||||
shard2:
|
||||
image: mongo:latest
|
||||
networks:
|
||||
- mongo-network
|
||||
container_name: shard2
|
||||
restart: always
|
||||
ports:
|
||||
- 27218:27018
|
||||
command: --shardsvr --replSet "shard2" --bind_ip_all
|
||||
volumes:
|
||||
- /data02/mongo/shard2/db:/data/db
|
||||
- /data02/mongo/shard2/configdb:/data/configdb
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
# cache
|
||||
- wiredTigerCacheSizeGB=1
|
||||
# - ${PWD}/key.file:/data/mongodb/key.file
|
||||
|
||||
# shard分片3
|
||||
shard3:
|
||||
image: mongo:latest
|
||||
networks:
|
||||
- mongo-network
|
||||
container_name: shard3
|
||||
restart: always
|
||||
ports:
|
||||
- 27318:27018
|
||||
command: --shardsvr --replSet "shard3" --bind_ip_all
|
||||
volumes:
|
||||
- /data03/mongo/shard3/db:/data/db
|
||||
- /data03/mongo/shard3/configdb:/data/configdb
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
# cache
|
||||
- wiredTigerCacheSizeGB=1
|
||||
# shard分片4
|
||||
shard4:
|
||||
image: mongo:latest
|
||||
networks:
|
||||
- mongo-network
|
||||
container_name: shard4
|
||||
restart: always
|
||||
ports:
|
||||
- 27418:27018
|
||||
command: --shardsvr --replSet "shard4" --bind_ip_all
|
||||
volumes:
|
||||
- /data04/mongo/shard4/db:/data/db
|
||||
- /data04/mongo/shard4/configdb:/data/configdb
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
# cache
|
||||
- wiredTigerCacheSizeGB=1
|
||||
# shard分片5
|
||||
shard5:
|
||||
image: mongo:latest
|
||||
networks:
|
||||
- mongo-network
|
||||
container_name: shard5
|
||||
restart: always
|
||||
ports:
|
||||
- 27518:27018
|
||||
command: --shardsvr --replSet "shard5" --bind_ip_all
|
||||
volumes:
|
||||
- /data05/mongo/shard5/db:/data/db
|
||||
- /data05/mongo/shard5/configdb:/data/configdb
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
# cache
|
||||
- wiredTigerCacheSizeGB=1
|
@ -12,6 +12,7 @@ import (
|
||||
"Open_IM/pkg/utils"
|
||||
"context"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/golang/protobuf/proto"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
@ -72,6 +73,83 @@ func DelMsg(c *gin.Context) {
|
||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp)
|
||||
c.JSON(http.StatusOK, resp)
|
||||
}
|
||||
func DelSuperGroupMsg(c *gin.Context) {
|
||||
var (
|
||||
req api.DelSuperGroupMsgReq
|
||||
resp api.DelSuperGroupMsgResp
|
||||
)
|
||||
if err := c.BindJSON(&req); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
|
||||
return
|
||||
}
|
||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req:", req)
|
||||
|
||||
ok, opUserID, errInfo := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
|
||||
if !ok {
|
||||
errMsg := req.OperationID + " " + opUserID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
|
||||
log.NewError(req.OperationID, errMsg)
|
||||
c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg})
|
||||
return
|
||||
}
|
||||
options := make(map[string]bool, 5)
|
||||
utils.SetSwitchFromOptions(options, constant.IsConversationUpdate, false)
|
||||
utils.SetSwitchFromOptions(options, constant.IsSenderConversationUpdate, false)
|
||||
utils.SetSwitchFromOptions(options, constant.IsUnreadCount, false)
|
||||
utils.SetSwitchFromOptions(options, constant.IsOfflinePush, false)
|
||||
pbData := rpc.SendMsgReq{
|
||||
OperationID: req.OperationID,
|
||||
MsgData: &pbCommon.MsgData{
|
||||
SendID: req.UserID,
|
||||
RecvID: req.UserID,
|
||||
ClientMsgID: utils.GetMsgID(req.UserID),
|
||||
SessionType: constant.SingleChatType,
|
||||
MsgFrom: constant.SysMsgType,
|
||||
ContentType: constant.MsgDeleteNotification,
|
||||
// ForceList: params.ForceList,
|
||||
CreateTime: utils.GetCurrentTimestampByMill(),
|
||||
Options: options,
|
||||
},
|
||||
}
|
||||
var tips pbCommon.TipsComm
|
||||
deleteMsg := api.MsgDeleteNotificationElem{
|
||||
GroupID: req.GroupID,
|
||||
IsAllDelete: req.IsAllDelete,
|
||||
SeqList: req.SeqList,
|
||||
}
|
||||
tips.JsonDetail = utils.StructToJsonString(deleteMsg)
|
||||
var err error
|
||||
pbData.MsgData.Content, err = proto.Marshal(&tips)
|
||||
if err != nil {
|
||||
log.Error(req.OperationID, "Marshal failed ", err.Error(), tips.String())
|
||||
resp.ErrCode = 400
|
||||
resp.ErrMsg = err.Error()
|
||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp)
|
||||
c.JSON(http.StatusOK, resp)
|
||||
}
|
||||
log.Info(req.OperationID, "", "api DelSuperGroupMsg call start..., [data: %s]", pbData.String())
|
||||
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName, req.OperationID)
|
||||
if etcdConn == nil {
|
||||
errMsg := req.OperationID + "getcdv3.GetConn == nil"
|
||||
log.NewError(req.OperationID, errMsg)
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
|
||||
return
|
||||
}
|
||||
client := rpc.NewChatClient(etcdConn)
|
||||
|
||||
log.Info(req.OperationID, "", "api DelSuperGroupMsg call, api call rpc...")
|
||||
|
||||
RpcResp, err := client.SendMsg(context.Background(), &pbData)
|
||||
if err != nil {
|
||||
log.NewError(req.OperationID, "call delete UserSendMsg rpc server failed", err.Error())
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call UserSendMsg rpc server failed"})
|
||||
return
|
||||
}
|
||||
log.Info(req.OperationID, "", "api DelSuperGroupMsg call end..., [data: %s] [reply: %s]", pbData.String(), RpcResp.String())
|
||||
resp.ErrCode = RpcResp.ErrCode
|
||||
resp.ErrMsg = RpcResp.ErrMsg
|
||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp)
|
||||
c.JSON(http.StatusOK, resp)
|
||||
}
|
||||
|
||||
// @Summary 清空用户消息
|
||||
// @Description 清空用户消息
|
||||
|
@ -3,6 +3,7 @@ package group
|
||||
import (
|
||||
api "Open_IM/pkg/base_info"
|
||||
"Open_IM/pkg/common/config"
|
||||
"Open_IM/pkg/common/constant"
|
||||
"Open_IM/pkg/common/log"
|
||||
"Open_IM/pkg/common/token_verify"
|
||||
"Open_IM/pkg/grpc-etcdv3/getcdv3"
|
||||
@ -316,7 +317,12 @@ func InviteUserToGroup(c *gin.Context) {
|
||||
}
|
||||
req := &rpc.InviteUserToGroupReq{}
|
||||
utils.CopyStructFields(req, ¶ms)
|
||||
|
||||
if len(req.InvitedUserIDList) > constant.MaxNotificationNum {
|
||||
errMsg := req.OperationID + " too many, Limit: " + utils.IntToString(constant.MaxNotificationNum)
|
||||
log.NewError(req.OperationID, errMsg, len(req.InvitedUserIDList))
|
||||
c.JSON(http.StatusRequestEntityTooLarge, gin.H{"errCode": 400, "errMsg": errMsg})
|
||||
return
|
||||
}
|
||||
var ok bool
|
||||
var errInfo string
|
||||
ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
|
||||
@ -779,12 +785,7 @@ func SetGroupInfo(c *gin.Context) {
|
||||
req := &rpc.SetGroupInfoReq{GroupInfoForSet: &open_im_sdk.GroupInfoForSet{}}
|
||||
utils.CopyStructFields(req.GroupInfoForSet, ¶ms)
|
||||
req.OperationID = params.OperationID
|
||||
|
||||
if params.NeedVerification != nil {
|
||||
req.GroupInfoForSet.NeedVerification = &wrappers.Int32Value{Value: *params.NeedVerification}
|
||||
log.NewInfo(req.OperationID, "NeedVerification ", req.GroupInfoForSet.NeedVerification)
|
||||
}
|
||||
|
||||
argsHandle(¶ms, req)
|
||||
var ok bool
|
||||
var errInfo string
|
||||
ok, req.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
|
||||
@ -815,6 +816,20 @@ func SetGroupInfo(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, resp)
|
||||
log.NewInfo(req.OperationID, "SetGroupInfo api return ", resp)
|
||||
}
|
||||
func argsHandle(params *api.SetGroupInfoReq, req *rpc.SetGroupInfoReq) {
|
||||
if params.NeedVerification != nil {
|
||||
req.GroupInfoForSet.NeedVerification = &wrappers.Int32Value{Value: *params.NeedVerification}
|
||||
log.NewInfo(req.OperationID, "NeedVerification ", req.GroupInfoForSet.NeedVerification)
|
||||
}
|
||||
if params.LookMemberInfo != nil {
|
||||
req.GroupInfoForSet.LookMemberInfo = &wrappers.Int32Value{Value: *params.LookMemberInfo}
|
||||
log.NewInfo(req.OperationID, "LookMemberInfo ", req.GroupInfoForSet.LookMemberInfo)
|
||||
}
|
||||
if params.ApplyMemberFriend != nil {
|
||||
req.GroupInfoForSet.ApplyMemberFriend = &wrappers.Int32Value{Value: *params.ApplyMemberFriend}
|
||||
log.NewInfo(req.OperationID, "ApplyMemberFriend ", req.GroupInfoForSet.ApplyMemberFriend)
|
||||
}
|
||||
}
|
||||
|
||||
// @Summary 转让群主
|
||||
// @Description 转让群主
|
||||
|
@ -47,7 +47,7 @@ func GetJoinedSuperGroupList(c *gin.Context) {
|
||||
}
|
||||
GroupListResp := api.GetJoinedSuperGroupListResp{GetJoinedGroupListResp: api.GetJoinedGroupListResp{CommResp: api.CommResp{ErrCode: rpcResp.CommonResp.ErrCode, ErrMsg: rpcResp.CommonResp.ErrMsg}, GroupInfoList: rpcResp.GroupList}}
|
||||
GroupListResp.Data = jsonData.JsonDataList(GroupListResp.GroupInfoList)
|
||||
log.NewInfo(req.OperationID, "GetJoinedGroupList api return ", GroupListResp)
|
||||
log.NewInfo(req.OperationID, "GetJoinedSuperGroupList api return ", GroupListResp)
|
||||
c.JSON(http.StatusOK, GroupListResp)
|
||||
}
|
||||
|
||||
|
@ -15,6 +15,7 @@ import (
|
||||
)
|
||||
|
||||
type ParamsLogin struct {
|
||||
UserID string `json:"userID"`
|
||||
Email string `json:"email"`
|
||||
PhoneNumber string `json:"phoneNumber"`
|
||||
Password string `json:"password"`
|
||||
@ -32,11 +33,13 @@ func Login(c *gin.Context) {
|
||||
var account string
|
||||
if params.Email != "" {
|
||||
account = params.Email
|
||||
} else {
|
||||
} else if params.PhoneNumber != "" {
|
||||
account = params.PhoneNumber
|
||||
} else {
|
||||
account = params.UserID
|
||||
}
|
||||
|
||||
r, err := im_mysql_model.GetRegister(account, params.AreaCode)
|
||||
r, err := im_mysql_model.GetRegister(account, params.AreaCode, params.UserID)
|
||||
if err != nil {
|
||||
log.NewError(params.OperationID, "user have not register", params.Password, account, err.Error())
|
||||
c.JSON(http.StatusOK, gin.H{"errCode": constant.NotRegistered, "errMsg": "Mobile phone number is not registered"})
|
||||
|
@ -34,7 +34,8 @@ func ResetPassword(c *gin.Context) {
|
||||
} else {
|
||||
account = req.PhoneNumber
|
||||
}
|
||||
if req.VerificationCode != config.Config.Demo.SuperCode {
|
||||
|
||||
if (config.Config.Demo.UseSuperCode && req.VerificationCode != config.Config.Demo.SuperCode) || !config.Config.Demo.UseSuperCode {
|
||||
accountKey := req.AreaCode + account + "_" + constant.VerificationCodeForResetSuffix
|
||||
v, err := db.DB.GetAccountCode(accountKey)
|
||||
if err != nil || v != req.VerificationCode {
|
||||
@ -43,7 +44,7 @@ func ResetPassword(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
}
|
||||
user, err := im_mysql_model.GetRegister(account, req.AreaCode)
|
||||
user, err := im_mysql_model.GetRegister(account, req.AreaCode, "")
|
||||
if err != nil || user.Account == "" {
|
||||
if err != nil {
|
||||
log.NewError(req.OperationID, utils.GetSelfFuncName(), "get register error", err.Error())
|
||||
|
@ -66,7 +66,7 @@ func SendVerificationCode(c *gin.Context) {
|
||||
}
|
||||
switch params.UsedFor {
|
||||
case constant.VerificationCodeForRegister:
|
||||
_, err := im_mysql_model.GetRegister(account, params.AreaCode)
|
||||
_, err := im_mysql_model.GetRegister(account, params.AreaCode, "")
|
||||
if err == nil {
|
||||
log.NewError(params.OperationID, "The phone number has been registered", params)
|
||||
c.JSON(http.StatusOK, gin.H{"errCode": constant.HasRegistered, "errMsg": "The phone number has been registered"})
|
||||
|
@ -18,6 +18,7 @@ import (
|
||||
)
|
||||
|
||||
type ParamsSetPassword struct {
|
||||
UserID string `json:"userID"`
|
||||
Email string `json:"email"`
|
||||
Nickname string `json:"nickname"`
|
||||
PhoneNumber string `json:"phoneNumber"`
|
||||
@ -40,29 +41,37 @@ func SetPassword(c *gin.Context) {
|
||||
var account string
|
||||
if params.Email != "" {
|
||||
account = params.Email
|
||||
} else {
|
||||
} else if params.PhoneNumber != "" {
|
||||
account = params.PhoneNumber
|
||||
} else {
|
||||
account = params.UserID
|
||||
}
|
||||
if params.Nickname == "" {
|
||||
params.Nickname = account
|
||||
}
|
||||
if params.VerificationCode != config.Config.Demo.SuperCode {
|
||||
accountKey := params.AreaCode + account + "_" + constant.VerificationCodeForRegisterSuffix
|
||||
v, err := db.DB.GetAccountCode(accountKey)
|
||||
if err != nil || v != params.VerificationCode {
|
||||
log.NewError(params.OperationID, "password Verification code error", account, params.VerificationCode)
|
||||
data := make(map[string]interface{})
|
||||
data["PhoneNumber"] = account
|
||||
c.JSON(http.StatusOK, gin.H{"errCode": constant.CodeInvalidOrExpired, "errMsg": "Verification code error!", "data": data})
|
||||
return
|
||||
if params.UserID == "" {
|
||||
if (config.Config.Demo.UseSuperCode && params.VerificationCode != config.Config.Demo.SuperCode) || !config.Config.Demo.UseSuperCode {
|
||||
accountKey := params.AreaCode + account + "_" + constant.VerificationCodeForRegisterSuffix
|
||||
v, err := db.DB.GetAccountCode(accountKey)
|
||||
if err != nil || v != params.VerificationCode {
|
||||
log.NewError(params.OperationID, "password Verification code error", account, params.VerificationCode)
|
||||
data := make(map[string]interface{})
|
||||
data["PhoneNumber"] = account
|
||||
c.JSON(http.StatusOK, gin.H{"errCode": constant.CodeInvalidOrExpired, "errMsg": "Verification code error!", "data": data})
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
//userID := utils.Base64Encode(account)
|
||||
|
||||
userID := utils.Md5(params.OperationID + strconv.FormatInt(time.Now().UnixNano(), 10))
|
||||
bi := big.NewInt(0)
|
||||
bi.SetString(userID[0:8], 16)
|
||||
userID = bi.String()
|
||||
var userID string
|
||||
if params.UserID == "" {
|
||||
userID = utils.Md5(params.OperationID + strconv.FormatInt(time.Now().UnixNano(), 10))
|
||||
bi := big.NewInt(0)
|
||||
bi.SetString(userID[0:8], 16)
|
||||
userID = bi.String()
|
||||
} else {
|
||||
userID = params.UserID
|
||||
}
|
||||
|
||||
url := config.Config.Demo.ImAPIURL + "/auth/user_register"
|
||||
openIMRegisterReq := api.UserRegisterReq{}
|
||||
@ -73,6 +82,7 @@ func SetPassword(c *gin.Context) {
|
||||
openIMRegisterReq.Secret = config.Config.Secret
|
||||
openIMRegisterReq.FaceURL = params.FaceURL
|
||||
openIMRegisterResp := api.UserRegisterResp{}
|
||||
log.NewDebug(params.OperationID, utils.GetSelfFuncName(), "register req:", openIMRegisterReq)
|
||||
bMsg, err := http2.Post(url, openIMRegisterReq, 2)
|
||||
if err != nil {
|
||||
log.NewError(params.OperationID, "request openIM register error", account, "err", err.Error())
|
||||
@ -97,7 +107,9 @@ func SetPassword(c *gin.Context) {
|
||||
}
|
||||
log.Info(params.OperationID, "end setPassword", account, params.Password)
|
||||
// demo onboarding
|
||||
onboardingProcess(params.OperationID, userID, params.Nickname, params.FaceURL, params.AreaCode+params.PhoneNumber, params.Email)
|
||||
if params.UserID == "" {
|
||||
onboardingProcess(params.OperationID, userID, params.Nickname, params.FaceURL, params.AreaCode+params.PhoneNumber, params.Email)
|
||||
}
|
||||
c.JSON(http.StatusOK, gin.H{"errCode": constant.NoError, "errMsg": "", "data": openIMRegisterResp.UserToken})
|
||||
return
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ func Verify(c *gin.Context) {
|
||||
account = params.AreaCode + params.PhoneNumber
|
||||
}
|
||||
|
||||
if params.VerificationCode == config.Config.Demo.SuperCode {
|
||||
if config.Config.Demo.UseSuperCode && params.VerificationCode == config.Config.Demo.SuperCode {
|
||||
log.NewInfo(params.OperationID, "Super Code Verified successfully", account)
|
||||
data := make(map[string]interface{})
|
||||
data["account"] = account
|
||||
|
@ -233,30 +233,32 @@ func MsgToSuperGroupUser(pushMsg *pbPush.PushMsgReq) {
|
||||
|
||||
}
|
||||
}
|
||||
if len(onlineFailedUserIDList) > 0 {
|
||||
callbackResp := callbackOfflinePush(pushMsg.OperationID, onlineFailedUserIDList[0], pushMsg.MsgData)
|
||||
log.NewDebug(pushMsg.OperationID, utils.GetSelfFuncName(), "offline callback Resp")
|
||||
if callbackResp.ErrCode != 0 {
|
||||
log.NewError(pushMsg.OperationID, utils.GetSelfFuncName(), "callbackOfflinePush result: ", callbackResp)
|
||||
}
|
||||
if callbackResp.ActionCode != constant.ActionAllow {
|
||||
log.NewDebug(pushMsg.OperationID, utils.GetSelfFuncName(), "offlinePush stop")
|
||||
return
|
||||
}
|
||||
if offlinePusher == nil {
|
||||
return
|
||||
}
|
||||
opts, err := GetOfflinePushOpts(pushMsg)
|
||||
if err != nil {
|
||||
log.NewError(pushMsg.OperationID, utils.GetSelfFuncName(), "GetOfflinePushOpts failed", pushMsg, err.Error())
|
||||
}
|
||||
log.NewInfo(pushMsg.OperationID, utils.GetSelfFuncName(), onlineFailedUserIDList, content, jsonCustomContent, "opts:", opts)
|
||||
pushResult, err := offlinePusher.Push(onlineFailedUserIDList, content, jsonCustomContent, pushMsg.OperationID, opts)
|
||||
if err != nil {
|
||||
log.NewError(pushMsg.OperationID, "offline push error", pushMsg.String(), err.Error())
|
||||
} else {
|
||||
log.NewDebug(pushMsg.OperationID, "offline push return result is ", pushResult, pushMsg.MsgData)
|
||||
}
|
||||
}
|
||||
|
||||
callbackResp := callbackOfflinePush(pushMsg.OperationID, onlineFailedUserIDList[0], pushMsg.MsgData)
|
||||
log.NewDebug(pushMsg.OperationID, utils.GetSelfFuncName(), "offline callback Resp")
|
||||
if callbackResp.ErrCode != 0 {
|
||||
log.NewError(pushMsg.OperationID, utils.GetSelfFuncName(), "callbackOfflinePush result: ", callbackResp)
|
||||
}
|
||||
if callbackResp.ActionCode != constant.ActionAllow {
|
||||
log.NewDebug(pushMsg.OperationID, utils.GetSelfFuncName(), "offlinePush stop")
|
||||
return
|
||||
}
|
||||
if offlinePusher == nil {
|
||||
return
|
||||
}
|
||||
opts, err := GetOfflinePushOpts(pushMsg)
|
||||
if err != nil {
|
||||
log.NewError(pushMsg.OperationID, utils.GetSelfFuncName(), "GetOfflinePushOpts failed", pushMsg, err.Error())
|
||||
}
|
||||
log.NewInfo(pushMsg.OperationID, utils.GetSelfFuncName(), onlineFailedUserIDList, content, jsonCustomContent, "opts:", opts)
|
||||
pushResult, err := offlinePusher.Push(onlineFailedUserIDList, content, jsonCustomContent, pushMsg.OperationID, opts)
|
||||
if err != nil {
|
||||
log.NewError(pushMsg.OperationID, "offline push error", pushMsg.String(), err.Error())
|
||||
} else {
|
||||
log.NewDebug(pushMsg.OperationID, "offline push return result is ", pushResult, pushMsg.MsgData)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -106,6 +106,10 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR
|
||||
utils.CopyStructFields(&groupInfo, req.GroupInfo)
|
||||
groupInfo.CreatorUserID = req.OpUserID
|
||||
groupInfo.GroupID = groupId
|
||||
|
||||
if groupInfo.NotificationUpdateTime.Unix() < 0 {
|
||||
groupInfo.NotificationUpdateTime = utils.UnixSecondToTime(0)
|
||||
}
|
||||
err := imdb.InsertIntoGroup(groupInfo)
|
||||
if err != nil {
|
||||
log.NewError(req.OperationID, "InsertIntoGroup failed, ", err.Error(), groupInfo)
|
||||
@ -122,7 +126,7 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR
|
||||
return &pbGroup.CreateGroupResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, http.WrapError(constant.ErrDB)
|
||||
}
|
||||
//to group member
|
||||
groupMember = db.GroupMember{GroupID: groupId, RoleLevel: constant.GroupOwner, OperatorUserID: req.OpUserID}
|
||||
groupMember = db.GroupMember{GroupID: groupId, RoleLevel: constant.GroupOwner, OperatorUserID: req.OpUserID, JoinSource: constant.JoinByInvitation, InviterUserID: req.OpUserID}
|
||||
utils.CopyStructFields(&groupMember, us)
|
||||
err = imdb.InsertIntoGroupMember(groupMember)
|
||||
if err != nil {
|
||||
@ -143,6 +147,8 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR
|
||||
continue
|
||||
}
|
||||
groupMember.RoleLevel = user.RoleLevel
|
||||
groupMember.JoinSource = constant.JoinByInvitation
|
||||
groupMember.InviterUserID = req.OpUserID
|
||||
utils.CopyStructFields(&groupMember, us)
|
||||
err = imdb.InsertIntoGroupMember(groupMember)
|
||||
if err != nil {
|
||||
@ -241,13 +247,22 @@ func (s *groupServer) GetJoinedGroupList(ctx context.Context, req *pbGroup.GetJo
|
||||
owner, err2 := imdb.GetGroupOwnerInfoByGroupID(v)
|
||||
group, err := imdb.GetGroupInfoByGroupID(v)
|
||||
if num > 0 && owner != nil && err2 == nil && group != nil && err == nil {
|
||||
if group.Status == constant.GroupStatusDismissed {
|
||||
log.NewError(req.OperationID, "constant.GroupStatusDismissed ", group)
|
||||
continue
|
||||
}
|
||||
utils.CopyStructFields(&groupNode, group)
|
||||
groupNode.CreateTime = uint32(group.CreateTime.Unix())
|
||||
groupNode.MemberCount = uint32(num)
|
||||
groupNode.NotificationUpdateTime = uint32(group.NotificationUpdateTime.Unix())
|
||||
if group.NotificationUpdateTime.Unix() < 0 {
|
||||
groupNode.NotificationUpdateTime = 0
|
||||
}
|
||||
|
||||
groupNode.MemberCount = num
|
||||
groupNode.OwnerUserID = owner.UserID
|
||||
resp.GroupList = append(resp.GroupList, &groupNode)
|
||||
} else {
|
||||
log.NewError(req.OperationID, "check nil ", num, owner, err, group)
|
||||
log.Debug(req.OperationID, "check nil ", num, owner, err, group, err2)
|
||||
continue
|
||||
}
|
||||
log.NewDebug(req.OperationID, "joinedGroup ", groupNode)
|
||||
@ -281,6 +296,8 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite
|
||||
var groupRequest db.GroupRequest
|
||||
groupRequest.UserID = v
|
||||
groupRequest.GroupID = req.GroupID
|
||||
groupRequest.JoinSource = constant.JoinByInvitation
|
||||
groupRequest.InviterUserID = req.OpUserID
|
||||
err = imdb.InsertIntoGroupRequest(groupRequest)
|
||||
if err != nil {
|
||||
var resultNode pbGroup.Id2Result
|
||||
@ -334,6 +351,8 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite
|
||||
toInsertInfo.GroupID = req.GroupID
|
||||
toInsertInfo.RoleLevel = constant.GroupOrdinaryUsers
|
||||
toInsertInfo.OperatorUserID = req.OpUserID
|
||||
toInsertInfo.InviterUserID = req.OpUserID
|
||||
toInsertInfo.JoinSource = constant.JoinByInvitation
|
||||
err = imdb.InsertIntoGroupMember(toInsertInfo)
|
||||
if err != nil {
|
||||
log.NewError(req.OperationID, "InsertIntoGroupMember failed ", req.GroupID, toUserInfo.UserID, toUserInfo.Nickname, toUserInfo.FaceURL)
|
||||
@ -762,10 +781,14 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G
|
||||
}
|
||||
err := imdb.UpdateGroupRequest(groupRequest)
|
||||
if err != nil {
|
||||
//{openIM002 7836e478bc43ce1d3b8889cac983f59b 1 ok 0001-01-01 00:00:00 +0000 UTC openIM001 0001-01-01 00:00:00 +0000 UTC }
|
||||
log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), groupRequest)
|
||||
return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
||||
}
|
||||
request, err := imdb.GetGroupRequestByGroupIDAndUserID(req.GroupID, req.FromUserID)
|
||||
if err != nil {
|
||||
log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), req.GroupID, req.FromUserID)
|
||||
return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
||||
}
|
||||
|
||||
if req.HandleResult == constant.GroupResponseAgree {
|
||||
user, err := imdb.GetUserByUserID(req.FromUserID)
|
||||
@ -780,7 +803,8 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G
|
||||
member.OperatorUserID = req.OpUserID
|
||||
member.FaceURL = user.FaceURL
|
||||
member.Nickname = user.Nickname
|
||||
|
||||
member.JoinSource = request.JoinSource
|
||||
member.InviterUserID = request.InviterUserID
|
||||
err = imdb.InsertIntoGroupMember(member)
|
||||
if err != nil {
|
||||
log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), member)
|
||||
@ -878,7 +902,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq)
|
||||
return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
||||
}
|
||||
//to group member
|
||||
groupMember := db.GroupMember{GroupID: req.GroupID, RoleLevel: constant.GroupOwner, OperatorUserID: req.OpUserID}
|
||||
groupMember := db.GroupMember{GroupID: req.GroupID, RoleLevel: constant.GroupOwner, OperatorUserID: req.OpUserID, JoinSource: req.JoinSource}
|
||||
utils.CopyStructFields(&groupMember, us)
|
||||
err = imdb.InsertIntoGroupMember(groupMember)
|
||||
if err != nil {
|
||||
@ -920,6 +944,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq)
|
||||
groupRequest.UserID = req.OpUserID
|
||||
groupRequest.ReqMsg = req.ReqMessage
|
||||
groupRequest.GroupID = req.GroupID
|
||||
groupRequest.JoinSource = req.JoinSource
|
||||
err = imdb.InsertIntoGroupRequest(groupRequest)
|
||||
if err != nil {
|
||||
log.NewError(req.OperationID, "InsertIntoGroupRequest failed ", err.Error(), groupRequest)
|
||||
@ -1092,7 +1117,24 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInf
|
||||
return &pbGroup.SetGroupInfoResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, http.WrapError(constant.ErrDB)
|
||||
}
|
||||
}
|
||||
|
||||
if req.GroupInfoForSet.LookMemberInfo != nil {
|
||||
changedType = changedType | (1 << 5)
|
||||
m := make(map[string]interface{})
|
||||
m["look_member_info"] = req.GroupInfoForSet.LookMemberInfo.Value
|
||||
if err := imdb.UpdateGroupInfoDefaultZero(req.GroupInfoForSet.GroupID, m); err != nil {
|
||||
log.NewError(req.OperationID, "UpdateGroupInfoDefaultZero failed ", err.Error(), m)
|
||||
return &pbGroup.SetGroupInfoResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, http.WrapError(constant.ErrDB)
|
||||
}
|
||||
}
|
||||
if req.GroupInfoForSet.ApplyMemberFriend != nil {
|
||||
changedType = changedType | (1 << 6)
|
||||
m := make(map[string]interface{})
|
||||
m["apply_member_friend"] = req.GroupInfoForSet.ApplyMemberFriend.Value
|
||||
if err := imdb.UpdateGroupInfoDefaultZero(req.GroupInfoForSet.GroupID, m); err != nil {
|
||||
log.NewError(req.OperationID, "UpdateGroupInfoDefaultZero failed ", err.Error(), m)
|
||||
return &pbGroup.SetGroupInfoResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, http.WrapError(constant.ErrDB)
|
||||
}
|
||||
}
|
||||
//
|
||||
//if req.RoleLevel != nil {
|
||||
//
|
||||
@ -1100,6 +1142,10 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInf
|
||||
//only administrators can set group information
|
||||
var groupInfo db.Group
|
||||
utils.CopyStructFields(&groupInfo, req.GroupInfoForSet)
|
||||
if req.GroupInfoForSet.Notification != "" {
|
||||
groupInfo.NotificationUserID = req.OpUserID
|
||||
groupInfo.NotificationUpdateTime = time.Now()
|
||||
}
|
||||
err = imdb.SetGroupInfo(groupInfo)
|
||||
if err != nil {
|
||||
log.NewError(req.OperationID, "SetGroupInfo failed ", err.Error(), groupInfo)
|
||||
|
@ -10,14 +10,19 @@ import (
|
||||
commonPb "Open_IM/pkg/proto/sdk_ws"
|
||||
"Open_IM/pkg/utils"
|
||||
"context"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
)
|
||||
|
||||
func (s *groupServer) GetJoinedSuperGroupList(ctx context.Context, req *pbGroup.GetJoinedSuperGroupListReq) (*pbGroup.GetJoinedSuperGroupListResp, error) {
|
||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String())
|
||||
resp := &pbGroup.GetJoinedSuperGroupListResp{CommonResp: &pbGroup.CommonResp{}}
|
||||
userToSuperGroup, err := db.DB.GetSuperGroupByUserID(req.UserID)
|
||||
if err == mongo.ErrNoDocuments {
|
||||
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "GetSuperGroupByUserID failed ", err.Error(), req.UserID)
|
||||
return resp, nil
|
||||
}
|
||||
if err != nil {
|
||||
log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetSuperGroupByUserID failed", err.Error())
|
||||
log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetSuperGroupByUserID failed ", err.Error(), req.UserID)
|
||||
resp.CommonResp.ErrCode = constant.ErrDB.ErrCode
|
||||
resp.CommonResp.ErrMsg = constant.ErrDB.ErrMsg
|
||||
return resp, nil
|
||||
|
@ -57,7 +57,8 @@ func setGroupInfo(groupID string, groupInfo *open_im_sdk.GroupInfo) error {
|
||||
}
|
||||
err = utils2.GroupDBCopyOpenIM(groupInfo, group)
|
||||
if err != nil {
|
||||
return utils.Wrap(err, "GetGroupMemberNumByGroupID failed")
|
||||
log.NewWarn("", "GroupDBCopyOpenIM failed ", groupID, err.Error())
|
||||
return nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@ -183,7 +184,16 @@ func groupNotification(contentType int32, m proto.Message, sendID, groupID, recv
|
||||
n.SendID = sendID
|
||||
if groupID != "" {
|
||||
n.RecvID = groupID
|
||||
n.SessionType = constant.GroupChatType
|
||||
group, err := imdb.GetGroupInfoByGroupID(groupID)
|
||||
if err != nil {
|
||||
log.NewError(operationID, "GetGroupInfoByGroupID failed ", err.Error(), groupID)
|
||||
}
|
||||
switch group.GroupType {
|
||||
case constant.NormalGroup:
|
||||
n.SessionType = constant.GroupChatType
|
||||
default:
|
||||
n.SessionType = constant.SuperGroupChatType
|
||||
}
|
||||
} else {
|
||||
n.RecvID = recvUserID
|
||||
n.SessionType = constant.SingleChatType
|
||||
@ -223,6 +233,9 @@ func GroupCreatedNotification(operationID, opUserID, groupID string, initMemberL
|
||||
continue
|
||||
}
|
||||
GroupCreatedTips.MemberList = append(GroupCreatedTips.MemberList, &groupMemberInfo)
|
||||
if len(GroupCreatedTips.MemberList) == constant.MaxNotificationNum {
|
||||
break
|
||||
}
|
||||
}
|
||||
groupNotification(constant.GroupCreatedNotification, &GroupCreatedTips, opUserID, groupID, "", operationID)
|
||||
}
|
||||
@ -527,7 +540,6 @@ func MemberInvitedNotification(operationID, groupID, opUserID, reason string, in
|
||||
}
|
||||
MemberInvitedTips.InvitedUserList = append(MemberInvitedTips.InvitedUserList, &groupMemberInfo)
|
||||
}
|
||||
|
||||
groupNotification(constant.MemberInvitedNotification, &MemberInvitedTips, opUserID, groupID, "", operationID)
|
||||
}
|
||||
|
||||
|
@ -331,8 +331,8 @@ func (rpc *rpcChat) SendMsg(_ context.Context, pb *pbChat.SendMsgReq) (*pbChat.S
|
||||
}
|
||||
}
|
||||
log.Debug(pb.OperationID, "send msg cost time22 ", db.GetCurrentTimestampByMill()-newTime, pb.MsgData.ClientMsgID, "uidList : ", len(addUidList))
|
||||
wg.Add(1)
|
||||
go rpc.sendMsgToGroup(addUidList, *pb, constant.OnlineStatus, &sendTag, &wg)
|
||||
//wg.Add(1)
|
||||
//go rpc.sendMsgToGroup(addUidList, *pb, constant.OnlineStatus, &sendTag, &wg)
|
||||
wg.Wait()
|
||||
newTime = db.GetCurrentTimestampByMill()
|
||||
// callback
|
||||
|
@ -378,6 +378,13 @@ func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbUser.UpdateUserI
|
||||
return &pbUser.UpdateUserInfoResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil
|
||||
}
|
||||
|
||||
oldNickname := ""
|
||||
if req.UserInfo.Nickname != "" {
|
||||
u, err := imdb.GetUserByUserID(req.UserInfo.UserID)
|
||||
if err == nil {
|
||||
oldNickname = u.Nickname
|
||||
}
|
||||
}
|
||||
var user db.User
|
||||
utils.CopyStructFields(&user, req.UserInfo)
|
||||
if req.UserInfo.Birth != 0 {
|
||||
@ -416,6 +423,9 @@ func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbUser.UpdateUserI
|
||||
if req.UserInfo.FaceURL != "" {
|
||||
go s.SyncJoinedGroupMemberFaceURL(req.UserInfo.UserID, req.UserInfo.FaceURL, req.OperationID, req.OpUserID)
|
||||
}
|
||||
if req.UserInfo.Nickname != "" {
|
||||
go s.SyncJoinedGroupMemberNickname(req.UserInfo.UserID, req.UserInfo.Nickname, oldNickname, req.OperationID, req.OpUserID)
|
||||
}
|
||||
//updateUserInfoToCacheReq := &cache.UpdateUserInfoToCacheReq{
|
||||
// OperationID: req.OperationID,
|
||||
// UserInfoList: []*sdkws.UserInfo{req.UserInfo},
|
||||
@ -455,6 +465,7 @@ func (s *userServer) SetGlobalRecvMessageOpt(ctx context.Context, req *pbUser.Se
|
||||
chat.UserInfoUpdatedNotification(req.OperationID, req.UserID, req.UserID)
|
||||
return &pbUser.SetGlobalRecvMessageOptResp{CommonResp: &pbUser.CommonResp{}}, nil
|
||||
}
|
||||
|
||||
func (s *userServer) SyncJoinedGroupMemberFaceURL(userID string, faceURL string, operationID string, opUserID string) {
|
||||
joinedGroupIDList, err := imdb.GetJoinedGroupIDListByUserID(userID)
|
||||
if err != nil {
|
||||
@ -468,6 +479,26 @@ func (s *userServer) SyncJoinedGroupMemberFaceURL(userID string, faceURL string,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *userServer) SyncJoinedGroupMemberNickname(userID string, newNickname, oldNickname string, operationID string, opUserID string) {
|
||||
joinedGroupIDList, err := imdb.GetJoinedGroupIDListByUserID(userID)
|
||||
if err != nil {
|
||||
log.NewWarn(operationID, "GetJoinedGroupIDListByUserID failed ", userID, err.Error())
|
||||
return
|
||||
}
|
||||
for _, v := range joinedGroupIDList {
|
||||
member, err := imdb.GetGroupMemberInfoByGroupIDAndUserID(v, userID)
|
||||
if err != nil {
|
||||
log.NewWarn(operationID, "GetGroupMemberInfoByGroupIDAndUserID failed ", err.Error(), v, userID)
|
||||
continue
|
||||
}
|
||||
if member.Nickname == oldNickname {
|
||||
groupMemberInfo := db.GroupMember{UserID: userID, GroupID: v, Nickname: newNickname}
|
||||
imdb.UpdateGroupMemberInfo(groupMemberInfo)
|
||||
chat.GroupMemberInfoSetNotification(operationID, opUserID, v, userID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (s *userServer) GetUsersByName(ctx context.Context, req *pbUser.GetUsersByNameReq) (*pbUser.GetUsersByNameResp, error) {
|
||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req:", req.String())
|
||||
resp := &pbUser.GetUsersByNameResp{}
|
||||
|
@ -72,7 +72,7 @@ type GetBlackListResp struct {
|
||||
|
||||
type SetFriendRemarkReq struct {
|
||||
ParamsCommFriend
|
||||
Remark string `json:"remark" binding:"required"`
|
||||
Remark string `json:"remark"`
|
||||
}
|
||||
type SetFriendRemarkResp struct {
|
||||
CommResp
|
||||
|
@ -161,10 +161,13 @@ type ApplicationGroupResponseResp struct {
|
||||
}
|
||||
|
||||
type JoinGroupReq struct {
|
||||
GroupID string `json:"groupID" binding:"required"`
|
||||
ReqMessage string `json:"reqMessage"`
|
||||
OperationID string `json:"operationID" binding:"required"`
|
||||
GroupID string `json:"groupID" binding:"required"`
|
||||
ReqMessage string `json:"reqMessage"`
|
||||
OperationID string `json:"operationID" binding:"required"`
|
||||
JoinSource int32 `json:"joinSource"`
|
||||
InviterUserID string `json:"inviterUserID"`
|
||||
}
|
||||
|
||||
type JoinGroupResp struct {
|
||||
CommResp
|
||||
}
|
||||
@ -178,14 +181,16 @@ type QuitGroupResp struct {
|
||||
}
|
||||
|
||||
type SetGroupInfoReq struct {
|
||||
GroupID string `json:"groupID" binding:"required"`
|
||||
GroupName string `json:"groupName"`
|
||||
Notification string `json:"notification"`
|
||||
Introduction string `json:"introduction"`
|
||||
FaceURL string `json:"faceURL"`
|
||||
Ex string `json:"ex"`
|
||||
OperationID string `json:"operationID" binding:"required"`
|
||||
NeedVerification *int32 `json:"needVerification" binding "oneof=0 1 2"`
|
||||
GroupID string `json:"groupID" binding:"required"`
|
||||
GroupName string `json:"groupName"`
|
||||
Notification string `json:"notification"`
|
||||
Introduction string `json:"introduction"`
|
||||
FaceURL string `json:"faceURL"`
|
||||
Ex string `json:"ex"`
|
||||
OperationID string `json:"operationID" binding:"required"`
|
||||
NeedVerification *int32 `json:"needVerification" `
|
||||
LookMemberInfo *int32 `json:"lookMemberInfo"`
|
||||
ApplyMemberFriend *int32 `json:"applyMemberFriend"`
|
||||
}
|
||||
|
||||
type SetGroupInfoResp struct {
|
||||
|
@ -18,3 +18,19 @@ type CleanUpMsgReq struct {
|
||||
type CleanUpMsgResp struct {
|
||||
CommResp
|
||||
}
|
||||
type DelSuperGroupMsgReq struct {
|
||||
UserID string `json:"userID,omitempty" binding:"required"`
|
||||
GroupID string `json:"groupID,omitempty" binding:"required"`
|
||||
SeqList []uint32 `json:"seqList,omitempty"`
|
||||
IsAllDelete bool `json:"isAllDelete"`
|
||||
OperationID string `json:"operationID,omitempty" binding:"required"`
|
||||
}
|
||||
|
||||
type DelSuperGroupMsgResp struct {
|
||||
CommResp
|
||||
}
|
||||
type MsgDeleteNotificationElem struct {
|
||||
GroupID string `json:"groupID"`
|
||||
IsAllDelete bool `json:"isAllDelete"`
|
||||
SeqList []uint32 `json:"seqList"`
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ type ApiUserInfo struct {
|
||||
|
||||
type GroupAddMemberInfo struct {
|
||||
UserID string `json:"userID" binding:"required"`
|
||||
RoleLevel int32 `json:"roleLevel" binding:"required"`
|
||||
RoleLevel int32 `json:"roleLevel" binding:"required,oneof= 1 3"`
|
||||
}
|
||||
|
||||
func SetErrCodeMsg(c *gin.Context, status int) *CommResp {
|
||||
|
@ -102,6 +102,7 @@ type config struct {
|
||||
DBMaxIdle int `yaml:"dbMaxIdle"`
|
||||
DBMaxActive int `yaml:"dbMaxActive"`
|
||||
DBIdleTimeout int `yaml:"dbIdleTimeout"`
|
||||
DBUserName string `yaml:"dbUserName"`
|
||||
DBPassWord string `yaml:"dbPassWord"`
|
||||
EnableCluster bool `yaml:"enableCluster"`
|
||||
}
|
||||
@ -464,9 +465,10 @@ type config struct {
|
||||
VerificationCodeTemplateCode string `yaml:"verificationCodeTemplateCode"`
|
||||
Enable bool `yaml:"enable"`
|
||||
}
|
||||
SuperCode string `yaml:"superCode"`
|
||||
CodeTTL int `yaml:"codeTTL"`
|
||||
Mail struct {
|
||||
SuperCode string `yaml:"superCode"`
|
||||
CodeTTL int `yaml:"codeTTL"`
|
||||
UseSuperCode bool `yaml:"useSuperCode"`
|
||||
Mail struct {
|
||||
Title string `yaml:"title"`
|
||||
SenderMail string `yaml:"senderMail"`
|
||||
SenderAuthorizationCode string `yaml:"senderAuthorizationCode"`
|
||||
|
@ -58,6 +58,7 @@ const (
|
||||
FriendRemarkSetNotification = 1206 //set_friend_remark?
|
||||
BlackAddedNotification = 1207 //add_black
|
||||
BlackDeletedNotification = 1208 //remove_black
|
||||
MsgDeleteNotification = 1209
|
||||
|
||||
ConversationOptChangeNotification = 1300 // change conversation opt
|
||||
|
||||
@ -161,9 +162,9 @@ const (
|
||||
GroupStatusMuted = 3
|
||||
|
||||
//GroupType
|
||||
NormalGroup = 0
|
||||
SuperGroup = 1
|
||||
DepartmentGroup = 2
|
||||
NormalGroup = 0
|
||||
SuperGroup = 1
|
||||
WorkingGroup = 2
|
||||
|
||||
GroupBaned = 3
|
||||
GroupBanPrivateChat = 4
|
||||
@ -171,6 +172,10 @@ const (
|
||||
//UserJoinGroupSource
|
||||
JoinByAdmin = 1
|
||||
|
||||
JoinByInvitation = 2
|
||||
JoinBySearch = 3
|
||||
JoinByQRCode = 4
|
||||
|
||||
//Minio
|
||||
MinioDurationTimes = 3600
|
||||
|
||||
@ -298,3 +303,5 @@ const BigVersion = "v2"
|
||||
const LogFileName = "OpenIM.log"
|
||||
|
||||
const StatisticsTimeInterval = 60
|
||||
|
||||
const MaxNotificationNum = 100
|
||||
|
@ -119,11 +119,14 @@ func init() {
|
||||
// )
|
||||
// },
|
||||
//}
|
||||
fmt.Println("tes", config.Config.Redis.DBUserName, config.Config.Redis.DBPassWord)
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
defer cancel()
|
||||
if config.Config.Redis.EnableCluster {
|
||||
DB.rdb = go_redis.NewClusterClient(&go_redis.ClusterOptions{
|
||||
Addrs: config.Config.Redis.DBAddress,
|
||||
Username: config.Config.Redis.DBUserName,
|
||||
Password: config.Config.Redis.DBPassWord, // no password set
|
||||
PoolSize: 50,
|
||||
})
|
||||
_, err = DB.rdb.Ping(ctx).Result()
|
||||
@ -133,6 +136,7 @@ func init() {
|
||||
} else {
|
||||
DB.rdb = go_redis.NewClient(&go_redis.Options{
|
||||
Addr: config.Config.Redis.DBAddress[0],
|
||||
Username: config.Config.Redis.DBUserName,
|
||||
Password: config.Config.Redis.DBPassWord, // no password set
|
||||
DB: 0, // use default DB
|
||||
PoolSize: 100, // 连接池大小
|
||||
|
@ -77,17 +77,21 @@ func (FriendRequest) TableName() string {
|
||||
type Group struct {
|
||||
//`json:"operationID" binding:"required"`
|
||||
//`protobuf:"bytes,1,opt,name=GroupID" json:"GroupID,omitempty"` `json:"operationID" binding:"required"`
|
||||
GroupID string `gorm:"column:group_id;primary_key;size:64" json:"groupID" binding:"required"`
|
||||
GroupName string `gorm:"column:name;size:255" json:"groupName"`
|
||||
Notification string `gorm:"column:notification;size:255" json:"notification"`
|
||||
Introduction string `gorm:"column:introduction;size:255" json:"introduction"`
|
||||
FaceURL string `gorm:"column:face_url;size:255" json:"faceURL"`
|
||||
CreateTime time.Time `gorm:"column:create_time"`
|
||||
Ex string `gorm:"column:ex" json:"ex;size:1024" json:"ex"`
|
||||
Status int32 `gorm:"column:status"`
|
||||
CreatorUserID string `gorm:"column:creator_user_id;size:64"`
|
||||
GroupType int32 `gorm:"column:group_type"`
|
||||
NeedVerification int32 `gorm:"column:need_verification"`
|
||||
GroupID string `gorm:"column:group_id;primary_key;size:64" json:"groupID" binding:"required"`
|
||||
GroupName string `gorm:"column:name;size:255" json:"groupName"`
|
||||
Notification string `gorm:"column:notification;size:255" json:"notification"`
|
||||
Introduction string `gorm:"column:introduction;size:255" json:"introduction"`
|
||||
FaceURL string `gorm:"column:face_url;size:255" json:"faceURL"`
|
||||
CreateTime time.Time `gorm:"column:create_time"`
|
||||
Ex string `gorm:"column:ex" json:"ex;size:1024" json:"ex"`
|
||||
Status int32 `gorm:"column:status"`
|
||||
CreatorUserID string `gorm:"column:creator_user_id;size:64"`
|
||||
GroupType int32 `gorm:"column:group_type"`
|
||||
NeedVerification int32 `gorm:"column:need_verification"`
|
||||
LookMemberInfo int32 `gorm:"column:look_member_info" json:"lookMemberInfo"`
|
||||
ApplyMemberFriend int32 `gorm:"column:apply_member_friend" json:"applyMemberFriend"`
|
||||
NotificationUpdateTime time.Time `gorm:"column:notification_update_time"`
|
||||
NotificationUserID string `gorm:"column:notification_user_id;size:64"`
|
||||
}
|
||||
|
||||
//message GroupMemberFullInfo {
|
||||
@ -110,6 +114,7 @@ type GroupMember struct {
|
||||
RoleLevel int32 `gorm:"column:role_level"`
|
||||
JoinTime time.Time `gorm:"column:join_time"`
|
||||
JoinSource int32 `gorm:"column:join_source"`
|
||||
InviterUserID string `gorm:"column:inviter_user_id;size:64"`
|
||||
OperatorUserID string `gorm:"column:operator_user_id;size:64"`
|
||||
MuteEndTime time.Time `gorm:"column:mute_end_time"`
|
||||
Ex string `gorm:"column:ex;size:1024"`
|
||||
@ -127,15 +132,17 @@ type GroupMember struct {
|
||||
//string Ex = 9;
|
||||
//}open_im_sdk.GroupRequest == imdb.GroupRequest
|
||||
type GroupRequest struct {
|
||||
UserID string `gorm:"column:user_id;primary_key;size:64"`
|
||||
GroupID string `gorm:"column:group_id;primary_key;size:64"`
|
||||
HandleResult int32 `gorm:"column:handle_result"`
|
||||
ReqMsg string `gorm:"column:req_msg;size:1024"`
|
||||
HandledMsg string `gorm:"column:handle_msg;size:1024"`
|
||||
ReqTime time.Time `gorm:"column:req_time"`
|
||||
HandleUserID string `gorm:"column:handle_user_id;size:64"`
|
||||
HandledTime time.Time `gorm:"column:handle_time"`
|
||||
Ex string `gorm:"column:ex;size:1024"`
|
||||
UserID string `gorm:"column:user_id;primary_key;size:64"`
|
||||
GroupID string `gorm:"column:group_id;primary_key;size:64"`
|
||||
HandleResult int32 `gorm:"column:handle_result"`
|
||||
ReqMsg string `gorm:"column:req_msg;size:1024"`
|
||||
HandledMsg string `gorm:"column:handle_msg;size:1024"`
|
||||
ReqTime time.Time `gorm:"column:req_time"`
|
||||
HandleUserID string `gorm:"column:handle_user_id;size:64"`
|
||||
HandledTime time.Time `gorm:"column:handle_time"`
|
||||
JoinSource int32 `gorm:"column:join_source"`
|
||||
InviterUserID string `gorm:"column:inviter_user_id;size:64"`
|
||||
Ex string `gorm:"column:ex;size:1024"`
|
||||
}
|
||||
|
||||
//string UserID = 1;
|
||||
|
@ -5,14 +5,14 @@ import (
|
||||
_ "github.com/jinzhu/gorm"
|
||||
)
|
||||
|
||||
func GetRegister(account, areaCode string) (*db.Register, error) {
|
||||
func GetRegister(account, areaCode, userID string) (*db.Register, error) {
|
||||
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var r db.Register
|
||||
return &r, dbConn.Table("registers").Where("account = ? or account =? and area_code=?",
|
||||
account, account, areaCode).Take(&r).Error
|
||||
return &r, dbConn.Table("registers").Where("user_id = ? and user_id != ? or account = ? or account =? and area_code=?",
|
||||
userID, "", account, account, areaCode).Take(&r).Error
|
||||
}
|
||||
|
||||
func SetPassword(account, password, ex, userID, areaCode string) error {
|
||||
|
@ -32,10 +32,12 @@ func InsertIntoGroup(groupInfo db.Group) error {
|
||||
groupInfo.GroupName = "Group Chat"
|
||||
}
|
||||
groupInfo.CreateTime = time.Now()
|
||||
|
||||
err = dbConn.Table("groups").Create(groupInfo).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -302,6 +302,6 @@ func GetRandomDepartmentID() (string, error) {
|
||||
return "", err
|
||||
}
|
||||
department := &db.Department{}
|
||||
err = dbConn.Model(department).Order("RAND()").Where("related_group_id != ? AND department_id != ?", "", "0").First(department).Error
|
||||
err = dbConn.Model(department).Order("RAND()").Where("related_group_id != ? AND department_id != ? AND department_type = ?", "", "0", 1).First(department).Error
|
||||
return department.DepartmentID, err
|
||||
}
|
||||
|
@ -119,3 +119,9 @@ func Test_GetAccountCode(t *testing.T) {
|
||||
assert.Nil(t, err)
|
||||
fmt.Println(code)
|
||||
}
|
||||
func Test_GetGroupMemberList(t *testing.T) {
|
||||
groupID := "3791742301"
|
||||
list, err := DB.GetGroupMemberIDListFromCache(groupID)
|
||||
assert.Nil(t, err)
|
||||
fmt.Println(list)
|
||||
}
|
||||
|
@ -98,6 +98,10 @@ func GroupDBCopyOpenIM(dst *open_im_sdk.GroupInfo, src *db.Group) error {
|
||||
return utils.Wrap(err, "")
|
||||
}
|
||||
dst.CreateTime = uint32(src.CreateTime.Unix())
|
||||
dst.NotificationUpdateTime = uint32(src.NotificationUpdateTime.Unix())
|
||||
if src.NotificationUpdateTime.Unix() < 0 {
|
||||
dst.NotificationUpdateTime = 0
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -118,7 +122,7 @@ func GroupMemberDBCopyOpenIM(dst *open_im_sdk.GroupMemberFullInfo, src *db.Group
|
||||
dst.AppMangerLevel = 1
|
||||
}
|
||||
dst.JoinTime = int32(src.JoinTime.Unix())
|
||||
if src.MuteEndTime.Unix() < 0 {
|
||||
if src.JoinTime.Unix() < 0 {
|
||||
dst.JoinTime = 0
|
||||
return nil
|
||||
}
|
||||
|
@ -37,7 +37,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_group_40c147a29abb4e60, []int{0}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{0}
|
||||
}
|
||||
func (m *CommonResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_CommonResp.Unmarshal(m, b)
|
||||
@ -83,7 +83,7 @@ func (m *GroupAddMemberInfo) Reset() { *m = GroupAddMemberInfo{} }
|
||||
func (m *GroupAddMemberInfo) String() string { return proto.CompactTextString(m) }
|
||||
func (*GroupAddMemberInfo) ProtoMessage() {}
|
||||
func (*GroupAddMemberInfo) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{1}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{1}
|
||||
}
|
||||
func (m *GroupAddMemberInfo) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GroupAddMemberInfo.Unmarshal(m, b)
|
||||
@ -132,7 +132,7 @@ func (m *CreateGroupReq) Reset() { *m = CreateGroupReq{} }
|
||||
func (m *CreateGroupReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*CreateGroupReq) ProtoMessage() {}
|
||||
func (*CreateGroupReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{2}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{2}
|
||||
}
|
||||
func (m *CreateGroupReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_CreateGroupReq.Unmarshal(m, b)
|
||||
@ -200,7 +200,7 @@ func (m *CreateGroupResp) Reset() { *m = CreateGroupResp{} }
|
||||
func (m *CreateGroupResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*CreateGroupResp) ProtoMessage() {}
|
||||
func (*CreateGroupResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{3}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{3}
|
||||
}
|
||||
func (m *CreateGroupResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_CreateGroupResp.Unmarshal(m, b)
|
||||
@ -254,7 +254,7 @@ func (m *GetGroupsInfoReq) Reset() { *m = GetGroupsInfoReq{} }
|
||||
func (m *GetGroupsInfoReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupsInfoReq) ProtoMessage() {}
|
||||
func (*GetGroupsInfoReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{4}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{4}
|
||||
}
|
||||
func (m *GetGroupsInfoReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupsInfoReq.Unmarshal(m, b)
|
||||
@ -308,7 +308,7 @@ func (m *GetGroupsInfoResp) Reset() { *m = GetGroupsInfoResp{} }
|
||||
func (m *GetGroupsInfoResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupsInfoResp) ProtoMessage() {}
|
||||
func (*GetGroupsInfoResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{5}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{5}
|
||||
}
|
||||
func (m *GetGroupsInfoResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupsInfoResp.Unmarshal(m, b)
|
||||
@ -362,7 +362,7 @@ func (m *SetGroupInfoReq) Reset() { *m = SetGroupInfoReq{} }
|
||||
func (m *SetGroupInfoReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*SetGroupInfoReq) ProtoMessage() {}
|
||||
func (*SetGroupInfoReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{6}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{6}
|
||||
}
|
||||
func (m *SetGroupInfoReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_SetGroupInfoReq.Unmarshal(m, b)
|
||||
@ -414,7 +414,7 @@ func (m *SetGroupInfoResp) Reset() { *m = SetGroupInfoResp{} }
|
||||
func (m *SetGroupInfoResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*SetGroupInfoResp) ProtoMessage() {}
|
||||
func (*SetGroupInfoResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{7}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{7}
|
||||
}
|
||||
func (m *SetGroupInfoResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_SetGroupInfoResp.Unmarshal(m, b)
|
||||
@ -454,7 +454,7 @@ func (m *GetGroupApplicationListReq) Reset() { *m = GetGroupApplicationL
|
||||
func (m *GetGroupApplicationListReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupApplicationListReq) ProtoMessage() {}
|
||||
func (*GetGroupApplicationListReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{8}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{8}
|
||||
}
|
||||
func (m *GetGroupApplicationListReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupApplicationListReq.Unmarshal(m, b)
|
||||
@ -508,7 +508,7 @@ func (m *GetGroupApplicationListResp) Reset() { *m = GetGroupApplication
|
||||
func (m *GetGroupApplicationListResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupApplicationListResp) ProtoMessage() {}
|
||||
func (*GetGroupApplicationListResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{9}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{9}
|
||||
}
|
||||
func (m *GetGroupApplicationListResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupApplicationListResp.Unmarshal(m, b)
|
||||
@ -562,7 +562,7 @@ func (m *GetUserReqApplicationListReq) Reset() { *m = GetUserReqApplicat
|
||||
func (m *GetUserReqApplicationListReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetUserReqApplicationListReq) ProtoMessage() {}
|
||||
func (*GetUserReqApplicationListReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{10}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{10}
|
||||
}
|
||||
func (m *GetUserReqApplicationListReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetUserReqApplicationListReq.Unmarshal(m, b)
|
||||
@ -615,7 +615,7 @@ func (m *GetUserReqApplicationListResp) Reset() { *m = GetUserReqApplica
|
||||
func (m *GetUserReqApplicationListResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetUserReqApplicationListResp) ProtoMessage() {}
|
||||
func (*GetUserReqApplicationListResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{11}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{11}
|
||||
}
|
||||
func (m *GetUserReqApplicationListResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetUserReqApplicationListResp.Unmarshal(m, b)
|
||||
@ -664,7 +664,7 @@ func (m *TransferGroupOwnerReq) Reset() { *m = TransferGroupOwnerReq{} }
|
||||
func (m *TransferGroupOwnerReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*TransferGroupOwnerReq) ProtoMessage() {}
|
||||
func (*TransferGroupOwnerReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{12}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{12}
|
||||
}
|
||||
func (m *TransferGroupOwnerReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_TransferGroupOwnerReq.Unmarshal(m, b)
|
||||
@ -730,7 +730,7 @@ func (m *TransferGroupOwnerResp) Reset() { *m = TransferGroupOwnerResp{}
|
||||
func (m *TransferGroupOwnerResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*TransferGroupOwnerResp) ProtoMessage() {}
|
||||
func (*TransferGroupOwnerResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{13}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{13}
|
||||
}
|
||||
func (m *TransferGroupOwnerResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_TransferGroupOwnerResp.Unmarshal(m, b)
|
||||
@ -762,6 +762,8 @@ type JoinGroupReq struct {
|
||||
ReqMessage string `protobuf:"bytes,2,opt,name=ReqMessage" json:"ReqMessage,omitempty"`
|
||||
OpUserID string `protobuf:"bytes,3,opt,name=OpUserID" json:"OpUserID,omitempty"`
|
||||
OperationID string `protobuf:"bytes,4,opt,name=OperationID" json:"OperationID,omitempty"`
|
||||
JoinSource int32 `protobuf:"varint,5,opt,name=JoinSource" json:"JoinSource,omitempty"`
|
||||
InviterUserID string `protobuf:"bytes,6,opt,name=InviterUserID" json:"InviterUserID,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
@ -771,7 +773,7 @@ func (m *JoinGroupReq) Reset() { *m = JoinGroupReq{} }
|
||||
func (m *JoinGroupReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*JoinGroupReq) ProtoMessage() {}
|
||||
func (*JoinGroupReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{14}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{14}
|
||||
}
|
||||
func (m *JoinGroupReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_JoinGroupReq.Unmarshal(m, b)
|
||||
@ -819,6 +821,20 @@ func (m *JoinGroupReq) GetOperationID() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *JoinGroupReq) GetJoinSource() int32 {
|
||||
if m != nil {
|
||||
return m.JoinSource
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *JoinGroupReq) GetInviterUserID() string {
|
||||
if m != nil {
|
||||
return m.InviterUserID
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type JoinGroupResp struct {
|
||||
CommonResp *CommonResp `protobuf:"bytes,1,opt,name=CommonResp" json:"CommonResp,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
@ -830,7 +846,7 @@ func (m *JoinGroupResp) Reset() { *m = JoinGroupResp{} }
|
||||
func (m *JoinGroupResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*JoinGroupResp) ProtoMessage() {}
|
||||
func (*JoinGroupResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{15}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{15}
|
||||
}
|
||||
func (m *JoinGroupResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_JoinGroupResp.Unmarshal(m, b)
|
||||
@ -873,7 +889,7 @@ func (m *GroupApplicationResponseReq) Reset() { *m = GroupApplicationRes
|
||||
func (m *GroupApplicationResponseReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*GroupApplicationResponseReq) ProtoMessage() {}
|
||||
func (*GroupApplicationResponseReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{16}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{16}
|
||||
}
|
||||
func (m *GroupApplicationResponseReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GroupApplicationResponseReq.Unmarshal(m, b)
|
||||
@ -946,7 +962,7 @@ func (m *GroupApplicationResponseResp) Reset() { *m = GroupApplicationRe
|
||||
func (m *GroupApplicationResponseResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*GroupApplicationResponseResp) ProtoMessage() {}
|
||||
func (*GroupApplicationResponseResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{17}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{17}
|
||||
}
|
||||
func (m *GroupApplicationResponseResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GroupApplicationResponseResp.Unmarshal(m, b)
|
||||
@ -986,7 +1002,7 @@ func (m *QuitGroupReq) Reset() { *m = QuitGroupReq{} }
|
||||
func (m *QuitGroupReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*QuitGroupReq) ProtoMessage() {}
|
||||
func (*QuitGroupReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{18}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{18}
|
||||
}
|
||||
func (m *QuitGroupReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_QuitGroupReq.Unmarshal(m, b)
|
||||
@ -1038,7 +1054,7 @@ func (m *QuitGroupResp) Reset() { *m = QuitGroupResp{} }
|
||||
func (m *QuitGroupResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*QuitGroupResp) ProtoMessage() {}
|
||||
func (*QuitGroupResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{19}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{19}
|
||||
}
|
||||
func (m *QuitGroupResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_QuitGroupResp.Unmarshal(m, b)
|
||||
@ -1080,7 +1096,7 @@ func (m *GetGroupMemberListReq) Reset() { *m = GetGroupMemberListReq{} }
|
||||
func (m *GetGroupMemberListReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupMemberListReq) ProtoMessage() {}
|
||||
func (*GetGroupMemberListReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{20}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{20}
|
||||
}
|
||||
func (m *GetGroupMemberListReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupMemberListReq.Unmarshal(m, b)
|
||||
@ -1149,7 +1165,7 @@ func (m *GetGroupMemberListResp) Reset() { *m = GetGroupMemberListResp{}
|
||||
func (m *GetGroupMemberListResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupMemberListResp) ProtoMessage() {}
|
||||
func (*GetGroupMemberListResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{21}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{21}
|
||||
}
|
||||
func (m *GetGroupMemberListResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupMemberListResp.Unmarshal(m, b)
|
||||
@ -1211,7 +1227,7 @@ func (m *GetGroupMembersInfoReq) Reset() { *m = GetGroupMembersInfoReq{}
|
||||
func (m *GetGroupMembersInfoReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupMembersInfoReq) ProtoMessage() {}
|
||||
func (*GetGroupMembersInfoReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{22}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{22}
|
||||
}
|
||||
func (m *GetGroupMembersInfoReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupMembersInfoReq.Unmarshal(m, b)
|
||||
@ -1272,7 +1288,7 @@ func (m *GetGroupMembersInfoResp) Reset() { *m = GetGroupMembersInfoResp
|
||||
func (m *GetGroupMembersInfoResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupMembersInfoResp) ProtoMessage() {}
|
||||
func (*GetGroupMembersInfoResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{23}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{23}
|
||||
}
|
||||
func (m *GetGroupMembersInfoResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupMembersInfoResp.Unmarshal(m, b)
|
||||
@ -1328,7 +1344,7 @@ func (m *KickGroupMemberReq) Reset() { *m = KickGroupMemberReq{} }
|
||||
func (m *KickGroupMemberReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*KickGroupMemberReq) ProtoMessage() {}
|
||||
func (*KickGroupMemberReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{24}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{24}
|
||||
}
|
||||
func (m *KickGroupMemberReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_KickGroupMemberReq.Unmarshal(m, b)
|
||||
@ -1395,7 +1411,7 @@ func (m *Id2Result) Reset() { *m = Id2Result{} }
|
||||
func (m *Id2Result) String() string { return proto.CompactTextString(m) }
|
||||
func (*Id2Result) ProtoMessage() {}
|
||||
func (*Id2Result) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{25}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{25}
|
||||
}
|
||||
func (m *Id2Result) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_Id2Result.Unmarshal(m, b)
|
||||
@ -1442,7 +1458,7 @@ func (m *KickGroupMemberResp) Reset() { *m = KickGroupMemberResp{} }
|
||||
func (m *KickGroupMemberResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*KickGroupMemberResp) ProtoMessage() {}
|
||||
func (*KickGroupMemberResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{26}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{26}
|
||||
}
|
||||
func (m *KickGroupMemberResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_KickGroupMemberResp.Unmarshal(m, b)
|
||||
@ -1496,7 +1512,7 @@ func (m *GetJoinedGroupListReq) Reset() { *m = GetJoinedGroupListReq{} }
|
||||
func (m *GetJoinedGroupListReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetJoinedGroupListReq) ProtoMessage() {}
|
||||
func (*GetJoinedGroupListReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{27}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{27}
|
||||
}
|
||||
func (m *GetJoinedGroupListReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetJoinedGroupListReq.Unmarshal(m, b)
|
||||
@ -1550,7 +1566,7 @@ func (m *GetJoinedGroupListResp) Reset() { *m = GetJoinedGroupListResp{}
|
||||
func (m *GetJoinedGroupListResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetJoinedGroupListResp) ProtoMessage() {}
|
||||
func (*GetJoinedGroupListResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{28}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{28}
|
||||
}
|
||||
func (m *GetJoinedGroupListResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetJoinedGroupListResp.Unmarshal(m, b)
|
||||
@ -1606,7 +1622,7 @@ func (m *InviteUserToGroupReq) Reset() { *m = InviteUserToGroupReq{} }
|
||||
func (m *InviteUserToGroupReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*InviteUserToGroupReq) ProtoMessage() {}
|
||||
func (*InviteUserToGroupReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{29}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{29}
|
||||
}
|
||||
func (m *InviteUserToGroupReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_InviteUserToGroupReq.Unmarshal(m, b)
|
||||
@ -1674,7 +1690,7 @@ func (m *InviteUserToGroupResp) Reset() { *m = InviteUserToGroupResp{} }
|
||||
func (m *InviteUserToGroupResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*InviteUserToGroupResp) ProtoMessage() {}
|
||||
func (*InviteUserToGroupResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{30}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{30}
|
||||
}
|
||||
func (m *InviteUserToGroupResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_InviteUserToGroupResp.Unmarshal(m, b)
|
||||
@ -1728,7 +1744,7 @@ func (m *GetGroupAllMemberReq) Reset() { *m = GetGroupAllMemberReq{} }
|
||||
func (m *GetGroupAllMemberReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupAllMemberReq) ProtoMessage() {}
|
||||
func (*GetGroupAllMemberReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{31}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{31}
|
||||
}
|
||||
func (m *GetGroupAllMemberReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupAllMemberReq.Unmarshal(m, b)
|
||||
@ -1782,7 +1798,7 @@ func (m *GetGroupAllMemberResp) Reset() { *m = GetGroupAllMemberResp{} }
|
||||
func (m *GetGroupAllMemberResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupAllMemberResp) ProtoMessage() {}
|
||||
func (*GetGroupAllMemberResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{32}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{32}
|
||||
}
|
||||
func (m *GetGroupAllMemberResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupAllMemberResp.Unmarshal(m, b)
|
||||
@ -1836,7 +1852,7 @@ func (m *CMSGroup) Reset() { *m = CMSGroup{} }
|
||||
func (m *CMSGroup) String() string { return proto.CompactTextString(m) }
|
||||
func (*CMSGroup) ProtoMessage() {}
|
||||
func (*CMSGroup) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{33}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{33}
|
||||
}
|
||||
func (m *CMSGroup) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_CMSGroup.Unmarshal(m, b)
|
||||
@ -1890,7 +1906,7 @@ func (m *GetGroupReq) Reset() { *m = GetGroupReq{} }
|
||||
func (m *GetGroupReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupReq) ProtoMessage() {}
|
||||
func (*GetGroupReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{34}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{34}
|
||||
}
|
||||
func (m *GetGroupReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupReq.Unmarshal(m, b)
|
||||
@ -1944,7 +1960,7 @@ func (m *GetGroupResp) Reset() { *m = GetGroupResp{} }
|
||||
func (m *GetGroupResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupResp) ProtoMessage() {}
|
||||
func (*GetGroupResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{35}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{35}
|
||||
}
|
||||
func (m *GetGroupResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupResp.Unmarshal(m, b)
|
||||
@ -1997,7 +2013,7 @@ func (m *GetGroupsReq) Reset() { *m = GetGroupsReq{} }
|
||||
func (m *GetGroupsReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupsReq) ProtoMessage() {}
|
||||
func (*GetGroupsReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{36}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{36}
|
||||
}
|
||||
func (m *GetGroupsReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupsReq.Unmarshal(m, b)
|
||||
@ -2044,7 +2060,7 @@ func (m *GetGroupsResp) Reset() { *m = GetGroupsResp{} }
|
||||
func (m *GetGroupsResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupsResp) ProtoMessage() {}
|
||||
func (*GetGroupsResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{37}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{37}
|
||||
}
|
||||
func (m *GetGroupsResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupsResp.Unmarshal(m, b)
|
||||
@ -2097,7 +2113,7 @@ func (m *GetGroupMemberReq) Reset() { *m = GetGroupMemberReq{} }
|
||||
func (m *GetGroupMemberReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupMemberReq) ProtoMessage() {}
|
||||
func (*GetGroupMemberReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{38}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{38}
|
||||
}
|
||||
func (m *GetGroupMemberReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupMemberReq.Unmarshal(m, b)
|
||||
@ -2144,7 +2160,7 @@ func (m *OperateGroupStatusReq) Reset() { *m = OperateGroupStatusReq{} }
|
||||
func (m *OperateGroupStatusReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*OperateGroupStatusReq) ProtoMessage() {}
|
||||
func (*OperateGroupStatusReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{39}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{39}
|
||||
}
|
||||
func (m *OperateGroupStatusReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_OperateGroupStatusReq.Unmarshal(m, b)
|
||||
@ -2195,7 +2211,7 @@ func (m *OperateGroupStatusResp) Reset() { *m = OperateGroupStatusResp{}
|
||||
func (m *OperateGroupStatusResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*OperateGroupStatusResp) ProtoMessage() {}
|
||||
func (*OperateGroupStatusResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{40}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{40}
|
||||
}
|
||||
func (m *OperateGroupStatusResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_OperateGroupStatusResp.Unmarshal(m, b)
|
||||
@ -2229,7 +2245,7 @@ func (m *OperateUserRoleReq) Reset() { *m = OperateUserRoleReq{} }
|
||||
func (m *OperateUserRoleReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*OperateUserRoleReq) ProtoMessage() {}
|
||||
func (*OperateUserRoleReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{41}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{41}
|
||||
}
|
||||
func (m *OperateUserRoleReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_OperateUserRoleReq.Unmarshal(m, b)
|
||||
@ -2287,7 +2303,7 @@ func (m *OperateUserRoleResp) Reset() { *m = OperateUserRoleResp{} }
|
||||
func (m *OperateUserRoleResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*OperateUserRoleResp) ProtoMessage() {}
|
||||
func (*OperateUserRoleResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{42}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{42}
|
||||
}
|
||||
func (m *OperateUserRoleResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_OperateUserRoleResp.Unmarshal(m, b)
|
||||
@ -2319,7 +2335,7 @@ func (m *DeleteGroupReq) Reset() { *m = DeleteGroupReq{} }
|
||||
func (m *DeleteGroupReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*DeleteGroupReq) ProtoMessage() {}
|
||||
func (*DeleteGroupReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{43}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{43}
|
||||
}
|
||||
func (m *DeleteGroupReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_DeleteGroupReq.Unmarshal(m, b)
|
||||
@ -2363,7 +2379,7 @@ func (m *DeleteGroupResp) Reset() { *m = DeleteGroupResp{} }
|
||||
func (m *DeleteGroupResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*DeleteGroupResp) ProtoMessage() {}
|
||||
func (*DeleteGroupResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{44}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{44}
|
||||
}
|
||||
func (m *DeleteGroupResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_DeleteGroupResp.Unmarshal(m, b)
|
||||
@ -2395,7 +2411,7 @@ func (m *GetGroupByIdReq) Reset() { *m = GetGroupByIdReq{} }
|
||||
func (m *GetGroupByIdReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupByIdReq) ProtoMessage() {}
|
||||
func (*GetGroupByIdReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{45}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{45}
|
||||
}
|
||||
func (m *GetGroupByIdReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupByIdReq.Unmarshal(m, b)
|
||||
@ -2440,7 +2456,7 @@ func (m *GetGroupByIdResp) Reset() { *m = GetGroupByIdResp{} }
|
||||
func (m *GetGroupByIdResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupByIdResp) ProtoMessage() {}
|
||||
func (*GetGroupByIdResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{46}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{46}
|
||||
}
|
||||
func (m *GetGroupByIdResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupByIdResp.Unmarshal(m, b)
|
||||
@ -2481,7 +2497,7 @@ func (m *GetGroupMembersCMSReq) Reset() { *m = GetGroupMembersCMSReq{} }
|
||||
func (m *GetGroupMembersCMSReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupMembersCMSReq) ProtoMessage() {}
|
||||
func (*GetGroupMembersCMSReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{47}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{47}
|
||||
}
|
||||
func (m *GetGroupMembersCMSReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupMembersCMSReq.Unmarshal(m, b)
|
||||
@ -2542,7 +2558,7 @@ func (m *GetGroupMembersCMSResp) Reset() { *m = GetGroupMembersCMSResp{}
|
||||
func (m *GetGroupMembersCMSResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetGroupMembersCMSResp) ProtoMessage() {}
|
||||
func (*GetGroupMembersCMSResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{48}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{48}
|
||||
}
|
||||
func (m *GetGroupMembersCMSResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetGroupMembersCMSResp.Unmarshal(m, b)
|
||||
@ -2597,7 +2613,7 @@ func (m *RemoveGroupMembersCMSReq) Reset() { *m = RemoveGroupMembersCMSR
|
||||
func (m *RemoveGroupMembersCMSReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*RemoveGroupMembersCMSReq) ProtoMessage() {}
|
||||
func (*RemoveGroupMembersCMSReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{49}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{49}
|
||||
}
|
||||
func (m *RemoveGroupMembersCMSReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_RemoveGroupMembersCMSReq.Unmarshal(m, b)
|
||||
@ -2657,7 +2673,7 @@ func (m *RemoveGroupMembersCMSResp) Reset() { *m = RemoveGroupMembersCMS
|
||||
func (m *RemoveGroupMembersCMSResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*RemoveGroupMembersCMSResp) ProtoMessage() {}
|
||||
func (*RemoveGroupMembersCMSResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{50}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{50}
|
||||
}
|
||||
func (m *RemoveGroupMembersCMSResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_RemoveGroupMembersCMSResp.Unmarshal(m, b)
|
||||
@ -2705,7 +2721,7 @@ func (m *AddGroupMembersCMSReq) Reset() { *m = AddGroupMembersCMSReq{} }
|
||||
func (m *AddGroupMembersCMSReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*AddGroupMembersCMSReq) ProtoMessage() {}
|
||||
func (*AddGroupMembersCMSReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{51}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{51}
|
||||
}
|
||||
func (m *AddGroupMembersCMSReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_AddGroupMembersCMSReq.Unmarshal(m, b)
|
||||
@ -2765,7 +2781,7 @@ func (m *AddGroupMembersCMSResp) Reset() { *m = AddGroupMembersCMSResp{}
|
||||
func (m *AddGroupMembersCMSResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*AddGroupMembersCMSResp) ProtoMessage() {}
|
||||
func (*AddGroupMembersCMSResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{52}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{52}
|
||||
}
|
||||
func (m *AddGroupMembersCMSResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_AddGroupMembersCMSResp.Unmarshal(m, b)
|
||||
@ -2812,7 +2828,7 @@ func (m *DismissGroupReq) Reset() { *m = DismissGroupReq{} }
|
||||
func (m *DismissGroupReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*DismissGroupReq) ProtoMessage() {}
|
||||
func (*DismissGroupReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{53}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{53}
|
||||
}
|
||||
func (m *DismissGroupReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_DismissGroupReq.Unmarshal(m, b)
|
||||
@ -2864,7 +2880,7 @@ func (m *DismissGroupResp) Reset() { *m = DismissGroupResp{} }
|
||||
func (m *DismissGroupResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*DismissGroupResp) ProtoMessage() {}
|
||||
func (*DismissGroupResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{54}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{54}
|
||||
}
|
||||
func (m *DismissGroupResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_DismissGroupResp.Unmarshal(m, b)
|
||||
@ -2906,7 +2922,7 @@ func (m *MuteGroupMemberReq) Reset() { *m = MuteGroupMemberReq{} }
|
||||
func (m *MuteGroupMemberReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*MuteGroupMemberReq) ProtoMessage() {}
|
||||
func (*MuteGroupMemberReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{55}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{55}
|
||||
}
|
||||
func (m *MuteGroupMemberReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_MuteGroupMemberReq.Unmarshal(m, b)
|
||||
@ -2972,7 +2988,7 @@ func (m *MuteGroupMemberResp) Reset() { *m = MuteGroupMemberResp{} }
|
||||
func (m *MuteGroupMemberResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*MuteGroupMemberResp) ProtoMessage() {}
|
||||
func (*MuteGroupMemberResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{56}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{56}
|
||||
}
|
||||
func (m *MuteGroupMemberResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_MuteGroupMemberResp.Unmarshal(m, b)
|
||||
@ -3013,7 +3029,7 @@ func (m *CancelMuteGroupMemberReq) Reset() { *m = CancelMuteGroupMemberR
|
||||
func (m *CancelMuteGroupMemberReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*CancelMuteGroupMemberReq) ProtoMessage() {}
|
||||
func (*CancelMuteGroupMemberReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{57}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{57}
|
||||
}
|
||||
func (m *CancelMuteGroupMemberReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_CancelMuteGroupMemberReq.Unmarshal(m, b)
|
||||
@ -3072,7 +3088,7 @@ func (m *CancelMuteGroupMemberResp) Reset() { *m = CancelMuteGroupMember
|
||||
func (m *CancelMuteGroupMemberResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*CancelMuteGroupMemberResp) ProtoMessage() {}
|
||||
func (*CancelMuteGroupMemberResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{58}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{58}
|
||||
}
|
||||
func (m *CancelMuteGroupMemberResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_CancelMuteGroupMemberResp.Unmarshal(m, b)
|
||||
@ -3112,7 +3128,7 @@ func (m *MuteGroupReq) Reset() { *m = MuteGroupReq{} }
|
||||
func (m *MuteGroupReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*MuteGroupReq) ProtoMessage() {}
|
||||
func (*MuteGroupReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{59}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{59}
|
||||
}
|
||||
func (m *MuteGroupReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_MuteGroupReq.Unmarshal(m, b)
|
||||
@ -3164,7 +3180,7 @@ func (m *MuteGroupResp) Reset() { *m = MuteGroupResp{} }
|
||||
func (m *MuteGroupResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*MuteGroupResp) ProtoMessage() {}
|
||||
func (*MuteGroupResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{60}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{60}
|
||||
}
|
||||
func (m *MuteGroupResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_MuteGroupResp.Unmarshal(m, b)
|
||||
@ -3204,7 +3220,7 @@ func (m *CancelMuteGroupReq) Reset() { *m = CancelMuteGroupReq{} }
|
||||
func (m *CancelMuteGroupReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*CancelMuteGroupReq) ProtoMessage() {}
|
||||
func (*CancelMuteGroupReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{61}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{61}
|
||||
}
|
||||
func (m *CancelMuteGroupReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_CancelMuteGroupReq.Unmarshal(m, b)
|
||||
@ -3256,7 +3272,7 @@ func (m *CancelMuteGroupResp) Reset() { *m = CancelMuteGroupResp{} }
|
||||
func (m *CancelMuteGroupResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*CancelMuteGroupResp) ProtoMessage() {}
|
||||
func (*CancelMuteGroupResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{62}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{62}
|
||||
}
|
||||
func (m *CancelMuteGroupResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_CancelMuteGroupResp.Unmarshal(m, b)
|
||||
@ -3298,7 +3314,7 @@ func (m *SetGroupMemberNicknameReq) Reset() { *m = SetGroupMemberNicknam
|
||||
func (m *SetGroupMemberNicknameReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*SetGroupMemberNicknameReq) ProtoMessage() {}
|
||||
func (*SetGroupMemberNicknameReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{63}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{63}
|
||||
}
|
||||
func (m *SetGroupMemberNicknameReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_SetGroupMemberNicknameReq.Unmarshal(m, b)
|
||||
@ -3364,7 +3380,7 @@ func (m *SetGroupMemberNicknameResp) Reset() { *m = SetGroupMemberNickna
|
||||
func (m *SetGroupMemberNicknameResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*SetGroupMemberNicknameResp) ProtoMessage() {}
|
||||
func (*SetGroupMemberNicknameResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{64}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{64}
|
||||
}
|
||||
func (m *SetGroupMemberNicknameResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_SetGroupMemberNicknameResp.Unmarshal(m, b)
|
||||
@ -3404,7 +3420,7 @@ func (m *GetJoinedSuperGroupListReq) Reset() { *m = GetJoinedSuperGroupL
|
||||
func (m *GetJoinedSuperGroupListReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetJoinedSuperGroupListReq) ProtoMessage() {}
|
||||
func (*GetJoinedSuperGroupListReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{65}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{65}
|
||||
}
|
||||
func (m *GetJoinedSuperGroupListReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetJoinedSuperGroupListReq.Unmarshal(m, b)
|
||||
@ -3457,7 +3473,7 @@ func (m *GetJoinedSuperGroupListResp) Reset() { *m = GetJoinedSuperGroup
|
||||
func (m *GetJoinedSuperGroupListResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetJoinedSuperGroupListResp) ProtoMessage() {}
|
||||
func (*GetJoinedSuperGroupListResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{66}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{66}
|
||||
}
|
||||
func (m *GetJoinedSuperGroupListResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetJoinedSuperGroupListResp.Unmarshal(m, b)
|
||||
@ -3504,7 +3520,7 @@ func (m *GetSuperGroupsInfoReq) Reset() { *m = GetSuperGroupsInfoReq{} }
|
||||
func (m *GetSuperGroupsInfoReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetSuperGroupsInfoReq) ProtoMessage() {}
|
||||
func (*GetSuperGroupsInfoReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{67}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{67}
|
||||
}
|
||||
func (m *GetSuperGroupsInfoReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetSuperGroupsInfoReq.Unmarshal(m, b)
|
||||
@ -3557,7 +3573,7 @@ func (m *GetSuperGroupsInfoResp) Reset() { *m = GetSuperGroupsInfoResp{}
|
||||
func (m *GetSuperGroupsInfoResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*GetSuperGroupsInfoResp) ProtoMessage() {}
|
||||
func (*GetSuperGroupsInfoResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{68}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{68}
|
||||
}
|
||||
func (m *GetSuperGroupsInfoResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_GetSuperGroupsInfoResp.Unmarshal(m, b)
|
||||
@ -3609,7 +3625,7 @@ func (m *SetGroupMemberInfoReq) Reset() { *m = SetGroupMemberInfoReq{} }
|
||||
func (m *SetGroupMemberInfoReq) String() string { return proto.CompactTextString(m) }
|
||||
func (*SetGroupMemberInfoReq) ProtoMessage() {}
|
||||
func (*SetGroupMemberInfoReq) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{69}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{69}
|
||||
}
|
||||
func (m *SetGroupMemberInfoReq) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_SetGroupMemberInfoReq.Unmarshal(m, b)
|
||||
@ -3696,7 +3712,7 @@ func (m *SetGroupMemberInfoResp) Reset() { *m = SetGroupMemberInfoResp{}
|
||||
func (m *SetGroupMemberInfoResp) String() string { return proto.CompactTextString(m) }
|
||||
func (*SetGroupMemberInfoResp) ProtoMessage() {}
|
||||
func (*SetGroupMemberInfoResp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_group_40c147a29abb4e60, []int{70}
|
||||
return fileDescriptor_group_d529c7a0e85dbd90, []int{70}
|
||||
}
|
||||
func (m *SetGroupMemberInfoResp) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_SetGroupMemberInfoResp.Unmarshal(m, b)
|
||||
@ -4925,157 +4941,159 @@ var _Group_serviceDesc = grpc.ServiceDesc{
|
||||
Metadata: "group/group.proto",
|
||||
}
|
||||
|
||||
func init() { proto.RegisterFile("group/group.proto", fileDescriptor_group_40c147a29abb4e60) }
|
||||
func init() { proto.RegisterFile("group/group.proto", fileDescriptor_group_d529c7a0e85dbd90) }
|
||||
|
||||
var fileDescriptor_group_40c147a29abb4e60 = []byte{
|
||||
// 2381 bytes of a gzipped FileDescriptorProto
|
||||
var fileDescriptor_group_d529c7a0e85dbd90 = []byte{
|
||||
// 2407 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x4f, 0x6f, 0x1c, 0x49,
|
||||
0x15, 0x57, 0xdb, 0x1e, 0xdb, 0xf3, 0x6c, 0x67, 0xec, 0x72, 0xc6, 0x1e, 0x77, 0xbc, 0x59, 0xa7,
|
||||
0x37, 0x2c, 0x11, 0x2c, 0xb6, 0x70, 0xa4, 0x08, 0x58, 0x44, 0x88, 0xff, 0xc5, 0x93, 0xf8, 0x0f,
|
||||
0xee, 0xc9, 0x72, 0x88, 0x84, 0xc2, 0x64, 0xba, 0x3c, 0x1a, 0x3c, 0xd3, 0xdd, 0xee, 0xea, 0xb1,
|
||||
0x03, 0x97, 0x15, 0x97, 0x95, 0x16, 0x21, 0x01, 0x42, 0xe2, 0x04, 0x82, 0x3d, 0xc1, 0x81, 0x03,
|
||||
0x07, 0x38, 0x23, 0x3e, 0x06, 0x57, 0xbe, 0x00, 0x9f, 0x00, 0x09, 0x75, 0x55, 0x75, 0x75, 0x75,
|
||||
0x57, 0x75, 0x7b, 0xd2, 0x4e, 0x36, 0x97, 0x96, 0xea, 0xd5, 0xab, 0x7a, 0xbf, 0xf7, 0xaa, 0xde,
|
||||
0xab, 0x7a, 0xaf, 0x1a, 0x16, 0xba, 0x81, 0x37, 0xf4, 0x37, 0xe8, 0x77, 0xdd, 0x0f, 0xbc, 0xd0,
|
||||
0x43, 0x15, 0xda, 0x30, 0xef, 0x1c, 0xfb, 0xd8, 0x7d, 0xd1, 0x3c, 0xdc, 0xf0, 0xcf, 0xba, 0x1b,
|
||||
0xb4, 0x67, 0x83, 0x38, 0x67, 0x2f, 0x2e, 0xc9, 0xc6, 0x25, 0x61, 0x9c, 0xe6, 0x57, 0xf3, 0x59,
|
||||
0x82, 0xb6, 0xef, 0xe3, 0x80, 0x33, 0x5a, 0xdf, 0x03, 0xd8, 0xf6, 0x06, 0x03, 0xcf, 0xb5, 0x31,
|
||||
0xf1, 0x51, 0x03, 0xa6, 0x76, 0x83, 0x60, 0xdb, 0x73, 0x70, 0xc3, 0x58, 0x33, 0xee, 0x55, 0xec,
|
||||
0xb8, 0x89, 0x96, 0x60, 0x72, 0x37, 0x08, 0x0e, 0x49, 0xb7, 0x31, 0xb6, 0x66, 0xdc, 0xab, 0xda,
|
||||
0xbc, 0x65, 0x3d, 0x01, 0xf4, 0x38, 0x02, 0xf5, 0xc8, 0x71, 0x0e, 0xf1, 0xe0, 0x25, 0x0e, 0x9a,
|
||||
0xee, 0xa9, 0x17, 0x71, 0x7f, 0x42, 0x70, 0xd0, 0xdc, 0xa1, 0xd3, 0x54, 0x6d, 0xde, 0x42, 0xab,
|
||||
0x50, 0xb5, 0xbd, 0x3e, 0x3e, 0xc0, 0x17, 0xb8, 0x4f, 0x27, 0xaa, 0xd8, 0x09, 0xc1, 0xfa, 0xaf,
|
||||
0x01, 0x37, 0xb6, 0x03, 0xdc, 0x0e, 0x31, 0x9d, 0xd2, 0xc6, 0xe7, 0xe8, 0x11, 0xdc, 0x68, 0xba,
|
||||
0xbd, 0x90, 0x4d, 0x7d, 0xd0, 0x23, 0x61, 0xc3, 0x58, 0x1b, 0xbf, 0x37, 0xb3, 0xb9, 0xb2, 0xce,
|
||||
0xec, 0xa2, 0xca, 0xb6, 0x33, 0x03, 0xd0, 0x77, 0xa0, 0x4a, 0xb9, 0xa2, 0x4e, 0x2a, 0x73, 0x66,
|
||||
0x73, 0x75, 0x9d, 0xe0, 0xe0, 0x02, 0x07, 0x2f, 0xda, 0x7e, 0xef, 0x85, 0xdf, 0x0e, 0xda, 0x03,
|
||||
0xb2, 0x2e, 0x78, 0xec, 0x84, 0x1d, 0xad, 0xc1, 0xcc, 0xb1, 0x8f, 0x83, 0x76, 0xd8, 0xf3, 0xdc,
|
||||
0xe6, 0x4e, 0x63, 0x9c, 0x2a, 0x23, 0x93, 0x90, 0x09, 0xd3, 0xc7, 0x3e, 0xd7, 0x75, 0x82, 0x76,
|
||||
0x8b, 0x36, 0x1d, 0x7d, 0xe9, 0xe2, 0x80, 0x77, 0x57, 0xf8, 0xe8, 0x84, 0x64, 0x7d, 0x0a, 0xb5,
|
||||
0x94, 0xc2, 0x65, 0x96, 0x20, 0xad, 0xe0, 0xf8, 0x6b, 0x29, 0x68, 0x05, 0x30, 0xff, 0x18, 0x87,
|
||||
0xb4, 0x4d, 0x68, 0x1f, 0x3e, 0x8f, 0x60, 0x33, 0x86, 0x1d, 0x61, 0xf0, 0xaa, 0x2d, 0x93, 0xb2,
|
||||
0x66, 0x19, 0x2b, 0x36, 0xcb, 0x78, 0xda, 0x2c, 0xd6, 0xe7, 0x06, 0x2c, 0x64, 0x84, 0x96, 0xd2,
|
||||
0x7b, 0x0b, 0xe6, 0x84, 0x22, 0x14, 0xe9, 0x38, 0xdd, 0x1a, 0xc5, 0xba, 0xa7, 0x87, 0x58, 0x7f,
|
||||
0x30, 0xa0, 0xd6, 0xe2, 0x58, 0x62, 0xfd, 0x0f, 0xa0, 0xd6, 0x8d, 0xdb, 0x7b, 0x5e, 0xd0, 0xc2,
|
||||
0x21, 0x45, 0x34, 0xb3, 0x69, 0x15, 0xcd, 0xcc, 0x38, 0xed, 0xec, 0xd0, 0x94, 0x25, 0xc6, 0x34,
|
||||
0x1b, 0xa4, 0x70, 0x7b, 0x59, 0xbb, 0x30, 0x9f, 0x86, 0x47, 0x7c, 0xf4, 0x4d, 0xd9, 0x65, 0x39,
|
||||
0xb4, 0x05, 0xee, 0x0f, 0x49, 0x87, 0x2d, 0x31, 0x59, 0x3f, 0x03, 0x33, 0xb6, 0xf8, 0x23, 0xdf,
|
||||
0xef, 0xf7, 0x3a, 0x74, 0xfe, 0xc8, 0x02, 0x91, 0xc2, 0x32, 0x44, 0xa3, 0x18, 0xa2, 0x66, 0xa9,
|
||||
0x6f, 0x03, 0xec, 0x05, 0xde, 0x20, 0xb5, 0xd8, 0x12, 0xc5, 0xfa, 0xbd, 0x01, 0xb7, 0x72, 0x85,
|
||||
0x97, 0x5a, 0xf8, 0xa7, 0x30, 0x1f, 0x07, 0x88, 0x21, 0x26, 0xa1, 0xb4, 0xf6, 0xef, 0xe7, 0xad,
|
||||
0x10, 0x67, 0xb5, 0x95, 0x81, 0x56, 0x08, 0xab, 0x8f, 0x71, 0x18, 0x61, 0xb5, 0xf1, 0xb9, 0xc6,
|
||||
0x38, 0x79, 0xa1, 0xec, 0x7a, 0xeb, 0xfa, 0x47, 0x03, 0xde, 0x2b, 0x10, 0x5b, 0x6a, 0x95, 0xb5,
|
||||
0x76, 0x19, 0x2b, 0x6b, 0x97, 0x7f, 0x1a, 0x50, 0x7f, 0x16, 0xb4, 0x5d, 0x72, 0x8a, 0x03, 0xda,
|
||||
0x49, 0xe3, 0x56, 0x64, 0x91, 0x06, 0x4c, 0xf1, 0x60, 0xc0, 0x4d, 0x12, 0x37, 0xd1, 0x87, 0x70,
|
||||
0xe3, 0xb8, 0xef, 0xc8, 0x31, 0x8f, 0x59, 0x26, 0x43, 0x8d, 0xf8, 0x8e, 0xf0, 0xa5, 0xcc, 0xc7,
|
||||
0x4c, 0x94, 0xa1, 0x66, 0xed, 0x38, 0x51, 0x1c, 0x67, 0x2a, 0x99, 0x38, 0xf3, 0x14, 0x96, 0x74,
|
||||
0x0a, 0x94, 0xf3, 0xa0, 0xcf, 0x0c, 0x98, 0x7d, 0xe2, 0xf5, 0x5c, 0x71, 0x32, 0xe5, 0x5b, 0xe1,
|
||||
0x36, 0x80, 0x8d, 0xcf, 0x0f, 0x31, 0x21, 0xed, 0x2e, 0xe6, 0x16, 0x90, 0x28, 0x45, 0xb1, 0xf1,
|
||||
0x6a, 0x8d, 0xad, 0x2d, 0x98, 0x93, 0x70, 0x94, 0x53, 0xe6, 0xdf, 0x91, 0x4b, 0x66, 0xfc, 0x31,
|
||||
0xea, 0xf0, 0x5c, 0x82, 0xf9, 0x09, 0x20, 0xa3, 0x30, 0x8a, 0xed, 0x9e, 0xdd, 0xfd, 0x92, 0x65,
|
||||
0xc6, 0x15, 0xcb, 0x48, 0xa1, 0x62, 0x22, 0x1b, 0x2a, 0xa2, 0xfe, 0xfd, 0xb6, 0xeb, 0xf4, 0xb1,
|
||||
0x13, 0x39, 0x3d, 0x5b, 0x4f, 0x89, 0x82, 0x2c, 0x98, 0x65, 0x2d, 0x1b, 0x93, 0x61, 0x3f, 0x6c,
|
||||
0x4c, 0xd2, 0x78, 0x91, 0xa2, 0x59, 0x27, 0xb0, 0x9a, 0xaf, 0x5a, 0x39, 0x73, 0x9d, 0xc2, 0xec,
|
||||
0xc9, 0xb0, 0x17, 0x8e, 0xb0, 0xf4, 0xd7, 0x3b, 0x18, 0xb7, 0x60, 0x4e, 0x92, 0x53, 0x0e, 0xeb,
|
||||
0x17, 0x06, 0xd4, 0xe3, 0x68, 0x9b, 0x5c, 0x82, 0x8a, 0x51, 0x5f, 0x2b, 0x94, 0x45, 0x01, 0x72,
|
||||
0xaf, 0xd7, 0x0f, 0x71, 0x40, 0x17, 0xb4, 0x62, 0xf3, 0x56, 0x24, 0xef, 0x08, 0xbf, 0x0a, 0x5b,
|
||||
0xf8, 0x9c, 0xae, 0x64, 0xc5, 0x8e, 0x9b, 0xd6, 0x5f, 0x0d, 0x58, 0xd2, 0x61, 0x2c, 0x75, 0x18,
|
||||
0xec, 0x01, 0x0c, 0x92, 0xdb, 0x21, 0x3b, 0x06, 0x3e, 0xcc, 0x0b, 0x77, 0x4c, 0xda, 0xde, 0xb0,
|
||||
0xdf, 0xa7, 0xa7, 0xa9, 0x34, 0x32, 0x92, 0xec, 0x72, 0xb8, 0x4c, 0x8f, 0xb8, 0x69, 0xfd, 0x5a,
|
||||
0x81, 0x2b, 0xae, 0x4a, 0x85, 0x41, 0x40, 0x82, 0x35, 0x46, 0xef, 0x50, 0xb2, 0xb8, 0xeb, 0x05,
|
||||
0x81, 0xdf, 0x1a, 0xb0, 0xac, 0x85, 0xf4, 0x2e, 0x4d, 0x68, 0xfd, 0xcd, 0x00, 0xf4, 0xb4, 0xd7,
|
||||
0x39, 0x93, 0xf8, 0x8a, 0x8d, 0xf4, 0x35, 0x98, 0x8f, 0xf8, 0xb1, 0xc3, 0x14, 0x97, 0x4c, 0xa5,
|
||||
0xd0, 0x23, 0xf0, 0x36, 0x6e, 0x13, 0xcf, 0xe5, 0xe6, 0xe2, 0xad, 0xac, 0xb1, 0x2a, 0xc5, 0x2e,
|
||||
0x37, 0x99, 0x71, 0xb9, 0x8f, 0xa1, 0xda, 0x74, 0x36, 0x59, 0xe8, 0xc8, 0x3d, 0xea, 0xa9, 0x68,
|
||||
0x1a, 0x70, 0x58, 0xca, 0xc2, 0x5b, 0xd6, 0xa7, 0xb0, 0xa8, 0xa8, 0x5b, 0x6a, 0x01, 0x1e, 0xc0,
|
||||
0x9c, 0x40, 0x21, 0xad, 0xc1, 0x3c, 0x77, 0x75, 0xd1, 0x67, 0xa7, 0xd9, 0xac, 0x21, 0xf5, 0xf5,
|
||||
0xe8, 0x38, 0xc0, 0x0e, 0x45, 0x11, 0xfb, 0x7a, 0x3a, 0xd0, 0x1a, 0x4a, 0xa0, 0x5d, 0x83, 0x19,
|
||||
0x4f, 0x8d, 0x53, 0xde, 0x88, 0x71, 0xea, 0x33, 0xe6, 0x10, 0x8a, 0xdc, 0x6b, 0x65, 0x2f, 0x23,
|
||||
0xdf, 0xe0, 0x13, 0x76, 0xeb, 0xef, 0x06, 0xdc, 0x6c, 0xba, 0x17, 0xbd, 0x10, 0x47, 0xc8, 0x9e,
|
||||
0x79, 0x22, 0x42, 0x5f, 0x1d, 0x87, 0xf3, 0x0f, 0xa9, 0x64, 0xa3, 0x4d, 0xa4, 0x36, 0xda, 0x47,
|
||||
0xb0, 0xc0, 0x64, 0xc9, 0xbb, 0xb5, 0x42, 0x77, 0xab, 0xda, 0x51, 0xb8, 0xe9, 0x7e, 0x6e, 0x40,
|
||||
0x5d, 0x03, 0xfb, 0x4b, 0xdd, 0x3a, 0x2e, 0xdc, 0x14, 0x97, 0xf2, 0x7e, 0x7f, 0x14, 0x67, 0xbd,
|
||||
0xde, 0x85, 0xf7, 0x37, 0xd2, 0xb9, 0x24, 0x09, 0x7c, 0xa7, 0xf1, 0xea, 0x77, 0x06, 0x4c, 0x6f,
|
||||
0x1f, 0xb6, 0x28, 0x5b, 0x3a, 0x8b, 0x36, 0x5e, 0xaf, 0x4c, 0x70, 0x0f, 0x6a, 0x4c, 0x56, 0x9b,
|
||||
0x84, 0x38, 0x38, 0x6a, 0x0f, 0xe2, 0x6b, 0x5f, 0x96, 0x8c, 0xee, 0xf2, 0x9c, 0x95, 0x91, 0x9a,
|
||||
0x0e, 0x37, 0x55, 0x9a, 0x18, 0x85, 0xf7, 0x99, 0xd8, 0x58, 0xd1, 0xa2, 0xac, 0x72, 0x6c, 0x74,
|
||||
0x66, 0xb6, 0x2c, 0x09, 0x01, 0xed, 0x00, 0xfc, 0xa0, 0xdd, 0xed, 0xb9, 0xd4, 0xd4, 0xbc, 0xc2,
|
||||
0x71, 0x57, 0x03, 0x9d, 0xdf, 0xee, 0x13, 0x5e, 0x5b, 0x1a, 0x37, 0xc2, 0x12, 0x7e, 0x61, 0xc0,
|
||||
0x6c, 0x82, 0x8a, 0xf8, 0xe8, 0x1b, 0x50, 0x8d, 0xcd, 0x47, 0x78, 0x5d, 0xa6, 0x16, 0xdf, 0x4e,
|
||||
0x38, 0xdd, 0x4e, 0x38, 0xde, 0x10, 0x4e, 0x61, 0x8b, 0xe1, 0x80, 0x50, 0x94, 0x15, 0x3b, 0x21,
|
||||
0x58, 0x17, 0x09, 0x44, 0x12, 0x59, 0x2e, 0x2d, 0xd3, 0x78, 0x33, 0xb6, 0x51, 0xc3, 0x89, 0xf5,
|
||||
0x27, 0x03, 0xe6, 0x24, 0xc1, 0xef, 0xca, 0x38, 0x26, 0x4c, 0xc7, 0xb6, 0xe0, 0xb6, 0x11, 0x6d,
|
||||
0xeb, 0x38, 0xa9, 0xba, 0x68, 0xdc, 0xdd, 0x49, 0xbb, 0xbb, 0x33, 0x82, 0xce, 0x67, 0x50, 0x67,
|
||||
0x4d, 0x56, 0xbd, 0x6a, 0x85, 0xed, 0x70, 0x48, 0x8a, 0x27, 0x5d, 0x82, 0x49, 0xc6, 0x16, 0x9f,
|
||||
0xa4, 0xac, 0x35, 0xc2, 0xe6, 0x6b, 0xc0, 0x92, 0x4e, 0x18, 0xcb, 0xcc, 0x10, 0xef, 0xa2, 0xe9,
|
||||
0xb4, 0xd7, 0xc7, 0x57, 0x82, 0xa0, 0x61, 0xcb, 0x89, 0xc3, 0x0a, 0x6b, 0xa5, 0x8b, 0x93, 0xe3,
|
||||
0x99, 0xe2, 0xe4, 0x08, 0x97, 0xb2, 0x3a, 0x2c, 0x2a, 0x38, 0x88, 0x6f, 0x1d, 0xc0, 0x8d, 0x1d,
|
||||
0xdc, 0xc7, 0x52, 0x51, 0xf3, 0x3a, 0x46, 0x5f, 0x80, 0x5a, 0x6a, 0x36, 0xe2, 0x5b, 0x87, 0x50,
|
||||
0x8b, 0x17, 0x76, 0xeb, 0xa7, 0x4d, 0xe7, 0xba, 0x12, 0x1e, 0x26, 0x25, 0x41, 0x36, 0x1d, 0xf1,
|
||||
0xd1, 0xd7, 0x93, 0x40, 0xc9, 0x9d, 0x48, 0xd9, 0xcb, 0x82, 0xc1, 0xfa, 0x87, 0x92, 0x82, 0x90,
|
||||
0xed, 0xc3, 0x56, 0x31, 0x2c, 0x13, 0xa6, 0x23, 0xa3, 0x49, 0xa1, 0x53, 0xb4, 0x33, 0xae, 0x31,
|
||||
0xfe, 0x66, 0x7c, 0x58, 0xb3, 0x7e, 0xff, 0x52, 0xef, 0xf9, 0x14, 0x37, 0xf1, 0xd1, 0xf7, 0x61,
|
||||
0x8a, 0x9d, 0x1b, 0xb1, 0x2b, 0x8f, 0x7a, 0xdc, 0xc4, 0xc3, 0xd0, 0xae, 0xc6, 0xbf, 0xbf, 0xa2,
|
||||
0x55, 0x82, 0xe5, 0xaa, 0x39, 0x5a, 0xdc, 0x06, 0x60, 0x12, 0xa4, 0xf0, 0x27, 0x51, 0xac, 0x5f,
|
||||
0x1a, 0xd0, 0xb0, 0xf1, 0xc0, 0xbb, 0xc0, 0xaf, 0x65, 0xfe, 0x06, 0x4c, 0x31, 0x27, 0x20, 0xfc,
|
||||
0xfe, 0x1d, 0x37, 0x5f, 0xab, 0x02, 0xee, 0x64, 0x2a, 0xe0, 0x8e, 0x75, 0x08, 0x2b, 0x39, 0x68,
|
||||
0xd8, 0xc1, 0x4f, 0x86, 0x9d, 0x0e, 0x26, 0x84, 0xd7, 0x98, 0xe3, 0x66, 0xe4, 0xa1, 0xa7, 0xed,
|
||||
0x5e, 0x1f, 0x3b, 0x1c, 0x0d, 0x6f, 0x59, 0x9f, 0x1b, 0x50, 0x7f, 0xe4, 0x38, 0x6f, 0x43, 0x35,
|
||||
0x47, 0x55, 0xcd, 0x29, 0x54, 0xed, 0x09, 0x2c, 0xe9, 0xa0, 0x94, 0xd2, 0xab, 0x07, 0xb5, 0x9d,
|
||||
0x1e, 0x19, 0xf4, 0x08, 0x11, 0x31, 0xc2, 0x84, 0x69, 0x2f, 0x53, 0x93, 0xf5, 0xfc, 0x91, 0x6f,
|
||||
0xef, 0x0d, 0x98, 0xea, 0xa6, 0x6f, 0xb7, 0xbc, 0x69, 0xed, 0xc2, 0x7c, 0x5a, 0x14, 0x2b, 0x33,
|
||||
0x74, 0x46, 0x29, 0x33, 0x24, 0x4c, 0xd6, 0x5f, 0x0c, 0x40, 0x87, 0xc3, 0x10, 0x67, 0x8e, 0x93,
|
||||
0xb7, 0x84, 0x3a, 0x32, 0xdc, 0x50, 0x2e, 0x1a, 0xf1, 0x16, 0xb2, 0x60, 0x76, 0x30, 0x0c, 0xb1,
|
||||
0xd3, 0xc2, 0x1d, 0xcf, 0x75, 0x08, 0xcd, 0xfe, 0xe6, 0xec, 0x14, 0xcd, 0xda, 0x87, 0x45, 0x05,
|
||||
0x69, 0x39, 0xa5, 0x7f, 0x61, 0x40, 0x63, 0xbb, 0xed, 0x76, 0x70, 0xff, 0xdd, 0xab, 0x6e, 0x1d,
|
||||
0xc1, 0x4a, 0x0e, 0x96, 0x72, 0xca, 0x9d, 0xc2, 0xac, 0x98, 0xe9, 0x6d, 0x6e, 0xc0, 0x2d, 0x98,
|
||||
0x93, 0xe4, 0x94, 0xc3, 0xda, 0x07, 0x94, 0xd1, 0xfd, 0x6d, 0x22, 0xde, 0x87, 0x45, 0x45, 0x5a,
|
||||
0x39, 0xdc, 0x7f, 0x36, 0x60, 0xa5, 0x95, 0x3a, 0x61, 0x8e, 0x7a, 0x9d, 0x33, 0xb7, 0x3d, 0x88,
|
||||
0x6f, 0x2c, 0xdd, 0x74, 0xea, 0xd5, 0x4d, 0x52, 0x2f, 0x97, 0x33, 0xc6, 0xa7, 0x63, 0xdc, 0x4e,
|
||||
0x69, 0x3d, 0x5e, 0xac, 0xf5, 0x84, 0xaa, 0x75, 0xb2, 0xbb, 0x2a, 0xa9, 0xdd, 0x75, 0x0c, 0x66,
|
||||
0x1e, 0xd0, 0x72, 0x75, 0xc9, 0x80, 0xbe, 0x40, 0xb1, 0x92, 0x41, 0x6b, 0xe8, 0xf3, 0x92, 0x7c,
|
||||
0x5c, 0xaf, 0xc8, 0x00, 0x35, 0x8a, 0x80, 0x8e, 0xa5, 0x22, 0x40, 0x81, 0xfa, 0xd1, 0x61, 0x78,
|
||||
0x2b, 0x57, 0x68, 0xa9, 0x15, 0xbc, 0x56, 0xb5, 0xe2, 0x92, 0x5e, 0x8b, 0x12, 0x1c, 0x5f, 0xda,
|
||||
0x83, 0xeb, 0xaf, 0xd8, 0xc5, 0x46, 0x91, 0x5c, 0xce, 0x04, 0x6f, 0xe2, 0xd9, 0xf5, 0x3f, 0x63,
|
||||
0x50, 0x4f, 0xef, 0x2f, 0xa9, 0xa2, 0x9a, 0xe3, 0x04, 0x25, 0x76, 0xc0, 0x08, 0x0e, 0xf0, 0x2d,
|
||||
0xc9, 0xb5, 0x2a, 0x3c, 0xeb, 0xef, 0x7a, 0x5e, 0xb7, 0x8f, 0xd9, 0x0f, 0x12, 0x2f, 0x87, 0xa7,
|
||||
0xeb, 0xad, 0x30, 0xe8, 0xb9, 0xdd, 0x1f, 0xb6, 0xfb, 0x43, 0x2c, 0x39, 0xde, 0x03, 0x98, 0x3a,
|
||||
0x6d, 0x77, 0xf0, 0x27, 0xf6, 0x01, 0x2d, 0xf0, 0x5c, 0x35, 0x30, 0x66, 0x46, 0xdf, 0x86, 0x6a,
|
||||
0x20, 0xd2, 0x8c, 0x29, 0x3a, 0xf2, 0x96, 0x32, 0xb2, 0xe9, 0x86, 0xf7, 0x37, 0xd9, 0xc0, 0x84,
|
||||
0x1b, 0x7d, 0x04, 0x63, 0xf8, 0x55, 0x63, 0x7a, 0x04, 0x69, 0x63, 0xf8, 0x95, 0xf5, 0x14, 0x96,
|
||||
0x74, 0x36, 0x2e, 0xe5, 0xbf, 0x9b, 0xff, 0x5b, 0x04, 0xf6, 0xf7, 0x09, 0xfa, 0x2e, 0xcc, 0x74,
|
||||
0x92, 0x7f, 0x16, 0x50, 0x3d, 0x1e, 0x97, 0xfa, 0x71, 0xc3, 0x5c, 0xd2, 0x91, 0x89, 0x8f, 0x1e,
|
||||
0x40, 0xf5, 0x27, 0xf1, 0xf3, 0x15, 0x5a, 0xe4, 0x4c, 0xf2, 0xc3, 0x9a, 0x79, 0x53, 0x25, 0xb2,
|
||||
0x71, 0xe7, 0xf1, 0xdb, 0x88, 0x18, 0x27, 0xbf, 0xca, 0x88, 0x71, 0xe9, 0x27, 0x94, 0x2d, 0x98,
|
||||
0xeb, 0xca, 0xff, 0x1a, 0xa0, 0xe5, 0xf8, 0xcf, 0x91, 0xcc, 0x6f, 0x0f, 0x66, 0x43, 0xdf, 0x41,
|
||||
0x7c, 0xf4, 0x10, 0x66, 0x89, 0xf4, 0x08, 0x8f, 0x62, 0xdd, 0x32, 0x3f, 0x0e, 0x98, 0xcb, 0x5a,
|
||||
0x3a, 0xf1, 0xd1, 0x8f, 0x61, 0xb9, 0xab, 0x7f, 0x01, 0x47, 0x77, 0x32, 0x52, 0xd5, 0x17, 0x68,
|
||||
0xd3, 0xba, 0x8a, 0x85, 0xf8, 0xe8, 0x14, 0x56, 0xba, 0x79, 0xcf, 0xc9, 0xe8, 0x83, 0x64, 0x82,
|
||||
0xdc, 0x77, 0x6e, 0xf3, 0xee, 0xd5, 0x4c, 0xc4, 0x47, 0x27, 0x80, 0x42, 0xe5, 0x4d, 0x15, 0xad,
|
||||
0xf2, 0xb1, 0xda, 0xf7, 0x62, 0xf3, 0xbd, 0x82, 0x5e, 0xe2, 0xa3, 0x0e, 0x34, 0xba, 0x39, 0x0f,
|
||||
0x76, 0xc8, 0x4a, 0xfd, 0xe6, 0xa3, 0x7d, 0xac, 0x34, 0x3f, 0xb8, 0x92, 0x87, 0xe1, 0xee, 0x2a,
|
||||
0x2f, 0x4e, 0x02, 0xb7, 0xf6, 0xc1, 0x4c, 0xe0, 0xce, 0x79, 0xaa, 0x7a, 0x06, 0x8b, 0x5d, 0xf5,
|
||||
0x09, 0x06, 0xe9, 0x47, 0x89, 0x5d, 0x76, 0xbb, 0xa8, 0x9b, 0xf8, 0x68, 0x1f, 0x6a, 0x67, 0xe9,
|
||||
0x37, 0x05, 0x14, 0xff, 0xeb, 0xa4, 0x3e, 0xad, 0x98, 0x66, 0x5e, 0x97, 0x50, 0x39, 0x53, 0xa4,
|
||||
0x97, 0x55, 0x56, 0xdf, 0x0d, 0x64, 0x95, 0x75, 0xd5, 0xfd, 0x23, 0x58, 0xe8, 0x65, 0xeb, 0xd6,
|
||||
0xe8, 0x56, 0x5c, 0x6a, 0xd6, 0x14, 0xe2, 0xcd, 0xd5, 0xfc, 0x4e, 0x36, 0x5f, 0x37, 0x5b, 0x13,
|
||||
0x16, 0xf3, 0xe9, 0xca, 0xd3, 0xe6, 0x6a, 0x7e, 0x27, 0x73, 0x54, 0xb9, 0x74, 0x21, 0x1c, 0x35,
|
||||
0x53, 0x1e, 0x31, 0x97, 0xb5, 0x74, 0xe2, 0xa3, 0xfb, 0x30, 0x1d, 0xd3, 0x10, 0xca, 0x30, 0x45,
|
||||
0x03, 0x17, 0x15, 0x1a, 0x0b, 0x4d, 0x22, 0x66, 0xa0, 0x2c, 0x07, 0x91, 0x43, 0x53, 0xba, 0x42,
|
||||
0x78, 0x22, 0xea, 0x56, 0x52, 0x49, 0x4b, 0x2c, 0x90, 0xb6, 0xb4, 0x26, 0x16, 0x48, 0x5f, 0x0b,
|
||||
0x8b, 0x76, 0x4f, 0xa6, 0x04, 0x25, 0x76, 0x8f, 0x5a, 0x22, 0x13, 0xbb, 0x47, 0x53, 0xb5, 0x8a,
|
||||
0xa2, 0xbc, 0x54, 0x67, 0x12, 0x51, 0x3e, 0x5d, 0xc9, 0x12, 0x51, 0x3e, 0x53, 0x92, 0x8a, 0x54,
|
||||
0x53, 0x2b, 0x29, 0x39, 0xee, 0xc6, 0x53, 0xf8, 0x1c, 0x77, 0x13, 0x59, 0xf5, 0x73, 0xa8, 0x6b,
|
||||
0x4b, 0x09, 0xe8, 0x7d, 0x3e, 0x2e, 0xaf, 0xec, 0x61, 0xae, 0x15, 0x33, 0x30, 0xb8, 0x6a, 0x2e,
|
||||
0x2f, 0xe0, 0x6a, 0x2b, 0x0e, 0x02, 0x6e, 0x4e, 0x11, 0xe0, 0x21, 0xcc, 0xca, 0x79, 0xb6, 0xd8,
|
||||
0x8a, 0x99, 0x3c, 0x5f, 0x6c, 0x45, 0x25, 0x29, 0xdf, 0x87, 0x5a, 0x26, 0xb3, 0x13, 0x4b, 0xa9,
|
||||
0x66, 0x9f, 0x62, 0x29, 0x75, 0xc9, 0xe0, 0x73, 0xa8, 0x6b, 0x33, 0x45, 0x61, 0xb9, 0xbc, 0x9c,
|
||||
0x56, 0x58, 0x2e, 0x3f, 0xd1, 0x7c, 0x00, 0x55, 0x41, 0x16, 0x7b, 0x5f, 0xce, 0xca, 0xc4, 0xde,
|
||||
0x4f, 0x27, 0x4f, 0xfb, 0x50, 0xcb, 0x4c, 0x2a, 0xb4, 0x53, 0x33, 0x3b, 0xa1, 0x9d, 0x2e, 0x0d,
|
||||
0xfb, 0x51, 0xf6, 0x96, 0x13, 0x67, 0x2a, 0x68, 0x2d, 0x73, 0x1c, 0x2b, 0x19, 0x97, 0x79, 0xe7,
|
||||
0x0a, 0x0e, 0x76, 0x74, 0xe7, 0xa4, 0x10, 0xf2, 0xd1, 0x9d, 0x93, 0xd7, 0xc8, 0x47, 0x77, 0x6e,
|
||||
0x16, 0xc2, 0x7c, 0x25, 0x73, 0x39, 0x97, 0x7d, 0x45, 0xcd, 0x18, 0x64, 0x5f, 0xd1, 0xdd, 0xea,
|
||||
0x4f, 0x00, 0xa9, 0x37, 0x3f, 0x31, 0xa5, 0xf6, 0xe2, 0x2d, 0xa6, 0xd4, 0x5f, 0x19, 0xb7, 0x6a,
|
||||
0xcf, 0xe7, 0xd6, 0xd9, 0xbf, 0xc8, 0x1f, 0xd3, 0xef, 0xcb, 0x49, 0x7a, 0xef, 0xbc, 0xff, 0xff,
|
||||
0x00, 0x00, 0x00, 0xff, 0xff, 0xe6, 0x70, 0x4b, 0xcf, 0xa7, 0x2c, 0x00, 0x00,
|
||||
0x15, 0x57, 0xdb, 0x99, 0xd8, 0xf3, 0xec, 0xc9, 0xd8, 0xe5, 0x8c, 0x33, 0xee, 0x78, 0xbd, 0x4e,
|
||||
0x6d, 0x58, 0x22, 0x58, 0x6c, 0xe1, 0x48, 0x11, 0xb0, 0x88, 0x10, 0xff, 0x8b, 0x27, 0xf1, 0x1f,
|
||||
0xdc, 0x93, 0xe5, 0x10, 0x09, 0x85, 0xc9, 0x74, 0x79, 0x34, 0x78, 0xa6, 0xbb, 0xdd, 0xd5, 0x63,
|
||||
0x07, 0x2e, 0x2b, 0x2e, 0x48, 0x8b, 0x90, 0x00, 0x21, 0x71, 0x02, 0xc1, 0x9e, 0xe0, 0xc0, 0x81,
|
||||
0x03, 0x9c, 0x11, 0x77, 0xbe, 0x00, 0x57, 0xbe, 0x00, 0x9f, 0x00, 0x09, 0x75, 0x55, 0x75, 0x75,
|
||||
0x75, 0x77, 0x75, 0x7b, 0xd2, 0x4e, 0x36, 0x97, 0x96, 0xea, 0xd5, 0xab, 0xaa, 0xdf, 0x7b, 0xf5,
|
||||
0xde, 0xab, 0x7a, 0xaf, 0x1a, 0xe6, 0x7b, 0xbe, 0x3b, 0xf2, 0xd6, 0xd9, 0x77, 0xcd, 0xf3, 0xdd,
|
||||
0xc0, 0x45, 0x15, 0xd6, 0x30, 0xef, 0x1c, 0x79, 0xc4, 0x79, 0xd1, 0x3a, 0x58, 0xf7, 0x4e, 0x7b,
|
||||
0xeb, 0xac, 0x67, 0x9d, 0xda, 0xa7, 0x2f, 0x2e, 0xe8, 0xfa, 0x05, 0xe5, 0x9c, 0xe6, 0x97, 0xf3,
|
||||
0x59, 0xfc, 0x8e, 0xe7, 0x11, 0x5f, 0x30, 0xe2, 0xef, 0x00, 0x6c, 0xb9, 0xc3, 0xa1, 0xeb, 0x58,
|
||||
0x84, 0x7a, 0xa8, 0x09, 0x53, 0x3b, 0xbe, 0xbf, 0xe5, 0xda, 0xa4, 0x69, 0xac, 0x1a, 0xf7, 0x2a,
|
||||
0x56, 0xd4, 0x44, 0x8b, 0x70, 0x7d, 0xc7, 0xf7, 0x0f, 0x68, 0xaf, 0x39, 0xb1, 0x6a, 0xdc, 0xab,
|
||||
0x5a, 0xa2, 0x85, 0x9f, 0x00, 0x7a, 0x1c, 0x82, 0x7a, 0x64, 0xdb, 0x07, 0x64, 0xf8, 0x92, 0xf8,
|
||||
0x2d, 0xe7, 0xc4, 0x0d, 0xb9, 0x3f, 0xa1, 0xc4, 0x6f, 0x6d, 0xb3, 0x69, 0xaa, 0x96, 0x68, 0xa1,
|
||||
0x65, 0xa8, 0x5a, 0xee, 0x80, 0xec, 0x93, 0x73, 0x32, 0x60, 0x13, 0x55, 0xac, 0x98, 0x80, 0xff,
|
||||
0x6b, 0xc0, 0x8d, 0x2d, 0x9f, 0x74, 0x02, 0xc2, 0xa6, 0xb4, 0xc8, 0x19, 0x7a, 0x04, 0x37, 0x5a,
|
||||
0x4e, 0x3f, 0xe0, 0x53, 0xef, 0xf7, 0x69, 0xd0, 0x34, 0x56, 0x27, 0xef, 0xcd, 0x6c, 0x2c, 0xad,
|
||||
0x71, 0xbd, 0x64, 0xd7, 0xb6, 0x52, 0x03, 0xd0, 0xb7, 0xa0, 0xca, 0xb8, 0xc2, 0x4e, 0xb6, 0xe6,
|
||||
0xcc, 0xc6, 0xf2, 0x1a, 0x25, 0xfe, 0x39, 0xf1, 0x5f, 0x74, 0xbc, 0xfe, 0x0b, 0xaf, 0xe3, 0x77,
|
||||
0x86, 0x74, 0x4d, 0xf2, 0x58, 0x31, 0x3b, 0x5a, 0x85, 0x99, 0x23, 0x8f, 0xf8, 0x9d, 0xa0, 0xef,
|
||||
0x3a, 0xad, 0xed, 0xe6, 0x24, 0x13, 0x46, 0x25, 0x21, 0x13, 0xa6, 0x8f, 0x3c, 0x21, 0xeb, 0x35,
|
||||
0xd6, 0x2d, 0xdb, 0x6c, 0xf4, 0x85, 0x43, 0x7c, 0xd1, 0x5d, 0x11, 0xa3, 0x63, 0x12, 0xfe, 0x14,
|
||||
0xea, 0x09, 0x81, 0xcb, 0x6c, 0x41, 0x52, 0xc0, 0xc9, 0xd7, 0x12, 0x10, 0xfb, 0x30, 0xf7, 0x98,
|
||||
0x04, 0xac, 0x4d, 0x59, 0x1f, 0x39, 0x0b, 0x61, 0x73, 0x86, 0x6d, 0xa9, 0xf0, 0xaa, 0xa5, 0x92,
|
||||
0xd2, 0x6a, 0x99, 0x28, 0x56, 0xcb, 0x64, 0x52, 0x2d, 0xf8, 0x33, 0x03, 0xe6, 0x53, 0x8b, 0x96,
|
||||
0x92, 0x7b, 0x13, 0x6a, 0x52, 0x10, 0x86, 0x74, 0x92, 0x99, 0x46, 0xb1, 0xec, 0xc9, 0x21, 0xf8,
|
||||
0xf7, 0x06, 0xd4, 0xdb, 0x02, 0x4b, 0x24, 0xff, 0x3e, 0xd4, 0x7b, 0x51, 0x7b, 0xd7, 0xf5, 0xdb,
|
||||
0x24, 0x60, 0x88, 0x66, 0x36, 0x70, 0xd1, 0xcc, 0x9c, 0xd3, 0x4a, 0x0f, 0x4d, 0x68, 0x62, 0x42,
|
||||
0x63, 0x20, 0x85, 0xe6, 0x85, 0x77, 0x60, 0x2e, 0x09, 0x8f, 0x7a, 0xe8, 0xeb, 0xaa, 0xcb, 0x0a,
|
||||
0x68, 0xf3, 0xc2, 0x1f, 0xe2, 0x0e, 0x4b, 0x61, 0xc2, 0x3f, 0x01, 0x33, 0xd2, 0xf8, 0x23, 0xcf,
|
||||
0x1b, 0xf4, 0xbb, 0x6c, 0xfe, 0x50, 0x03, 0xa1, 0xc0, 0x2a, 0x44, 0xa3, 0x18, 0xa2, 0x66, 0xab,
|
||||
0x57, 0x00, 0x76, 0x7d, 0x77, 0x98, 0xd8, 0x6c, 0x85, 0x82, 0x7f, 0x67, 0xc0, 0xed, 0xdc, 0xc5,
|
||||
0x4b, 0x6d, 0xfc, 0x53, 0x98, 0x8b, 0x02, 0xc4, 0x88, 0xd0, 0x40, 0xd9, 0xfb, 0xf7, 0xf3, 0x76,
|
||||
0x48, 0xb0, 0x5a, 0x99, 0x81, 0x38, 0x80, 0xe5, 0xc7, 0x24, 0x08, 0xb1, 0x5a, 0xe4, 0x4c, 0xa3,
|
||||
0x9c, 0xbc, 0x50, 0x76, 0xb5, 0x7d, 0xfd, 0x83, 0x01, 0xef, 0x15, 0x2c, 0x5b, 0x6a, 0x97, 0xb5,
|
||||
0x7a, 0x99, 0x28, 0xab, 0x97, 0x7f, 0x18, 0xd0, 0x78, 0xe6, 0x77, 0x1c, 0x7a, 0x42, 0x7c, 0xd6,
|
||||
0xc9, 0xe2, 0x56, 0xa8, 0x91, 0x26, 0x4c, 0x89, 0x60, 0x20, 0x54, 0x12, 0x35, 0xd1, 0x87, 0x70,
|
||||
0xe3, 0x68, 0x60, 0xab, 0x31, 0x8f, 0x6b, 0x26, 0x45, 0x0d, 0xf9, 0x0e, 0xc9, 0x85, 0xca, 0xc7,
|
||||
0x55, 0x94, 0xa2, 0xa6, 0xf5, 0x78, 0xad, 0x38, 0xce, 0x54, 0x52, 0x71, 0xe6, 0x29, 0x2c, 0xea,
|
||||
0x04, 0x28, 0xe7, 0x41, 0xff, 0x32, 0x60, 0xf6, 0x89, 0xdb, 0x77, 0xe4, 0xc9, 0x94, 0xaf, 0x85,
|
||||
0x15, 0x00, 0x8b, 0x9c, 0x1d, 0x10, 0x4a, 0x3b, 0x3d, 0x22, 0x34, 0xa0, 0x50, 0x8a, 0x62, 0xe3,
|
||||
0x18, 0x12, 0xaf, 0x00, 0x84, 0x38, 0xda, 0xee, 0xc8, 0xef, 0x12, 0x26, 0x73, 0xc5, 0x52, 0x28,
|
||||
0xe8, 0x2e, 0xd4, 0x5a, 0xce, 0x79, 0x3f, 0x90, 0xaa, 0xbd, 0xce, 0xe6, 0x48, 0x12, 0xf1, 0x26,
|
||||
0xd4, 0x14, 0x69, 0xca, 0xa9, 0xe4, 0xdf, 0xa1, 0x63, 0xa7, 0xbc, 0x3a, 0xec, 0x70, 0x1d, 0x4a,
|
||||
0xc4, 0x39, 0xa2, 0xca, 0x62, 0x14, 0xef, 0x5e, 0xda, 0x87, 0x14, 0xfd, 0x4e, 0x66, 0xf4, 0xab,
|
||||
0x04, 0x9c, 0x6b, 0xe9, 0x80, 0x13, 0xf6, 0xef, 0x75, 0x1c, 0x7b, 0x40, 0xec, 0x30, 0x74, 0x70,
|
||||
0xab, 0x50, 0x28, 0x08, 0xc3, 0x2c, 0x6f, 0x59, 0x84, 0x8e, 0x06, 0x01, 0x53, 0x50, 0xc5, 0x4a,
|
||||
0xd0, 0xf0, 0x31, 0x2c, 0xe7, 0x8b, 0x56, 0x4e, 0x5d, 0x27, 0x30, 0x7b, 0x3c, 0xea, 0x07, 0x63,
|
||||
0x18, 0xd0, 0xd5, 0x8e, 0xd7, 0x4d, 0xa8, 0x29, 0xeb, 0x94, 0xc3, 0xfa, 0xb9, 0x01, 0x8d, 0x28,
|
||||
0x66, 0xc7, 0x57, 0xa9, 0x62, 0xd4, 0x57, 0x0a, 0x88, 0x61, 0x98, 0xdd, 0xed, 0x0f, 0x02, 0xe2,
|
||||
0xb3, 0x0d, 0xad, 0x58, 0xa2, 0x15, 0xae, 0x77, 0x48, 0x5e, 0x05, 0x6d, 0x72, 0x26, 0x6c, 0x3d,
|
||||
0x6a, 0xe2, 0xbf, 0x18, 0xb0, 0xa8, 0xc3, 0x58, 0xea, 0x48, 0xd9, 0x05, 0x18, 0xc6, 0x77, 0x4c,
|
||||
0x7e, 0x98, 0x7c, 0x98, 0x17, 0x34, 0xf9, 0x6a, 0xbb, 0xa3, 0xc1, 0x80, 0x9d, 0xc9, 0xca, 0xc8,
|
||||
0x70, 0x65, 0x47, 0xc0, 0xe5, 0x72, 0x44, 0x4d, 0xfc, 0xab, 0x0c, 0x5c, 0x79, 0xe1, 0x2a, 0x0c,
|
||||
0x25, 0x0a, 0xac, 0x09, 0x76, 0x13, 0x53, 0x97, 0xbb, 0x52, 0x28, 0xc1, 0xbf, 0x31, 0xe0, 0x96,
|
||||
0x16, 0xd2, 0xbb, 0x54, 0x21, 0xfe, 0xab, 0x01, 0xe8, 0x69, 0xbf, 0x7b, 0xaa, 0xf0, 0x15, 0x2b,
|
||||
0xe9, 0x2b, 0x30, 0x17, 0xf2, 0x13, 0x9b, 0x0b, 0xae, 0xa8, 0x2a, 0x43, 0x0f, 0xc1, 0x5b, 0xa4,
|
||||
0x43, 0x5d, 0x47, 0xa8, 0x4b, 0xb4, 0xd2, 0xca, 0xaa, 0x14, 0xbb, 0xdc, 0xf5, 0x94, 0xcb, 0x7d,
|
||||
0x0c, 0xd5, 0x96, 0xbd, 0xc1, 0x43, 0x47, 0xee, 0x85, 0x81, 0x2d, 0xcd, 0x02, 0x0e, 0x4f, 0x7c,
|
||||
0x44, 0x0b, 0x7f, 0x0a, 0x0b, 0x19, 0x71, 0x4b, 0x6d, 0xc0, 0x03, 0xa8, 0x49, 0x14, 0xca, 0x1e,
|
||||
0xcc, 0x09, 0x57, 0x97, 0x7d, 0x56, 0x92, 0x0d, 0x8f, 0x98, 0xaf, 0x87, 0xc7, 0x01, 0xb1, 0x19,
|
||||
0x8a, 0xc8, 0xd7, 0x93, 0x81, 0xd6, 0xc8, 0x04, 0xda, 0x55, 0x98, 0x71, 0xb3, 0x71, 0xca, 0x1d,
|
||||
0x33, 0x4e, 0xfd, 0x8c, 0x3b, 0x44, 0x66, 0xdd, 0x2b, 0xe5, 0x40, 0x63, 0xe7, 0x01, 0x31, 0x3b,
|
||||
0xfe, 0x9b, 0x01, 0x37, 0xf9, 0xe9, 0x18, 0x22, 0x7b, 0xe6, 0xca, 0x08, 0x7d, 0x79, 0x1c, 0xce,
|
||||
0x3f, 0xa4, 0x62, 0x43, 0xbb, 0x96, 0x30, 0xb4, 0x8f, 0x60, 0x9e, 0xaf, 0xa5, 0x5a, 0x6b, 0x85,
|
||||
0x59, 0x6b, 0xb6, 0xa3, 0xd0, 0xe8, 0x7e, 0x6a, 0x40, 0x43, 0x03, 0xfb, 0x0b, 0x35, 0x1d, 0x07,
|
||||
0x6e, 0xca, 0xab, 0xfd, 0x60, 0x30, 0x8e, 0xb3, 0x5e, 0xed, 0xda, 0xfc, 0x6b, 0xe5, 0x5c, 0x52,
|
||||
0x16, 0x7c, 0xa7, 0xf1, 0xea, 0xb7, 0x06, 0x4c, 0x6f, 0x1d, 0xb4, 0x19, 0x5b, 0x32, 0x17, 0x37,
|
||||
0x5e, 0xaf, 0xd8, 0x70, 0x0f, 0xea, 0x7c, 0xad, 0x0e, 0x0d, 0x88, 0x7f, 0xd8, 0x19, 0x46, 0x97,
|
||||
0xc7, 0x34, 0x39, 0xbc, 0xe3, 0x29, 0xa4, 0x96, 0x2d, 0x54, 0x95, 0x24, 0x86, 0xe1, 0x7d, 0x26,
|
||||
0x52, 0x56, 0xb8, 0x29, 0xcb, 0x02, 0x1b, 0x9b, 0x99, 0x6f, 0x4b, 0x4c, 0x40, 0xdb, 0x00, 0xdf,
|
||||
0xeb, 0xf4, 0xfa, 0x0e, 0x53, 0xb5, 0xa8, 0x93, 0xdc, 0xd5, 0x40, 0x17, 0x39, 0x42, 0xcc, 0x6b,
|
||||
0x29, 0xe3, 0xc6, 0xd8, 0xc2, 0xcf, 0x0d, 0x98, 0x8d, 0x51, 0x51, 0x0f, 0x7d, 0x0d, 0xaa, 0x91,
|
||||
0xfa, 0xa8, 0xa8, 0xee, 0xd4, 0xa3, 0xdb, 0x89, 0xa0, 0x5b, 0x31, 0xc7, 0x1b, 0xc2, 0x29, 0x75,
|
||||
0x31, 0x1a, 0x52, 0x86, 0xb2, 0x62, 0xc5, 0x04, 0x7c, 0x1e, 0x43, 0xa4, 0xa1, 0xe6, 0x92, 0x6b,
|
||||
0x1a, 0x6f, 0x46, 0x37, 0xd9, 0x70, 0x82, 0xff, 0x68, 0x40, 0x4d, 0x59, 0xf8, 0x5d, 0x29, 0xc7,
|
||||
0x84, 0xe9, 0x48, 0x17, 0x42, 0x37, 0xb2, 0x8d, 0x8f, 0xe2, 0xda, 0x8d, 0xc6, 0xdd, 0xed, 0xa4,
|
||||
0xbb, 0xdb, 0x63, 0xc8, 0x7c, 0x0a, 0x0d, 0xde, 0xe4, 0x35, 0xb0, 0x76, 0xd0, 0x09, 0x46, 0xb4,
|
||||
0x78, 0xd2, 0x45, 0xb8, 0xce, 0xd9, 0xa2, 0x93, 0x94, 0xb7, 0xc6, 0x30, 0xbe, 0x26, 0x2c, 0xea,
|
||||
0x16, 0xa3, 0x5e, 0x78, 0x1a, 0x21, 0xd1, 0xc5, 0x92, 0x72, 0x77, 0x40, 0x2e, 0x05, 0xc1, 0xc2,
|
||||
0x96, 0x1d, 0x85, 0x15, 0xde, 0x4a, 0x96, 0x38, 0x27, 0x53, 0x25, 0xce, 0x31, 0x2e, 0x65, 0x0d,
|
||||
0x58, 0xc8, 0xe0, 0xa0, 0x1e, 0xde, 0x87, 0x1b, 0xdb, 0x64, 0x40, 0x94, 0xd2, 0xe8, 0x55, 0x94,
|
||||
0x3e, 0x0f, 0xf5, 0xc4, 0x6c, 0xd4, 0xc3, 0x07, 0x50, 0x8f, 0x36, 0x76, 0xf3, 0xc7, 0x2d, 0xfb,
|
||||
0xaa, 0x2b, 0x3c, 0x8c, 0x0b, 0x8b, 0x7c, 0x3a, 0xea, 0xa1, 0xaf, 0xc6, 0x81, 0x52, 0x38, 0x51,
|
||||
0xc6, 0x96, 0x25, 0x03, 0xfe, 0x7b, 0x26, 0x05, 0xa1, 0x5b, 0x07, 0xed, 0x62, 0x58, 0x26, 0x4c,
|
||||
0x87, 0x4a, 0x53, 0x42, 0xa7, 0x6c, 0xa7, 0x5c, 0x63, 0xf2, 0xcd, 0xf8, 0xb0, 0x66, 0xff, 0xfe,
|
||||
0x99, 0xbd, 0xe7, 0x33, 0xdc, 0xd4, 0x43, 0xdf, 0x85, 0x29, 0x7e, 0x6e, 0x44, 0xae, 0x3c, 0xee,
|
||||
0x71, 0x13, 0x0d, 0x43, 0x3b, 0x1a, 0xff, 0xfe, 0x92, 0x56, 0x08, 0x9e, 0xab, 0xe6, 0x48, 0xb1,
|
||||
0x02, 0xc0, 0x57, 0x50, 0xc2, 0x9f, 0x42, 0xc1, 0xbf, 0x30, 0xa0, 0x69, 0x91, 0xa1, 0x7b, 0x4e,
|
||||
0x5e, 0x4b, 0xfd, 0x4d, 0x98, 0xe2, 0x4e, 0x40, 0xc5, 0xfd, 0x3b, 0x6a, 0xbe, 0x56, 0x1d, 0xdd,
|
||||
0x4e, 0xd5, 0xd1, 0x6d, 0x7c, 0x00, 0x4b, 0x39, 0x68, 0xf8, 0xc1, 0x4f, 0x47, 0xdd, 0x2e, 0xa1,
|
||||
0x54, 0x54, 0xaa, 0xa3, 0x66, 0xe8, 0xa1, 0x27, 0x9d, 0xfe, 0x80, 0xd8, 0x02, 0x8d, 0x68, 0xe1,
|
||||
0xcf, 0x0c, 0x68, 0x3c, 0xb2, 0xed, 0xb7, 0x21, 0x9a, 0x9d, 0x15, 0xcd, 0x2e, 0x14, 0xed, 0x09,
|
||||
0x2c, 0xea, 0xa0, 0x94, 0x92, 0xab, 0x0f, 0xf5, 0xed, 0x3e, 0x1d, 0xf6, 0x29, 0x95, 0x31, 0xc2,
|
||||
0x84, 0x69, 0x37, 0x55, 0xd9, 0x75, 0xbd, 0xb1, 0x6f, 0xef, 0x4d, 0x98, 0xea, 0x25, 0x6f, 0xb7,
|
||||
0xa2, 0x89, 0x77, 0x60, 0x2e, 0xb9, 0x14, 0x2f, 0x33, 0x74, 0xc7, 0x29, 0x33, 0xc4, 0x4c, 0xf8,
|
||||
0xcf, 0x06, 0xa0, 0x83, 0x51, 0x40, 0x52, 0xc7, 0xc9, 0x5b, 0x42, 0x1d, 0x2a, 0x6e, 0xa4, 0x16,
|
||||
0x8d, 0x44, 0x0b, 0x61, 0x98, 0x1d, 0x8e, 0x02, 0x62, 0xb7, 0x49, 0xd7, 0x75, 0x6c, 0xca, 0xb2,
|
||||
0xbf, 0x9a, 0x95, 0xa0, 0xe1, 0x3d, 0x58, 0xc8, 0x20, 0x2d, 0x27, 0xf4, 0xcf, 0x0d, 0x68, 0x6e,
|
||||
0x75, 0x9c, 0x2e, 0x19, 0xbc, 0x7b, 0xd1, 0xf1, 0x21, 0x2c, 0xe5, 0x60, 0x29, 0x27, 0xdc, 0x09,
|
||||
0xcc, 0xca, 0x99, 0xde, 0xa6, 0x01, 0x6e, 0x42, 0x4d, 0x59, 0xa7, 0x1c, 0xd6, 0x01, 0xa0, 0x94,
|
||||
0xec, 0x6f, 0x13, 0xf1, 0x1e, 0x2c, 0x64, 0x56, 0x2b, 0x87, 0xfb, 0x4f, 0x06, 0x2c, 0xb5, 0x13,
|
||||
0x27, 0xcc, 0x61, 0xbf, 0x7b, 0xea, 0x74, 0x86, 0xd1, 0x8d, 0xa5, 0x97, 0x4c, 0xbd, 0x7a, 0x71,
|
||||
0xea, 0xe5, 0x08, 0xc6, 0xe8, 0x74, 0x8c, 0xda, 0x09, 0xa9, 0x27, 0x8b, 0xa5, 0xbe, 0x96, 0x95,
|
||||
0x3a, 0xb6, 0xae, 0x4a, 0xc2, 0xba, 0x8e, 0xc0, 0xcc, 0x03, 0x5a, 0xae, 0x2e, 0xe9, 0xb3, 0x77,
|
||||
0x2c, 0x5e, 0x32, 0x68, 0x8f, 0x3c, 0x51, 0xd8, 0x8f, 0xea, 0x15, 0x29, 0xa0, 0x46, 0x11, 0xd0,
|
||||
0x89, 0x44, 0x04, 0x28, 0x10, 0x3f, 0x3c, 0x0c, 0x6f, 0xe7, 0x2e, 0x5a, 0x6a, 0x07, 0xaf, 0x54,
|
||||
0xad, 0xb8, 0x60, 0xd7, 0xa2, 0x18, 0xc7, 0x17, 0xf6, 0x6c, 0xfb, 0x4b, 0x7e, 0xb1, 0xc9, 0xac,
|
||||
0x5c, 0x4e, 0x05, 0x6f, 0xe2, 0xf1, 0xf6, 0x3f, 0x13, 0xd0, 0x48, 0xda, 0x97, 0x52, 0x51, 0xcd,
|
||||
0x71, 0x82, 0x12, 0x16, 0x30, 0x86, 0x03, 0x7c, 0x43, 0x71, 0xad, 0x8a, 0xc8, 0xfa, 0x7b, 0xae,
|
||||
0xdb, 0x1b, 0x10, 0xfe, 0x9b, 0xc5, 0xcb, 0xd1, 0xc9, 0x5a, 0x3b, 0xf0, 0xfb, 0x4e, 0xef, 0xfb,
|
||||
0x9d, 0xc1, 0x88, 0x28, 0x8e, 0xf7, 0x00, 0xa6, 0x4e, 0x3a, 0x5d, 0xf2, 0x89, 0xb5, 0xcf, 0x0a,
|
||||
0x3c, 0x97, 0x0d, 0x8c, 0x98, 0xd1, 0x37, 0xa1, 0xea, 0xcb, 0x34, 0x63, 0x8a, 0x8d, 0xbc, 0x9d,
|
||||
0x19, 0xd9, 0x72, 0x82, 0xfb, 0x1b, 0x7c, 0x60, 0xcc, 0x8d, 0x3e, 0x82, 0x09, 0xf2, 0xaa, 0x39,
|
||||
0x3d, 0xc6, 0x6a, 0x13, 0xe4, 0x15, 0x7e, 0x0a, 0x8b, 0x3a, 0x1d, 0x97, 0xf2, 0xdf, 0x8d, 0xff,
|
||||
0x2d, 0x00, 0xff, 0x87, 0x05, 0x7d, 0x1b, 0x66, 0xba, 0xf1, 0x9f, 0x0f, 0xa8, 0x11, 0x8d, 0x4b,
|
||||
0xfc, 0xfe, 0x61, 0x2e, 0xea, 0xc8, 0xd4, 0x43, 0x0f, 0xa0, 0xfa, 0xa3, 0xe8, 0xf9, 0x0a, 0x2d,
|
||||
0x08, 0x26, 0xf5, 0x79, 0xce, 0xbc, 0x99, 0x25, 0xf2, 0x71, 0x67, 0xd1, 0xdb, 0x88, 0x1c, 0xa7,
|
||||
0xbe, 0xca, 0xc8, 0x71, 0xc9, 0x27, 0x94, 0x4d, 0xa8, 0xf5, 0xd4, 0x3f, 0x16, 0xd0, 0xad, 0xe8,
|
||||
0xff, 0x93, 0xd4, 0xcf, 0x13, 0x66, 0x53, 0xdf, 0x41, 0x3d, 0xf4, 0x10, 0x66, 0xa9, 0xf2, 0x94,
|
||||
0x8f, 0x22, 0xd9, 0x52, 0xbf, 0x1f, 0x98, 0xb7, 0xb4, 0x74, 0xea, 0xa1, 0x1f, 0xc2, 0xad, 0x9e,
|
||||
0xfe, 0x1d, 0x1d, 0xdd, 0x49, 0xad, 0x9a, 0x7d, 0xc7, 0x36, 0xf1, 0x65, 0x2c, 0xd4, 0x43, 0x27,
|
||||
0xb0, 0xd4, 0xcb, 0x7b, 0x94, 0x46, 0x1f, 0xc4, 0x13, 0xe4, 0xbe, 0x96, 0x9b, 0x77, 0x2f, 0x67,
|
||||
0xa2, 0x1e, 0x3a, 0x06, 0x14, 0x64, 0x5e, 0x66, 0xd1, 0xb2, 0x18, 0xab, 0x7d, 0x75, 0x36, 0xdf,
|
||||
0x2b, 0xe8, 0xa5, 0x1e, 0xea, 0x42, 0xb3, 0x97, 0xf3, 0x60, 0x87, 0x70, 0xe2, 0x67, 0x21, 0xed,
|
||||
0x63, 0xa5, 0xf9, 0xc1, 0xa5, 0x3c, 0x1c, 0x77, 0x2f, 0xf3, 0xe2, 0x24, 0x71, 0x6b, 0x1f, 0xcc,
|
||||
0x24, 0xee, 0x9c, 0xa7, 0xaa, 0x67, 0xb0, 0xd0, 0xcb, 0x3e, 0xc1, 0x20, 0xfd, 0x28, 0x69, 0x65,
|
||||
0x2b, 0x45, 0xdd, 0xd4, 0x43, 0x7b, 0x50, 0x3f, 0x4d, 0xbe, 0x29, 0xa0, 0xe8, 0x8f, 0xa9, 0xec,
|
||||
0xd3, 0x8a, 0x69, 0xe6, 0x75, 0x49, 0x91, 0x53, 0x45, 0x7a, 0x55, 0xe4, 0xec, 0xbb, 0x81, 0x2a,
|
||||
0xb2, 0xae, 0xba, 0x7f, 0x08, 0xf3, 0xfd, 0x74, 0xdd, 0x1a, 0xdd, 0x8e, 0x4a, 0xcd, 0x9a, 0x42,
|
||||
0xbc, 0xb9, 0x9c, 0xdf, 0xc9, 0xe7, 0xeb, 0xa5, 0x6b, 0xc2, 0x72, 0x3e, 0x5d, 0x79, 0xda, 0x5c,
|
||||
0xce, 0xef, 0xe4, 0x8e, 0xaa, 0x96, 0x2e, 0xa4, 0xa3, 0xa6, 0xca, 0x23, 0xe6, 0x2d, 0x2d, 0x9d,
|
||||
0x7a, 0xe8, 0x3e, 0x4c, 0x47, 0x34, 0x84, 0x52, 0x4c, 0xe1, 0xc0, 0x85, 0x0c, 0x8d, 0x87, 0x26,
|
||||
0x19, 0x33, 0x50, 0x9a, 0x83, 0xaa, 0xa1, 0x29, 0x59, 0x21, 0x3c, 0x96, 0x75, 0x2b, 0xa5, 0xa4,
|
||||
0x25, 0x37, 0x48, 0x5b, 0x5a, 0x93, 0x1b, 0xa4, 0xaf, 0x85, 0x85, 0xd6, 0x93, 0x2a, 0x41, 0x49,
|
||||
0xeb, 0xc9, 0x96, 0xc8, 0xa4, 0xf5, 0x68, 0xaa, 0x56, 0x61, 0x94, 0x57, 0xea, 0x4c, 0x32, 0xca,
|
||||
0x27, 0x2b, 0x59, 0x32, 0xca, 0xa7, 0x4a, 0x52, 0xa1, 0x68, 0xd9, 0x4a, 0x4a, 0x8e, 0xbb, 0x89,
|
||||
0x14, 0x3e, 0xc7, 0xdd, 0x64, 0x56, 0xfd, 0x1c, 0x1a, 0xda, 0x52, 0x02, 0x7a, 0x5f, 0x8c, 0xcb,
|
||||
0x2b, 0x7b, 0x98, 0xab, 0xc5, 0x0c, 0x1c, 0x6e, 0x36, 0x97, 0x97, 0x70, 0xb5, 0x15, 0x07, 0x09,
|
||||
0x37, 0xa7, 0x08, 0xf0, 0x10, 0x66, 0xd5, 0x3c, 0x5b, 0x9a, 0x62, 0x2a, 0xcf, 0x97, 0xa6, 0x98,
|
||||
0x49, 0xca, 0xf7, 0xa0, 0x9e, 0xca, 0xec, 0xe4, 0x56, 0x66, 0xb3, 0x4f, 0xb9, 0x95, 0xba, 0x64,
|
||||
0xf0, 0x39, 0x34, 0xb4, 0x99, 0xa2, 0xd4, 0x5c, 0x5e, 0x4e, 0x2b, 0x35, 0x97, 0x9f, 0x68, 0x3e,
|
||||
0x80, 0xaa, 0x24, 0x4b, 0xdb, 0x57, 0xb3, 0x32, 0x69, 0xfb, 0xc9, 0xe4, 0x69, 0x0f, 0xea, 0xa9,
|
||||
0x49, 0xa5, 0x74, 0xd9, 0xcc, 0x4e, 0x4a, 0xa7, 0x4b, 0xc3, 0x7e, 0x90, 0xbe, 0xe5, 0x44, 0x99,
|
||||
0x0a, 0x5a, 0x4d, 0x1d, 0xc7, 0x99, 0x8c, 0xcb, 0xbc, 0x73, 0x09, 0x07, 0x3f, 0xba, 0x73, 0x52,
|
||||
0x08, 0xf5, 0xe8, 0xce, 0xc9, 0x6b, 0xd4, 0xa3, 0x3b, 0x37, 0x0b, 0xe1, 0xbe, 0x92, 0xba, 0x9c,
|
||||
0xab, 0xbe, 0x92, 0xcd, 0x18, 0x54, 0x5f, 0xd1, 0xdd, 0xea, 0x8f, 0x01, 0x65, 0x6f, 0x7e, 0x72,
|
||||
0x4a, 0xed, 0xc5, 0x5b, 0x4e, 0xa9, 0xbf, 0x32, 0x6e, 0xd6, 0x9f, 0xd7, 0xd6, 0xf8, 0x1f, 0xcd,
|
||||
0x1f, 0xb3, 0xef, 0xcb, 0xeb, 0xec, 0xde, 0x79, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x7a,
|
||||
0x3c, 0xf8, 0x82, 0xed, 0x2c, 0x00, 0x00,
|
||||
}
|
||||
|
@ -91,6 +91,9 @@ message JoinGroupReq{
|
||||
string ReqMessage = 2;
|
||||
string OpUserID = 3;
|
||||
string OperationID = 4;
|
||||
int32 JoinSource = 5;
|
||||
string InviterUserID = 6;
|
||||
|
||||
}
|
||||
message JoinGroupResp{
|
||||
CommonResp CommonResp = 1;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -21,6 +21,10 @@ message GroupInfo{
|
||||
string creatorUserID = 11;
|
||||
int32 groupType = 12;
|
||||
int32 needVerification = 13;
|
||||
int32 lookMemberInfo =14;
|
||||
int32 applyMemberFriend = 15;
|
||||
uint32 notificationUpdateTime = 16;
|
||||
string notificationUserID = 17;
|
||||
}
|
||||
|
||||
message GroupInfoForSet{
|
||||
@ -31,6 +35,8 @@ message GroupInfoForSet{
|
||||
string faceURL = 5;
|
||||
string ex = 6;
|
||||
google.protobuf.Int32Value needVerification = 7;
|
||||
google.protobuf.Int32Value lookMemberInfo = 8;
|
||||
google.protobuf.Int32Value applyMemberFriend = 9;
|
||||
}
|
||||
|
||||
|
||||
@ -46,6 +52,7 @@ message GroupMemberFullInfo {
|
||||
string operatorUserID = 9;
|
||||
string ex = 10;
|
||||
uint32 muteEndTime = 11;
|
||||
string inviterUserID = 12;
|
||||
}
|
||||
|
||||
message PublicUserInfo{
|
||||
|
Loading…
x
Reference in New Issue
Block a user