caipin il y a 3 ans
Parent
commit
370d4f1d02
3 fichiers modifiés avec 55 ajouts et 31 suppressions
  1. 1 1
      dao/project_dao.go
  2. 30 18
      lib/jlzf.go
  3. 24 12
      services/login_service.go

+ 1 - 1
dao/project_dao.go

@@ -283,7 +283,7 @@ func (d *ProjectDao) AddProjectAndAccount(projectData *models.CmProject, account
 	}
 
 	// 3. 提交事务
-	err = session.Commit()
+	// err = session.Commit()
 	if err != nil {
 		session.Rollback()
 		return errors.New("新增项目出错-db")

+ 30 - 18
lib/jlzf.go

@@ -103,25 +103,37 @@ func (j *Jlzf) GetProjectAndAccount(code string, account string) (map[string]int
 
 // 验证计量支付项目账号的登陆密码
 func (j *Jlzf) LoginValid(loginData viewmodels.Login) error {
+	var (
+		tokenString string
+		err         error
+		resultByte  []byte
+		jlResult    jlResult
+	)
+	// 1.生成请求数据
+	expirationTime := time.Now().Add(3 * time.Second)
+	claimsData := jwt.MapClaims{
+		"data": map[string]string{"code": loginData.Code, "account": loginData.Account, "password": loginData.Password},
+		"exp":  expirationTime.Unix(),
+		"iat":  time.Now().Unix(),
+	}
+	// 1-1.生成token
+	if tokenString, err = makeTokenString(claimsData); err != nil {
+		return errors.New("生成请求token错误")
+	}
+	fmt.Println(tokenString)
 
-	// TODO 生成令牌和提交时间
-	//const [encryptToken, postTime] = this.generateCLDToken();
-	// TODO 有接口在调试
-	/*
-		req := HttpRequest.NewRequest()
-		res, _ := req.Post(j.AuthUrl, map[string]interface{}{
-			"code":     loginData.Code,
-			"account":  loginData.Account,
-			"password": loginData.Password,
-			"posttime": "",
-			"token":    "",
-		})
-		_, err := res.Body()
-		if err != nil {
-			return errors.New("账号或密码不正确")
-		}
-	*/
-	//return string(body)
+	// 1-2.发送请求
+	if resultByte, err = utils.PullData("GET", j.AuthUrl+"/management/account?auth="+tokenString, ""); err != nil {
+		return errors.New(fmt.Sprintf("计量错误,err= %s", err))
+	}
+	err = json.Unmarshal(resultByte, &jlResult)
+	if err != nil {
+		log.Println("请求移除, error=", err)
+		return errors.New("解析数据错误")
+	}
+	if jlResult.Code != 0 {
+		return errors.New(fmt.Sprintf("%s", jlResult.Msg))
+	}
 	return nil
 }
 

+ 24 - 12
services/login_service.go

@@ -71,12 +71,11 @@ func (s *loginService) ValidProjectAccount(loginData viewmodels.Login, writer ht
 	}
 	// 1-2.获得项目管理员
 	projectAdminInfo := s.projectAccountDao.Get(projectInfo.UserId, projectInfo.Id)
-
 	if projectAdminInfo.Id == 0 {
 		return nil, errors.New("工程建设管理员不存在,禁止登录")
 	}
 
-	// 2.验证登陆-临时
+	// 2.验证登陆
 	projectAccountInfo := s.projectAccountDao.GetAccountProjectId(loginData.Account, projectInfo.Id)
 	if projectAccountInfo.Id == 0 {
 		return nil, errors.New("未找到该账号")
@@ -86,17 +85,30 @@ func (s *loginService) ValidProjectAccount(loginData viewmodels.Login, writer ht
 		return nil, errors.New("该账号已被停用")
 	}
 
-	// TODO 计量授权账号 优先验证计量密码,不通过在验证项目管理密码(有的话)
 	password := comm.CreatePasswordSign(loginData.Password, loginData.Account)
-	if projectAccountInfo.Password != password {
-		return nil, errors.New("密码不正确")
-	}
-
-	// 验证密码-TODO
-	Jlzf := lib.NewJlzf()
-	err := Jlzf.LoginValid(loginData)
-	if err != nil {
-		return nil, err
+	// 计量授权账号
+	if projectAccountInfo.JlAuth == 1 {
+		// 本地有保存过密码
+		if projectAccountInfo.Password != "JL" {
+			// 本地密码不正确 -开启计量验证
+			if projectAccountInfo.Password != password {
+				Jlzf := lib.NewJlzf()
+				// 1.获得计量 账号和项目 信息 - 表示验证通过
+				if err := Jlzf.LoginValid(loginData); err != nil {
+					return nil, errors.New("计量授权账号 密码不正确")
+				}
+			}
+		} else {
+			Jlzf := lib.NewJlzf()
+			// 1.获得计量 账号和项目 信息 - 表示验证通过
+			if err := Jlzf.LoginValid(loginData); err != nil {
+				return nil, errors.New("计量授权账号 密码不正确")
+			}
+		}
+	} else {
+		if projectAccountInfo.Password != password {
+			return nil, errors.New("密码不正确")
+		}
 	}
 
 	// 加密用户标识