diff --git a/internal/api/auth/auth.go b/internal/api/auth/auth.go
index cbc67fcde..557299458 100644
--- a/internal/api/auth/auth.go
+++ b/internal/api/auth/auth.go
@@ -1,233 +1,44 @@
package apiAuth
import (
- api "OpenIM/pkg/apistruct"
+ "OpenIM/internal/a2r"
"OpenIM/pkg/common/config"
- "OpenIM/pkg/common/constant"
- "OpenIM/pkg/common/log"
- "OpenIM/pkg/common/tokenverify"
- rpc "OpenIM/pkg/proto/auth"
- sdkws "OpenIM/pkg/proto/sdkws"
- "OpenIM/pkg/utils"
+ auth "OpenIM/pkg/proto/auth"
"context"
- "net/http"
- "strings"
-
- "github.com/fatih/structs"
+ "github.com/OpenIMSDK/openKeeper"
"github.com/gin-gonic/gin"
)
-// @Summary 用户注册
-// @Description 用户注册
-// @Tags 鉴权认证
-// @ID UserRegister
-// @Accept json
-// @Param req body api.UserRegisterReq true "secret为openIM密钥, 详细见服务端config.yaml secret字段
platform为平台ID
ex为拓展字段
gender为性别, 0为女, 1为男"
-// @Produce json
-// @Success 0 {object} api.UserRegisterResp
-// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-// @Router /auth/user_register [post]
-func UserRegister(c *gin.Context) {
- params := api.UserRegisterReq{}
- if err := c.BindJSON(¶ms); err != nil {
- errMsg := " BindJSON failed " + err.Error()
- log.NewError("0", errMsg)
- c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": errMsg})
- return
- }
-
- if params.Secret != config.Config.Secret {
- errMsg := " params.Secret != config.Config.Secret "
- log.NewError(params.OperationID, errMsg, params.Secret, config.Config.Secret)
- c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": errMsg})
- return
- }
- req := &rpc.UserRegisterReq{UserInfo: &sdkws.UserInfo{}}
- utils.CopyStructFields(req.UserInfo, ¶ms)
- //copier.Copy(req.UserInfo, ¶ms)
- req.OperationID = params.OperationID
- log.NewInfo(req.OperationID, "UserRegister args ", req.String())
- etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAuthName, req.OperationID)
- if etcdConn == nil {
- errMsg := req.OperationID + " getcdv3.GetDefaultConn == nil"
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
- client := rpc.NewAuthClient(etcdConn)
- reply, err := client.UserRegister(context.Background(), req)
- if err != nil {
- errMsg := req.OperationID + " " + "UserRegister failed " + err.Error() + req.String()
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
- if reply.CommonResp.ErrCode != 0 {
- errMsg := req.OperationID + " " + " UserRegister failed " + reply.CommonResp.ErrMsg + req.String()
- log.NewError(req.OperationID, errMsg)
- if reply.CommonResp.ErrCode == constant.RegisterLimit {
- c.JSON(http.StatusOK, gin.H{"errCode": constant.RegisterLimit, "errMsg": "用户注册被限制"})
- } else if reply.CommonResp.ErrCode == constant.InvitationError {
- c.JSON(http.StatusOK, gin.H{"errCode": constant.InvitationError, "errMsg": "邀请码错误"})
- } else {
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- }
- return
- }
-
- pbDataToken := &rpc.UserTokenReq{Platform: params.Platform, FromUserID: params.UserID, OperationID: params.OperationID}
- replyToken, err := client.UserToken(context.Background(), pbDataToken)
- if err != nil {
- errMsg := req.OperationID + " " + " client.UserToken failed " + err.Error() + pbDataToken.String()
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
- resp := api.UserRegisterResp{CommResp: api.CommResp{ErrCode: replyToken.CommonResp.ErrCode, ErrMsg: replyToken.CommonResp.ErrMsg},
- UserToken: api.UserTokenInfo{UserID: req.UserInfo.UserID, Token: replyToken.Token, ExpiredTime: replyToken.ExpiredTime}}
- log.NewInfo(req.OperationID, "UserRegister return ", resp)
- c.JSON(http.StatusOK, resp)
+var _ context.Context // 解决goland编辑器bug
+func NewAuth(zk *openKeeper.ZkClient) *Auth {
+ return &Auth{zk: zk}
}
-// @Summary 用户登录
-// @Description 获取用户的token
-// @Tags 鉴权认证
-// @ID UserToken
-// @Accept json
-// @Param req body api.UserTokenReq true "secret为openIM密钥, 详细见服务端config.yaml secret字段
platform为平台ID"
-// @Produce json
-// @Success 0 {object} api.UserTokenResp
-// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-// @Router /auth/user_token [post]
-func UserToken(c *gin.Context) {
- params := api.UserTokenReq{}
- if err := c.BindJSON(¶ms); err != nil {
- errMsg := " BindJSON failed " + err.Error()
- log.NewError(params.OperationID, errMsg)
- c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": errMsg})
- return
- }
+type Auth struct {
+ zk *openKeeper.ZkClient
+}
- if params.Secret != config.Config.Secret {
- errMsg := params.OperationID + " params.Secret != config.Config.Secret "
- log.NewError(params.OperationID, "params.Secret != config.Config.Secret", params.Secret, config.Config.Secret)
- c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": errMsg})
- return
- }
- req := &rpc.UserTokenReq{Platform: params.Platform, FromUserID: params.UserID, OperationID: params.OperationID, LoginIp: params.LoginIp}
- log.NewInfo(req.OperationID, "UserToken args ", req.String())
- etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAuthName, req.OperationID)
- if etcdConn == nil {
- errMsg := req.OperationID + " getcdv3.GetDefaultConn == nil"
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
- client := rpc.NewAuthClient(etcdConn)
- reply, err := client.UserToken(context.Background(), req)
+func (a *Auth) getGroupClient() (auth.AuthClient, error) {
+ conn, err := a.zk.GetConn(config.Config.RpcRegisterName.OpenImGroupName)
if err != nil {
- errMsg := req.OperationID + " UserToken failed " + err.Error() + " req: " + req.String()
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
+ return nil, err
}
- resp := api.UserTokenResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg},
- UserToken: api.UserTokenInfo{UserID: req.FromUserID, Token: reply.Token, ExpiredTime: reply.ExpiredTime}}
- log.NewInfo(req.OperationID, "UserToken return ", resp)
- c.JSON(http.StatusOK, resp)
+ return auth.NewAuthClient(conn), nil
}
-// @Summary 解析当前用户token
-// @Description 解析当前用户token(token在请求头中传入)
-// @Tags 鉴权认证
-// @ID ParseToken
-// @Accept json
-// @Param token header string true "im token"
-// @Param req body api.ParseTokenReq true "secret为openIM密钥, 详细见服务端config.yaml secret字段
platform为平台ID"
-// @Produce json
-// @Success 0 {object} api.ParseTokenResp{Map=api.ExpireTime}
-// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-// @Router /auth/parse_token [post]
-func ParseToken(c *gin.Context) {
- params := api.ParseTokenReq{}
- if err := c.BindJSON(¶ms); err != nil {
- errMsg := " BindJSON failed " + err.Error()
- log.NewError("0", errMsg)
- c.JSON(http.StatusOK, gin.H{"errCode": 1001, "errMsg": errMsg})
- return
- }
-
- var ok bool
- var errInfo string
- var expireTime int64
- ok, _, errInfo, expireTime = tokenverify.GetUserIDFromTokenExpireTime(c.Request.Header.Get("token"), params.OperationID)
- if !ok {
- errMsg := params.OperationID + " " + "GetUserIDFromTokenExpireTime failed " + errInfo
- log.NewError(params.OperationID, errMsg)
- c.JSON(http.StatusOK, gin.H{"errCode": 1001, "errMsg": errMsg})
- return
- }
-
- resp := api.ParseTokenResp{CommResp: api.CommResp{ErrCode: 0, ErrMsg: ""}, ExpireTime: api.ExpireTime{ExpireTimeSeconds: uint32(expireTime)}}
- resp.Data = structs.Map(&resp.ExpireTime)
- log.NewInfo(params.OperationID, "ParseToken return ", resp)
- c.JSON(http.StatusOK, resp)
+func (a *Auth) UserRegister(c *gin.Context) {
+ a2r.Call(auth.AuthClient.UserRegister, a.getGroupClient, c)
}
-// @Summary 强制登出
-// @Description 对应的平台强制登出
-// @Tags 鉴权认证
-// @ID ForceLogout
-// @Accept json
-// @Param token header string true "im token"
-// @Param req body api.ForceLogoutReq true "platform为平台ID
fromUserID为要执行强制登出的用户ID"
-// @Produce json
-// @Success 0 {object} api.ForceLogoutResp
-// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-// @Router /auth/force_logout [post]
-func ForceLogout(c *gin.Context) {
- params := api.ForceLogoutReq{}
- if err := c.BindJSON(¶ms); err != nil {
- errMsg := " BindJSON failed " + err.Error()
- log.NewError("0", errMsg)
- c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": errMsg})
- return
- }
- req := &rpc.ForceLogoutReq{}
- utils.CopyStructFields(req, ¶ms)
-
- var ok bool
- var errInfo string
- ok, req.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
- if !ok {
- errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
-
- log.NewInfo(req.OperationID, "ForceLogout args ", req.String())
- etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAuthName, req.OperationID)
- if etcdConn == nil {
- errMsg := req.OperationID + " getcdv3.GetDefaultConn == nil"
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
- client := rpc.NewAuthClient(etcdConn)
- reply, err := client.ForceLogout(context.Background(), req)
- if err != nil {
- errMsg := req.OperationID + " UserToken failed " + err.Error() + req.String()
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
- resp := api.ForceLogoutResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}}
- log.NewInfo(params.OperationID, utils.GetSelfFuncName(), " return ", resp)
- c.JSON(http.StatusOK, resp)
+func (a *Auth) UserToken(c *gin.Context) {
+ a2r.Call(auth.AuthClient.UserToken, a.getGroupClient, c)
+}
+
+func (a *Auth) ParseToken(c *gin.Context) {
+ a2r.Call(auth.AuthClient.ParseToken, a.getGroupClient, c)
+}
+
+func (a *Auth) ForceLogout(c *gin.Context) {
+ a2r.Call(auth.AuthClient.ForceLogout, a.getGroupClient, c)
}
diff --git a/internal/api/friend/friend.go b/internal/api/friend/friend.go
index 977c8eeb5..6d0e630b6 100644
--- a/internal/api/friend/friend.go
+++ b/internal/api/friend/friend.go
@@ -1,678 +1,76 @@
package friend
-//import (
-// jsonData "OpenIM/internal/utils"
-// api "OpenIM/pkg/apistruct"
-// "OpenIM/pkg/common/config"
-// "OpenIM/pkg/common/log"
-// "OpenIM/pkg/common/tokenverify"
-// "OpenIM/pkg/getcdv3"
-// rpc "OpenIM/pkg/proto/friend"
-// sdkws "OpenIM/pkg/proto/sdkws"
-// "OpenIM/pkg/utils"
-// "context"
-// "github.com/gin-gonic/gin"
-// "net/http"
-// "strings"
-//)
-//
-//// @Summary 添加黑名单
-//// @Description 添加黑名单
-//// @Tags 好友相关
-//// @ID AddBlack
-//// @Accept json
-//// @Param token header string true "im token"
-//// @Param req body api.AddBlacklistReq true "fromUserID为设置的用户
toUserID为被设置的用户"
-//// @Produce json
-//// @Success 0 {object} api.AddBlacklistResp
-//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-//// @Router /friend/add_black [post]
-//func AddBlack(c *gin.Context) {
-// params := api.AddBlacklistReq{}
-// if err := c.BindJSON(¶ms); err != nil {
-// log.NewError("0", "BindJSON failed ", err.Error())
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
-// return
-// }
-// req := &rpc.AddBlacklistReq{CommID: &rpc.CommID{}}
-// utils.CopyStructFields(req.CommID, ¶ms)
-// var ok bool
-// var errInfo string
-// ok, req.CommID.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID)
-// if !ok {
-// errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-// log.NewInfo(params.OperationID, "AddBlacklist args ", req.String())
-//
-// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName, req.CommID.OperationID)
-// client := rpc.NewFriendClient(etcdConn)
-// RpcResp, err := client.AddBlacklist(context.Background(), req)
-// if err != nil {
-// log.NewError(req.CommID.OperationID, "AddBlacklist failed ", err.Error())
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call add blacklist rpc server failed"})
-// return
-// }
-// resp := api.AddBlacklistResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}}
-// log.NewInfo(req.CommID.OperationID, "AddBlacklist api return ", resp)
-// c.JSON(http.StatusOK, resp)
-//}
-//
-//// @Summary 批量加好友
-//// @Description 批量加好友
-//// @Tags 好友相关
-//// @ID ImportFriend
-//// @Accept json
-//// @Param token header string true "im token"
-//// @Param req body api.ImportFriendReq true "fromUserID批量加好友的用户ID
friendUserIDList为"
-//// @Produce json
-//// @Success 0 {object} api.ImportFriendResp "data列表中对象的result-1为添加该用户失败
0为成功"
-//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-//// @Router /friend/import_friend [post]
-//func ImportFriend(c *gin.Context) {
-// params := api.ImportFriendReq{}
-// if err := c.BindJSON(¶ms); err != nil {
-// log.NewError("0", "BindJSON failed ", err.Error())
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
-// return
-// }
-// req := &rpc.ImportFriendReq{}
-// utils.CopyStructFields(req, ¶ms)
-// var ok bool
-// var errInfo string
-// ok, req.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
-// if !ok {
-// errMsg := req.OperationID + " " + "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
-// }
-//
-// log.NewInfo(req.OperationID, "ImportFriend args ", req.String())
-// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName, req.OperationID)
-// if etcdConn == nil {
-// errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
-// log.NewError(req.OperationID, errMsg)
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-//
-// client := rpc.NewFriendClient(etcdConn)
-// RpcResp, err := client.ImportFriend(context.Background(), req)
-// if err != nil {
-// log.NewError(req.OperationID, "ImportFriend failed ", err.Error(), req.String())
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "ImportFriend failed "})
-// return
-// }
-// resp := api.ImportFriendResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}}
-// if resp.ErrCode == 0 {
-// for _, v := range RpcResp.UserIDResultList {
-// resp.UserIDResultList = append(resp.UserIDResultList, api.UserIDResult{UserID: v.UserID, Result: v.Result})
-// }
-// }
-// if len(resp.UserIDResultList) == 0 {
-// resp.UserIDResultList = []api.UserIDResult{}
-// }
-// log.NewInfo(req.OperationID, "ImportFriend api return ", resp)
-// c.JSON(http.StatusOK, resp)
-//}
-//
-//// @Summary 添加好友
-//// @Description 添加好友
-//// @Tags 好友相关
-//// @ID AddFriend
-//// @Accept json
-//// @Param token header string true "im token"
-//// @Param req body api.AddFriendReq true "reqMsg为申请信息
fromUserID为申请用户
toUserID为被添加用户"
-//// @Produce json
-//// @Success 0 {object} api.AddFriendResp
-//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-//// @Router /friend/add_friend [post]
-//func AddFriend(c *gin.Context) {
-// params := api.AddFriendReq{}
-// if err := c.BindJSON(¶ms); err != nil {
-// log.NewError("0", "BindJSON failed ", err.Error())
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
-// return
-// }
-// req := &rpc.AddFriendReq{CommID: &rpc.CommID{}}
-// utils.CopyStructFields(req.CommID, ¶ms.ParamsCommFriend)
-// req.ReqMsg = params.ReqMsg
-//
-// var ok bool
-// var errInfo string
-// ok, req.CommID.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID)
-// if !ok {
-// errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": errMsg})
-// return
-// }
-//
-// log.NewInfo(req.CommID.OperationID, "AddFriend args ", req.String())
-//
-// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName, req.CommID.OperationID)
-// if etcdConn == nil {
-// errMsg := req.CommID.OperationID + "getcdv3.GetDefaultConn == nil"
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-// client := rpc.NewFriendClient(etcdConn)
-// RpcResp, err := client.AddFriend(context.Background(), req)
-// if err != nil {
-// log.NewError(req.CommID.OperationID, "AddFriend failed ", err.Error(), req.String())
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call AddFriend rpc server failed"})
-// return
-// }
-//
-// resp := api.AddFriendResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}}
-// log.NewInfo(req.CommID.OperationID, "AddFriend api return ", resp)
-// c.JSON(http.StatusOK, resp)
-//}
-//
-//// @Summary 同意/拒绝好友请求
-//// @Description 同意/拒绝好友请求
-//// @Tags 好友相关
-//// @ID AddFriendResponse
-//// @Accept json
-//// @Param token header string true "im token"
-//// @Param req body api.AddFriendResponseReq true "fromUserID同意/拒绝的用户ID
toUserID为申请用户D
handleMsg为处理信息
flag为具体操作, 1为同意, 2为拒绝"
-//// @Produce json
-//// @Success 0 {object} api.AddFriendResponseResp
-//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-//// @Router /friend/add_friend_response [post]
-//func AddFriendResponse(c *gin.Context) {
-// params := api.AddFriendResponseReq{}
-// if err := c.BindJSON(¶ms); err != nil {
-// log.NewError("0", "BindJSON failed ", err.Error())
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
-// return
-// }
-// req := &rpc.AddFriendResponseReq{CommID: &rpc.CommID{}}
-// utils.CopyStructFields(req.CommID, ¶ms.ParamsCommFriend)
-// req.HandleMsg = params.HandleMsg
-// req.HandleResult = params.Flag
-//
-// var ok bool
-// var errInfo string
-// ok, req.CommID.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID)
-// if !ok {
-// errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": errMsg})
-// return
-// }
-//
-// utils.CopyStructFields(req, ¶ms)
-// log.NewInfo(req.CommID.OperationID, "AddFriendResponse args ", req.String())
-//
-// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName, req.CommID.OperationID)
-// if etcdConn == nil {
-// errMsg := req.CommID.OperationID + "getcdv3.GetDefaultConn == nil"
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-//
-// client := rpc.NewFriendClient(etcdConn)
-// RpcResp, err := client.AddFriendResponse(context.Background(), req)
-// if err != nil {
-// log.NewError(req.CommID.OperationID, "AddFriendResponse failed ", err.Error(), req.String())
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call add_friend_response rpc server failed"})
-// return
-// }
-//
-// resp := api.AddFriendResponseResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}}
-// log.NewInfo(req.CommID.OperationID, "AddFriendResponse api return ", resp)
-// c.JSON(http.StatusOK, resp)
-//}
-//
-//// @Summary 删除好友
-//// @Description 删除好友
-//// @Tags 好友相关
-//// @ID DeleteFriend
-//// @Accept json
-//// @Param token header string true "im token"
-//// @Param req body api.DeleteFriendReq true "fromUserID为操作用户
toUserID为被删除用户"
-//// @Produce json
-//// @Success 0 {object} api.DeleteFriendResp
-//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-//// @Router /friend/delete_friend [post]
-//func DeleteFriend(c *gin.Context) {
-// params := api.DeleteFriendReq{}
-// if err := c.BindJSON(¶ms); err != nil {
-// log.NewError("0", "BindJSON failed ", err.Error())
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
-// return
-// }
-// req := &rpc.DeleteFriendReq{CommID: &rpc.CommID{}}
-// utils.CopyStructFields(req.CommID, ¶ms.ParamsCommFriend)
-//
-// var ok bool
-// var errInfo string
-// ok, req.CommID.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID)
-// if !ok {
-// errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-//
-// log.NewInfo(req.CommID.OperationID, "DeleteFriend args ", req.String())
-//
-// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName, req.CommID.OperationID)
-// if etcdConn == nil {
-// errMsg := req.CommID.OperationID + "getcdv3.GetDefaultConn == nil"
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-// client := rpc.NewFriendClient(etcdConn)
-// RpcResp, err := client.DeleteFriend(context.Background(), req)
-// if err != nil {
-// log.NewError(req.CommID.OperationID, "DeleteFriend failed ", err, req.String())
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call delete_friend rpc server failed"})
-// return
-// }
-//
-// resp := api.DeleteFriendResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}}
-// log.NewInfo(req.CommID.OperationID, "DeleteFriend api return ", resp)
-// c.JSON(http.StatusOK, resp)
-//}
-//
-//// @Summary 获取黑名单列表
-//// @Description 获取黑名单列表
-//// @Tags 好友相关
-//// @ID GetBlacklist
-//// @Accept json
-//// @Param token header string true "im token"
-//// @Param req body api.GetBlackListReq true "fromUserID要获取黑名单的用户"
-//// @Produce json
-//// @Success 0 {object} api.GetBlackListResp{data=[]sdkws.PublicUserInfo}
-//// @Failure 500 {object} api.Swagger400Resp "errCode为500 一般为服务器内部错误"
-//// @Failure 400 {object} api.Swagger500Resp "errCode为400 一般为参数输入错误, token未带上等"
-//// @Router /friend/get_black_list [post]
-//func GetBlacklist(c *gin.Context) {
-// params := api.GetBlackListReq{}
-// if err := c.BindJSON(¶ms); err != nil {
-// log.NewError("0", "BindJSON failed ", err.Error())
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
-// return
-// }
-// req := &rpc.GetBlacklistReq{CommID: &rpc.CommID{}}
-// utils.CopyStructFields(req.CommID, ¶ms)
-//
-// var ok bool
-// var errInfo string
-// ok, req.CommID.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID)
-// if !ok {
-// errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-//
-// log.NewInfo(req.CommID.OperationID, "GetBlacklist args ", req.String())
-//
-// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName, req.CommID.OperationID)
-// if etcdConn == nil {
-// errMsg := req.CommID.OperationID + "getcdv3.GetDefaultConn == nil"
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-// client := rpc.NewFriendClient(etcdConn)
-// RpcResp, err := client.GetBlacklist(context.Background(), req)
-// if err != nil {
-// log.NewError(req.CommID.OperationID, "GetBlacklist failed ", err.Error(), req.String())
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call get blacklist rpc server failed"})
-// return
-// }
-//
-// resp := api.GetBlackListResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}}
-// for _, v := range RpcResp.BlackUserInfoList {
-// black := sdkws.PublicUserInfo{}
-// utils.CopyStructFields(&black, v)
-// resp.BlackUserInfoList = append(resp.BlackUserInfoList, &black)
-// }
-// resp.Map = jsonData.JsonDataList(resp.BlackUserInfoList)
-// log.NewInfo(req.CommID.OperationID, "GetBlacklist api return ", resp)
-// c.JSON(http.StatusOK, resp)
-//}
-//
-//// @Summary 设置好友备注
-//// @Description 设置好友备注
-//// @Tags 好友相关
-//// @ID SetFriendRemark
-//// @Accept json
-//// @Param token header string true "im token"
-//// @Param req body api.SetFriendRemarkReq true "fromUserID为设置的用户
toUserID为被设置的用户
remark为好友备注"
-//// @Produce json
-//// @Success 0 {object} api.SetFriendRemarkResp
-//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-//// @Router /friend/set_friend_remark [post]
-//func SetFriendRemark(c *gin.Context) {
-// params := api.SetFriendRemarkReq{}
-// if err := c.BindJSON(¶ms); err != nil {
-// log.NewError("0", "BindJSON failed ", err.Error())
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
-// return
-// }
-// req := &rpc.SetFriendRemarkReq{CommID: &rpc.CommID{}}
-// utils.CopyStructFields(req.CommID, ¶ms.ParamsCommFriend)
-// req.Remark = params.Remark
-//
-// var ok bool
-// var errInfo string
-// ok, req.CommID.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID)
-// if !ok {
-// errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-//
-// log.NewInfo(req.CommID.OperationID, "SetFriendComment args ", req.String())
-//
-// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName, req.CommID.OperationID)
-// if etcdConn == nil {
-// errMsg := req.CommID.OperationID + "getcdv3.GetDefaultConn == nil"
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-// client := rpc.NewFriendClient(etcdConn)
-// RpcResp, err := client.SetFriendRemark(context.Background(), req)
-// if err != nil {
-// log.NewError(req.CommID.OperationID, "SetFriendComment failed ", err.Error(), req.String())
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call set friend comment rpc server failed"})
-// return
-// }
-// resp := api.SetFriendRemarkResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}}
-//
-// log.NewInfo(req.CommID.OperationID, "SetFriendComment api return ", resp)
-// c.JSON(http.StatusOK, resp)
-//}
-//
-//// @Summary 把用户移除黑名单
-//// @Description 把用户移除黑名单
-//// @Tags 好友相关
-//// @ID RemoveBlacklist
-//// @Accept json
-//// @Param token header string true "im token"
-//// @Param req body api.RemoveBlackListReq true "fromUserID要获取黑名单的用户"
-//// @Produce json
-//// @Success 0 {object} api.RemoveBlackListResp
-//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-//// @Router /friend/remove_black [post]
-//func RemoveBlacklist(c *gin.Context) {
-// params := api.RemoveBlackListReq{}
-// if err := c.BindJSON(¶ms); err != nil {
-// log.NewError("0", "BindJSON failed ", err.Error())
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
-// return
-// }
-// req := &rpc.RemoveBlacklistReq{CommID: &rpc.CommID{}}
-// utils.CopyStructFields(req.CommID, ¶ms.ParamsCommFriend)
-//
-// var ok bool
-// var errInfo string
-// ok, req.CommID.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID)
-// if !ok {
-// errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-//
-// log.NewInfo(req.CommID.OperationID, "RemoveBlacklist args ", req.String())
-// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName, req.CommID.OperationID)
-// if etcdConn == nil {
-// errMsg := req.CommID.OperationID + "getcdv3.GetDefaultConn == nil"
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-//
-// client := rpc.NewFriendClient(etcdConn)
-// RpcResp, err := client.RemoveBlacklist(context.Background(), req)
-// if err != nil {
-// log.NewError(req.CommID.OperationID, "RemoveBlacklist failed ", err.Error(), req.String())
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call remove blacklist rpc server failed"})
-// return
-// }
-// resp := api.RemoveBlackListResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}}
-// log.NewInfo(req.CommID.OperationID, "RemoveBlacklist api return ", resp)
-// c.JSON(http.StatusOK, resp)
-//}
-//
-//// @Summary 检查用户之间是否为好友
-//// @Description 检查用户之间是否为好友
-//// @Tags 好友相关
-//// @ID IsFriend
-//// @Accept json
-//// @Param token header string true "im token"
-//// @Param req body api.IsFriendReq true "fromUserID为请求用户
toUserID为要检查的用户"
-//// @Produce json
-//// @Success 0 {object} api.IsFriendResp
-//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-//// @Router /friend/is_friend [post]
-//func IsFriend(c *gin.Context) {
-// params := api.IsFriendReq{}
-// if err := c.BindJSON(¶ms); err != nil {
-// log.NewError("0", "BindJSON failed ", err.Error())
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
-// return
-// }
-// req := &rpc.IsFriendReq{CommID: &rpc.CommID{}}
-// utils.CopyStructFields(req.CommID, ¶ms.ParamsCommFriend)
-//
-// var ok bool
-// var errInfo string
-// ok, req.CommID.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID)
-// if !ok {
-// errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": errMsg})
-// return
-// }
-//
-// log.NewInfo(req.CommID.OperationID, "IsFriend args ", req.String())
-//
-// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName, req.CommID.OperationID)
-// if etcdConn == nil {
-// errMsg := req.CommID.OperationID + "getcdv3.GetDefaultConn == nil"
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-// client := rpc.NewFriendClient(etcdConn)
-// RpcResp, err := client.IsFriend(context.Background(), req)
-// if err != nil {
-// log.NewError(req.CommID.OperationID, "IsFriend failed ", err.Error(), req.String())
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call add friend rpc server failed"})
-// return
-// }
-// resp := api.IsFriendResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}}
-// resp.Response.Friend = RpcResp.Response
-//
-// log.NewInfo(req.CommID.OperationID, "IsFriend api return ", resp)
-// c.JSON(http.StatusOK, resp)
-//}
-//
-//// @Summary 获取用户的好友列表
-//// @Description 获取用户的好友列表
-//// @Tags 好友相关
-//// @ID GetFriendList
-//// @Accept json
-//// @Param token header string true "im token"
-//// @Param req body api.GetFriendListReq true "fromUserID为要获取好友列表的用户ID"
-//// @Produce json
-//// @Success 0 {object} api.GetFriendListResp{data=[]sdkws.FriendInfo}
-//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-//// @Router /friend/get_friend_list [post]
-//func GetFriendList(c *gin.Context) {
-// params := api.GetFriendListReq{}
-// if err := c.BindJSON(¶ms); err != nil {
-// log.NewError("0", "BindJSON failed ", err.Error())
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
-// return
-// }
-// req := &rpc.GetFriendListReq{CommID: &rpc.CommID{}}
-// utils.CopyStructFields(req.CommID, ¶ms)
-//
-// var ok bool
-// var errInfo string
-// ok, req.CommID.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID)
-// if !ok {
-// errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-//
-// log.NewInfo(req.CommID.OperationID, "GetFriendList args ", req.String())
-//
-// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName, req.CommID.OperationID)
-// if etcdConn == nil {
-// errMsg := req.CommID.OperationID + "getcdv3.GetDefaultConn == nil"
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-// client := rpc.NewFriendClient(etcdConn)
-// RpcResp, err := client.GetFriendList(context.Background(), req)
-// if err != nil {
-// log.NewError(req.CommID.OperationID, "GetFriendList failed ", err.Error(), req.String())
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call get friend list rpc server failed"})
-// return
-// }
-//
-// resp := api.GetFriendListResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, FriendInfoList: RpcResp.FriendInfoList}
-// resp.Map = jsonData.JsonDataList(resp.FriendInfoList)
-// log.NewInfo(req.CommID.OperationID, "GetFriendList api return ", resp)
-// c.JSON(http.StatusOK, resp)
-// //c.JSON(http.StatusOK, resp)
-//}
-//
-//// @Summary 获取好友申请列表
-//// @Description 删除好友
-//// @Tags 好友相关
-//// @ID GetFriendApplyList
-//// @Accept json
-//// @Param token header string true "im token"
-//// @Param req body api.GetFriendApplyListReq true "fromUserID为要获取申请列表的用户ID"
-//// @Produce json
-//// @Success 0 {object} api.GetFriendApplyListResp{data=[]sdkws.FriendRequest}
-//// @Failure 500 {object} api.Swagger400Resp "errCode为500 一般为服务器内部错误"
-//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-//// @Router /friend/get_friend_apply_list [post]
-//func GetFriendApplyList(c *gin.Context) {
-// params := api.GetFriendApplyListReq{}
-// if err := c.BindJSON(¶ms); err != nil {
-// log.NewError("0", "BindJSON failed ", err.Error())
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
-// return
-// }
-// req := &rpc.GetFriendApplyListReq{CommID: &rpc.CommID{}}
-// utils.CopyStructFields(req.CommID, ¶ms)
-//
-// var ok bool
-// var errInfo string
-// ok, req.CommID.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID)
-// if !ok {
-// errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-//
-// log.NewInfo(req.CommID.OperationID, "GetFriendApplyList args ", req.String())
-//
-// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName, req.CommID.OperationID)
-// if etcdConn == nil {
-// errMsg := req.CommID.OperationID + "getcdv3.GetDefaultConn == nil"
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-// client := rpc.NewFriendClient(etcdConn)
-//
-// RpcResp, err := client.GetFriendApplyList(context.Background(), req)
-// if err != nil {
-// log.NewError(req.CommID.OperationID, "GetFriendApplyList failed ", err.Error(), req.String())
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call get friend apply list rpc server failed"})
-// return
-// }
-//
-// resp := api.GetFriendApplyListResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, FriendRequestList: RpcResp.FriendRequestList}
-// resp.Map = jsonData.JsonDataList(resp.FriendRequestList)
-// log.NewInfo(req.CommID.OperationID, "GetFriendApplyList api return ", resp)
-// c.JSON(http.StatusOK, resp)
-//}
-//
-//// @Summary 获取自己的好友申请列表
-//// @Description 获取自己的好友申请列表
-//// @Tags 好友相关
-//// @ID GetSelfApplyList
-//// @Accept json
-//// @Param token header string true "im token"
-//// @Param req body api.GetSelfApplyListReq true "fromUserID为自己的用户ID"
-//// @Produce json
-//// @Success 0 {object} api.GetSelfApplyListResp{data=[]sdkws.FriendRequest}
-//// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-//// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-//// @Router /friend/get_self_friend_apply_list [post]
-//func GetSelfApplyList(c *gin.Context) {
-// params := api.GetSelfApplyListReq{}
-// if err := c.BindJSON(¶ms); err != nil {
-// log.NewError("0", "BindJSON failed ", err.Error())
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
-// return
-// }
-// req := &rpc.GetSelfApplyListReq{CommID: &rpc.CommID{}}
-// utils.CopyStructFields(req.CommID, ¶ms)
-//
-// var ok bool
-// var errInfo string
-// ok, req.CommID.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.CommID.OperationID)
-// if !ok {
-// errMsg := req.CommID.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-//
-// log.NewInfo(req.CommID.OperationID, "GetSelfApplyList args ", req.String())
-//
-// etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImFriendName, req.CommID.OperationID)
-// if etcdConn == nil {
-// errMsg := req.CommID.OperationID + "getcdv3.GetDefaultConn == nil"
-// log.NewError(req.CommID.OperationID, errMsg)
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
-// return
-// }
-// client := rpc.NewFriendClient(etcdConn)
-// RpcResp, err := client.GetSelfApplyList(context.Background(), req)
-// if err != nil {
-// log.NewError(req.CommID.OperationID, "GetSelfApplyList failed ", err.Error(), req.String())
-// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call get self apply list rpc server failed"})
-// return
-// }
-// resp := api.GetSelfApplyListResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, FriendRequestList: RpcResp.FriendRequestList}
-// resp.Map = jsonData.JsonDataList(resp.FriendRequestList)
-// log.NewInfo(req.CommID.OperationID, "GetSelfApplyList api return ", resp)
-// c.JSON(http.StatusOK, resp)
-//}
+import (
+ "OpenIM/internal/a2r"
+ "OpenIM/pkg/common/config"
+ "OpenIM/pkg/proto/friend"
+ "context"
+ "github.com/OpenIMSDK/openKeeper"
+ "github.com/gin-gonic/gin"
+)
+
+var _ context.Context // 解决goland编辑器bug
+
+func NewFriend(zk *openKeeper.ZkClient) *Friend {
+ return &Friend{zk: zk}
+}
+
+type Friend struct {
+ zk *openKeeper.ZkClient
+}
+
+func (f *Friend) getGroupClient() (friend.FriendClient, error) {
+ conn, err := f.zk.GetConn(config.Config.RpcRegisterName.OpenImGroupName)
+ if err != nil {
+ return nil, err
+ }
+ return friend.NewFriendClient(conn), nil
+}
+
+func (f *Friend) AddFriend(c *gin.Context) {
+ a2r.Call(friend.FriendClient.AddFriend, f.getGroupClient, c)
+}
+
+func (f *Friend) DeleteFriend(c *gin.Context) {
+ a2r.Call(friend.FriendClient.DeleteFriend, f.getGroupClient, c)
+}
+
+func (f *Friend) GetFriendApplyList(c *gin.Context) {
+ a2r.Call(friend.FriendClient.GetFriendApplyList, f.getGroupClient, c)
+}
+
+func (f *Friend) GetSelfApplyList(c *gin.Context) {
+ a2r.Call(friend.FriendClient.GetSelfApplyList, f.getGroupClient, c)
+}
+
+func (f *Friend) GetFriendList(c *gin.Context) {
+ a2r.Call(friend.FriendClient.GetFriendList, f.getGroupClient, c)
+}
+
+func (f *Friend) AddFriendResponse(c *gin.Context) {
+ a2r.Call(friend.FriendClient.AddFriendResponse, f.getGroupClient, c)
+}
+
+func (f *Friend) SetFriendRemark(c *gin.Context) {
+ a2r.Call(friend.FriendClient.SetFriendRemark, f.getGroupClient, c)
+}
+
+func (f *Friend) AddBlack(c *gin.Context) {
+ a2r.Call(friend.FriendClient.AddBlack, f.getGroupClient, c)
+}
+
+func (f *Friend) GetBlacklist(c *gin.Context) {
+ a2r.Call(friend.FriendClient.GetBlacklist, f.getGroupClient, c)
+}
+
+func (f *Friend) RemoveBlacklist(c *gin.Context) {
+ a2r.Call(friend.FriendClient.RemoveBlacklist, f.getGroupClient, c)
+}
+
+func (f *Friend) ImportFriend(c *gin.Context) {
+ a2r.Call(friend.FriendClient.ImportFriend, f.getGroupClient, c)
+}
+
+func (f *Friend) IsFriend(c *gin.Context) {
+ a2r.Call(friend.FriendClient.IsFriend, f.getGroupClient, c)
+}
diff --git a/internal/api/friend/friend1.go b/internal/api/friend/friend1.go
deleted file mode 100644
index abdabb44d..000000000
--- a/internal/api/friend/friend1.go
+++ /dev/null
@@ -1,57 +0,0 @@
-package friend
-
-import (
- common "OpenIM/internal/api2rpc"
- api "OpenIM/pkg/apistruct"
- "OpenIM/pkg/common/config"
- rpc "OpenIM/pkg/proto/friend"
- "github.com/gin-gonic/gin"
-)
-
-func AddBlack(c *gin.Context) {
- common.ApiToRpc(c, &api.AddBlacklistReq{}, &api.AddBlacklistResp{}, config.Config.RpcRegisterName.OpenImFriendName, rpc.NewFriendClient, "")
-}
-
-func ImportFriend(c *gin.Context) {
- common.ApiToRpc(c, &api.ImportFriendReq{}, &api.ImportFriendResp{}, config.Config.RpcRegisterName.OpenImFriendName, rpc.NewFriendClient, "")
-}
-
-func AddFriend(c *gin.Context) {
- common.ApiToRpc(c, &api.AddFriendReq{}, &api.AddFriendResp{}, config.Config.RpcRegisterName.OpenImFriendName, rpc.NewFriendClient, "")
-}
-
-func AddFriendResponse(c *gin.Context) {
- common.ApiToRpc(c, &api.AddFriendResponseReq{}, &api.AddFriendResponseResp{}, config.Config.RpcRegisterName.OpenImFriendName, rpc.NewFriendClient, "")
-}
-
-func DeleteFriend(c *gin.Context) {
- common.ApiToRpc(c, &api.DeleteFriendReq{}, &api.DeleteFriendResp{}, config.Config.RpcRegisterName.OpenImFriendName, rpc.NewFriendClient, "")
-}
-
-func GetBlacklist(c *gin.Context) {
- common.ApiToRpc(c, &api.GetBlackListReq{}, &api.GetBlackListResp{}, config.Config.RpcRegisterName.OpenImFriendName, rpc.NewFriendClient, "")
-}
-
-func SetFriendRemark(c *gin.Context) {
- common.ApiToRpc(c, &api.SetFriendRemarkReq{}, &api.SetFriendRemarkResp{}, config.Config.RpcRegisterName.OpenImFriendName, rpc.NewFriendClient, "")
-}
-
-func RemoveBlacklist(c *gin.Context) {
- common.ApiToRpc(c, &api.RemoveBlacklistReq{}, &api.RemoveBlacklistResp{}, config.Config.RpcRegisterName.OpenImFriendName, rpc.NewFriendClient, "")
-}
-
-func IsFriend(c *gin.Context) {
- common.ApiToRpc(c, &api.IsFriendReq{}, &api.IsFriendResp{}, config.Config.RpcRegisterName.OpenImFriendName, rpc.NewFriendClient, "")
-}
-
-func GetFriendList(c *gin.Context) {
- common.ApiToRpc(c, &api.GetFriendListReq{}, &api.GetFriendListResp{}, config.Config.RpcRegisterName.OpenImFriendName, rpc.NewFriendClient, "")
-}
-
-func GetFriendApplyList(c *gin.Context) {
- common.ApiToRpc(c, &api.GetFriendApplyListReq{}, &api.GetFriendApplyListResp{}, config.Config.RpcRegisterName.OpenImFriendName, rpc.NewFriendClient, "")
-}
-
-func GetSelfApplyList(c *gin.Context) {
- common.ApiToRpc(c, &api.GetSelfApplyListReq{}, &api.GetSelfApplyListResp{}, config.Config.RpcRegisterName.OpenImFriendName, rpc.NewFriendClient, "")
-}
diff --git a/internal/api/route.go b/internal/api/route.go
index 6deb54601..48c5fd5db 100644
--- a/internal/api/route.go
+++ b/internal/api/route.go
@@ -13,7 +13,6 @@ import (
"OpenIM/pkg/common/log"
"OpenIM/pkg/common/middleware"
"OpenIM/pkg/common/prome"
- "OpenIM/pkg/common/tokenverify"
"github.com/gin-gonic/gin"
"io"
"os"
@@ -35,52 +34,41 @@ func NewGinRouter() *gin.Engine {
r.Use(prome.PrometheusMiddleware)
r.GET("/metrics", prome.PrometheusHandler())
}
+
userRouterGroup := r.Group("/user")
{
- userRouterGroup.POST("/update_user_info", user.UpdateUserInfo) //1
- userRouterGroup.POST("/set_global_msg_recv_opt", user.SetGlobalRecvMessageOpt)
- userRouterGroup.POST("/get_users_info", user.GetUsersPublicInfo) //1
- userRouterGroup.POST("/get_self_user_info", user.GetSelfUserInfo) //1
- userRouterGroup.POST("/get_users_online_status", user.GetUsersOnlineStatus) //1
- userRouterGroup.POST("/get_users_info_from_cache", user.GetUsersInfoFromCache)
- userRouterGroup.POST("/get_user_friend_from_cache", user.GetFriendIDListFromCache)
- userRouterGroup.POST("/get_black_list_from_cache", user.GetBlackIDListFromCache)
- userRouterGroup.POST("/get_all_users_uid", manage.GetAllUsersUid) //1
- userRouterGroup.POST("/account_check", manage.AccountCheck) //1
- // userRouterGroup.POST("/get_users_online_status", manage.GetUsersOnlineStatus) //1
- userRouterGroup.POST("/get_users", user.GetUsers)
+ u := user.NewUser(nil)
+ userRouterGroup.POST("/update_user_info", u.UpdateUserInfo) //1
+ userRouterGroup.POST("/set_global_msg_recv_opt", u.SetGlobalRecvMessageOpt)
+ userRouterGroup.POST("/get_users_info", u.GetUsersPublicInfo) //1
+ userRouterGroup.POST("/get_self_user_info", u.GetSelfUserInfo) //1
+ userRouterGroup.POST("/get_users_online_status", u.GetUsersOnlineStatus) //1
+ userRouterGroup.POST("/get_users_info_from_cache", u.GetUsersInfoFromCache)
+ userRouterGroup.POST("/get_user_friend_from_cache", u.GetFriendIDListFromCache)
+ userRouterGroup.POST("/get_black_list_from_cache", u.GetBlackIDListFromCache)
+ //userRouterGroup.POST("/get_all_users_uid", manage.GetAllUsersUid) // todo
+ //userRouterGroup.POST("/account_check", manage.AccountCheck) // todo
+ userRouterGroup.POST("/get_users", u.GetUsers)
}
////friend routing group
friendRouterGroup := r.Group("/friend")
{
- // friendRouterGroup.POST("/get_friends_info", friend.GetFriendsInfo)
- friendRouterGroup.POST("/add_friend", friend.AddFriend) //1
- friendRouterGroup.POST("/delete_friend", friend.DeleteFriend) //1
- friendRouterGroup.POST("/get_friend_apply_list", friend.GetFriendApplyList) //1
- friendRouterGroup.POST("/get_self_friend_apply_list", friend.GetSelfApplyList) //1
- friendRouterGroup.POST("/get_friend_list", friend.GetFriendList) //1
- friendRouterGroup.POST("/add_friend_response", friend.AddFriendResponse) //1
- friendRouterGroup.POST("/set_friend_remark", friend.SetFriendRemark) //1
+ f := friend.NewFriend(nil)
+ friendRouterGroup.POST("/add_friend", f.AddFriend) //1
+ friendRouterGroup.POST("/delete_friend", f.DeleteFriend) //1
+ friendRouterGroup.POST("/get_friend_apply_list", f.GetFriendApplyList) //1
+ friendRouterGroup.POST("/get_self_friend_apply_list", f.GetSelfApplyList) //1
+ friendRouterGroup.POST("/get_friend_list", f.GetFriendList) //1
+ friendRouterGroup.POST("/add_friend_response", f.AddFriendResponse) //1
+ friendRouterGroup.POST("/set_friend_remark", f.SetFriendRemark) //1
+ friendRouterGroup.POST("/add_black", f.AddBlack) //1
+ friendRouterGroup.POST("/get_black_list", f.GetBlacklist) //1
+ friendRouterGroup.POST("/remove_black", f.RemoveBlacklist) //1
+ friendRouterGroup.POST("/import_friend", f.ImportFriend) //1
+ friendRouterGroup.POST("/is_friend", f.IsFriend) //1
- friendRouterGroup.POST("/add_black", friend.AddBlack) //1
- friendRouterGroup.POST("/get_black_list", friend.GetBlacklist) //1
- friendRouterGroup.POST("/remove_black", friend.RemoveBlacklist) //1
-
- friendRouterGroup.POST("/import_friend", friend.ImportFriend) //1
- friendRouterGroup.POST("/is_friend", friend.IsFriend) //1
}
- //group related routing group
groupRouterGroup := r.Group("/group")
- groupRouterGroup.Use(func(c *gin.Context) {
- userID, err := tokenverify.ParseUserIDFromToken(c.GetHeader("token"), c.GetString("operationID"))
- if err != nil {
- c.String(400, err.Error())
- c.Abort()
- return
- }
- c.Set("opUserID", userID)
- c.Next()
- })
g := group.NewGroup(nil)
{
groupRouterGroup.POST("/create_group", g.NewCreateGroup) //1
@@ -114,10 +102,11 @@ func NewGinRouter() *gin.Engine {
////certificate
authRouterGroup := r.Group("/auth")
{
- authRouterGroup.POST("/user_register", apiAuth.UserRegister) //1
- authRouterGroup.POST("/user_token", apiAuth.UserToken) //1
- authRouterGroup.POST("/parse_token", apiAuth.ParseToken) //1
- authRouterGroup.POST("/force_logout", apiAuth.ForceLogout) //1
+ a := apiAuth.NewAuth(nil)
+ authRouterGroup.POST("/user_register", a.UserRegister) //1
+ authRouterGroup.POST("/user_token", a.UserToken) //1
+ authRouterGroup.POST("/parse_token", a.ParseToken) //1
+ authRouterGroup.POST("/force_logout", a.ForceLogout) //1
}
////Third service
thirdGroup := r.Group("/third")
diff --git a/internal/api/user/user.go b/internal/api/user/user.go
index 22c464612..ce5b47b75 100644
--- a/internal/api/user/user.go
+++ b/internal/api/user/user.go
@@ -1,513 +1,72 @@
package user
import (
- api "OpenIM/pkg/apistruct"
+ "OpenIM/internal/a2r"
"OpenIM/pkg/common/config"
- "OpenIM/pkg/common/constant"
- "OpenIM/pkg/common/log"
- "OpenIM/pkg/common/tokenverify"
- pbRelay "OpenIM/pkg/proto/relay"
- sdkws "OpenIM/pkg/proto/sdkws"
- rpc "OpenIM/pkg/proto/user"
- "OpenIM/pkg/utils"
- jsonData "OpenIM/pkg/utils"
+ "OpenIM/pkg/proto/user"
"context"
- "net/http"
- "strings"
-
+ "github.com/OpenIMSDK/openKeeper"
"github.com/gin-gonic/gin"
)
-func GetUsersInfoFromCache(c *gin.Context) {
- params := api.GetUsersInfoReq{}
- if err := c.BindJSON(¶ms); err != nil {
- log.NewError("0", "BindJSON failed ", err.Error())
- c.JSON(http.StatusBadRequest, gin.H{"errCode": http.StatusBadRequest, "errMsg": err.Error()})
- return
- }
- log.NewInfo(params.OperationID, "GetUsersInfoFromCache req: ", params)
- req := &rpc.GetUserInfoReq{}
- utils.CopyStructFields(req, ¶ms)
- var ok bool
- var errInfo string
- ok, req.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
- if !ok {
- errMsg := "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
- }
- etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID)
- if etcdConn == nil {
- errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
- client := rpc.NewUserClient(etcdConn)
- RpcResp, err := client.GetUserInfo(context.Background(), req)
+var _ context.Context // 解决goland编辑器bug
+
+func NewUser(zk *openKeeper.ZkClient) *User {
+ return &User{zk: zk}
+}
+
+type User struct {
+ zk *openKeeper.ZkClient
+}
+
+func (u *User) getGroupClient() (user.UserClient, error) {
+ conn, err := u.zk.GetConn(config.Config.RpcRegisterName.OpenImGroupName)
if err != nil {
- log.NewError(req.OperationID, "GetUserInfo failed ", err.Error(), req.String())
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"})
- return
+ return nil, err
}
- var publicUserInfoList []*sdkws.PublicUserInfo
- for _, v := range RpcResp.UserInfoList {
- publicUserInfoList = append(publicUserInfoList,
- &sdkws.PublicUserInfo{UserID: v.UserID, Nickname: v.Nickname, FaceURL: v.FaceURL, Gender: v.Gender, Ex: v.Ex})
- }
- resp := api.GetUsersInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, UserInfoList: publicUserInfoList}
- resp.Data = jsonData.JsonDataList(resp.UserInfoList)
- log.NewInfo(req.OperationID, "GetUserInfo api return ", resp)
- c.JSON(http.StatusOK, resp)
+ return user.NewUserClient(conn), nil
}
-func GetFriendIDListFromCache(c *gin.Context) {
- var (
- req api.GetFriendIDListFromCacheReq
- resp api.GetFriendIDListFromCacheResp
- reqPb cacheRpc.GetFriendIDListFromCacheReq
- respPb *cacheRpc.GetFriendIDListFromCacheResp
- )
- if err := c.BindJSON(&req); err != nil {
- log.NewError(req.OperationID, "BindJSON failed ", err.Error())
- c.JSON(http.StatusBadRequest, gin.H{"errCode": http.StatusBadRequest, "errMsg": err.Error()})
- return
- }
- log.NewInfo(req.OperationID, utils.GetSelfFuncName(), req)
- reqPb.OperationID = req.OperationID
- var ok bool
- var errInfo string
- ok, reqPb.UserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
- if !ok {
- errMsg := "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
- etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.OperationID)
- if etcdConn == nil {
- errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
- client := cacheRpc.NewCacheClient(etcdConn)
- respPb, err := client.GetFriendIDListFromCache(context.Background(), &reqPb)
- if err != nil {
- log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetFriendIDListFromCache", err.Error())
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed:" + err.Error()})
- return
- }
- resp.UserIDList = respPb.UserIDList
- resp.CommResp = api.CommResp{ErrMsg: respPb.CommonResp.ErrMsg, ErrCode: respPb.CommonResp.ErrCode}
- c.JSON(http.StatusOK, resp)
+func (u *User) UpdateUserInfo(c *gin.Context) {
+ a2r.Call(user.UserClient.UpdateUserInfo, u.getGroupClient, c)
}
-func GetBlackIDListFromCache(c *gin.Context) {
- var (
- req api.GetBlackIDListFromCacheReq
- resp api.GetBlackIDListFromCacheResp
- reqPb cacheRpc.GetBlackIDListFromCacheReq
- respPb *cacheRpc.GetBlackIDListFromCacheResp
- )
- if err := c.BindJSON(&req); err != nil {
- log.NewError(req.OperationID, "BindJSON failed ", err.Error())
- c.JSON(http.StatusBadRequest, gin.H{"errCode": http.StatusBadRequest, "errMsg": err.Error()})
- return
- }
- log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req)
- reqPb.OperationID = req.OperationID
- var ok bool
- var errInfo string
- ok, reqPb.UserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
- if !ok {
- errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
- etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCacheName, req.OperationID)
- if etcdConn == nil {
- errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
- client := cacheRpc.NewCacheClient(etcdConn)
- respPb, err := client.GetBlackIDListFromCache(context.Background(), &reqPb)
- if err != nil {
- log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetFriendIDListFromCache", err.Error())
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed:" + err.Error()})
- return
- }
- resp.UserIDList = respPb.UserIDList
- resp.CommResp = api.CommResp{ErrMsg: respPb.CommonResp.ErrMsg, ErrCode: respPb.CommonResp.ErrCode}
- c.JSON(http.StatusOK, resp)
+func (u *User) SetGlobalRecvMessageOpt(c *gin.Context) {
+ a2r.Call(user.UserClient.SetGlobalRecvMessageOpt, u.getGroupClient, c)
}
-// @Summary 获取用户信息
-// @Description 根据用户列表批量获取用户信息
-// @Tags 用户相关
-// @ID GetUsersInfo
-// @Accept json
-// @Param token header string true "im token"
-// @Param req body api.GetUsersInfoReq true "请求体"
-// @Produce json
-// @Success 0 {object} api.GetUsersInfoResp{Map=[]sdkws.PublicUserInfo}
-// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-// @Router /user/get_users_info [post]
-func GetUsersPublicInfo(c *gin.Context) {
- params := api.GetUsersInfoReq{}
- if err := c.BindJSON(¶ms); err != nil {
- log.NewError("0", "BindJSON failed ", err.Error())
- c.JSON(http.StatusOK, gin.H{"errCode": http.StatusBadRequest, "errMsg": err.Error()})
- return
- }
- req := &rpc.GetUserInfoReq{}
- utils.CopyStructFields(req, ¶ms)
-
- var ok bool
- var errInfo string
- ok, req.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
- if !ok {
- errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusOK, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
-
- log.NewInfo(params.OperationID, "GetUserInfo args ", req.String())
-
- etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID)
- if etcdConn == nil {
- errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
- client := rpc.NewUserClient(etcdConn)
- RpcResp, err := client.GetUserInfo(context.Background(), req)
- if err != nil {
- log.NewError(req.OperationID, "GetUserInfo failed ", err.Error(), req.String())
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"})
- return
- }
- var publicUserInfoList []*sdkws.PublicUserInfo
- for _, v := range RpcResp.UserInfoList {
- publicUserInfoList = append(publicUserInfoList,
- &sdkws.PublicUserInfo{UserID: v.UserID, Nickname: v.Nickname, FaceURL: v.FaceURL, Gender: v.Gender, Ex: v.Ex})
- }
-
- resp := api.GetUsersInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, UserInfoList: publicUserInfoList}
- resp.Data = jsonData.JsonDataList(resp.UserInfoList)
- log.NewInfo(req.OperationID, "GetUserInfo api return ", resp)
- c.JSON(http.StatusOK, resp)
+func (u *User) GetUsersPublicInfo(c *gin.Context) {
+ a2r.Call(user.UserClient.GetDesignateUsers, u.getGroupClient, c)
}
-// @Summary 修改用户信息
-// @Description 修改用户信息 userID faceURL等
-// @Tags 用户相关
-// @ID UpdateUserInfo
-// @Accept json
-// @Param token header string true "im token"
-// @Param req body api.UpdateSelfUserInfoReq true "请求体"
-// @Produce json
-// @Success 0 {object} api.UpdateUserInfoResp
-// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-// @Router /user/update_user_info [post]
-func UpdateUserInfo(c *gin.Context) {
- params := api.UpdateSelfUserInfoReq{}
- if err := c.BindJSON(¶ms); err != nil {
- log.NewError("0", "BindJSON failed ", err.Error())
- c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
- return
- }
- req := &rpc.UpdateUserInfoReq{UserInfo: &sdkws.UserInfo{}}
- utils.CopyStructFields(req.UserInfo, ¶ms)
- req.OperationID = params.OperationID
- var ok bool
- var errInfo string
- ok, req.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
- if !ok {
- errMsg := req.OperationID + " " + "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
- }
- log.NewInfo(params.OperationID, "UpdateUserInfo args ", req.String())
- etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID)
- if etcdConn == nil {
- errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
- client := rpc.NewUserClient(etcdConn)
- RpcResp, err := client.UpdateUserInfo(context.Background(), req)
- if err != nil {
- log.NewError(req.OperationID, "UpdateUserInfo failed ", err.Error(), req.String())
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"})
- return
- }
- resp := api.UpdateUserInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}}
- log.NewInfo(req.OperationID, "UpdateUserInfo api return ", resp)
- c.JSON(http.StatusOK, resp)
+func (u *User) GetSelfUserInfo(c *gin.Context) {
+ a2r.Call(user.UserClient.GetSelfUserInfo, u.getGroupClient, c)
}
-// @Summary 设置全局免打扰
-// @Description 设置全局免打扰
-// @Tags 用户相关
-// @ID SetGlobalRecvMessageOpt
-// @Accept json
-// @Param token header string true "im token"
-// @Param req body api.SetGlobalRecvMessageOptReq true "globalRecvMsgOpt为全局免打扰设置0为关闭 1为开启"
-// @Produce json
-// @Success 0 {object} api.SetGlobalRecvMessageOptResp
-// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-// @Router /user/set_global_msg_recv_opt [post]
-func SetGlobalRecvMessageOpt(c *gin.Context) {
- params := api.SetGlobalRecvMessageOptReq{}
- if err := c.BindJSON(¶ms); err != nil {
- log.NewError("0", "BindJSON failed ", err.Error())
- c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
- return
- }
- req := &rpc.SetGlobalRecvMessageOptReq{}
- utils.CopyStructFields(req, ¶ms)
- req.OperationID = params.OperationID
- var ok bool
- var errInfo string
- ok, req.UserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
- if !ok {
- errMsg := req.OperationID + " " + "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
- }
- log.NewInfo(params.OperationID, "SetGlobalRecvMessageOpt args ", req.String())
- etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID)
- if etcdConn == nil {
- errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
- client := rpc.NewUserClient(etcdConn)
- RpcResp, err := client.SetGlobalRecvMessageOpt(context.Background(), req)
- if err != nil {
- log.NewError(req.OperationID, "SetGlobalRecvMessageOpt failed ", err.Error(), req.String())
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"})
- return
- }
- resp := api.UpdateUserInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}}
- log.NewInfo(req.OperationID, "SetGlobalRecvMessageOpt api return ", resp)
- c.JSON(http.StatusOK, resp)
+func (u *User) GetUsersOnlineStatus(c *gin.Context) {
+ a2r.Call(user.UserClient.GetUsersOnlineStatus, u.getGroupClient, c)
}
-// @Summary 获取自己的信息
-// @Description 传入ID获取自己的信息
-// @Tags 用户相关
-// @ID GetSelfUserInfo
-// @Accept json
-// @Param token header string true "im token"
-// @Param req body api.GetSelfUserInfoReq true "请求体"
-// @Produce json
-// @Success 0 {object} api.GetSelfUserInfoResp{data=sdkws.UserInfo}
-// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-// @Router /user/get_self_user_info [post]
-func GetSelfUserInfo(c *gin.Context) {
- params := api.GetSelfUserInfoReq{}
- if err := c.BindJSON(¶ms); err != nil {
- errMsg := " BindJSON failed " + err.Error()
- log.NewError("0", errMsg)
- c.JSON(http.StatusOK, gin.H{"errCode": 1001, "errMsg": errMsg})
- return
- }
- req := &rpc.GetUserInfoReq{}
-
- utils.CopyStructFields(req, ¶ms)
-
- var ok bool
- var errInfo string
- ok, req.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
- if !ok {
- errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
- log.NewError(params.OperationID, errMsg)
- c.JSON(http.StatusOK, gin.H{"errCode": 1001, "errMsg": errMsg})
- return
- }
-
- req.UserIDList = append(req.UserIDList, params.UserID)
- log.NewInfo(params.OperationID, "GetUserInfo args ", req.String())
-
- etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID)
- if etcdConn == nil {
- errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
- client := rpc.NewUserClient(etcdConn)
- RpcResp, err := client.GetUserInfo(context.Background(), req)
- if err != nil {
- log.NewError(req.OperationID, "GetUserInfo failed ", err.Error(), req.String())
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"})
- return
- }
- if len(RpcResp.UserInfoList) == 1 {
- resp := api.GetSelfUserInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, UserInfo: RpcResp.UserInfoList[0]}
- resp.Data = jsonData.JsonDataOne(resp.UserInfo)
- log.NewInfo(req.OperationID, "GetUserInfo api return ", resp)
- c.JSON(http.StatusOK, resp)
- } else {
- resp := api.GetSelfUserInfoResp{CommResp: api.CommResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}
- log.NewInfo(req.OperationID, "GetUserInfo api return ", resp)
- c.JSON(http.StatusOK, resp)
- }
+func (u *User) GetUsersInfoFromCache(c *gin.Context) {
+ a2r.Call(user.UserClient.GetUsersInfoFromCache, u.getGroupClient, c)
}
-// @Summary 获取用户在线状态
-// @Description 获取用户在线状态
-// @Tags 用户相关
-// @ID GetUsersOnlineStatus
-// @Accept json
-// @Param token header string true "im token"
-// @Param req body api.GetUsersOnlineStatusReq true "请求体"
-// @Produce json
-// @Success 0 {object} api.GetUsersOnlineStatusResp
-// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
-// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
-// @Router /user/get_users_online_status [post]
-func GetUsersOnlineStatus(c *gin.Context) {
- params := api.GetUsersOnlineStatusReq{}
- if err := c.BindJSON(¶ms); err != nil {
-
- c.JSON(http.StatusOK, gin.H{"errCode": 400, "errMsg": err.Error()})
- return
- }
- req := &pbRelay.GetUsersOnlineStatusReq{}
- utils.CopyStructFields(req, ¶ms)
-
- var ok bool
- var errInfo string
- ok, req.OpUserID, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
- if !ok {
- errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
- log.NewError(req.OperationID, errMsg)
- c.JSON(http.StatusOK, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
-
- if len(config.Config.Manager.AppManagerUid) == 0 {
- log.NewError(req.OperationID, "Manager == 0")
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "Manager == 0"})
- return
- }
- req.OpUserID = config.Config.Manager.AppManagerUid[0]
-
- log.NewInfo(params.OperationID, "GetUsersOnlineStatus args ", req.String())
- var wsResult []*pbRelay.GetUsersOnlineStatusResp_SuccessResult
- var respResult []*pbRelay.GetUsersOnlineStatusResp_SuccessResult
- flag := false
- grpcCons := rpc.GetDefaultGatewayConn4Unique(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), params.OperationID)
- for _, v := range grpcCons {
- log.Debug(params.OperationID, "get node ", *v, v.Target())
- client := pbRelay.NewRelayClient(v)
- reply, err := client.GetUsersOnlineStatus(context.Background(), req)
- if err != nil {
- log.NewError(params.OperationID, "GetUsersOnlineStatus rpc err", req.String(), err.Error())
- continue
- } else {
- if reply.ErrCode == 0 {
- wsResult = append(wsResult, reply.SuccessResult...)
- }
- }
- }
- log.NewInfo(params.OperationID, "call GetUsersOnlineStatus rpc server is success", wsResult)
- //Online data merge of each node
- for _, v1 := range params.UserIDList {
- flag = false
- temp := new(pbRelay.GetUsersOnlineStatusResp_SuccessResult)
- for _, v2 := range wsResult {
- if v2.UserID == v1 {
- flag = true
- temp.UserID = v1
- temp.Status = constant.OnlineStatus
- temp.DetailPlatformStatus = append(temp.DetailPlatformStatus, v2.DetailPlatformStatus...)
- }
-
- }
- if !flag {
- temp.UserID = v1
- temp.Status = constant.OfflineStatus
- }
- respResult = append(respResult, temp)
- }
- resp := api.GetUsersOnlineStatusResp{CommResp: api.CommResp{ErrCode: 0, ErrMsg: ""}, SuccessResult: respResult}
- if len(respResult) == 0 {
- resp.SuccessResult = []*pbRelay.GetUsersOnlineStatusResp_SuccessResult{}
- }
- log.NewInfo(req.OperationID, "GetUsersOnlineStatus api return", resp)
- c.JSON(http.StatusOK, resp)
+func (u *User) GetFriendIDListFromCache(c *gin.Context) {
+ a2r.Call(user.UserClient.GetFriendIDListFromCache, u.getGroupClient, c)
}
-func GetUsers(c *gin.Context) {
- var (
- req api.GetUsersReq
- resp api.GetUsersResp
- reqPb rpc.GetUsersReq
- )
- if err := c.BindJSON(&req); err != nil {
- log.NewError(req.OperationID, "Bind failed ", err.Error(), req)
- c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
- return
- }
- var ok bool
- var errInfo string
- ok, _, errInfo = tokenverify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
- if !ok {
- errMsg := req.OperationID + " " + "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
- }
- log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req)
- reqPb.OperationID = req.OperationID
- reqPb.UserID = req.UserID
- reqPb.UserName = req.UserName
- reqPb.Content = req.Content
- reqPb.Pagination = &sdkws.RequestPagination{ShowNumber: req.ShowNumber, PageNumber: req.PageNumber}
- etcdConn := rpc.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, reqPb.OperationID)
- if etcdConn == nil {
- errMsg := reqPb.OperationID + "getcdv3.GetDefaultConn == nil"
- log.NewError(reqPb.OperationID, errMsg)
- c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
- return
- }
- client := rpc.NewUserClient(etcdConn)
- respPb, err := client.GetUsers(context.Background(), &reqPb)
- if err != nil {
- log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), reqPb.String())
- c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": err.Error()})
- return
- }
- for _, v := range respPb.UserList {
- user := api.CMSUser{}
- utils.CopyStructFields(&user, v.User)
- user.IsBlock = v.IsBlock
- resp.Data.UserList = append(resp.Data.UserList, &user)
- }
- resp.CommResp.ErrCode = respPb.CommonResp.ErrCode
- resp.CommResp.ErrMsg = respPb.CommonResp.ErrMsg
- resp.Data.TotalNum = respPb.TotalNums
- resp.Data.CurrentPage = respPb.Pagination.CurrentPage
- resp.Data.ShowNumber = respPb.Pagination.ShowNumber
- log.NewInfo(req.OperationID, utils.GetSelfFuncName(), resp)
- c.JSON(http.StatusOK, resp)
- return
+func (u *User) GetBlackIDListFromCache(c *gin.Context) {
+ a2r.Call(user.UserClient.GetBlackIDListFromCache, u.getGroupClient, c)
+}
+
+//func (u *User) GetAllUsersUid(c *gin.Context) {
+// a2r.Call(user.UserClient.GetAllUsersUid, u.getGroupClient, c)
+//}
+//
+//func (u *User) AccountCheck(c *gin.Context) {
+// a2r.Call(user.UserClient.AccountCheck, u.getGroupClient, c)
+//}
+
+func (u *User) GetUsers(c *gin.Context) {
+ a2r.Call(user.UserClient.GetPaginationUsers, u.getGroupClient, c)
}