|
@@ -34,6 +34,7 @@ type loginAuth struct {
|
|
|
|
|
|
func (l *loginAuth) AuthToken(ctx context.Context, token string) (*redis_model.Auth, error) {
|
|
|
phone, err := l.parseToken(ctx, token)
|
|
|
+ fmt.Println(phone)
|
|
|
if err != nil {
|
|
|
logrus.Debug("token格式错误:%+v", token)
|
|
|
return nil, err
|
|
@@ -51,112 +52,114 @@ func (l *loginAuth) AuthToken(ctx context.Context, token string) (*redis_model.A
|
|
|
}
|
|
|
|
|
|
// AuthCode 判断此手机号是否有账号存在 鉴定验证码 用户信息存入redis 并返回Token
|
|
|
-func (l *loginAuth) AuthCode(ctx context.Context, phone string, code string) (string, *http_model.CodeLoginData, error) {
|
|
|
+func (l *loginAuth) AuthCode(ctx context.Context, phone string, code string) (int, *http_model.CodeLoginData, error) {
|
|
|
|
|
|
// 1. 验证码校验
|
|
|
- vcode, err := l.getSessionCode(ctx, phone)
|
|
|
- if err != nil {
|
|
|
- return "", nil, err
|
|
|
+ vCode, codeErr := l.getSessionCode(ctx, phone)
|
|
|
+ if codeErr != nil {
|
|
|
+ return 0, nil, codeErr
|
|
|
}
|
|
|
- fmt.Printf("缓存的验证码 vcode: %v,实际填入的 code:%v", vcode, code)
|
|
|
- if vcode != code {
|
|
|
+ // fmt.Printf("缓存的验证码 vCode: %v,实际填入的 code:%v", vCode, code)
|
|
|
+ if vCode != code {
|
|
|
// 验证码错误
|
|
|
logrus.Debugf("[AuthCode] auth fail,phone:%+v", phone)
|
|
|
- return "验证码有误", nil, errors.New("auth fail")
|
|
|
+ return 1, nil, nil
|
|
|
}
|
|
|
|
|
|
- // 2. 若无用户信息则注册
|
|
|
+ // 2. 注册或登录
|
|
|
var userData *gorm_model.YounggeeUser
|
|
|
- user, err := db.GetUserByPhone(ctx, phone)
|
|
|
- fmt.Println("login_auth", user, err)
|
|
|
- if err != nil {
|
|
|
- // 数据库操作错误
|
|
|
- return "", nil, err
|
|
|
- } else if user == nil {
|
|
|
- user, err := db.GetSubUserByPhone(ctx, phone)
|
|
|
- if user == nil {
|
|
|
- fmt.Println("子账号也不存在")
|
|
|
+ userInfo, userErr := db.GetUserByPhone(ctx, phone)
|
|
|
+ if userErr != nil {
|
|
|
+ return 0, nil, userErr
|
|
|
+ }
|
|
|
+ if userInfo == nil {
|
|
|
+ subAccountUser, subAccountErr := db.GetSubUserByPhone(ctx, phone)
|
|
|
+ if subAccountErr != nil {
|
|
|
+ return 0, nil, subAccountErr
|
|
|
+ }
|
|
|
+ if subAccountUser == nil {
|
|
|
// 账号不存在,则注册服务商与YG账号
|
|
|
- _, err = Supplier.CreateSupplier(ctx, phone)
|
|
|
- if err != nil {
|
|
|
- return "服务商账号创建失败", nil, err
|
|
|
+ _, createSupplierErr := Supplier.CreateSupplier(ctx, phone)
|
|
|
+ if createSupplierErr != nil {
|
|
|
+ return 0, nil, createSupplierErr
|
|
|
}
|
|
|
- user, err = db.GetUserByPhone(ctx, phone)
|
|
|
- userData = user
|
|
|
- fmt.Println("login_auth", user, err)
|
|
|
- if err != nil {
|
|
|
- return "", nil, err
|
|
|
+ supplierUserInfo, supplierUserInfoErr := db.GetUserByPhone(ctx, phone)
|
|
|
+ if supplierUserInfoErr != nil {
|
|
|
+ return 0, nil, supplierUserInfoErr
|
|
|
}
|
|
|
+ userData = supplierUserInfo
|
|
|
} else {
|
|
|
- userData = user
|
|
|
+ userData = subAccountUser
|
|
|
}
|
|
|
- } else if user != nil {
|
|
|
- fmt.Println("是服务商主账号")
|
|
|
- userData = user
|
|
|
+ } else {
|
|
|
+ // fmt.Println("是服务商主账号")
|
|
|
+ userData = userInfo
|
|
|
}
|
|
|
|
|
|
- token := l.getToken(ctx, phone)
|
|
|
+ token := l.getToken(ctx, phone, userData.Role)
|
|
|
|
|
|
var jobData gorm_model.YounggeeJob
|
|
|
var accountData gorm_model.YounggeeSubAccount
|
|
|
var supplierUser gorm_model.YoungeeSupplier
|
|
|
var ifsuppplier int = 0
|
|
|
- var ifsubaccount int = 0
|
|
|
|
|
|
// 3. 根据用户类型的不同追加信息返回前端
|
|
|
// 若为服务商用户
|
|
|
if string(userData.Role) == "6" {
|
|
|
- fmt.Println("服务商主账号")
|
|
|
- supplier, err := db.GetSupplierByUserID(ctx, userData.ID)
|
|
|
- supplierUser = *supplier
|
|
|
+ // fmt.Println("服务商主账号")
|
|
|
+ supplierInfo, supplierInfoErr := db.GetSupplierByUserID(ctx, userData.ID)
|
|
|
+ if supplierInfoErr != nil {
|
|
|
+ return 0, nil, supplierInfoErr
|
|
|
+ }
|
|
|
+
|
|
|
+ supplierUser = *supplierInfo
|
|
|
ifsuppplier = 1
|
|
|
// fmt.Println(supplier)
|
|
|
- if err != nil {
|
|
|
- return "", nil, err
|
|
|
- }
|
|
|
auth := &redis_model.Auth{
|
|
|
- Phone: phone,
|
|
|
- ID: userData.ID,
|
|
|
- User: userData.User,
|
|
|
- Username: userData.Username,
|
|
|
- RealName: userData.RealName,
|
|
|
- Role: userData.Role,
|
|
|
- Email: userData.Email,
|
|
|
- Token: token,
|
|
|
- EnterpriseID: "32123",
|
|
|
- SupplierId: supplier.SupplierId,
|
|
|
+ Phone: phone,
|
|
|
+ ID: userData.ID,
|
|
|
+ User: userData.User,
|
|
|
+ Username: userData.Username,
|
|
|
+ RealName: userData.RealName,
|
|
|
+ Role: userData.Role,
|
|
|
+ Email: userData.Email,
|
|
|
+ Token: token,
|
|
|
+ SupplierId: supplierUser.SupplierId,
|
|
|
}
|
|
|
- if err := l.setSession(ctx, phone, auth); err != nil {
|
|
|
+ key := phone + userData.Role
|
|
|
+ if err := l.setSession(ctx, key, auth); err != nil {
|
|
|
fmt.Printf("setSession error\n")
|
|
|
- return "", nil, err
|
|
|
+ return 0, nil, err
|
|
|
}
|
|
|
} else {
|
|
|
// 若为服务商子账号
|
|
|
fmt.Printf("服务商子账号")
|
|
|
- subaccount, err := db.FindSubAccountByPhone(ctx, phone)
|
|
|
- accountData = *subaccount
|
|
|
- if err != nil {
|
|
|
- return "", nil, err
|
|
|
+ subAccountInfo, subAccountErr := db.FindSubAccountByPhone(ctx, phone)
|
|
|
+ if subAccountErr != nil {
|
|
|
+ return 0, nil, subAccountErr
|
|
|
}
|
|
|
- ifsubaccount = 1
|
|
|
+ accountData = *subAccountInfo
|
|
|
auth := &redis_model.Auth{
|
|
|
- Phone: phone,
|
|
|
- ID: userData.ID,
|
|
|
- User: userData.User,
|
|
|
- Username: userData.Username,
|
|
|
- RealName: userData.RealName,
|
|
|
- Role: userData.Role,
|
|
|
- Email: userData.Email,
|
|
|
- Token: token,
|
|
|
- SupplierId: subaccount.SupplierId,
|
|
|
- EnterpriseID: "32123",
|
|
|
+ Phone: phone,
|
|
|
+ ID: userData.ID,
|
|
|
+ User: userData.User,
|
|
|
+ Username: userData.Username,
|
|
|
+ RealName: userData.RealName,
|
|
|
+ Role: userData.Role,
|
|
|
+ Email: userData.Email,
|
|
|
+ Token: token,
|
|
|
+ SupplierId: subAccountInfo.SupplierId,
|
|
|
}
|
|
|
|
|
|
- job, err := db.FindJobByJobId(ctx, subaccount.JobId)
|
|
|
- jobData = *job
|
|
|
- if err := l.setSession(ctx, phone, auth); err != nil {
|
|
|
+ jobInfo, jobErr := db.FindJobByJobId(ctx, subAccountInfo.JobId)
|
|
|
+ if jobErr != nil {
|
|
|
+ return 0, nil, jobErr
|
|
|
+ }
|
|
|
+ jobData = *jobInfo
|
|
|
+ key := phone + userData.Role
|
|
|
+ if err := l.setSession(ctx, key, auth); err != nil {
|
|
|
fmt.Printf("setSession error\n")
|
|
|
- return "", nil, err
|
|
|
+ return 0, nil, err
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -170,13 +173,12 @@ func (l *loginAuth) AuthCode(ctx context.Context, phone string, code string) (st
|
|
|
SubAccountId: 0,
|
|
|
SupplierId: supplierUser.SupplierId,
|
|
|
JobName: "主账号无岗位",
|
|
|
- EnterpriseId: "1",
|
|
|
CommercialCenter: "1",
|
|
|
CooperatePermission: "1",
|
|
|
FinancialPermission: "1",
|
|
|
CommercialManagement: "1",
|
|
|
}
|
|
|
- } else if ifsubaccount == 1 {
|
|
|
+ } else {
|
|
|
loginUserData = http_model.CodeLoginData{
|
|
|
UserId: userData.ID,
|
|
|
Token: token,
|
|
@@ -184,15 +186,14 @@ func (l *loginAuth) AuthCode(ctx context.Context, phone string, code string) (st
|
|
|
SubAccountId: accountData.SubAccountId,
|
|
|
JobName: jobData.JobName,
|
|
|
SupplierId: accountData.SupplierId,
|
|
|
- EnterpriseId: accountData.EnterpriseId,
|
|
|
CommercialCenter: jobData.CommercialCenter,
|
|
|
CooperatePermission: jobData.CooperatePermission,
|
|
|
FinancialPermission: jobData.FinancialPermission,
|
|
|
CommercialManagement: jobData.CommercialManagement,
|
|
|
}
|
|
|
}
|
|
|
- fmt.Println("finish: ", loginUserData)
|
|
|
- return "", &loginUserData, nil
|
|
|
+ // fmt.Println("finish: ", loginUserData)
|
|
|
+ return 0, &loginUserData, nil
|
|
|
}
|
|
|
|
|
|
// func (l *loginAuth) AuthPassword(ctx context.Context, phone string, password string) (string, error) {
|
|
@@ -260,9 +261,9 @@ func (l *loginAuth) getSessionAuth(ctx context.Context, phone string) (*redis_mo
|
|
|
return auth, nil
|
|
|
}
|
|
|
|
|
|
-func (l *loginAuth) getToken(ctx context.Context, phone string) string {
|
|
|
+func (l *loginAuth) getToken(ctx context.Context, phone string, role string) string {
|
|
|
timeSeed := strconv.FormatInt(time.Now().Unix(), 10)
|
|
|
- token := phone + "." + timeSeed + "." + util.MD5(phone, timeSeed, consts.AuthSalt)
|
|
|
+ token := phone + role + "." + timeSeed + "." + util.MD5(phone+role, timeSeed, consts.AuthSalt)
|
|
|
return token
|
|
|
}
|
|
|
|
|
@@ -286,55 +287,67 @@ func (l *loginAuth) getRedisKey(key string) string {
|
|
|
return fmt.Sprintf("%s%s", consts.SessionRedisPrefix, key)
|
|
|
}
|
|
|
|
|
|
-func (l *loginAuth) SubAccountAuthCode(ctx context.Context, phone string, code string) (string, error) {
|
|
|
- user, err := db.FindSubAccountByPhone(ctx, phone)
|
|
|
- phoneNumber := phone
|
|
|
- fmt.Println("login_auth", user, err)
|
|
|
- if err != nil {
|
|
|
- // 数据库错误
|
|
|
- return "数据库错误", err
|
|
|
- } else if user == nil {
|
|
|
+func (l *loginAuth) SubAccountAuthCode(ctx context.Context, req *http_model.AddNewSubAccountRequest) (int, *http_model.AddNewSubAccountData, error) {
|
|
|
+
|
|
|
+ // 验证码校验
|
|
|
+ phoneNumber := req.PhoneNumber
|
|
|
+ vCode, vCodeErr := l.getSessionCode(ctx, phoneNumber)
|
|
|
+ if vCodeErr != nil {
|
|
|
+ return 0, nil, vCodeErr
|
|
|
+ }
|
|
|
+ fmt.Printf("缓存的验证码 vcode: %v,实际填入的 code:%v", vCode, req.Code)
|
|
|
+ if vCode != req.Code {
|
|
|
+ // 验证码错误
|
|
|
+ logrus.Debugf("[AuthCode] auth fail,phone:%+v", phoneNumber)
|
|
|
+ return 1, nil, nil
|
|
|
+ }
|
|
|
+
|
|
|
+ subAccountUserInfo, subAccountUserErr := db.FindSubAccountByPhone(ctx, req.PhoneNumber)
|
|
|
+ if subAccountUserErr != nil {
|
|
|
+ return 0, nil, subAccountUserErr
|
|
|
+ }
|
|
|
+ if subAccountUserInfo == nil {
|
|
|
// 账号不存在,则判断此手机号码是否被服务商主账号注册
|
|
|
- user, err := db.GetUserByPhone(ctx, phoneNumber)
|
|
|
- if err != nil {
|
|
|
- // 数据库操作错误
|
|
|
- return "", err
|
|
|
- } else if user == nil {
|
|
|
+ supplierUserInfo, supplierUserErr := db.GetUserByPhone(ctx, phoneNumber)
|
|
|
+ if supplierUserErr != nil {
|
|
|
+ return 0, nil, supplierUserErr
|
|
|
+ }
|
|
|
+ if supplierUserInfo == nil {
|
|
|
// 没有被服务商主账户注册,则可以注册
|
|
|
- vcode, err := l.getSessionCode(ctx, phoneNumber)
|
|
|
- if err != nil {
|
|
|
- return "session err", err
|
|
|
+ var respData *http_model.AddNewSubAccountData
|
|
|
+ respData = &http_model.AddNewSubAccountData{}
|
|
|
+ subAccountData, createSubAccountErr := SubAccount.CreateSubAccount(ctx, req)
|
|
|
+ if createSubAccountErr != nil {
|
|
|
+ return 0, nil, createSubAccountErr
|
|
|
}
|
|
|
- fmt.Printf("缓存的验证码 vcode: %v,实际填入的 code:%v", vcode, code)
|
|
|
- if vcode != code {
|
|
|
- // 验证码错误
|
|
|
- logrus.Debugf("[AuthCode] auth fail,phone:%+v", phone)
|
|
|
- return "验证码有误", errors.New("auth fail")
|
|
|
+ if subAccountData != nil {
|
|
|
+ respData.UserID = int64(subAccountData.UserId)
|
|
|
+ respData.SupplierId = subAccountData.SupplierId
|
|
|
+ respData.SubAccountID = subAccountData.SubAccountId
|
|
|
}
|
|
|
- return "1", err
|
|
|
- } else if string(user.Role) == "6" {
|
|
|
- if user.AuthStatus == 1 {
|
|
|
+ return 0, respData, nil
|
|
|
+ } else {
|
|
|
+ if supplierUserInfo.AuthStatus != 1 {
|
|
|
// 被服务商主账户注册,未认证,则可以注册
|
|
|
- vcode, err := l.getSessionCode(ctx, phoneNumber)
|
|
|
- if err != nil {
|
|
|
- return "session err", err
|
|
|
+ var respData *http_model.AddNewSubAccountData
|
|
|
+ respData = &http_model.AddNewSubAccountData{}
|
|
|
+ subAccountData, createSubAccountErr := SubAccount.CreateSubAccount(ctx, req)
|
|
|
+ if createSubAccountErr != nil {
|
|
|
+ return 0, nil, createSubAccountErr
|
|
|
}
|
|
|
- fmt.Printf("缓存的验证码 vcode: %v,实际填入的 code:%v", vcode, code)
|
|
|
- if vcode != code {
|
|
|
- // 验证码错误
|
|
|
- logrus.Debugf("[AuthCode] auth fail,phone:%+v", phone)
|
|
|
- return "验证码有误", errors.New("auth fail")
|
|
|
+ if subAccountData != nil {
|
|
|
+ respData.UserID = int64(subAccountData.UserId)
|
|
|
+ respData.SupplierId = subAccountData.SupplierId
|
|
|
+ respData.SubAccountID = subAccountData.SubAccountId
|
|
|
}
|
|
|
- return "1", err
|
|
|
+ return 0, respData, nil
|
|
|
} else {
|
|
|
- return "已认证的主账号存在", errors.New("auth fail")
|
|
|
+ return 2, nil, nil
|
|
|
}
|
|
|
}
|
|
|
- } else if user != nil {
|
|
|
+ } else {
|
|
|
// 子账号存在,则无法注册
|
|
|
- logrus.Debugf("[AuthCode] auth fail,phone:%+v", phone)
|
|
|
- return "子账号存在", errors.New("auth fail")
|
|
|
+ logrus.Debugf("[AuthCode] auth fail,phone:%+v", req.PhoneNumber)
|
|
|
+ return 3, nil, nil
|
|
|
}
|
|
|
- return "", nil
|
|
|
-
|
|
|
}
|