From e654e765f6a60a414d68f495fdaf3ffc4a74e25d Mon Sep 17 00:00:00 2001 From: away <1819625428@qq.com> Date: Wed, 26 May 2021 19:23:48 +0800 Subject: [PATCH] user api service initial commit --- src/api/user/get_user_info.go | 73 ++++++++++++++++++++++++++++++++ src/api/user/update_user_info.go | 59 ++++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 src/api/user/get_user_info.go create mode 100644 src/api/user/update_user_info.go diff --git a/src/api/user/get_user_info.go b/src/api/user/get_user_info.go new file mode 100644 index 000000000..e1c79ac33 --- /dev/null +++ b/src/api/user/get_user_info.go @@ -0,0 +1,73 @@ +package user + +import ( + "Open_IM/src/common/config" + "Open_IM/src/common/log" + pbUser "Open_IM/src/proto/user" + "context" + "github.com/gin-gonic/gin" + "github.com/skiffer-git/grpc-etcdv3/getcdv3" + "net/http" + "strings" +) + +type userInfo struct { + UID string `json:"uid"` + Name string `json:"name"` + Icon string `json:"icon"` + Gender int32 `json:"gender"` + Mobile string `json:"mobile"` + Birth string `json:"birth"` + Email string `json:"email"` + Ex string `json:"ex"` +} + +func GetUserInfo(c *gin.Context) { + log.InfoByKv("api get userinfo init...", "") + + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + client := pbUser.NewUserClient(etcdConn) + + params := paramsStruct{} + if err := c.BindJSON(¶ms); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + req := &pbUser.GetUserInfoReq{ + UserIDList: params.UIDList, + OperationID: params.OperationID, + Token: c.Request.Header.Get("token"), + } + log.InfoByKv("api get user info is server", c.PostForm("OperationID"), c.Request.Header.Get("token")) + RpcResp, err := client.GetUserInfo(context.Background(), req) + if err != nil { + log.Error(req.Token, req.OperationID, "err=%s,call get user info rpc server failed", err) + c.JSON(http.StatusInternalServerError, gin.H{ + "errorCode": 500, + "errorMsg": "call rpc server failed", + }) + return + } + log.InfoByKv("call get user info rpc server success", params.OperationID) + if RpcResp.ErrorCode == 0 { + userInfoList := make([]userInfo, 0) + for _, user := range RpcResp.Data { + var ui userInfo + ui.UID = user.Uid + ui.Name = user.Name + ui.Icon = user.Icon + ui.Gender = user.Gender + ui.Mobile = user.Mobile + ui.Birth = user.Birth + ui.Email = user.Email + ui.Ex = user.Ex + userInfoList = append(userInfoList, ui) + } + resp := gin.H{"errCode": RpcResp.ErrorCode, "errMsg": RpcResp.ErrorMsg, "data": userInfoList} + c.JSON(http.StatusOK, resp) + } else { + resp := gin.H{"errCode": RpcResp.ErrorCode, "errMsg": RpcResp.ErrorMsg} + c.JSON(http.StatusOK, resp) + } + log.InfoByKv("api get user info return success", params.OperationID, "args=%s", RpcResp.String()) +} diff --git a/src/api/user/update_user_info.go b/src/api/user/update_user_info.go new file mode 100644 index 000000000..d3e2e5d6b --- /dev/null +++ b/src/api/user/update_user_info.go @@ -0,0 +1,59 @@ +package user + +import ( + "Open_IM/src/common/config" + "Open_IM/src/common/log" + pbUser "Open_IM/src/proto/user" + "context" + "github.com/gin-gonic/gin" + "github.com/skiffer-git/grpc-etcdv3/getcdv3" + "net/http" + "strings" +) + +type paramsStruct struct { + OperationID string `json:"operationID" binding:"required"` + UIDList []string `json:"uidList"` + Platform int32 `json:"platform"` + Name string `json:"name"` + Icon string `json:"icon"` + Gender int32 `json:"gender"` + Mobile string `json:"mobile"` + Birth string `json:"birth"` + Email string `json:"email"` + Ex string `json:"ex"` +} + +func UpdateUserInfo(c *gin.Context) { + log.InfoByKv("api update userinfo init...", "") + + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + client := pbUser.NewUserClient(etcdConn) + + params := paramsStruct{} + if err := c.BindJSON(¶ms); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) + return + } + req := &pbUser.UpdateUserInfoReq{ + OperationID: params.OperationID, + Token: c.Request.Header.Get("token"), + Name: params.Name, + Icon: params.Icon, + Gender: params.Gender, + Mobile: params.Mobile, + Birth: params.Birth, + Email: params.Email, + Ex: params.Ex, + } + log.InfoByKv("api update user info is server", req.OperationID, req.Token) + RpcResp, err := client.UpdateUserInfo(context.Background(), req) + if err != nil { + log.Error(req.Token, req.OperationID, "err=%s,call get user info rpc server failed", err) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"}) + return + } + log.InfoByKv("call update user info rpc server success", params.OperationID) + c.JSON(http.StatusOK, gin.H{"errCode": RpcResp.ErrorCode, "errMsg": RpcResp.ErrorMsg}) + log.InfoByKv("api update user info return success", params.OperationID, "args=%s", RpcResp.String()) +}