|
@@ -10,6 +10,8 @@ import (
|
|
|
"time"
|
|
|
"youngee_b_api/consts"
|
|
|
"youngee_b_api/db"
|
|
|
+ "youngee_b_api/model/gorm_model"
|
|
|
+ "youngee_b_api/model/http_model"
|
|
|
"youngee_b_api/model/redis_model"
|
|
|
"youngee_b_api/model/system_model"
|
|
|
"youngee_b_api/redis"
|
|
@@ -49,59 +51,110 @@ 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, error) {
|
|
|
+func (l *loginAuth) AuthCode(ctx context.Context, phone string, code string) (string, *http_model.CodeLoginData, error) {
|
|
|
+ var userData *gorm_model.YounggeeUser
|
|
|
user, err := db.GetUserByPhone(ctx, phone)
|
|
|
fmt.Println("login_auth", user, err)
|
|
|
if err != nil {
|
|
|
// 数据库操作错误
|
|
|
- return "", err
|
|
|
+ return "", nil, err
|
|
|
} else if user == nil {
|
|
|
- // 账号不存在,则注册账号
|
|
|
- _, err = Enterprise.CreateEnterprise(ctx, phone)
|
|
|
- if err != nil {
|
|
|
- return "账号创建失败", err
|
|
|
- }
|
|
|
- user, err = db.GetUserByPhone(ctx, phone)
|
|
|
- fmt.Println("login_auth", user, err)
|
|
|
- if err != nil {
|
|
|
- return "", err
|
|
|
+ user, err := db.GetSubUserByPhone(ctx, phone)
|
|
|
+
|
|
|
+ fmt.Println("子账号存在")
|
|
|
+ if user == nil {
|
|
|
+ fmt.Println("子账号也不存在")
|
|
|
+ // 账号不存在,则默认注册商家账号
|
|
|
+ _, err = Enterprise.CreateEnterprise(ctx, phone)
|
|
|
+ if err != nil {
|
|
|
+ return "账号创建失败", nil, err
|
|
|
+ }
|
|
|
+ user, err = db.GetUserByPhone(ctx, phone)
|
|
|
+ userData = user
|
|
|
+ fmt.Println("login_auth", user, err)
|
|
|
+ if err != nil {
|
|
|
+ return "", nil, err
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ userData = user
|
|
|
}
|
|
|
- } else if string(user.Role) != consts.BRole {
|
|
|
- // 账号权限有误
|
|
|
- logrus.Debugf("[AuthCode] auth fail,phone:%+v", phone)
|
|
|
- return "权限错误,请登录企业账号", errors.New("auth fail")
|
|
|
+ } else if user != nil {
|
|
|
+ userData = user
|
|
|
}
|
|
|
vcode, err := l.getSessionCode(ctx, phone)
|
|
|
if err != nil {
|
|
|
- return "", err
|
|
|
+ return "", nil, err
|
|
|
}
|
|
|
fmt.Printf("缓存的验证码 vcode: %v,实际填入的 code:%v", vcode, code)
|
|
|
if vcode != code {
|
|
|
// 验证码错误
|
|
|
logrus.Debugf("[AuthCode] auth fail,phone:%+v", phone)
|
|
|
- return "验证码有误", errors.New("auth fail")
|
|
|
+ return "验证码有误", nil, errors.New("auth fail")
|
|
|
}
|
|
|
token := l.getToken(ctx, phone)
|
|
|
- enterprise, err := db.GetEnterpriseByUID(ctx, user.ID)
|
|
|
- if err != nil {
|
|
|
- return "", err
|
|
|
- }
|
|
|
- auth := &redis_model.Auth{
|
|
|
- Phone: phone,
|
|
|
- ID: user.ID,
|
|
|
- User: user.User,
|
|
|
- Username: user.Username,
|
|
|
- RealName: user.RealName,
|
|
|
- Role: user.Role,
|
|
|
- Email: user.Email,
|
|
|
- Token: token,
|
|
|
- EnterpriseID: enterprise.EnterpriseID,
|
|
|
+
|
|
|
+ var jobData *gorm_model.YounggeeJob
|
|
|
+
|
|
|
+ // 若为商家用户
|
|
|
+ if string(userData.Role) == consts.BRole {
|
|
|
+ fmt.Println("商家主账号")
|
|
|
+ enterprise, err := db.GetEnterpriseByUID(ctx, userData.ID)
|
|
|
+ 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: enterprise.EnterpriseID,
|
|
|
+ }
|
|
|
+ if err := l.setSession(ctx, phone, auth); err != nil {
|
|
|
+ fmt.Printf("setSession error\n")
|
|
|
+ return "", nil, err
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 若为商家子账号
|
|
|
+ fmt.Printf("商家子账号")
|
|
|
+ subaccount, err := db.FindSubAccountByPhone(ctx, phone)
|
|
|
+ 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: subaccount.EnterpriseId,
|
|
|
+ }
|
|
|
+
|
|
|
+ job, err := db.FindJobByJobId(ctx, subaccount.JobId)
|
|
|
+ jobData = job
|
|
|
+ if err := l.setSession(ctx, phone, auth); err != nil {
|
|
|
+ fmt.Printf("setSession error\n")
|
|
|
+ return "", nil, err
|
|
|
+ }
|
|
|
}
|
|
|
- if err := l.setSession(ctx, phone, auth); err != nil {
|
|
|
- fmt.Printf("setSession error\n")
|
|
|
- return "", err
|
|
|
+
|
|
|
+ loginUserData := http_model.CodeLoginData{
|
|
|
+ Token: token,
|
|
|
+ Role: userData.Role,
|
|
|
+ JobName: jobData.JobName,
|
|
|
+ WorkshopPermission: jobData.WorkshopPermission,
|
|
|
+ CooperatePermission: jobData.CooperatePermission,
|
|
|
+ FinancialPermission: jobData.FinancialPermission,
|
|
|
+ TaskcenterPermission: jobData.TaskcenterPermission,
|
|
|
}
|
|
|
- return token, nil
|
|
|
+
|
|
|
+ return "", &loginUserData, nil
|
|
|
}
|
|
|
|
|
|
// func (l *loginAuth) AuthPassword(ctx context.Context, phone string, password string) (string, error) {
|
|
@@ -221,7 +274,7 @@ func (l *loginAuth) SubAccountAuthCode(ctx context.Context, phone string, code s
|
|
|
return "验证码有误", errors.New("auth fail")
|
|
|
}
|
|
|
return "1", err
|
|
|
- } else if string(user.Role) != consts.BRole {
|
|
|
+ } else if string(user.Role) == consts.BRole {
|
|
|
if user.AuthStatus == 1 {
|
|
|
// 被商家主账户注册,未认证,则可以注册
|
|
|
vcode, err := l.getSessionCode(ctx, phoneNumber)
|