add management interface

pull/5/head
Gordon 4 years ago
parent 68eaa51ebe
commit 66c1b19696

@ -117,6 +117,7 @@ push:
accessID: 111 accessID: 111
secretKey: 111 secretKey: 111
appmanageruid: "openIM123456"
secret: tuoyun secret: tuoyun
multiloginpolicy: multiloginpolicy:

@ -11,10 +11,11 @@ import (
"strings" "strings"
) )
/*
type paramsAddBlackList struct { type paramsAddBlackList struct {
OperationID string `json:"operationID" binding:"required"` OperationID string `json:"operationID" binding:"required"`
UID string `json:"uid" binding:"required"` UID string `json:"uid" binding:"required"`
} }*/
func AddBlacklist(c *gin.Context) { func AddBlacklist(c *gin.Context) {
log.Info("", "", "api add blacklist init ....") log.Info("", "", "api add blacklist init ....")
@ -32,6 +33,7 @@ func AddBlacklist(c *gin.Context) {
Uid: params.UID, Uid: params.UID,
OperationID: params.OperationID, OperationID: params.OperationID,
Token: c.Request.Header.Get("token"), Token: c.Request.Header.Get("token"),
OwnerUid: params.OwnerUid,
} }
log.Info(req.Token, req.OperationID, "api add blacklist is server:userID=%s", req.Uid) log.Info(req.Token, req.OperationID, "api add blacklist is server:userID=%s", req.Uid)
RpcResp, err := client.AddBlacklist(context.Background(), req) RpcResp, err := client.AddBlacklist(context.Background(), req)

@ -11,18 +11,54 @@ import (
"strings" "strings"
) )
type paramsImportFriendReq struct {
OperationID string `json:"operationID" binding:"required"`
UID string `json:"uid" binding:"required"`
OwnerUid string `json:"ownerUid"`
}
type paramsAddFriend struct { type paramsAddFriend struct {
OperationID string `json:"operationID" binding:"required"` OperationID string `json:"operationID" binding:"required"`
UID string `json:"uid" binding:"required"` UID string `json:"uid" binding:"required"`
ReqMessage string `json:"reqMessage"` ReqMessage string `json:"reqMessage"`
} }
//
func ImportFriend(c *gin.Context) {
log.Info("", "", "ImportFriend init ....")
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName)
client := pbFriend.NewFriendClient(etcdConn)
params := paramsImportFriendReq{}
if err := c.BindJSON(&params); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
return
}
req := &pbFriend.ImportFriendReq{
Uid: params.UID,
OperationID: params.OperationID,
OwnerUid: params.OwnerUid,
Token: c.Request.Header.Get("token"),
}
log.Info(req.Token, req.OperationID, "api add friend is server")
RpcResp, err := client.ImportFriend(context.Background(), req)
if err != nil {
log.Error(req.Token, req.OperationID, "err=%s,ImportFriend failed", err)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "cImportFriend failed"})
return
}
log.InfoByArgs("ImportFriend success,args=%s", RpcResp.String())
resp := gin.H{"errCode": RpcResp.ErrorCode, "errMsg": RpcResp.ErrorMsg}
c.JSON(http.StatusOK, resp)
log.InfoByArgs("ImportFriend success return,get args=%s,return args=%s", req.String(), RpcResp.String())
}
func AddFriend(c *gin.Context) { func AddFriend(c *gin.Context) {
log.Info("", "", "api add friend init ....") log.Info("", "", "api add friend init ....")
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName)
client := pbFriend.NewFriendClient(etcdConn) client := pbFriend.NewFriendClient(etcdConn)
//defer etcdConn.Close()
params := paramsAddFriend{} params := paramsAddFriend{}
if err := c.BindJSON(&params); err != nil { if err := c.BindJSON(&params); err != nil {

@ -15,6 +15,7 @@ import (
type paramsSearchFriend struct { type paramsSearchFriend struct {
OperationID string `json:"operationID" binding:"required"` OperationID string `json:"operationID" binding:"required"`
UID string `json:"uid" binding:"required"` UID string `json:"uid" binding:"required"`
OwnerUid string `json:"ownerUid"`
} }
func GetFriendsInfo(c *gin.Context) { func GetFriendsInfo(c *gin.Context) {

@ -0,0 +1,204 @@
/*
** description("").
** copyright('open-im,www.open-im.io').
** author("fg,Gordon@tuoyun.net").
** time(2021/9/15 15:23).
*/
package manage
import (
"Open_IM/src/common/config"
"Open_IM/src/common/constant"
"Open_IM/src/common/log"
"Open_IM/src/grpc-etcdv3/getcdv3"
pbChat "Open_IM/src/proto/chat"
"Open_IM/src/utils"
"context"
"github.com/gin-gonic/gin"
"github.com/go-playground/validator/v10"
"github.com/mitchellh/mapstructure"
"net/http"
"strings"
)
var validate *validator.Validate
type paramsManagementSendMsg struct {
OperationID string `json:"operationID" binding:"required"`
SendID string `json:"sendID" binding:"required"`
RecvID string `json:"recvID" binding:"required"`
SenderNickName string `json:"senderNickName" `
SenderFaceURL string `json:"senderFaceURL" `
ForceList []string `json:"forceList" `
Content map[string]interface{} `json:"content" binding:"required"`
ContentType int32 `json:"contentType" binding:"required"`
SessionType int32 `json:"sessionType" binding:"required"`
}
func newUserSendMsgReq(token string, params *paramsManagementSendMsg) *pbChat.UserSendMsgReq {
var newContent string
switch params.ContentType {
case constant.Text:
newContent = params.Content["text"].(string)
case constant.Picture:
fallthrough
case constant.Custom:
fallthrough
case constant.Voice:
fallthrough
case constant.File:
newContent = utils.StructToJsonString(params.Content)
default:
}
pbData := pbChat.UserSendMsgReq{
ReqIdentifier: constant.WSSendMsg,
Token: token,
SendID: params.SendID,
SenderNickName: params.SenderNickName,
SenderFaceURL: params.SenderFaceURL,
OperationID: params.OperationID,
PlatformID: 0,
SessionType: params.SessionType,
MsgFrom: constant.UserMsgType,
ContentType: params.ContentType,
RecvID: params.RecvID,
ForceList: params.ForceList,
Content: newContent,
ClientMsgID: utils.GetMsgID(params.SendID),
}
return &pbData
}
func init() {
validate = validator.New()
}
func ManagementSendMsg(c *gin.Context) {
var data interface{}
params := paramsManagementSendMsg{}
if err := c.BindJSON(&params); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
log.ErrorByKv("json unmarshal err", c.PostForm("operationID"), "err", err.Error(), "content", c.PostForm("content"))
return
}
switch params.ContentType {
case constant.Text:
data = TextElem{}
case constant.Picture:
data = PictureElem{}
case constant.Custom:
data = CustomElem{}
default:
c.JSON(http.StatusBadRequest, gin.H{"errCode": 404, "errMsg": "contentType err"})
log.ErrorByKv("contentType err", c.PostForm("operationID"), "content", c.PostForm("content"))
return
}
if err := mapstructure.WeakDecode(params.Content, &data); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": err.Error()})
log.ErrorByKv("content to Data struct err", "", "err", err.Error())
return
} else if err := validate.Struct(data); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"errCode": 403, "errMsg": err.Error()})
log.ErrorByKv("data args validate err", "", "err", err.Error())
return
}
token := c.Request.Header.Get("token")
if !utils.VerifyToken(token, config.Config.AppManagerUid) {
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "token validate err,not authorized", "sendTime": 0, "MsgID": ""})
return
}
log.InfoByKv("Ws call success to ManagementSendMsgReq", params.OperationID, "Parameters", params)
pbData := newUserSendMsgReq(token, &params)
log.Info("", "", "api ManagementSendMsg call start..., [data: %s]", pbData.String())
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName)
client := pbChat.NewChatClient(etcdConn)
log.Info("", "", "api ManagementSendMsg call, api call rpc...")
reply, _ := client.UserSendMsg(context.Background(), pbData)
log.Info("", "", "api ManagementSendMsg call end..., [data: %s] [reply: %s]", pbData.String(), reply.String())
c.JSON(http.StatusOK, gin.H{
"errCode": reply.ErrCode,
"errMsg": reply.ErrMsg,
"sendTime": reply.SendTime,
"msgID": reply.ClientMsgID,
})
}
type PictureBaseInfo struct {
UUID string `mapstructure:"uuid"`
Type string `mapstructure:"type" validate:"required"`
Size int64 `mapstructure:"size" validate:"required"`
Width int32 `mapstructure:"width" validate:"required"`
Height int32 `mapstructure:"height" validate:"required"`
Url string `mapstructure:"url" validate:"required"`
}
type PictureElem struct {
SourcePath string `mapstructure:"sourcePath"`
SourcePicture PictureBaseInfo `mapstructure:"sourcePicture" validate:"required"`
BigPicture PictureBaseInfo `mapstructure:"bigPicture" `
SnapshotPicture PictureBaseInfo `mapstructure:"snapshotPicture"`
}
type SoundElem struct {
UUID string `mapstructure:"uuid"`
SoundPath string `mapstructure:"soundPath"`
SourceURL string `mapstructure:"sourceUrl"`
DataSize int64 `mapstructure:"dataSize"`
Duration int64 `mapstructure:"duration"`
}
type VideoElem struct {
VideoPath string `mapstructure:"videoPath"`
VideoUUID string `mapstructure:"videoUUID"`
VideoURL string `mapstructure:"videoUrl"`
VideoType string `mapstructure:"videoType"`
VideoSize int64 `mapstructure:"videoSize"`
Duration int64 `mapstructure:"duration"`
SnapshotPath string `mapstructure:"snapshotPath"`
SnapshotUUID string `mapstructure:"snapshotUUID"`
SnapshotSize int64 `mapstructure:"snapshotSize"`
SnapshotURL string `mapstructure:"snapshotUrl"`
SnapshotWidth int32 `mapstructure:"snapshotWidth"`
SnapshotHeight int32 `mapstructure:"snapshotHeight"`
}
type FileElem struct {
FilePath string `mapstructure:"filePath"`
UUID string `mapstructure:"uuid"`
SourceURL string `mapstructure:"sourceUrl"`
FileName string `mapstructure:"fileName"`
FileSize int64 `mapstructure:"fileSize"`
}
//type MergeElem struct {
// Title string `json:"title"`
// AbstractList []string `json:"abstractList"`
// MultiMessage []*MsgStruct `json:"multiMessage"`
//}
type AtElem struct {
Text string `mapstructure:"text"`
AtUserList []string `mapstructure:"atUserList"`
IsAtSelf bool `mapstructure:"isAtSelf"`
}
type LocationElem struct {
Description string `mapstructure:"description"`
Longitude float64 `mapstructure:"longitude"`
Latitude float64 `mapstructure:"latitude"`
}
type CustomElem struct {
Data string `mapstructure:"data" validate:"required"`
Description string `mapstructure:"description"`
Extension string `mapstructure:"extension"`
}
type TextElem struct {
Text string `mapstructure:"text" validate:"required"`
}
//type QuoteElem struct {
// Text string `json:"text"`
// QuoteMessage *MsgStruct `json:"quoteMessage"`
//}

@ -0,0 +1,78 @@
/*
** description("").
** copyright('open-im,www.open-im.io').
** author("fg,Gordon@tuoyun.net").
** time(2021/9/15 10:28).
*/
package manage
import (
"Open_IM/src/common/config"
"Open_IM/src/common/log"
"Open_IM/src/grpc-etcdv3/getcdv3"
pbUser "Open_IM/src/proto/user"
"context"
"github.com/gin-gonic/gin"
"net/http"
"strings"
)
type paramsDeleteUsers struct {
OperationID string `json:"operationID" binding:"required"`
DeleteUidList []string `json:"deleteUidList" binding:"required"`
}
type paramsGetAllUsersUid struct {
OperationID string `json:"operationID" binding:"required"`
}
func DeleteUser(c *gin.Context) {
params := paramsDeleteUsers{}
if err := c.BindJSON(&params); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
return
}
log.InfoByKv("DeleteUser req come here", params.OperationID, "DeleteUidList", params.DeleteUidList)
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName)
client := pbUser.NewUserClient(etcdConn)
//defer etcdConn.Close()
req := &pbUser.DeleteUsersReq{
OperationID: params.OperationID,
DeleteUidList: params.DeleteUidList,
Token: c.Request.Header.Get("token"),
}
RpcResp, err := client.DeleteUsers(context.Background(), req)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call delete users rpc server failed"})
return
}
log.InfoByKv("call delete user rpc server is success", params.OperationID, "resp args", RpcResp.String())
resp := gin.H{"errCode": RpcResp.CommonResp.ErrorCode, "errMsg": RpcResp.CommonResp.ErrorMsg, "failedUidList": RpcResp.FailedUidList}
c.JSON(http.StatusOK, resp)
}
func GetAllUsersUid(c *gin.Context) {
params := paramsGetAllUsersUid{}
if err := c.BindJSON(&params); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
return
}
log.InfoByKv("GetAllUsersUid req come here", params.OperationID)
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName)
client := pbUser.NewUserClient(etcdConn)
//defer etcdConn.Close()
req := &pbUser.GetAllUsersUidReq{
OperationID: params.OperationID,
Token: c.Request.Header.Get("token"),
}
RpcResp, err := client.GetAllUsersUid(context.Background(), req)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error(), "uidList": []string{}})
return
}
log.InfoByKv("call GetAllUsersUid rpc server is success", params.OperationID, "resp args", RpcResp.String())
resp := gin.H{"errCode": RpcResp.CommonResp.ErrorCode, "errMsg": RpcResp.CommonResp.ErrorMsg, "uidList": RpcResp.UidList}
c.JSON(http.StatusOK, resp)
}

@ -5,6 +5,7 @@ import (
apiChat "Open_IM/src/api/chat" apiChat "Open_IM/src/api/chat"
"Open_IM/src/api/friend" "Open_IM/src/api/friend"
"Open_IM/src/api/group" "Open_IM/src/api/group"
"Open_IM/src/api/manage"
apiThird "Open_IM/src/api/third" apiThird "Open_IM/src/api/third"
"Open_IM/src/api/user" "Open_IM/src/api/user"
"Open_IM/src/utils" "Open_IM/src/utils"
@ -47,6 +48,7 @@ func main() {
friendRouterGroup.POST("/add_friend_response", friend.AddFriendResponse) friendRouterGroup.POST("/add_friend_response", friend.AddFriendResponse)
friendRouterGroup.POST("/set_friend_comment", friend.SetFriendComment) friendRouterGroup.POST("/set_friend_comment", friend.SetFriendComment)
friendRouterGroup.POST("/is_friend", friend.IsFriend) friendRouterGroup.POST("/is_friend", friend.IsFriend)
friendRouterGroup.POST("/import_friend", friend.ImportFriend)
} }
//group related routing group //group related routing group
groupRouterGroup := r.Group("/group") groupRouterGroup := r.Group("/group")
@ -84,6 +86,12 @@ func main() {
chatGroup.POST("/pull_msg", apiChat.UserPullMsg) chatGroup.POST("/pull_msg", apiChat.UserPullMsg)
chatGroup.POST("/send_msg", apiChat.UserSendMsg) chatGroup.POST("/send_msg", apiChat.UserSendMsg)
} }
managementGroup := r.Group("/manager")
{
managementGroup.POST("/delete_user", manage.DeleteUser)
managementGroup.POST("/send_msg", manage.ManagementSendMsg)
managementGroup.POST("/get_all_users_uid", manage.GetAllUsersUid)
}
ginPort := flag.Int("port", 10000, "get ginServerPort from cmd,default 10000 as port") ginPort := flag.Int("port", 10000, "get ginServerPort from cmd,default 10000 as port")
flag.Parse() flag.Parse()

@ -22,6 +22,7 @@ type paramsStruct struct {
Birth string `json:"birth"` Birth string `json:"birth"`
Email string `json:"email"` Email string `json:"email"`
Ex string `json:"ex"` Ex string `json:"ex"`
Uid string `json:"uid"`
} }
func UpdateUserInfo(c *gin.Context) { func UpdateUserInfo(c *gin.Context) {
@ -46,6 +47,7 @@ func UpdateUserInfo(c *gin.Context) {
Birth: params.Birth, Birth: params.Birth,
Email: params.Email, Email: params.Email,
Ex: params.Ex, Ex: params.Ex,
Uid: params.Uid,
} }
log.InfoByKv("api update user info is server", req.OperationID, req.Token) log.InfoByKv("api update user info is server", req.OperationID, req.Token)
RpcResp, err := client.UpdateUserInfo(context.Background(), req) RpcResp, err := client.UpdateUserInfo(context.Background(), req)

@ -124,7 +124,7 @@ type config struct {
MsgToPush string `yaml:"msgToPush"` MsgToPush string `yaml:"msgToPush"`
} }
} }
AppManagerUid string
Secret string Secret string
MultiLoginPolicy struct { MultiLoginPolicy struct {

@ -30,6 +30,7 @@ const (
Video = 104 Video = 104
File = 105 File = 105
AtText = 106 AtText = 106
Custom = 110
SyncSenderMsg = 108 SyncSenderMsg = 108
//SysRelated //SysRelated

@ -30,6 +30,17 @@ func UserRegister(pb *pbAuth.UserRegisterReq) error {
return nil return nil
} }
func UserDelete(uid string) error {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return err
}
err = dbConn.Table("user").Where("uid=?", uid).Delete(User{}).Error
if err != nil {
return err
}
return nil
}
func FindUserByUID(uid string) (*User, error) { func FindUserByUID(uid string) (*User, error) {
dbConn, err := db.DB.MysqlDB.DefaultGormDB() dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil { if err != nil {

File diff suppressed because it is too large Load Diff

@ -40,6 +40,16 @@ message AddFriendReq{
} }
message ImportFriendReq{
string uid = 1;
string OperationID = 2;
string Token = 3;
string OwnerUid = 4;
}
message GetFriendApplyReq{ message GetFriendApplyReq{
string OperationID = 1; string OperationID = 1;
string Token = 2; string Token = 2;
@ -91,6 +101,7 @@ message AddBlacklistReq{
string uid = 1; string uid = 1;
string OperationID = 2; string OperationID = 2;
string Token = 3; string Token = 3;
string OwnerUid = 4;
} }
@ -167,4 +178,5 @@ service friend{
rpc deleteFriend(DeleteFriendReq) returns(CommonResp); rpc deleteFriend(DeleteFriendReq) returns(CommonResp);
rpc addFriendResponse(AddFriendResponseReq) returns(CommonResp); rpc addFriendResponse(AddFriendResponseReq) returns(CommonResp);
rpc setFriendComment(SetFriendCommentReq) returns(CommonResp); rpc setFriendComment(SetFriendCommentReq) returns(CommonResp);
rpc ImportFriend(ImportFriendReq) returns(CommonResp);
} }

@ -1,16 +1,15 @@
// Code generated by protoc-gen-go. DO NOT EDIT. // Code generated by protoc-gen-go. DO NOT EDIT.
// source: user/user.proto // source: user/user.proto
package user package user // import "user"
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import ( import (
context "context" context "golang.org/x/net/context"
fmt "fmt"
proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc" grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
math "math"
) )
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
@ -22,11 +21,11 @@ var _ = math.Inf
// is compatible with the proto package it is being compiled against. // is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the // A compilation error at this line likely means your copy of the
// proto package needs to be updated. // proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
type CommonResp struct { type CommonResp struct {
ErrorCode int32 `protobuf:"varint,1,opt,name=errorCode,proto3" json:"errorCode,omitempty"` ErrorCode int32 `protobuf:"varint,1,opt,name=errorCode" json:"errorCode,omitempty"`
ErrorMsg string `protobuf:"bytes,2,opt,name=errorMsg,proto3" json:"errorMsg,omitempty"` ErrorMsg string `protobuf:"bytes,2,opt,name=errorMsg" json:"errorMsg,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -36,17 +35,16 @@ func (m *CommonResp) Reset() { *m = CommonResp{} }
func (m *CommonResp) String() string { return proto.CompactTextString(m) } func (m *CommonResp) String() string { return proto.CompactTextString(m) }
func (*CommonResp) ProtoMessage() {} func (*CommonResp) ProtoMessage() {}
func (*CommonResp) Descriptor() ([]byte, []int) { func (*CommonResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ed89022014131a74, []int{0} return fileDescriptor_user_9367ac00c24112e8, []int{0}
} }
func (m *CommonResp) XXX_Unmarshal(b []byte) error { func (m *CommonResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommonResp.Unmarshal(m, b) return xxx_messageInfo_CommonResp.Unmarshal(m, b)
} }
func (m *CommonResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *CommonResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CommonResp.Marshal(b, m, deterministic) return xxx_messageInfo_CommonResp.Marshal(b, m, deterministic)
} }
func (m *CommonResp) XXX_Merge(src proto.Message) { func (dst *CommonResp) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommonResp.Merge(m, src) xxx_messageInfo_CommonResp.Merge(dst, src)
} }
func (m *CommonResp) XXX_Size() int { func (m *CommonResp) XXX_Size() int {
return xxx_messageInfo_CommonResp.Size(m) return xxx_messageInfo_CommonResp.Size(m)
@ -71,10 +69,202 @@ func (m *CommonResp) GetErrorMsg() string {
return "" return ""
} }
type DeleteUsersResp struct {
CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"`
FailedUidList []string `protobuf:"bytes,2,rep,name=failedUidList" json:"failedUidList,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *DeleteUsersResp) Reset() { *m = DeleteUsersResp{} }
func (m *DeleteUsersResp) String() string { return proto.CompactTextString(m) }
func (*DeleteUsersResp) ProtoMessage() {}
func (*DeleteUsersResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_9367ac00c24112e8, []int{1}
}
func (m *DeleteUsersResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteUsersResp.Unmarshal(m, b)
}
func (m *DeleteUsersResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_DeleteUsersResp.Marshal(b, m, deterministic)
}
func (dst *DeleteUsersResp) XXX_Merge(src proto.Message) {
xxx_messageInfo_DeleteUsersResp.Merge(dst, src)
}
func (m *DeleteUsersResp) XXX_Size() int {
return xxx_messageInfo_DeleteUsersResp.Size(m)
}
func (m *DeleteUsersResp) XXX_DiscardUnknown() {
xxx_messageInfo_DeleteUsersResp.DiscardUnknown(m)
}
var xxx_messageInfo_DeleteUsersResp proto.InternalMessageInfo
func (m *DeleteUsersResp) GetCommonResp() *CommonResp {
if m != nil {
return m.CommonResp
}
return nil
}
func (m *DeleteUsersResp) GetFailedUidList() []string {
if m != nil {
return m.FailedUidList
}
return nil
}
type DeleteUsersReq struct {
DeleteUidList []string `protobuf:"bytes,2,rep,name=deleteUidList" json:"deleteUidList,omitempty"`
Token string `protobuf:"bytes,3,opt,name=token" json:"token,omitempty"`
OperationID string `protobuf:"bytes,4,opt,name=OperationID" json:"OperationID,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *DeleteUsersReq) Reset() { *m = DeleteUsersReq{} }
func (m *DeleteUsersReq) String() string { return proto.CompactTextString(m) }
func (*DeleteUsersReq) ProtoMessage() {}
func (*DeleteUsersReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_9367ac00c24112e8, []int{2}
}
func (m *DeleteUsersReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteUsersReq.Unmarshal(m, b)
}
func (m *DeleteUsersReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_DeleteUsersReq.Marshal(b, m, deterministic)
}
func (dst *DeleteUsersReq) XXX_Merge(src proto.Message) {
xxx_messageInfo_DeleteUsersReq.Merge(dst, src)
}
func (m *DeleteUsersReq) XXX_Size() int {
return xxx_messageInfo_DeleteUsersReq.Size(m)
}
func (m *DeleteUsersReq) XXX_DiscardUnknown() {
xxx_messageInfo_DeleteUsersReq.DiscardUnknown(m)
}
var xxx_messageInfo_DeleteUsersReq proto.InternalMessageInfo
func (m *DeleteUsersReq) GetDeleteUidList() []string {
if m != nil {
return m.DeleteUidList
}
return nil
}
func (m *DeleteUsersReq) GetToken() string {
if m != nil {
return m.Token
}
return ""
}
func (m *DeleteUsersReq) GetOperationID() string {
if m != nil {
return m.OperationID
}
return ""
}
type GetAllUsersUidReq struct {
Token string `protobuf:"bytes,2,opt,name=token" json:"token,omitempty"`
OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetAllUsersUidReq) Reset() { *m = GetAllUsersUidReq{} }
func (m *GetAllUsersUidReq) String() string { return proto.CompactTextString(m) }
func (*GetAllUsersUidReq) ProtoMessage() {}
func (*GetAllUsersUidReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_9367ac00c24112e8, []int{3}
}
func (m *GetAllUsersUidReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllUsersUidReq.Unmarshal(m, b)
}
func (m *GetAllUsersUidReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetAllUsersUidReq.Marshal(b, m, deterministic)
}
func (dst *GetAllUsersUidReq) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetAllUsersUidReq.Merge(dst, src)
}
func (m *GetAllUsersUidReq) XXX_Size() int {
return xxx_messageInfo_GetAllUsersUidReq.Size(m)
}
func (m *GetAllUsersUidReq) XXX_DiscardUnknown() {
xxx_messageInfo_GetAllUsersUidReq.DiscardUnknown(m)
}
var xxx_messageInfo_GetAllUsersUidReq proto.InternalMessageInfo
func (m *GetAllUsersUidReq) GetToken() string {
if m != nil {
return m.Token
}
return ""
}
func (m *GetAllUsersUidReq) GetOperationID() string {
if m != nil {
return m.OperationID
}
return ""
}
type GetAllUsersUidResp struct {
CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"`
UidList []string `protobuf:"bytes,2,rep,name=uidList" json:"uidList,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetAllUsersUidResp) Reset() { *m = GetAllUsersUidResp{} }
func (m *GetAllUsersUidResp) String() string { return proto.CompactTextString(m) }
func (*GetAllUsersUidResp) ProtoMessage() {}
func (*GetAllUsersUidResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_9367ac00c24112e8, []int{4}
}
func (m *GetAllUsersUidResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllUsersUidResp.Unmarshal(m, b)
}
func (m *GetAllUsersUidResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetAllUsersUidResp.Marshal(b, m, deterministic)
}
func (dst *GetAllUsersUidResp) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetAllUsersUidResp.Merge(dst, src)
}
func (m *GetAllUsersUidResp) XXX_Size() int {
return xxx_messageInfo_GetAllUsersUidResp.Size(m)
}
func (m *GetAllUsersUidResp) XXX_DiscardUnknown() {
xxx_messageInfo_GetAllUsersUidResp.DiscardUnknown(m)
}
var xxx_messageInfo_GetAllUsersUidResp proto.InternalMessageInfo
func (m *GetAllUsersUidResp) GetCommonResp() *CommonResp {
if m != nil {
return m.CommonResp
}
return nil
}
func (m *GetAllUsersUidResp) GetUidList() []string {
if m != nil {
return m.UidList
}
return nil
}
type GetUserInfoReq struct { type GetUserInfoReq struct {
UserIDList []string `protobuf:"bytes,1,rep,name=userIDList,proto3" json:"userIDList,omitempty"` UserIDList []string `protobuf:"bytes,1,rep,name=userIDList" json:"userIDList,omitempty"`
Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` Token string `protobuf:"bytes,2,opt,name=token" json:"token,omitempty"`
OperationID string `protobuf:"bytes,3,opt,name=OperationID,proto3" json:"OperationID,omitempty"` OperationID string `protobuf:"bytes,3,opt,name=OperationID" json:"OperationID,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -84,17 +274,16 @@ func (m *GetUserInfoReq) Reset() { *m = GetUserInfoReq{} }
func (m *GetUserInfoReq) String() string { return proto.CompactTextString(m) } func (m *GetUserInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetUserInfoReq) ProtoMessage() {} func (*GetUserInfoReq) ProtoMessage() {}
func (*GetUserInfoReq) Descriptor() ([]byte, []int) { func (*GetUserInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ed89022014131a74, []int{1} return fileDescriptor_user_9367ac00c24112e8, []int{5}
} }
func (m *GetUserInfoReq) XXX_Unmarshal(b []byte) error { func (m *GetUserInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserInfoReq.Unmarshal(m, b) return xxx_messageInfo_GetUserInfoReq.Unmarshal(m, b)
} }
func (m *GetUserInfoReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *GetUserInfoReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetUserInfoReq.Marshal(b, m, deterministic) return xxx_messageInfo_GetUserInfoReq.Marshal(b, m, deterministic)
} }
func (m *GetUserInfoReq) XXX_Merge(src proto.Message) { func (dst *GetUserInfoReq) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetUserInfoReq.Merge(m, src) xxx_messageInfo_GetUserInfoReq.Merge(dst, src)
} }
func (m *GetUserInfoReq) XXX_Size() int { func (m *GetUserInfoReq) XXX_Size() int {
return xxx_messageInfo_GetUserInfoReq.Size(m) return xxx_messageInfo_GetUserInfoReq.Size(m)
@ -127,9 +316,9 @@ func (m *GetUserInfoReq) GetOperationID() string {
} }
type GetUserInfoResp struct { type GetUserInfoResp struct {
ErrorCode int32 `protobuf:"varint,1,opt,name=errorCode,proto3" json:"errorCode,omitempty"` ErrorCode int32 `protobuf:"varint,1,opt,name=errorCode" json:"errorCode,omitempty"`
ErrorMsg string `protobuf:"bytes,2,opt,name=errorMsg,proto3" json:"errorMsg,omitempty"` ErrorMsg string `protobuf:"bytes,2,opt,name=errorMsg" json:"errorMsg,omitempty"`
Data []*UserInfo `protobuf:"bytes,3,rep,name=Data,proto3" json:"Data,omitempty"` Data []*UserInfo `protobuf:"bytes,3,rep,name=Data" json:"Data,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -139,17 +328,16 @@ func (m *GetUserInfoResp) Reset() { *m = GetUserInfoResp{} }
func (m *GetUserInfoResp) String() string { return proto.CompactTextString(m) } func (m *GetUserInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetUserInfoResp) ProtoMessage() {} func (*GetUserInfoResp) ProtoMessage() {}
func (*GetUserInfoResp) Descriptor() ([]byte, []int) { func (*GetUserInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ed89022014131a74, []int{2} return fileDescriptor_user_9367ac00c24112e8, []int{6}
} }
func (m *GetUserInfoResp) XXX_Unmarshal(b []byte) error { func (m *GetUserInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserInfoResp.Unmarshal(m, b) return xxx_messageInfo_GetUserInfoResp.Unmarshal(m, b)
} }
func (m *GetUserInfoResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *GetUserInfoResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetUserInfoResp.Marshal(b, m, deterministic) return xxx_messageInfo_GetUserInfoResp.Marshal(b, m, deterministic)
} }
func (m *GetUserInfoResp) XXX_Merge(src proto.Message) { func (dst *GetUserInfoResp) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetUserInfoResp.Merge(m, src) xxx_messageInfo_GetUserInfoResp.Merge(dst, src)
} }
func (m *GetUserInfoResp) XXX_Size() int { func (m *GetUserInfoResp) XXX_Size() int {
return xxx_messageInfo_GetUserInfoResp.Size(m) return xxx_messageInfo_GetUserInfoResp.Size(m)
@ -182,14 +370,14 @@ func (m *GetUserInfoResp) GetData() []*UserInfo {
} }
type UserInfo struct { type UserInfo struct {
Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"` Uid string `protobuf:"bytes,1,opt,name=uid" json:"uid,omitempty"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
Icon string `protobuf:"bytes,3,opt,name=icon,proto3" json:"icon,omitempty"` Icon string `protobuf:"bytes,3,opt,name=icon" json:"icon,omitempty"`
Gender int32 `protobuf:"varint,4,opt,name=gender,proto3" json:"gender,omitempty"` Gender int32 `protobuf:"varint,4,opt,name=gender" json:"gender,omitempty"`
Mobile string `protobuf:"bytes,5,opt,name=mobile,proto3" json:"mobile,omitempty"` Mobile string `protobuf:"bytes,5,opt,name=mobile" json:"mobile,omitempty"`
Birth string `protobuf:"bytes,6,opt,name=birth,proto3" json:"birth,omitempty"` Birth string `protobuf:"bytes,6,opt,name=birth" json:"birth,omitempty"`
Email string `protobuf:"bytes,7,opt,name=email,proto3" json:"email,omitempty"` Email string `protobuf:"bytes,7,opt,name=email" json:"email,omitempty"`
Ex string `protobuf:"bytes,8,opt,name=ex,proto3" json:"ex,omitempty"` Ex string `protobuf:"bytes,8,opt,name=ex" json:"ex,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -199,17 +387,16 @@ func (m *UserInfo) Reset() { *m = UserInfo{} }
func (m *UserInfo) String() string { return proto.CompactTextString(m) } func (m *UserInfo) String() string { return proto.CompactTextString(m) }
func (*UserInfo) ProtoMessage() {} func (*UserInfo) ProtoMessage() {}
func (*UserInfo) Descriptor() ([]byte, []int) { func (*UserInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ed89022014131a74, []int{3} return fileDescriptor_user_9367ac00c24112e8, []int{7}
} }
func (m *UserInfo) XXX_Unmarshal(b []byte) error { func (m *UserInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserInfo.Unmarshal(m, b) return xxx_messageInfo_UserInfo.Unmarshal(m, b)
} }
func (m *UserInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *UserInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UserInfo.Marshal(b, m, deterministic) return xxx_messageInfo_UserInfo.Marshal(b, m, deterministic)
} }
func (m *UserInfo) XXX_Merge(src proto.Message) { func (dst *UserInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_UserInfo.Merge(m, src) xxx_messageInfo_UserInfo.Merge(dst, src)
} }
func (m *UserInfo) XXX_Size() int { func (m *UserInfo) XXX_Size() int {
return xxx_messageInfo_UserInfo.Size(m) return xxx_messageInfo_UserInfo.Size(m)
@ -277,8 +464,8 @@ func (m *UserInfo) GetEx() string {
} }
type LogoutReq struct { type LogoutReq struct {
OperationID string `protobuf:"bytes,1,opt,name=OperationID,proto3" json:"OperationID,omitempty"` OperationID string `protobuf:"bytes,1,opt,name=OperationID" json:"OperationID,omitempty"`
Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` Token string `protobuf:"bytes,2,opt,name=token" json:"token,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -288,17 +475,16 @@ func (m *LogoutReq) Reset() { *m = LogoutReq{} }
func (m *LogoutReq) String() string { return proto.CompactTextString(m) } func (m *LogoutReq) String() string { return proto.CompactTextString(m) }
func (*LogoutReq) ProtoMessage() {} func (*LogoutReq) ProtoMessage() {}
func (*LogoutReq) Descriptor() ([]byte, []int) { func (*LogoutReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ed89022014131a74, []int{4} return fileDescriptor_user_9367ac00c24112e8, []int{8}
} }
func (m *LogoutReq) XXX_Unmarshal(b []byte) error { func (m *LogoutReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LogoutReq.Unmarshal(m, b) return xxx_messageInfo_LogoutReq.Unmarshal(m, b)
} }
func (m *LogoutReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *LogoutReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LogoutReq.Marshal(b, m, deterministic) return xxx_messageInfo_LogoutReq.Marshal(b, m, deterministic)
} }
func (m *LogoutReq) XXX_Merge(src proto.Message) { func (dst *LogoutReq) XXX_Merge(src proto.Message) {
xxx_messageInfo_LogoutReq.Merge(m, src) xxx_messageInfo_LogoutReq.Merge(dst, src)
} }
func (m *LogoutReq) XXX_Size() int { func (m *LogoutReq) XXX_Size() int {
return xxx_messageInfo_LogoutReq.Size(m) return xxx_messageInfo_LogoutReq.Size(m)
@ -324,15 +510,16 @@ func (m *LogoutReq) GetToken() string {
} }
type UpdateUserInfoReq struct { type UpdateUserInfoReq struct {
Icon string `protobuf:"bytes,1,opt,name=icon,proto3" json:"icon,omitempty"` Icon string `protobuf:"bytes,1,opt,name=icon" json:"icon,omitempty"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
Gender int32 `protobuf:"varint,3,opt,name=gender,proto3" json:"gender,omitempty"` Gender int32 `protobuf:"varint,3,opt,name=gender" json:"gender,omitempty"`
Mobile string `protobuf:"bytes,4,opt,name=mobile,proto3" json:"mobile,omitempty"` Mobile string `protobuf:"bytes,4,opt,name=mobile" json:"mobile,omitempty"`
Birth string `protobuf:"bytes,5,opt,name=birth,proto3" json:"birth,omitempty"` Birth string `protobuf:"bytes,5,opt,name=birth" json:"birth,omitempty"`
Email string `protobuf:"bytes,6,opt,name=email,proto3" json:"email,omitempty"` Email string `protobuf:"bytes,6,opt,name=email" json:"email,omitempty"`
Ex string `protobuf:"bytes,7,opt,name=ex,proto3" json:"ex,omitempty"` Ex string `protobuf:"bytes,7,opt,name=ex" json:"ex,omitempty"`
Token string `protobuf:"bytes,8,opt,name=token,proto3" json:"token,omitempty"` Token string `protobuf:"bytes,8,opt,name=token" json:"token,omitempty"`
OperationID string `protobuf:"bytes,9,opt,name=OperationID,proto3" json:"OperationID,omitempty"` OperationID string `protobuf:"bytes,9,opt,name=OperationID" json:"OperationID,omitempty"`
Uid string `protobuf:"bytes,10,opt,name=Uid" json:"Uid,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -342,17 +529,16 @@ func (m *UpdateUserInfoReq) Reset() { *m = UpdateUserInfoReq{} }
func (m *UpdateUserInfoReq) String() string { return proto.CompactTextString(m) } func (m *UpdateUserInfoReq) String() string { return proto.CompactTextString(m) }
func (*UpdateUserInfoReq) ProtoMessage() {} func (*UpdateUserInfoReq) ProtoMessage() {}
func (*UpdateUserInfoReq) Descriptor() ([]byte, []int) { func (*UpdateUserInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ed89022014131a74, []int{5} return fileDescriptor_user_9367ac00c24112e8, []int{9}
} }
func (m *UpdateUserInfoReq) XXX_Unmarshal(b []byte) error { func (m *UpdateUserInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateUserInfoReq.Unmarshal(m, b) return xxx_messageInfo_UpdateUserInfoReq.Unmarshal(m, b)
} }
func (m *UpdateUserInfoReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *UpdateUserInfoReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UpdateUserInfoReq.Marshal(b, m, deterministic) return xxx_messageInfo_UpdateUserInfoReq.Marshal(b, m, deterministic)
} }
func (m *UpdateUserInfoReq) XXX_Merge(src proto.Message) { func (dst *UpdateUserInfoReq) XXX_Merge(src proto.Message) {
xxx_messageInfo_UpdateUserInfoReq.Merge(m, src) xxx_messageInfo_UpdateUserInfoReq.Merge(dst, src)
} }
func (m *UpdateUserInfoReq) XXX_Size() int { func (m *UpdateUserInfoReq) XXX_Size() int {
return xxx_messageInfo_UpdateUserInfoReq.Size(m) return xxx_messageInfo_UpdateUserInfoReq.Size(m)
@ -426,8 +612,19 @@ func (m *UpdateUserInfoReq) GetOperationID() string {
return "" return ""
} }
func (m *UpdateUserInfoReq) GetUid() string {
if m != nil {
return m.Uid
}
return ""
}
func init() { func init() {
proto.RegisterType((*CommonResp)(nil), "user.CommonResp") proto.RegisterType((*CommonResp)(nil), "user.CommonResp")
proto.RegisterType((*DeleteUsersResp)(nil), "user.DeleteUsersResp")
proto.RegisterType((*DeleteUsersReq)(nil), "user.DeleteUsersReq")
proto.RegisterType((*GetAllUsersUidReq)(nil), "user.GetAllUsersUidReq")
proto.RegisterType((*GetAllUsersUidResp)(nil), "user.GetAllUsersUidResp")
proto.RegisterType((*GetUserInfoReq)(nil), "user.GetUserInfoReq") proto.RegisterType((*GetUserInfoReq)(nil), "user.GetUserInfoReq")
proto.RegisterType((*GetUserInfoResp)(nil), "user.GetUserInfoResp") proto.RegisterType((*GetUserInfoResp)(nil), "user.GetUserInfoResp")
proto.RegisterType((*UserInfo)(nil), "user.UserInfo") proto.RegisterType((*UserInfo)(nil), "user.UserInfo")
@ -435,67 +632,34 @@ func init() {
proto.RegisterType((*UpdateUserInfoReq)(nil), "user.UpdateUserInfoReq") proto.RegisterType((*UpdateUserInfoReq)(nil), "user.UpdateUserInfoReq")
} }
func init() {
proto.RegisterFile("user/user.proto", fileDescriptor_ed89022014131a74)
}
var fileDescriptor_ed89022014131a74 = []byte{
// 416 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x53, 0x4d, 0x8b, 0xd4, 0x40,
0x10, 0xa5, 0x27, 0x1f, 0x9b, 0x54, 0x20, 0xbb, 0x16, 0xab, 0x36, 0x83, 0x48, 0xc8, 0x29, 0xa7,
0x15, 0xd6, 0x9b, 0x7b, 0x73, 0x06, 0x65, 0x60, 0x45, 0x08, 0xec, 0xc5, 0x5b, 0xc6, 0x94, 0x99,
0xe0, 0x24, 0x1d, 0x3b, 0x3d, 0x30, 0x37, 0xff, 0x92, 0xff, 0xc8, 0xbf, 0x22, 0xdd, 0xc9, 0x4c,
0x32, 0x33, 0xd1, 0x8b, 0x97, 0x50, 0xef, 0x75, 0xa8, 0xaa, 0xf7, 0xaa, 0x0a, 0xae, 0x77, 0x2d,
0xc9, 0x37, 0xfa, 0x73, 0xd7, 0x48, 0xa1, 0x04, 0xda, 0x3a, 0x8e, 0x3f, 0x00, 0x2c, 0x44, 0x55,
0x89, 0x3a, 0xa5, 0xb6, 0xc1, 0x57, 0xe0, 0x93, 0x94, 0x42, 0x2e, 0x44, 0x4e, 0x9c, 0x45, 0x2c,
0x71, 0xd2, 0x81, 0xc0, 0x39, 0x78, 0x06, 0x7c, 0x6a, 0x0b, 0x3e, 0x8b, 0x58, 0xe2, 0xa7, 0x47,
0x1c, 0x6f, 0x20, 0xfc, 0x48, 0xea, 0xa9, 0x25, 0xb9, 0xaa, 0xbf, 0x89, 0x94, 0x7e, 0xe0, 0x6b,
0x00, 0x5d, 0x61, 0xb5, 0x7c, 0x2c, 0x5b, 0xc5, 0x59, 0x64, 0x25, 0x7e, 0x3a, 0x62, 0xf0, 0x16,
0x1c, 0x25, 0xbe, 0x53, 0xdd, 0xa7, 0xea, 0x00, 0x46, 0x10, 0x7c, 0x6e, 0x48, 0x66, 0xaa, 0x14,
0xf5, 0x6a, 0xc9, 0x2d, 0xf3, 0x36, 0xa6, 0x62, 0x01, 0xd7, 0x27, 0x95, 0xfe, 0xa7, 0x6d, 0x8c,
0xc1, 0x5e, 0x66, 0x2a, 0xe3, 0x56, 0x64, 0x25, 0xc1, 0x7d, 0x78, 0x67, 0xfc, 0x39, 0xe6, 0x36,
0x6f, 0xf1, 0x2f, 0x06, 0xde, 0x81, 0xc2, 0x1b, 0xb0, 0x76, 0x65, 0x6e, 0x8a, 0xf8, 0xa9, 0x0e,
0x11, 0xc1, 0xae, 0xb3, 0x8a, 0xfa, 0xd4, 0x26, 0xd6, 0x5c, 0xf9, 0x55, 0xd4, 0x7d, 0xfb, 0x26,
0xc6, 0x17, 0xe0, 0x16, 0x54, 0xe7, 0x24, 0xb9, 0x6d, 0x3a, 0xec, 0x91, 0xe6, 0x2b, 0xb1, 0x2e,
0xb7, 0xc4, 0x1d, 0xf3, 0x77, 0x8f, 0xb4, 0x3f, 0xeb, 0x52, 0xaa, 0x0d, 0x77, 0x3b, 0x7f, 0x0c,
0xd0, 0x2c, 0x55, 0x59, 0xb9, 0xe5, 0x57, 0x1d, 0x6b, 0x00, 0x86, 0x30, 0xa3, 0x3d, 0xf7, 0x0c,
0x35, 0xa3, 0x7d, 0xbc, 0x00, 0xff, 0x51, 0x14, 0x62, 0xa7, 0xf4, 0x20, 0xce, 0x2c, 0x65, 0x17,
0x96, 0x4e, 0x8f, 0x22, 0xfe, 0xcd, 0xe0, 0xd9, 0x53, 0x93, 0x67, 0x8a, 0xc6, 0x63, 0x3d, 0x48,
0x63, 0x23, 0x69, 0x53, 0x16, 0x0c, 0x72, 0xad, 0xbf, 0xc8, 0xb5, 0xa7, 0xe5, 0x3a, 0x93, 0x72,
0xdd, 0x4b, 0xb9, 0x57, 0x07, 0xb9, 0x43, 0xff, 0xde, 0x3f, 0x56, 0xc9, 0xbf, 0xd0, 0x7d, 0xff,
0x13, 0xcc, 0x11, 0xe0, 0x3b, 0x08, 0x8a, 0x61, 0xa5, 0xf0, 0xb6, 0x5b, 0x83, 0xd3, 0x7d, 0x9e,
0x3f, 0x9f, 0x60, 0xdb, 0x06, 0x1f, 0x20, 0x3c, 0x35, 0x09, 0x5f, 0xf6, 0x5b, 0x74, 0x6e, 0xdd,
0xfc, 0xa6, 0x7b, 0x18, 0xee, 0xed, 0x7d, 0xf0, 0xc5, 0xd7, 0xd4, 0x83, 0xfe, 0xac, 0x5d, 0x73,
0x97, 0x6f, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xf8, 0x6d, 0x34, 0xa2, 0xaa, 0x03, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
var _ context.Context var _ context.Context
var _ grpc.ClientConnInterface var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file // This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against. // is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6 const _ = grpc.SupportPackageIsVersion4
// Client API for User service
// UserClient is the client API for User service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type UserClient interface { type UserClient interface {
GetUserInfo(ctx context.Context, in *GetUserInfoReq, opts ...grpc.CallOption) (*GetUserInfoResp, error) GetUserInfo(ctx context.Context, in *GetUserInfoReq, opts ...grpc.CallOption) (*GetUserInfoResp, error)
UpdateUserInfo(ctx context.Context, in *UpdateUserInfoReq, opts ...grpc.CallOption) (*CommonResp, error) UpdateUserInfo(ctx context.Context, in *UpdateUserInfoReq, opts ...grpc.CallOption) (*CommonResp, error)
DeleteUsers(ctx context.Context, in *DeleteUsersReq, opts ...grpc.CallOption) (*DeleteUsersResp, error)
GetAllUsersUid(ctx context.Context, in *GetAllUsersUidReq, opts ...grpc.CallOption) (*GetAllUsersUidResp, error)
} }
type userClient struct { type userClient struct {
cc grpc.ClientConnInterface cc *grpc.ClientConn
} }
func NewUserClient(cc grpc.ClientConnInterface) UserClient { func NewUserClient(cc *grpc.ClientConn) UserClient {
return &userClient{cc} return &userClient{cc}
} }
func (c *userClient) GetUserInfo(ctx context.Context, in *GetUserInfoReq, opts ...grpc.CallOption) (*GetUserInfoResp, error) { func (c *userClient) GetUserInfo(ctx context.Context, in *GetUserInfoReq, opts ...grpc.CallOption) (*GetUserInfoResp, error) {
out := new(GetUserInfoResp) out := new(GetUserInfoResp)
err := c.cc.Invoke(ctx, "/user.user/getUserInfo", in, out, opts...) err := grpc.Invoke(ctx, "/user.user/getUserInfo", in, out, c.cc, opts...)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -504,28 +668,38 @@ func (c *userClient) GetUserInfo(ctx context.Context, in *GetUserInfoReq, opts .
func (c *userClient) UpdateUserInfo(ctx context.Context, in *UpdateUserInfoReq, opts ...grpc.CallOption) (*CommonResp, error) { func (c *userClient) UpdateUserInfo(ctx context.Context, in *UpdateUserInfoReq, opts ...grpc.CallOption) (*CommonResp, error) {
out := new(CommonResp) out := new(CommonResp)
err := c.cc.Invoke(ctx, "/user.user/UpdateUserInfo", in, out, opts...) err := grpc.Invoke(ctx, "/user.user/UpdateUserInfo", in, out, c.cc, opts...)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return out, nil return out, nil
} }
// UserServer is the server API for User service. func (c *userClient) DeleteUsers(ctx context.Context, in *DeleteUsersReq, opts ...grpc.CallOption) (*DeleteUsersResp, error) {
type UserServer interface { out := new(DeleteUsersResp)
GetUserInfo(context.Context, *GetUserInfoReq) (*GetUserInfoResp, error) err := grpc.Invoke(ctx, "/user.user/DeleteUsers", in, out, c.cc, opts...)
UpdateUserInfo(context.Context, *UpdateUserInfoReq) (*CommonResp, error) if err != nil {
return nil, err
} }
return out, nil
// UnimplementedUserServer can be embedded to have forward compatible implementations.
type UnimplementedUserServer struct {
} }
func (*UnimplementedUserServer) GetUserInfo(ctx context.Context, req *GetUserInfoReq) (*GetUserInfoResp, error) { func (c *userClient) GetAllUsersUid(ctx context.Context, in *GetAllUsersUidReq, opts ...grpc.CallOption) (*GetAllUsersUidResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetUserInfo not implemented") out := new(GetAllUsersUidResp)
err := grpc.Invoke(ctx, "/user.user/GetAllUsersUid", in, out, c.cc, opts...)
if err != nil {
return nil, err
} }
func (*UnimplementedUserServer) UpdateUserInfo(ctx context.Context, req *UpdateUserInfoReq) (*CommonResp, error) { return out, nil
return nil, status.Errorf(codes.Unimplemented, "method UpdateUserInfo not implemented") }
// Server API for User service
type UserServer interface {
GetUserInfo(context.Context, *GetUserInfoReq) (*GetUserInfoResp, error)
UpdateUserInfo(context.Context, *UpdateUserInfoReq) (*CommonResp, error)
DeleteUsers(context.Context, *DeleteUsersReq) (*DeleteUsersResp, error)
GetAllUsersUid(context.Context, *GetAllUsersUidReq) (*GetAllUsersUidResp, error)
} }
func RegisterUserServer(s *grpc.Server, srv UserServer) { func RegisterUserServer(s *grpc.Server, srv UserServer) {
@ -568,6 +742,42 @@ func _User_UpdateUserInfo_Handler(srv interface{}, ctx context.Context, dec func
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _User_DeleteUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteUsersReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(UserServer).DeleteUsers(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/user.user/DeleteUsers",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(UserServer).DeleteUsers(ctx, req.(*DeleteUsersReq))
}
return interceptor(ctx, in, info, handler)
}
func _User_GetAllUsersUid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetAllUsersUidReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(UserServer).GetAllUsersUid(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/user.user/GetAllUsersUid",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(UserServer).GetAllUsersUid(ctx, req.(*GetAllUsersUidReq))
}
return interceptor(ctx, in, info, handler)
}
var _User_serviceDesc = grpc.ServiceDesc{ var _User_serviceDesc = grpc.ServiceDesc{
ServiceName: "user.user", ServiceName: "user.user",
HandlerType: (*UserServer)(nil), HandlerType: (*UserServer)(nil),
@ -580,7 +790,56 @@ var _User_serviceDesc = grpc.ServiceDesc{
MethodName: "UpdateUserInfo", MethodName: "UpdateUserInfo",
Handler: _User_UpdateUserInfo_Handler, Handler: _User_UpdateUserInfo_Handler,
}, },
{
MethodName: "DeleteUsers",
Handler: _User_DeleteUsers_Handler,
},
{
MethodName: "GetAllUsersUid",
Handler: _User_GetAllUsersUid_Handler,
},
}, },
Streams: []grpc.StreamDesc{}, Streams: []grpc.StreamDesc{},
Metadata: "user/user.proto", Metadata: "user/user.proto",
} }
func init() { proto.RegisterFile("user/user.proto", fileDescriptor_user_9367ac00c24112e8) }
var fileDescriptor_user_9367ac00c24112e8 = []byte{
// 560 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x4d, 0x6f, 0xd3, 0x40,
0x10, 0x95, 0xed, 0x7c, 0x79, 0x22, 0x92, 0x74, 0x55, 0x60, 0x15, 0x21, 0x14, 0x59, 0x1c, 0x72,
0x2a, 0x28, 0xdc, 0xe8, 0x09, 0x12, 0x51, 0x45, 0x14, 0x55, 0xb2, 0xe4, 0x0b, 0x27, 0x9c, 0xee,
0x34, 0x5d, 0xe1, 0x78, 0x8d, 0xbd, 0x91, 0x7a, 0xe4, 0x27, 0xf1, 0xd7, 0xf8, 0x07, 0x68, 0xc7,
0x71, 0xe2, 0xaf, 0x72, 0xa0, 0x17, 0x6b, 0xe7, 0xed, 0xfa, 0xbd, 0x7d, 0x33, 0xb3, 0x03, 0xe3,
0x7d, 0x86, 0xe9, 0x5b, 0xf3, 0xb9, 0x48, 0x52, 0xa5, 0x15, 0xeb, 0x98, 0xb5, 0xf7, 0x19, 0x60,
0xa9, 0x76, 0x3b, 0x15, 0xfb, 0x98, 0x25, 0xec, 0x15, 0xb8, 0x98, 0xa6, 0x2a, 0x5d, 0x2a, 0x81,
0xdc, 0x9a, 0x59, 0xf3, 0xae, 0x7f, 0x02, 0xd8, 0x14, 0x06, 0x14, 0x7c, 0xcd, 0xb6, 0xdc, 0x9e,
0x59, 0x73, 0xd7, 0x3f, 0xc6, 0x9e, 0x84, 0xf1, 0x0a, 0x23, 0xd4, 0x18, 0x64, 0x98, 0x66, 0x44,
0xf6, 0x0e, 0xe0, 0xf6, 0x48, 0x4d, 0x6c, 0xc3, 0xc5, 0xe4, 0x82, 0x6e, 0x70, 0x92, 0xf4, 0x4b,
0x67, 0xd8, 0x1b, 0x78, 0x76, 0x17, 0xca, 0x08, 0x45, 0x20, 0xc5, 0xb5, 0xcc, 0x34, 0xb7, 0x67,
0xce, 0xdc, 0xf5, 0xab, 0xa0, 0x17, 0xc3, 0xa8, 0x22, 0xf5, 0xd3, 0xfc, 0x27, 0x72, 0xa4, 0xfa,
0x5f, 0x05, 0x64, 0xe7, 0xd0, 0xd5, 0xea, 0x07, 0xc6, 0xdc, 0xa1, 0xbb, 0xe7, 0x01, 0x9b, 0xc1,
0xf0, 0x26, 0xc1, 0x34, 0xd4, 0x52, 0xc5, 0xeb, 0x15, 0xef, 0xd0, 0x5e, 0x19, 0xf2, 0xbe, 0xc0,
0xd9, 0x15, 0xea, 0x8f, 0x51, 0x44, 0x7a, 0x81, 0x14, 0x46, 0xf2, 0x48, 0x66, 0xd7, 0xc8, 0x54,
0x89, 0x2c, 0x17, 0x2a, 0x43, 0xde, 0x77, 0x60, 0x75, 0xb2, 0xff, 0x4a, 0x15, 0x87, 0xfe, 0xbe,
0x62, 0xb6, 0x08, 0xbd, 0x7b, 0x18, 0x5d, 0xa1, 0x36, 0xf4, 0xeb, 0xf8, 0x4e, 0x99, 0xbb, 0xbe,
0x06, 0x30, 0x54, 0xeb, 0x15, 0x1d, 0xb7, 0xe8, 0x78, 0x09, 0x79, 0xdc, 0xcb, 0x4d, 0xd3, 0x4b,
0x39, 0x31, 0x0a, 0xc6, 0x15, 0xa5, 0xa7, 0x34, 0x10, 0xf3, 0xa0, 0xb3, 0x0a, 0x75, 0xc8, 0x9d,
0x99, 0x33, 0x1f, 0x2e, 0x46, 0xb9, 0xf9, 0x23, 0x37, 0xed, 0x79, 0xbf, 0x2d, 0x18, 0x14, 0x10,
0x9b, 0x80, 0xb3, 0x97, 0x82, 0x44, 0x5c, 0xdf, 0x2c, 0x19, 0x83, 0x4e, 0x1c, 0xee, 0xf0, 0x40,
0x4d, 0x6b, 0x83, 0xc9, 0x5b, 0x55, 0xd4, 0x9c, 0xd6, 0xec, 0x05, 0xf4, 0xb6, 0x18, 0x0b, 0x4c,
0xa9, 0xda, 0x5d, 0xff, 0x10, 0x19, 0x7c, 0xa7, 0x36, 0x32, 0x42, 0xde, 0xa5, 0xd3, 0x87, 0xc8,
0xe4, 0x67, 0x23, 0x53, 0x7d, 0xcf, 0x7b, 0x79, 0x7e, 0x28, 0x30, 0x28, 0xee, 0x42, 0x19, 0xf1,
0x7e, 0x8e, 0x52, 0xc0, 0x46, 0x60, 0xe3, 0x03, 0x1f, 0x10, 0x64, 0xe3, 0x83, 0xb7, 0x04, 0xf7,
0x5a, 0x6d, 0xd5, 0x5e, 0x9b, 0x42, 0xd4, 0x52, 0x6a, 0x35, 0x52, 0xda, 0x5e, 0x0a, 0xef, 0x8f,
0x05, 0x67, 0x41, 0x22, 0xc2, 0xbc, 0xe5, 0x8b, 0xb2, 0x16, 0xd6, 0xac, 0x92, 0xb5, 0xb6, 0x14,
0x9c, 0xec, 0x3a, 0x8f, 0xd8, 0xed, 0xb4, 0xdb, 0xed, 0xb6, 0xda, 0xed, 0x35, 0xed, 0xf6, 0x0b,
0xbb, 0xa7, 0xfb, 0x0f, 0xfe, 0xd1, 0x4a, 0x6e, 0xd3, 0xf7, 0x04, 0x9c, 0x40, 0x0a, 0x0e, 0x79,
0x31, 0x03, 0x29, 0x16, 0xbf, 0x6c, 0xa0, 0x09, 0xc5, 0x3e, 0xc0, 0x70, 0x7b, 0xea, 0x32, 0x76,
0x9e, 0x77, 0x46, 0xb5, 0xc5, 0xa7, 0xcf, 0x5b, 0xd0, 0x2c, 0x61, 0x97, 0x30, 0xaa, 0xe6, 0x8d,
0xbd, 0x3c, 0x34, 0x56, 0x3d, 0x9b, 0xd3, 0xc6, 0x73, 0x33, 0xc2, 0xa5, 0x39, 0x53, 0x08, 0x57,
0x47, 0x4f, 0x21, 0x5c, 0x9f, 0x7d, 0x4b, 0x7a, 0x84, 0xa5, 0x67, 0x5e, 0x08, 0x37, 0x26, 0xc9,
0x94, 0xb7, 0x6f, 0x64, 0xc9, 0xa7, 0xe1, 0x37, 0xd7, 0x6c, 0x5d, 0x9a, 0xcf, 0xa6, 0x47, 0x53,
0xfb, 0xfd, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x0f, 0x5a, 0xd9, 0xc8, 0x05, 0x00, 0x00,
}

@ -6,7 +6,25 @@ message CommonResp{
int32 errorCode = 1; int32 errorCode = 1;
string errorMsg = 2; string errorMsg = 2;
} }
message DeleteUsersResp{
CommonResp commonResp = 1;
repeated string failedUidList = 2;
}
message DeleteUsersReq{
repeated string deleteUidList = 2;
string token = 3;
string OperationID = 4;
}
message GetAllUsersUidReq{
string token = 2;
string operationID = 3;
}
message GetAllUsersUidResp{
CommonResp commonResp = 1;
repeated string uidList = 2;
}
message GetUserInfoReq{ message GetUserInfoReq{
repeated string userIDList = 1; repeated string userIDList = 1;
string token = 2; string token = 2;
@ -44,9 +62,12 @@ message UpdateUserInfoReq{
string ex = 7; string ex = 7;
string token = 8; string token = 8;
string OperationID = 9; string OperationID = 9;
string Uid = 10;
} }
service user { service user {
rpc getUserInfo(GetUserInfoReq) returns(GetUserInfoResp); rpc getUserInfo(GetUserInfoReq) returns(GetUserInfoResp);
rpc UpdateUserInfo(UpdateUserInfoReq) returns(CommonResp); rpc UpdateUserInfo(UpdateUserInfoReq) returns(CommonResp);
rpc DeleteUsers(DeleteUsersReq)returns(DeleteUsersResp);
rpc GetAllUsersUid(GetAllUsersUidReq)returns(GetAllUsersUidResp);
} }

@ -20,6 +20,7 @@ func NewContentStructString(isDisplay int32, ID string, text string) string {
c := Content{IsDisplay: isDisplay, ID: ID, Text: text} c := Content{IsDisplay: isDisplay, ID: ID, Text: text}
return c.contentToString() return c.contentToString()
} }
func (c *Content) contentToString() string { func (c *Content) contentToString() string {
data, _ := json.Marshal(c) data, _ := json.Marshal(c)
dataString := string(data) dataString := string(data)
@ -62,6 +63,13 @@ type NotificationContent struct {
DefaultTips string `json:"defaultTips"` DefaultTips string `json:"defaultTips"`
Detail string `json:"detail"` Detail string `json:"detail"`
} }
func (c *NotificationContent) ContentToString() string {
data, _ := json.Marshal(c)
dataString := string(data)
return dataString
}
type KickGroupMemberApiReq struct { type KickGroupMemberApiReq struct {
GroupID string `json:"groupID"` GroupID string `json:"groupID"`
UidList []string `json:"uidList"` UidList []string `json:"uidList"`

@ -17,6 +17,13 @@ func (s *friendServer) AddBlacklist(ctx context.Context, req *pbFriend.AddBlackl
log.Error(req.Token, req.OperationID, "err=%s,parse token failed", err.Error()) log.Error(req.Token, req.OperationID, "err=%s,parse token failed", err.Error())
return &pbFriend.CommonResp{ErrorCode: config.ErrParseToken.ErrCode, ErrorMsg: config.ErrParseToken.ErrMsg}, nil return &pbFriend.CommonResp{ErrorCode: config.ErrParseToken.ErrCode, ErrorMsg: config.ErrParseToken.ErrMsg}, nil
} }
isMagagerFlag := 0
tokenUid := claims.UID
if tokenUid == config.Config.AppManagerUid {
isMagagerFlag = 1
}
if isMagagerFlag == 0 {
err = im_mysql_model.InsertInToUserBlackList(claims.UID, req.Uid) err = im_mysql_model.InsertInToUserBlackList(claims.UID, req.Uid)
if err != nil { if err != nil {
log.Error(req.Token, req.OperationID, "err=%s,Failed to add blacklist", err.Error()) log.Error(req.Token, req.OperationID, "err=%s,Failed to add blacklist", err.Error())
@ -25,3 +32,12 @@ func (s *friendServer) AddBlacklist(ctx context.Context, req *pbFriend.AddBlackl
log.Info(req.Token, req.OperationID, "rpc add blacklist success return,uid=%s", req.Uid) log.Info(req.Token, req.OperationID, "rpc add blacklist success return,uid=%s", req.Uid)
return &pbFriend.CommonResp{}, nil return &pbFriend.CommonResp{}, nil
} }
err = im_mysql_model.InsertInToUserBlackList(req.OwnerUid, req.Uid)
if err != nil {
log.Error(req.Token, req.OperationID, "err=%s,Failed to add blacklist", err.Error())
return &pbFriend.CommonResp{ErrorCode: config.ErrMysql.ErrCode, ErrorMsg: config.ErrMysql.ErrMsg}, nil
}
log.Info(req.Token, req.OperationID, "rpc add blacklist success return,uid=%s", req.Uid)
return &pbFriend.CommonResp{}, nil
}

@ -51,3 +51,66 @@ func (s *friendServer) AddFriend(ctx context.Context, req *pbFriend.AddFriendReq
} }
return &pbFriend.CommonResp{}, nil return &pbFriend.CommonResp{}, nil
} }
func (s *friendServer) ImportFriend(ctx context.Context, req *pbFriend.ImportFriendReq) (*pbFriend.CommonResp, error) {
log.Info(req.Token, req.OperationID, "ImportFriendis server,userid=%s", req.OwnerUid)
//Parse token, to find current user information
claims, err := utils.ParseToken(req.Token)
if err != nil {
log.Error(req.Token, req.OperationID, "err=%s,parse token failed", err.Error())
return &pbFriend.CommonResp{ErrorCode: config.ErrParseToken.ErrCode, ErrorMsg: config.ErrParseToken.ErrMsg}, nil
}
if claims.UID != config.Config.AppManagerUid {
log.Error(req.Token, req.OperationID, "not magager uid", claims.UID, config.Config.AppManagerUid)
return &pbFriend.CommonResp{ErrorCode: config.ErrParseToken.ErrCode, ErrorMsg: config.ErrParseToken.ErrMsg}, nil
}
if _, err = im_mysql_model.FindUserByUID(req.Uid); err != nil {
log.Error(req.Token, req.OperationID, "this user not exists,cant not add friend", req.Uid)
return &pbFriend.CommonResp{ErrorCode: config.ErrAddFriend.ErrCode, ErrorMsg: config.ErrSearchUserInfo.ErrMsg}, nil
}
if _, err = im_mysql_model.FindUserByUID(req.OwnerUid); err != nil {
log.Error(req.Token, req.OperationID, "this user not exists,cant not add friend", req.OwnerUid)
return &pbFriend.CommonResp{ErrorCode: config.ErrAddFriend.ErrCode, ErrorMsg: config.ErrSearchUserInfo.ErrMsg}, nil
}
_, err = im_mysql_model.FindFriendRelationshipFromFriend(req.OwnerUid, req.Uid)
if err != nil {
log.Error("", req.OperationID, err.Error())
}
//Establish two single friendship
err = im_mysql_model.InsertToFriend(req.OwnerUid, req.Uid, 1)
if err != nil {
log.Error(req.Token, req.OperationID, "err=%s,create friendship failed", err.Error())
}
err = im_mysql_model.InsertToFriend(req.Uid, req.OwnerUid, 1)
if err != nil {
log.Error(req.Token, req.OperationID, "err=%s,create friendship failed", err.Error())
}
logic.SendMsgByWS(&pbChat.WSToMsgSvrChatMsg{
SendID: req.OwnerUid,
RecvID: req.Uid,
Content: content_struct.NewContentStructString(0, "", " add you as a friend."),
SendTime: utils.GetCurrentTimestampBySecond(),
MsgFrom: constant.UserMsgType, //Notification message identification
ContentType: constant.AcceptFriendApplicationTip, //Add friend flag
SessionType: constant.SingleChatType,
OperationID: req.OperationID,
})
logic.SendMsgByWS(&pbChat.WSToMsgSvrChatMsg{
SendID: req.Uid,
RecvID: req.OwnerUid,
Content: content_struct.NewContentStructString(0, "", " add you as a friend."),
SendTime: utils.GetCurrentTimestampBySecond(),
MsgFrom: constant.UserMsgType, //Notification message identification
ContentType: constant.AcceptFriendApplicationTip, //Add friend flag
SessionType: constant.SingleChatType,
OperationID: req.OperationID,
})
return &pbFriend.CommonResp{}, nil
}

@ -7,7 +7,10 @@ import (
"Open_IM/src/common/db/mysql_model/im_mysql_model" "Open_IM/src/common/db/mysql_model/im_mysql_model"
"Open_IM/src/common/log" "Open_IM/src/common/log"
"Open_IM/src/grpc-etcdv3/getcdv3" "Open_IM/src/grpc-etcdv3/getcdv3"
pbChat "Open_IM/src/proto/chat"
pbGroup "Open_IM/src/proto/group" pbGroup "Open_IM/src/proto/group"
"Open_IM/src/push/content_struct"
"Open_IM/src/push/logic"
"Open_IM/src/utils" "Open_IM/src/utils"
"context" "context"
"google.golang.org/grpc" "google.golang.org/grpc"
@ -82,6 +85,13 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR
return &pbGroup.CreateGroupResp{ErrorCode: config.ErrCreateGroup.ErrCode, ErrorMsg: config.ErrCreateGroup.ErrMsg}, nil return &pbGroup.CreateGroupResp{ErrorCode: config.ErrCreateGroup.ErrCode, ErrorMsg: config.ErrCreateGroup.ErrMsg}, nil
} }
isMagagerFlag := 0
tokenUid := claims.UID
if tokenUid == config.Config.AppManagerUid {
isMagagerFlag = 1
}
if isMagagerFlag == 0 {
//Add the group owner to the group first, otherwise the group creation will fail //Add the group owner to the group first, otherwise the group creation will fail
us, err := im_mysql_model.FindUserByUID(claims.UID) us, err := im_mysql_model.FindUserByUID(claims.UID)
if err != nil { if err != nil {
@ -99,6 +109,7 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR
log.Error("", "", "create mongo group member failed, db.DB.AddGroupMember fail [err: %s]", err.Error()) log.Error("", "", "create mongo group member failed, db.DB.AddGroupMember fail [err: %s]", err.Error())
return &pbGroup.CreateGroupResp{ErrorCode: config.ErrCreateGroup.ErrCode, ErrorMsg: config.ErrCreateGroup.ErrMsg}, nil return &pbGroup.CreateGroupResp{ErrorCode: config.ErrCreateGroup.ErrCode, ErrorMsg: config.ErrCreateGroup.ErrMsg}, nil
} }
}
//Binding group id and member id //Binding group id and member id
for _, user := range req.MemberList { for _, user := range req.MemberList {
@ -116,17 +127,33 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR
log.Error("", "", "add mongo group member failed, db.DB.AddGroupMember fail [err: %s]", err.Error()) log.Error("", "", "add mongo group member failed, db.DB.AddGroupMember fail [err: %s]", err.Error())
} }
} }
if isMagagerFlag == 1 {
//type NotificationContent struct {
// IsDisplay int32 `json:"isDisplay"`
// DefaultTips string `json:"defaultTips"`
// Detail string `json:"detail"`
//} n := NotificationContent{
// IsDisplay: 1,
// DefaultTips: "You have joined the group chat:" + createGroupResp.Data.GroupName,
// Detail: createGroupResp.Data.GroupId,
// }
////Push message when create group chat ////Push message when create group chat
//logic.SendMsgByWS(&pbChat.WSToMsgSvrChatMsg{ n := content_struct.NotificationContent{1, req.GroupName, groupId}
// SendID: claims.UID, logic.SendMsgByWS(&pbChat.WSToMsgSvrChatMsg{
// RecvID: groupId, SendID: claims.UID,
// Content: content_struct.NewContentStructString(0, "", req.String()), RecvID: groupId,
// SendTime: utils.GetCurrentTimestampBySecond(), Content: n.ContentToString(),
// MsgFrom: constant.SysMsgType, //Notification message identification SendTime: utils.GetCurrentTimestampByNano(),
// ContentType: constant.CreateGroupTip, //Add friend flag MsgFrom: constant.SysMsgType, //Notification message identification
// SessionType: constant.GroupChatType, ContentType: constant.CreateGroupTip, //Add friend flag
// OperationID: req.OperationID, SessionType: constant.GroupChatType,
//}) OperationID: req.OperationID,
})
}
log.Info(req.Token, req.OperationID, "rpc create group success return") log.Info(req.Token, req.OperationID, "rpc create group success return")
return &pbGroup.CreateGroupResp{GroupID: groupId}, nil return &pbGroup.CreateGroupResp{GroupID: groupId}, nil
} }

@ -2,7 +2,12 @@ package group
import ( import (
"Open_IM/src/common/config" "Open_IM/src/common/config"
"Open_IM/src/common/constant"
"Open_IM/src/common/db" "Open_IM/src/common/db"
pbChat "Open_IM/src/proto/chat"
"Open_IM/src/push/content_struct"
"Open_IM/src/push/logic"
"encoding/json"
imdb "Open_IM/src/common/db/mysql_model/im_mysql_model" imdb "Open_IM/src/common/db/mysql_model/im_mysql_model"
"Open_IM/src/common/log" "Open_IM/src/common/log"
@ -59,7 +64,7 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite
} }
log.Info(claims.UID, req.OperationID, "recv req: ", req.String()) log.Info(claims.UID, req.OperationID, "recv req: ", req.String())
if !imdb.IsExistGroupMember(req.GroupID, claims.UID) { if !imdb.IsExistGroupMember(req.GroupID, claims.UID) && claims.UID != config.Config.AppManagerUid {
log.Error(req.Token, req.OperationID, "err= invite user not in group") log.Error(req.Token, req.OperationID, "err= invite user not in group")
return &pbGroup.InviteUserToGroupResp{ErrorCode: config.ErrAccess.ErrCode, ErrorMsg: config.ErrAccess.ErrMsg}, nil return &pbGroup.InviteUserToGroupResp{ErrorCode: config.ErrAccess.ErrCode, ErrorMsg: config.ErrAccess.ErrMsg}, nil
} }
@ -94,16 +99,6 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite
resp.Id2Result = append(resp.Id2Result, &resultNode) resp.Id2Result = append(resp.Id2Result, &resultNode)
continue continue
} }
/*
err = imdb.InsertGroupRequest(req.GroupID, fromUserInfo.UID, fromUserInfo.Name, fromUserInfo.Icon, toUserInfo.UID, req.Reason, "invited", 1)
if err != nil {
log.Error(v, req.OperationID, "InsertGroupRequest failed, err: ", err.Error(), "params: ",
req.GroupID, fromUserInfo.UID, fromUserInfo.Name, fromUserInfo.Icon, toUserInfo.UID, req.Reason)
resultNode.Result = -1
resp.Id2Result = append(resp.Id2Result, &resultNode)
continue
}
*/
err = imdb.InsertGroupMember(req.GroupID, toUserInfo.UID, toUserInfo.Name, toUserInfo.Icon, 0) err = imdb.InsertGroupMember(req.GroupID, toUserInfo.UID, toUserInfo.Name, toUserInfo.Icon, 0)
if err != nil { if err != nil {
@ -122,22 +117,42 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite
} }
resp.ErrorCode = 0 resp.ErrorCode = 0
resp.ErrorMsg = "ok" resp.ErrorMsg = "ok"
/*
var chatMsg pbChat.WSToMsgSvrChatMsg if claims.UID == config.Config.AppManagerUid {
chatMsg.SendID = claims.UID var iu inviteUserToGroupReq
chatMsg.RecvID = req.GroupID iu.GroupID = req.GroupID
content, _ := json.Marshal(req) iu.OperationID = req.OperationID
chatMsg.Content = string(content) iu.Reason = req.Reason
chatMsg.SendTime = utils.GetCurrentTimestampBySecond() iu.UidList = req.UidList
chatMsg.MsgFrom = constant.UserMsgType n := content_struct.NotificationContent{1, req.GroupID, iu.ContentToString()}
chatMsg.ContentType = constant.InviteUserToGroupTip logic.SendMsgByWS(&pbChat.WSToMsgSvrChatMsg{
chatMsg.SessionType = constant.GroupChatType SendID: claims.UID,
logic.SendMsgByWS(&chatMsg) RecvID: req.GroupID,
*/ Content: n.ContentToString(),
SendTime: utils.GetCurrentTimestampByNano(),
MsgFrom: constant.UserMsgType,
ContentType: constant.InviteUserToGroupTip,
SessionType: constant.GroupChatType,
OperationID: req.OperationID,
})
}
return &resp, nil return &resp, nil
} }
type inviteUserToGroupReq struct {
GroupID string `json:"groupID"`
UidList []string `json:"uidList"`
Reason string `json:"reason"`
OperationID string `json:"operationID"`
}
func (c *inviteUserToGroupReq) ContentToString() string {
data, _ := json.Marshal(c)
dataString := string(data)
return dataString
}
func (s *groupServer) GetGroupAllMember(ctx context.Context, req *pbGroup.GetGroupAllMemberReq) (*pbGroup.GetGroupAllMemberResp, error) { func (s *groupServer) GetGroupAllMember(ctx context.Context, req *pbGroup.GetGroupAllMemberReq) (*pbGroup.GetGroupAllMemberResp, error) {
claims, err := utils.ParseToken(req.Token) claims, err := utils.ParseToken(req.Token)
if err != nil { if err != nil {
@ -209,6 +224,28 @@ func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbGroup.GetGr
return &resp, nil return &resp, nil
} }
type groupMemberFullInfo struct {
GroupId string `json:"groupID"`
UserId string `json:"userId"`
Role int `json:"role"`
JoinTime uint64 `json:"joinTime"`
NickName string `json:"nickName"`
FaceUrl string `json:"faceUrl"`
}
type kickGroupMemberApiReq struct {
GroupID string `json:"groupID"`
UidListInfo []groupMemberFullInfo `json:"uidListInfo"`
Reason string `json:"reason"`
OperationID string `json:"operationID"`
}
func (c *kickGroupMemberApiReq) ContentToString() string {
data, _ := json.Marshal(c)
dataString := string(data)
return dataString
}
func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGroupMemberReq) (*pbGroup.KickGroupMemberResp, error) { func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGroupMemberReq) (*pbGroup.KickGroupMemberResp, error) {
claims, err := utils.ParseToken(req.Token) claims, err := utils.ParseToken(req.Token)
if err != nil { if err != nil {
@ -230,6 +267,12 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou
break break
} }
} }
if flag != 1 {
if claims.UID == config.Config.AppManagerUid {
flag = 1
}
}
if flag != 1 { if flag != 1 {
log.Error(claims.UID, req.OperationID, "no access kick") log.Error(claims.UID, req.OperationID, "no access kick")
return &pbGroup.KickGroupMemberResp{ErrorCode: config.ErrAccess.ErrCode, ErrorMsg: config.ErrAccess.ErrMsg}, nil return &pbGroup.KickGroupMemberResp{ErrorCode: config.ErrAccess.ErrCode, ErrorMsg: config.ErrAccess.ErrMsg}, nil
@ -262,29 +305,48 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou
} }
} }
var kq kickGroupMemberApiReq
/* kq.GroupID = req.GroupID
var chatMsg pbChat.WSToMsgSvrChatMsg kq.OperationID = req.OperationID
chatMsg.SendID = claims.UID kq.Reason = req.Reason
chatMsg.RecvID = req.GroupID
content, _ := json.Marshal(req)
chatMsg.Content = string(content)
chatMsg.SendTime = utils.GetCurrentTimestampBySecond()
chatMsg.MsgFrom = constant.UserMsgType
chatMsg.ContentType = constant.KickGroupMemberTip
chatMsg.SessionType = constant.GroupChatType
logic.SendMsgByWS(&chatMsg)
for _, v := range req.UidList {
kickChatMsg := chatMsg
kickChatMsg.RecvID = v
kickChatMsg.SendTime = utils.GetCurrentTimestampBySecond()
kickChatMsg.SessionType = constant.SingleChatType
logic.SendMsgByWS(&kickChatMsg)
}
*/
var gf groupMemberFullInfo
for _, v := range req.UidListInfo {
gf.UserId = v.UserId
gf.GroupId = req.GroupID
kq.UidListInfo = append(kq.UidListInfo, gf)
}
n := content_struct.NotificationContent{1, req.GroupID, kq.ContentToString()}
if claims.UID == config.Config.AppManagerUid {
log.Info("", req.OperationID, claims.UID, req.GroupID)
logic.SendMsgByWS(&pbChat.WSToMsgSvrChatMsg{
SendID: claims.UID,
RecvID: req.GroupID,
Content: n.ContentToString(),
SendTime: utils.GetCurrentTimestampByNano(),
MsgFrom: constant.UserMsgType,
ContentType: constant.KickGroupMemberTip,
SessionType: constant.GroupChatType,
OperationID: req.OperationID,
})
for _, v := range req.UidListInfo {
log.Info("", req.OperationID, claims.UID, v.UserId)
logic.SendMsgByWS(&pbChat.WSToMsgSvrChatMsg{
SendID: claims.UID,
RecvID: v.UserId,
Content: n.ContentToString(),
SendTime: utils.GetCurrentTimestampBySecond(),
MsgFrom: constant.UserMsgType,
ContentType: constant.KickGroupMemberTip,
SessionType: constant.SingleChatType,
OperationID: req.OperationID,
})
}
}
resp.ErrorCode = 0 resp.ErrorCode = 0
return &resp, nil return &resp, nil
} }

@ -0,0 +1,61 @@
/*
** description("").
** copyright('open-im,www.open-im.io').
** author("fg,Gordon@tuoyun.net").
** time(2021/9/15 10:28).
*/
package user
import (
"Open_IM/src/common/config"
"Open_IM/src/common/db/mysql_model/im_mysql_model"
"Open_IM/src/common/log"
pbUser "Open_IM/src/proto/user"
"Open_IM/src/utils"
"context"
)
func (s *userServer) DeleteUsers(_ context.Context, req *pbUser.DeleteUsersReq) (*pbUser.DeleteUsersResp, error) {
log.InfoByKv("rpc DeleteUsers arrived server", req.OperationID, "args", req.String())
var resp pbUser.DeleteUsersResp
c, err := utils.ParseToken(req.Token)
if err != nil {
log.ErrorByKv("parse token failed", req.OperationID, "err", err.Error())
return &pbUser.DeleteUsersResp{CommonResp: &pbUser.CommonResp{ErrorCode: config.ErrParseToken.ErrCode, ErrorMsg: err.Error()}, FailedUidList: req.DeleteUidList}, nil
}
if c.UID != config.Config.AppManagerUid {
log.ErrorByKv(" Authentication failed", req.OperationID, "args", c)
return &pbUser.DeleteUsersResp{CommonResp: &pbUser.CommonResp{ErrorCode: 401, ErrorMsg: "not authorized"}, FailedUidList: req.DeleteUidList}, nil
}
for _, uid := range req.DeleteUidList {
err = im_mysql_model.UserDelete(uid)
if err != nil {
resp.CommonResp.ErrorCode = 201
resp.CommonResp.ErrorMsg = "some uid deleted failed"
resp.FailedUidList = append(resp.FailedUidList, uid)
}
}
return &resp, nil
}
func (s *userServer) GetAllUsersUid(_ context.Context, req *pbUser.GetAllUsersUidReq) (*pbUser.GetAllUsersUidResp, error) {
log.InfoByKv("rpc GetAllUsersUid arrived server", req.OperationID, "args", req.String())
c, err := utils.ParseToken(req.Token)
if err != nil {
log.InfoByKv("parse token failed", req.OperationID, "err", err.Error())
return &pbUser.GetAllUsersUidResp{CommonResp: &pbUser.CommonResp{ErrorCode: config.ErrParseToken.ErrCode, ErrorMsg: err.Error()}}, nil
}
if c.UID != config.Config.AppManagerUid {
log.ErrorByKv(" Authentication failed", req.OperationID, "args", c)
return &pbUser.GetAllUsersUidResp{CommonResp: &pbUser.CommonResp{ErrorCode: 401, ErrorMsg: "not authorized"}}, nil
}
uidList, err := im_mysql_model.SelectAllUID()
if err != nil {
log.ErrorByKv("db get failed", req.OperationID, "err", err.Error())
return &pbUser.GetAllUsersUidResp{CommonResp: &pbUser.CommonResp{ErrorCode: config.ErrMysql.ErrCode, ErrorMsg: err.Error()}}, nil
} else {
return &pbUser.GetAllUsersUidResp{CommonResp: &pbUser.CommonResp{ErrorCode: 0, ErrorMsg: ""}, UidList: uidList}, nil
}
}

@ -22,7 +22,15 @@ func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbUser.UpdateUserI
log.Error(req.Token, req.OperationID, "err=%s,parse token failed", err.Error()) log.Error(req.Token, req.OperationID, "err=%s,parse token failed", err.Error())
return &pbUser.CommonResp{ErrorCode: config.ErrParseToken.ErrCode, ErrorMsg: err.Error()}, nil return &pbUser.CommonResp{ErrorCode: config.ErrParseToken.ErrCode, ErrorMsg: err.Error()}, nil
} }
err = im_mysql_model.UpDateUserInfo(claims.UID, req.Name, req.Icon, req.Mobile, req.Birth, req.Email, req.Ex, req.Gender)
ownerUid := ""
if claims.UID == config.Config.AppManagerUid {
ownerUid = req.Uid
} else {
ownerUid = claims.UID
}
err = im_mysql_model.UpDateUserInfo(ownerUid, req.Name, req.Icon, req.Mobile, req.Birth, req.Email, req.Ex, req.Gender)
if err != nil { if err != nil {
log.Error(req.Token, req.OperationID, "update user some attribute failed,err=%s", err.Error()) log.Error(req.Token, req.OperationID, "update user some attribute failed,err=%s", err.Error())
return &pbUser.CommonResp{ErrorCode: config.ErrModifyUserInfo.ErrCode, ErrorMsg: config.ErrModifyUserInfo.ErrMsg}, nil return &pbUser.CommonResp{ErrorCode: config.ErrModifyUserInfo.ErrCode, ErrorMsg: config.ErrModifyUserInfo.ErrMsg}, nil
@ -43,7 +51,7 @@ func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbUser.UpdateUserI
log.ErrorByKv("get friend list rpc server failed", req.OperationID, "err", err.Error(), "req", req.String()) log.ErrorByKv("get friend list rpc server failed", req.OperationID, "err", err.Error(), "req", req.String())
} }
self, err := im_mysql_model.FindUserByUID(claims.UID) self, err := im_mysql_model.FindUserByUID(ownerUid)
if err != nil { if err != nil {
log.ErrorByKv("get self info failed", req.OperationID, "err", err.Error(), "req", req.String()) log.ErrorByKv("get self info failed", req.OperationID, "err", err.Error(), "req", req.String())
} }
@ -53,12 +61,12 @@ func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbUser.UpdateUserI
} }
for _, v := range RpcResp.Data { for _, v := range RpcResp.Data {
logic.SendMsgByWS(&pbChat.WSToMsgSvrChatMsg{ logic.SendMsgByWS(&pbChat.WSToMsgSvrChatMsg{
SendID: claims.UID, SendID: ownerUid,
RecvID: v.Uid, RecvID: v.Uid,
SenderNickName: name, SenderNickName: name,
SenderFaceURL: faceUrl, SenderFaceURL: faceUrl,
Content: claims.UID + "'s info has changed", Content: ownerUid + "'s info has changed",
SendTime: utils.GetCurrentTimestampBySecond(), SendTime: utils.GetCurrentTimestampByNano(),
MsgFrom: constant.SysMsgType, MsgFrom: constant.SysMsgType,
ContentType: constant.SetSelfInfoTip, ContentType: constant.SetSelfInfoTip,
SessionType: constant.SingleChatType, SessionType: constant.SingleChatType,

@ -8,6 +8,7 @@ package utils
import ( import (
"encoding/json" "encoding/json"
"math/rand"
"strconv" "strconv"
) )
@ -53,3 +54,11 @@ func JsonStringToStruct(s string, args interface{}) error {
err := json.Unmarshal([]byte(s), args) err := json.Unmarshal([]byte(s), args)
return err return err
} }
func GetMsgID(sendID string) string {
t := int64ToString(GetCurrentTimestampByNano())
return Md5(t + sendID + int64ToString(rand.Int63n(GetCurrentTimestampByNano())))
}
func int64ToString(i int64) string {
return strconv.FormatInt(i, 10)
}

Loading…
Cancel
Save