diff --git a/internal/demo/register/send_code.go b/internal/demo/register/send_code.go index cd67c0c04..c7fca46e6 100644 --- a/internal/demo/register/send_code.go +++ b/internal/demo/register/send_code.go @@ -34,11 +34,12 @@ func init() { } type paramsVerificationCode struct { - Email string `json:"email"` - PhoneNumber string `json:"phoneNumber"` - OperationID string `json:"operationID" binding:"required"` - UsedFor int `json:"usedFor"` - AreaCode string `json:"areaCode"` + Email string `json:"email"` + PhoneNumber string `json:"phoneNumber"` + OperationID string `json:"operationID" binding:"required"` + UsedFor int `json:"usedFor"` + AreaCode string `json:"areaCode"` + InvitationCode string `json:"invitationCode"` } func SendVerificationCode(c *gin.Context) { diff --git a/internal/demo/register/set_password.go b/internal/demo/register/set_password.go index f88b9b42c..a553a10cd 100644 --- a/internal/demo/register/set_password.go +++ b/internal/demo/register/set_password.go @@ -30,6 +30,7 @@ type ParamsSetPassword struct { FaceURL string `json:"faceURL"` OperationID string `json:"operationID" binding:"required"` AreaCode string `json:"areaCode"` + InvitationCode string `json:"invitationCode"` } func SetPassword(c *gin.Context) { diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index aa165e572..a313b8c51 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -144,7 +144,6 @@ func (ws *WServer) MultiTerminalLoginCheckerWithLock(uid string, platformID int, rwLock.Lock() defer rwLock.Unlock() log.NewInfo(operationID, utils.GetSelfFuncName(), " rpc args: ", uid, platformID, token) - return switch config.Config.MultiLoginPolicy { case constant.AllLoginButSameTermKick: if oldConnMap, ok := ws.wsUserToConn[uid]; ok { // user->map[platform->conn] diff --git a/internal/rpc/user/user.go b/internal/rpc/user/user.go index 711395506..f8d019838 100644 --- a/internal/rpc/user/user.go +++ b/internal/rpc/user/user.go @@ -467,6 +467,10 @@ func (s *userServer) SetGlobalRecvMessageOpt(ctx context.Context, req *pbUser.Se log.NewError(req.OperationID, "SetGlobalRecvMessageOpt failed ", err.Error(), user) return &pbUser.SetGlobalRecvMessageOptResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } + if err := rocksCache.DelUserInfoFromCache(user.UserID); err != nil { + log.NewError(req.OperationID, "DelUserInfoFromCache failed ", err.Error(), req.String()) + return &pbUser.SetGlobalRecvMessageOptResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil + } chat.UserInfoUpdatedNotification(req.OperationID, req.UserID, req.UserID) return &pbUser.SetGlobalRecvMessageOptResp{CommonResp: &pbUser.CommonResp{}}, nil } diff --git a/pkg/base_info/auth_api_struct.go b/pkg/base_info/auth_api_struct.go index fea71aa58..4f26084f5 100644 --- a/pkg/base_info/auth_api_struct.go +++ b/pkg/base_info/auth_api_struct.go @@ -30,7 +30,7 @@ type UserTokenReq struct { Secret string `json:"secret" binding:"required,max=32"` Platform int32 `json:"platform" binding:"required,min=1,max=8"` UserID string `json:"userID" binding:"required,min=1,max=64"` - LoginIp string `json:"loginIp" binding:"required,max=15"` + LoginIp string `json:"loginIp"` OperationID string `json:"operationID" binding:"required"` } diff --git a/pkg/common/db/RedisModel.go b/pkg/common/db/RedisModel.go index 535acd2e8..8ad30f878 100644 --- a/pkg/common/db/RedisModel.go +++ b/pkg/common/db/RedisModel.go @@ -253,8 +253,8 @@ func (d *DataBases) CleanUpOneUserAllMsgFromRedis(userID string, operationID str if err != nil { return utils.Wrap(err, "") } - if err = d.RDB.Del(ctx, vals...).Err(); err != nil { - return utils.Wrap(err, "") + for _, v := range vals { + err = d.RDB.Del(ctx, v).Err() } return nil } diff --git a/pkg/common/db/model_struct.go b/pkg/common/db/model_struct.go index cd08ec8ae..ea2c0734d 100644 --- a/pkg/common/db/model_struct.go +++ b/pkg/common/db/model_struct.go @@ -3,11 +3,17 @@ package db import "time" type Register struct { - Account string `gorm:"column:account;primary_key;type:char(255)" json:"account"` - Password string `gorm:"column:password;type:varchar(255)" json:"password"` - Ex string `gorm:"column:ex;size:1024" json:"ex"` - UserID string `gorm:"column:user_id;type:varchar(255)" json:"userID"` - AreaCode string `gorm:"column:area_code;type:varchar(255)"` + Account string `gorm:"column:account;primary_key;type:char(255)" json:"account"` + Password string `gorm:"column:password;type:varchar(255)" json:"password"` + Ex string `gorm:"column:ex;size:1024" json:"ex"` + UserID string `gorm:"column:user_id;type:varchar(255)" json:"userID"` + AreaCode string `gorm:"column:area_code;type:varchar(255)"` + InvitationCode string `gorm:"column:invitation_code;type:varchar(255)"` +} + +type Invitation struct { + InvitationCode string `gorm:"column:invitation_code;primary_key;type:varchar(255)"` + CreateTime time.Time `gorm:"column:create_time"` } // diff --git a/pkg/common/db/mysql.go b/pkg/common/db/mysql.go index e794b4884..58f651d94 100644 --- a/pkg/common/db/mysql.go +++ b/pkg/common/db/mysql.go @@ -78,7 +78,7 @@ func initMysqlDB() { &GroupMember{}, &GroupRequest{}, &User{}, - &Black{}, &ChatLog{}, &Register{}, &Conversation{}, &AppVersion{}, &Department{}, &BlackList{}, &IpLimit{}, &UserIpLimit{}) + &Black{}, &ChatLog{}, &Register{}, &Conversation{}, &AppVersion{}, &Department{}, &BlackList{}, &IpLimit{}, &UserIpLimit{}, &Invitation{}) db.Set("gorm:table_options", "CHARSET=utf8") db.Set("gorm:table_options", "collation=utf8_unicode_ci")