caipin 3 rokov pred
rodič
commit
0dfadb3c9e

+ 1 - 0
comm/functions.go

@@ -41,6 +41,7 @@ func MakeProjectAccountVM(modelsAccount *models.CmProjectAccount) viewmodels.Pro
 	viewAccountData.Role = modelsAccount.Role
 	viewAccountData.Mobile = modelsAccount.Mobile
 	viewAccountData.Telephone = modelsAccount.Telephone
+	viewAccountData.JlAuth = modelsAccount.JlAuth
 
 	viewAccountData.BoolAdmin = false
 	if modelsAccount.IsAdmin == 1 {

+ 13 - 0
dao/project_account_dao.go

@@ -55,6 +55,19 @@ func (d *ProjectAccountDao) GetAccount(account string) *models.CmProjectAccount
 	}
 }
 
+func (d *ProjectAccountDao) GetAccountByAuth(account string) *models.CmProjectAccount {
+	data := &models.CmProjectAccount{}
+	ok, err := d.engine.
+		Where("account = ? and jl_auth = 1", account).
+		Get(data)
+	if ok && err == nil {
+		return data
+	} else {
+		data.Id = 0
+		return data
+	}
+}
+
 func (d *ProjectAccountDao) GetAccountProjectId(account string, projectId int) *models.CmProjectAccount {
 	data := &models.CmProjectAccount{}
 	ok, err := d.engine.

+ 43 - 5
services/jl_service.go

@@ -8,6 +8,7 @@ package services
 
 import (
 	"errors"
+	"log"
 	"net/http"
 	"net/url"
 	"strconv"
@@ -62,10 +63,8 @@ func (s *JlService) ProjectAdd(claimsData *viewmodels.Jl) (map[string]interface{
 		JlResultProject map[string]interface{}
 		JlResultAccount map[string]interface{}
 		accountData     *models.CmProjectAccount
-		sync            int
 	)
 
-	sync = 0
 	Jlzf := lib.NewJlzf()
 	// 1.获得计量 账号和项目 信息
 	if JlResultProject, JlResultAccount, err = Jlzf.GetProjectAndAccount(claimsData.Code, claimsData.Account); err != nil {
@@ -117,7 +116,7 @@ func (s *JlService) ProjectAdd(claimsData *viewmodels.Jl) (map[string]interface{
 			if err = s.dao.AddProjectAndAccount(project, account); err != nil {
 				return nil, err
 			}
-			sync = 1
+
 		} else {
 			// 1.需要开启互通
 			project := &models.CmProject{}
@@ -161,13 +160,21 @@ func (s *JlService) ProjectAdd(claimsData *viewmodels.Jl) (map[string]interface{
 					return nil, err
 				}
 			}
-			sync = 1
+
 		}
 	} else {
 		//2-2. 普通账号
 		return nil, errors.New("只能由 管理员 创建 项目管理项目")
 	}
-	return map[string]interface{}{"sync": sync}, nil
+
+	// 返回一个token 6秒
+	tokenString, _ := utils.CreateJlToken(jwt.MapClaims{
+		"data": map[string]string{"code": claimsData.Code, "account": claimsData.Account},
+		"exp":  time.Now().Add(6 * time.Second).Unix(),
+	})
+	log.Println("登陆验证,=", tokenString)
+
+	return map[string]interface{}{"token": tokenString}, nil
 }
 
 // 授权登陆
@@ -265,6 +272,7 @@ func (s *JlService) AuthLogin(claimsData *viewmodels.Jl, writer http.ResponseWri
 	return &viewAccountData, nil
 }
 
+// 项目存在
 func (s *JlService) ProjectExist(projectId int, accountId int) (map[string]interface{}, error) {
 	exist := 0
 	projectData := s.dao.Get(projectId)
@@ -296,3 +304,33 @@ func (s *JlService) ProjectExist(projectId int, accountId int) (map[string]inter
 	})
 	return map[string]interface{}{"exist": exist, "token": tokenString}, nil
 }
+
+// 项目存在
+func (s *JlService) AccountUpdate(claimsData *viewmodels.Jl) error {
+
+	// 1-1.工程项目是否存在
+	projectInfo := s.dao.GetCode(claimsData.Code)
+	if projectInfo.Id == 0 {
+		return errors.New("项目未找到")
+	}
+
+	newAccountData := s.accountDao.GetAccount(claimsData.NewAccount)
+	if newAccountData.Id != 0 {
+		return errors.New("项目管理 已存在该账号")
+	}
+
+	accountData := s.accountDao.GetAccountByAuth(claimsData.Account)
+	if accountData.Id == 0 {
+		return errors.New("未找到该项目下的 授权账号")
+	}
+
+	account := models.CmProjectAccount{}
+	updateField := []string{"account"}
+
+	account.Id = accountData.Id
+	account.Account = claimsData.NewAccount
+	if err := s.accountDao.Update(&account, updateField); err != nil {
+		return err
+	}
+	return nil
+}

+ 5 - 2
services/project_account_service.go

@@ -18,7 +18,6 @@ import (
 	"github.com/kataras/iris/v12"
 	"go.mod/comm"
 	"go.mod/models"
-	"go.mod/web/utils"
 	"go.mod/web/viewmodels"
 
 	"go.mod/dao"
@@ -501,7 +500,7 @@ func (s *projectAccountService) ChangeAccount(id int, projectId int, viewAccount
 	}
 
 	// 3.发送短信-TODO
-	utils.SendSMS()
+	// utils.SendSMS()
 
 	s.dao.Update(&account, field)
 
@@ -537,6 +536,10 @@ func (s *projectAccountService) ChangePassword(AccountData viewmodels.AccountPas
 	// 2.比对密码
 	password := comm.CreatePasswordSign(AccountData.Password, accountData.Account)
 
+	if accountData.Password == "JL" {
+		return errors.New("计量密码不允许修改密码")
+	}
+
 	if accountData.Password != password {
 		return errors.New("原密码输入不正确")
 	}

+ 44 - 0
web/external/jl_ex.go

@@ -147,3 +147,47 @@ func (c *JlEx) PostAuthLogin() {
 		"data": result,
 	})
 }
+
+// 修改账号名称接口
+func (c *JlEx) PostAccountUpdate() {
+	// 1.获得数据
+	data := &viewmodels.Jl{}
+	if err := c.Ctx.ReadForm(data); err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+	// 1-1.校验是否存在TOKEN
+	if err := data.ValidateToken(); err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+	// 1-2.验证jwt
+	claims, err := utils.ValidateJwt(data.Token)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+
+	// 1-3.验证参数的正确性
+	claimsData := &viewmodels.Jl{
+		Code:       fmt.Sprintf("%s", claims["code"]),
+		Account:    fmt.Sprintf("%s", claims["account"]),
+		NewAccount: fmt.Sprintf("%s", claims["newAccount"]),
+	}
+	if err := claimsData.ValidateAccountUpdate(); err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+
+	JlService := services.NewJlService()
+	if err := JlService.AccountUpdate(claimsData); err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+
+	c.Ctx.JSON(iris.Map{
+		"code": 0,
+		"msg":  "",
+		"data": "",
+	})
+}

+ 13 - 3
web/viewmodels/jl.go

@@ -14,9 +14,10 @@ import (
 )
 
 type Jl struct {
-	Token   string `form:"token" json:"token" `
-	Code    string `form:"code" json:"code" `
-	Account string `form:"account" json:"account" `
+	Token      string `form:"token" json:"token" `
+	Code       string `form:"code" json:"code" `
+	Account    string `form:"account" json:"account" `
+	NewAccount string `form:"newAccount" json:"newAccount" `
 }
 
 // 校验项目接口
@@ -40,3 +41,12 @@ func (l Jl) ValidateProjectAdd() error {
 		validation.Field(&l.Account, validation.Required.Error("账号不能为空")),
 	)
 }
+
+// 添加项目和账号验证
+func (l Jl) ValidateAccountUpdate() error {
+	return validation.ValidateStruct(&l,
+		validation.Field(&l.Code, validation.Required.Error("项目编号不能为空")),
+		validation.Field(&l.Account, validation.Required.Error("账号不能为空")),
+		validation.Field(&l.NewAccount, validation.Required.Error("修改账号不能为空")),
+	)
+}

+ 1 - 0
web/viewmodels/project_account.go

@@ -31,6 +31,7 @@ type ProjectAccount struct {
 	ContractPermission string `form:"contractPermission" json:"contractPermission"`
 	QualityPermission  string `form:"qualityPermission" json:"qualityPermission"`
 	SafePermission     string `form:"safePermission" json:"safePermission"`
+	JlAuth             int    `form:"jlAuth" json:"jlAuth"`
 }
 
 type AccountPassword struct {