diff --git a/go.mod b/go.mod index 663b8e84c..911f68c00 100644 --- a/go.mod +++ b/go.mod @@ -18,17 +18,19 @@ require ( github.com/garyburd/redigo v1.6.2 github.com/gin-gonic/gin v1.7.0 github.com/go-playground/validator/v10 v10.4.1 + github.com/go-sql-driver/mysql v1.6.0 // indirect github.com/golang-jwt/jwt/v4 v4.1.0 github.com/golang/protobuf v1.5.2 github.com/golang/snappy v0.0.4 // indirect github.com/gorilla/websocket v1.4.2 + github.com/jinzhu/copier v0.3.4 github.com/jinzhu/gorm v1.9.16 + github.com/jinzhu/now v1.1.3 // indirect github.com/jonboulle/clockwork v0.2.2 // indirect github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible github.com/lestrrat-go/strftime v1.0.4 // indirect github.com/lib/pq v1.2.0 // indirect github.com/mattn/go-sqlite3 v1.14.6 // indirect - github.com/mitchellh/mapstructure v1.4.2 github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 github.com/olivere/elastic/v7 v7.0.23 github.com/pierrec/lz4 v2.6.1+incompatible // indirect @@ -47,7 +49,6 @@ require ( gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b - gorm.io/driver/mysql v1.2.2 sigs.k8s.io/yaml v1.2.0 // indirect ) diff --git a/go.sum b/go.sum index 3a6600edb..a708e28db 100644 --- a/go.sum +++ b/go.sum @@ -279,6 +279,8 @@ github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKEN github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jinzhu/copier v0.3.4 h1:mfU6jI9PtCeUjkjQ322dlff9ELjGDu975C2p/nrubVI= +github.com/jinzhu/copier v0.3.4/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o= github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= @@ -878,10 +880,6 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gorm.io/driver/mysql v1.2.2 h1:2qoqhOun1maoJOfLtnzJwq+bZlHkEF34rGntgySqp48= -gorm.io/driver/mysql v1.2.2/go.mod h1:qsiz+XcAyMrS6QY+X3M9R6b/lKM1imKmcuK9kac5LTo= -gorm.io/gorm v1.22.4 h1:8aPcyEJhY0MAt8aY6Dc524Pn+pO29K+ydu+e/cXSpQM= -gorm.io/gorm v1.22.4/go.mod h1:1aeVC+pe9ZmvKZban/gW4QPra7PRoTEssyc922qCAkk= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/internal/api/auth/auth.go b/internal/api/auth/auth.go index b31384cf8..4a912beca 100644 --- a/internal/api/auth/auth.go +++ b/internal/api/auth/auth.go @@ -6,6 +6,8 @@ import ( "Open_IM/pkg/common/log" "Open_IM/pkg/grpc-etcdv3/getcdv3" rpc "Open_IM/pkg/proto/auth" + open_im_sdk "Open_IM/pkg/proto/sdk_ws" + "Open_IM/pkg/utils" "context" "github.com/gin-gonic/gin" "net/http" @@ -25,15 +27,17 @@ func UserRegister(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": "not authorized"}) return } - req := &rpc.UserRegisterReq{} - log.NewInfo("UserRegister args ", req.String()) + req := &rpc.UserRegisterReq{UserInfo: &open_im_sdk.UserInfo{}} + utils.CopyStructFields(req.UserInfo, ¶ms) + //copier.Copy(req.UserInfo, ¶ms) + req.OperationID = params.OperationID + log.NewInfo(req.OperationID, "UserRegister args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAuthName) client := rpc.NewAuthClient(etcdConn) reply, err := client.UserRegister(context.Background(), req) - if err != nil || reply.CommonResp.ErrCode != 0 { - log.NewError("0", "UserRegister failed ", err.Error(), req.String()) - c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()}) + log.NewError(req.OperationID, "UserRegister failed ", err, reply.CommonResp.ErrCode) + c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": reply.CommonResp.ErrMsg}) return } @@ -46,8 +50,9 @@ func UserRegister(c *gin.Context) { } 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}} - c.JSON(http.StatusOK, resp) log.NewInfo(req.OperationID, "UserRegister return ", resp) + c.JSON(http.StatusOK, resp) + } func UserToken(c *gin.Context) { @@ -64,7 +69,7 @@ func UserToken(c *gin.Context) { return } req := &rpc.UserTokenReq{Platform: params.Platform, FromUserID: params.UserID, OperationID: params.OperationID} - log.NewInfo("UserToken args ", req.String()) + log.NewInfo(req.OperationID, "UserToken args ", req.String()) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAuthName) client := rpc.NewAuthClient(etcdConn) reply, err := client.UserToken(context.Background(), req) diff --git a/internal/rpc/msg/notification.go b/internal/rpc/msg/notification.go index 76023b851..5bb11b21e 100644 --- a/internal/rpc/msg/notification.go +++ b/internal/rpc/msg/notification.go @@ -381,7 +381,7 @@ func MemberEnterNotification(req *pbGroup.GroupApplicationResponseReq) { //} func getFromToUserNickname(operationID, fromUserID, toUserID string) (string, string) { - return + return "", "" from, err1 := imdb.GetUserByUserID(fromUserID) to, err2 := imdb.GetUserByUserID(toUserID) if err1 != nil || err2 != nil { diff --git a/pkg/base_info/auth_api_struct.go b/pkg/base_info/auth_api_struct.go index 8dd3923a4..a4db08f84 100644 --- a/pkg/base_info/auth_api_struct.go +++ b/pkg/base_info/auth_api_struct.go @@ -17,7 +17,7 @@ type UserRegisterReq struct { } type UserTokenInfo struct { - UserID string `json:"secret"` + UserID string `json:"userID"` Token string `json:"token"` ExpiredTime int64 `json:"expiredTime"` } diff --git a/pkg/common/db/mysql_model/im_mysql_model/model_struct.go b/pkg/common/db/mysql_model/im_mysql_model/model_struct.go index 150aedd70..ac6ea4f86 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/model_struct.go +++ b/pkg/common/db/mysql_model/im_mysql_model/model_struct.go @@ -137,7 +137,7 @@ type GroupRequest struct { type User struct { UserID string `gorm:"column:user_id;primaryKey;"` Nickname string `gorm:"column:name"` - FaceUrl string `gorm:"column:icon"` + FaceUrl string `gorm:"column:face_url"` Gender int32 `gorm:"column:gender"` PhoneNumber string `gorm:"column:phone_number"` Birth string `gorm:"column:birth"` diff --git a/pkg/common/utils/utils.go b/pkg/common/utils/utils.go index ba5d3257b..ca67f33e2 100644 --- a/pkg/common/utils/utils.go +++ b/pkg/common/utils/utils.go @@ -25,6 +25,8 @@ func FriendDBCopyOpenIM(dst *open_im_sdk.FriendInfo, src imdb.Friend) { if user != nil { utils.CopyStructFields(dst.FriendUser, user) } + dst.CreateTime = src.CreateTime.Unix() + dst.FriendUser.CreateTime = user.CreateTime.Unix() } // @@ -34,6 +36,8 @@ func FriendRequestOpenIMCopyDB(dst *imdb.FriendRequest, src open_im_sdk.FriendRe func FriendRequestDBCopyOpenIM(dst *open_im_sdk.FriendRequest, src imdb.FriendRequest) { utils.CopyStructFields(dst, src) + dst.CreateTime = src.CreateTime.Unix() + dst.HandleTime = src.HandleTime.Unix() } func GroupOpenIMCopyDB(dst *imdb.Group, src open_im_sdk.GroupInfo) { @@ -47,6 +51,7 @@ func GroupDBCopyOpenIM(dst *open_im_sdk.GroupInfo, src imdb.Group) { dst.OwnerUserID = user.UserID } dst.MemberCount = imdb.GetGroupMemberNumByGroupID(src.GroupID) + dst.CreateTime = src.CreateTime.Unix() } func GroupMemberOpenIMCopyDB(dst *imdb.GroupMember, src open_im_sdk.GroupMemberFullInfo) { @@ -62,6 +67,7 @@ func GroupMemberDBCopyOpenIM(dst *open_im_sdk.GroupMemberFullInfo, src imdb.Grou } dst.AppMangerLevel = 1 } + dst.JoinTime = src.JoinTime.Unix() } func GroupRequestOpenIMCopyDB(dst *imdb.GroupRequest, src open_im_sdk.GroupRequest) { @@ -70,6 +76,8 @@ func GroupRequestOpenIMCopyDB(dst *imdb.GroupRequest, src open_im_sdk.GroupReque func GroupRequestDBCopyOpenIM(dst *open_im_sdk.GroupRequest, src imdb.GroupRequest) { utils.CopyStructFields(dst, src) + dst.ReqTime = src.ReqTime.Unix() + dst.HandleTime = src.HandledTime.Unix() } func UserOpenIMCopyDB(dst *imdb.User, src open_im_sdk.UserInfo) { @@ -78,6 +86,7 @@ func UserOpenIMCopyDB(dst *imdb.User, src open_im_sdk.UserInfo) { func UserDBCopyOpenIM(dst *open_im_sdk.UserInfo, src imdb.User) { utils.CopyStructFields(dst, src) + dst.CreateTime = src.CreateTime.Unix() } func BlackOpenIMCopyDB(dst *imdb.Black, src open_im_sdk.BlackInfo) { diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index 9953227a1..d5dc0254a 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -2,11 +2,14 @@ package utils import ( "fmt" + "github.com/jinzhu/copier" "reflect" ) // copy a by b b->a func CopyStructFields(a interface{}, b interface{}, fields ...string) (err error) { + return copier.Copy(a, b) + at := reflect.TypeOf(a) av := reflect.ValueOf(a) bt := reflect.TypeOf(b) @@ -34,6 +37,7 @@ func CopyStructFields(a interface{}, b interface{}, fields ...string) (err error for i := 0; i < len(_fields); i++ { name := _fields[i] + f := av.Elem().FieldByName(name) bValue := bv.FieldByName(name)