From d0e7147911d3ed6d8b27c4b011082164724b23b2 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 5 Jul 2022 11:01:10 +0800 Subject: [PATCH 1/2] demo --- internal/demo/register/login.go | 7 +++++-- internal/demo/register/reset_password.go | 2 +- internal/demo/register/send_code.go | 2 +- pkg/common/db/mysql_model/im_mysql_model/demo_model.go | 6 +++--- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/internal/demo/register/login.go b/internal/demo/register/login.go index 4c475f57d..28852a83d 100644 --- a/internal/demo/register/login.go +++ b/internal/demo/register/login.go @@ -15,6 +15,7 @@ import ( ) type ParamsLogin struct { + UserID string `json:"userID"` Email string `json:"email"` PhoneNumber string `json:"phoneNumber"` Password string `json:"password"` @@ -32,11 +33,13 @@ func Login(c *gin.Context) { var account string if params.Email != "" { account = params.Email - } else { + } else if params.PhoneNumber != "" { account = params.PhoneNumber + } else { + account = params.UserID } - r, err := im_mysql_model.GetRegister(account, params.AreaCode) + r, err := im_mysql_model.GetRegister(account, params.AreaCode, params.UserID) if err != nil { log.NewError(params.OperationID, "user have not register", params.Password, account, err.Error()) c.JSON(http.StatusOK, gin.H{"errCode": constant.NotRegistered, "errMsg": "Mobile phone number is not registered"}) diff --git a/internal/demo/register/reset_password.go b/internal/demo/register/reset_password.go index 6481a892e..e3b1032c5 100644 --- a/internal/demo/register/reset_password.go +++ b/internal/demo/register/reset_password.go @@ -44,7 +44,7 @@ func ResetPassword(c *gin.Context) { return } } - user, err := im_mysql_model.GetRegister(account, req.AreaCode) + user, err := im_mysql_model.GetRegister(account, req.AreaCode, "") if err != nil || user.Account == "" { if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "get register error", err.Error()) diff --git a/internal/demo/register/send_code.go b/internal/demo/register/send_code.go index 6bb41f153..cd67c0c04 100644 --- a/internal/demo/register/send_code.go +++ b/internal/demo/register/send_code.go @@ -66,7 +66,7 @@ func SendVerificationCode(c *gin.Context) { } switch params.UsedFor { case constant.VerificationCodeForRegister: - _, err := im_mysql_model.GetRegister(account, params.AreaCode) + _, err := im_mysql_model.GetRegister(account, params.AreaCode, "") if err == nil { log.NewError(params.OperationID, "The phone number has been registered", params) c.JSON(http.StatusOK, gin.H{"errCode": constant.HasRegistered, "errMsg": "The phone number has been registered"}) diff --git a/pkg/common/db/mysql_model/im_mysql_model/demo_model.go b/pkg/common/db/mysql_model/im_mysql_model/demo_model.go index 09d04b46d..fcfc2705f 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/demo_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/demo_model.go @@ -5,14 +5,14 @@ import ( _ "github.com/jinzhu/gorm" ) -func GetRegister(account, areaCode string) (*db.Register, error) { +func GetRegister(account, areaCode, userID string) (*db.Register, error) { dbConn, err := db.DB.MysqlDB.DefaultGormDB() if err != nil { return nil, err } var r db.Register - return &r, dbConn.Table("registers").Where("account = ? or account =? and area_code=?", - account, account, areaCode).Take(&r).Error + return &r, dbConn.Table("registers").Where("user_id = ? and user_id != ? or account = ? or account =? and area_code=?", + userID, "", account, account, areaCode).Take(&r).Error } func SetPassword(account, password, ex, userID, areaCode string) error { From 3ad3b30d97092ba8340f2f124503079029780e06 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 5 Jul 2022 14:30:53 +0800 Subject: [PATCH 2/2] demo --- internal/demo/register/set_password.go | 43 ++++++++++++------- .../im_mysql_model/organization_model.go | 2 +- 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/internal/demo/register/set_password.go b/internal/demo/register/set_password.go index 19831399b..2f928efda 100644 --- a/internal/demo/register/set_password.go +++ b/internal/demo/register/set_password.go @@ -18,6 +18,7 @@ import ( ) type ParamsSetPassword struct { + UserID string `json:"userID"` Email string `json:"email"` Nickname string `json:"nickname"` PhoneNumber string `json:"phoneNumber"` @@ -40,29 +41,37 @@ func SetPassword(c *gin.Context) { var account string if params.Email != "" { account = params.Email - } else { + } else if params.PhoneNumber != "" { account = params.PhoneNumber + } else { + account = params.UserID } if params.Nickname == "" { params.Nickname = account } - if (config.Config.Demo.UseSuperCode && params.VerificationCode != config.Config.Demo.SuperCode) || !config.Config.Demo.UseSuperCode { - accountKey := params.AreaCode + account + "_" + constant.VerificationCodeForRegisterSuffix - v, err := db.DB.GetAccountCode(accountKey) - if err != nil || v != params.VerificationCode { - log.NewError(params.OperationID, "password Verification code error", account, params.VerificationCode) - data := make(map[string]interface{}) - data["PhoneNumber"] = account - c.JSON(http.StatusOK, gin.H{"errCode": constant.CodeInvalidOrExpired, "errMsg": "Verification code error!", "data": data}) - return + if params.UserID == "" { + if (config.Config.Demo.UseSuperCode && params.VerificationCode != config.Config.Demo.SuperCode) || !config.Config.Demo.UseSuperCode { + accountKey := params.AreaCode + account + "_" + constant.VerificationCodeForRegisterSuffix + v, err := db.DB.GetAccountCode(accountKey) + if err != nil || v != params.VerificationCode { + log.NewError(params.OperationID, "password Verification code error", account, params.VerificationCode) + data := make(map[string]interface{}) + data["PhoneNumber"] = account + c.JSON(http.StatusOK, gin.H{"errCode": constant.CodeInvalidOrExpired, "errMsg": "Verification code error!", "data": data}) + return + } } } //userID := utils.Base64Encode(account) - - userID := utils.Md5(params.OperationID + strconv.FormatInt(time.Now().UnixNano(), 10)) - bi := big.NewInt(0) - bi.SetString(userID[0:8], 16) - userID = bi.String() + var userID string + if params.UserID == "" { + userID := utils.Md5(params.OperationID + strconv.FormatInt(time.Now().UnixNano(), 10)) + bi := big.NewInt(0) + bi.SetString(userID[0:8], 16) + userID = bi.String() + } else { + userID = params.UserID + } url := config.Config.Demo.ImAPIURL + "/auth/user_register" openIMRegisterReq := api.UserRegisterReq{} @@ -97,7 +106,9 @@ func SetPassword(c *gin.Context) { } log.Info(params.OperationID, "end setPassword", account, params.Password) // demo onboarding - onboardingProcess(params.OperationID, userID, params.Nickname, params.FaceURL, params.AreaCode+params.PhoneNumber, params.Email) + if params.UserID == "" { + onboardingProcess(params.OperationID, userID, params.Nickname, params.FaceURL, params.AreaCode+params.PhoneNumber, params.Email) + } c.JSON(http.StatusOK, gin.H{"errCode": constant.NoError, "errMsg": "", "data": openIMRegisterResp.UserToken}) return } diff --git a/pkg/common/db/mysql_model/im_mysql_model/organization_model.go b/pkg/common/db/mysql_model/im_mysql_model/organization_model.go index 52b5bf245..6ac231032 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/organization_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/organization_model.go @@ -302,6 +302,6 @@ func GetRandomDepartmentID() (string, error) { return "", err } department := &db.Department{} - err = dbConn.Model(department).Order("RAND()").Where("related_group_id != ? AND department_id != ?", "", "0").First(department).Error + err = dbConn.Model(department).Order("RAND()").Where("related_group_id != ? AND department_id != ? AND department_type = ?", "", "0", 1).First(department).Error return department.DepartmentID, err }