caipin 3 years ago
parent
commit
3cd7269fe2

+ 4 - 0
dao/project_account_dao.go

@@ -151,6 +151,10 @@ func (d *ProjectAccountDao) Search(name string, projectId int) []models.CmProjec
 	}
 	}
 }
 }
 
 
+func JlSync() {
+
+}
+
 // 新增
 // 新增
 func (d *ProjectAccountDao) Add(data *models.CmProjectAccount) error {
 func (d *ProjectAccountDao) Add(data *models.CmProjectAccount) error {
 	_, err := d.engine.Insert(data)
 	_, err := d.engine.Insert(data)

+ 38 - 0
lib/jlzf.go

@@ -63,6 +63,44 @@ func makeTokenString(claimsData jwt.MapClaims) (string, error) {
 	return tokenString, nil
 	return tokenString, nil
 }
 }
 
 
+// 按项目编号获得计量账号
+func (j *Jlzf) GetAccountList(code string) ([]map[string]interface{}, 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": code},
+		"exp":  expirationTime.Unix(),
+		"iat":  time.Now().Unix(),
+	}
+	// 1-1.生成token
+	if tokenString, err = makeTokenString(claimsData); err != nil {
+		return nil, errors.New("生成请求token错误")
+	}
+	fmt.Println(tokenString)
+
+	// 1-2.发送请求
+	if resultByte, err = utils.PullData("GET", j.AuthUrl+"/management/account/async?auth="+tokenString, ""); err != nil {
+		return nil, errors.New(fmt.Sprintf("计量错误,err= %s", err))
+	}
+
+	err = json.Unmarshal(resultByte, &jlResult)
+	if err != nil {
+		log.Println("请求解析失败, error=", err)
+		return nil, errors.New("解析数据错误")
+	}
+	if jlResult.Code != 0 {
+		return nil, errors.New(fmt.Sprintf("%s", jlResult.Msg))
+	}
+	accountList := make([]map[string]interface{}, 0)
+	return accountList, nil
+}
+
 // 拉取计量项目信息
 // 拉取计量项目信息
 func (j *Jlzf) GetProjectAndAccount(code string, account string) (map[string]interface{}, map[string]interface{}, error) {
 func (j *Jlzf) GetProjectAndAccount(code string, account string) (map[string]interface{}, map[string]interface{}, error) {
 	var (
 	var (

+ 20 - 0
services/backstage_service.go

@@ -32,6 +32,9 @@ type BackstageService interface {
 	ValidRuleProjectAdd(ctx iris.Context) (viewmodels.Project, error)
 	ValidRuleProjectAdd(ctx iris.Context) (viewmodels.Project, error)
 	ValidRuleProjectSave(ctx iris.Context) (viewmodels.Project, error)
 	ValidRuleProjectSave(ctx iris.Context) (viewmodels.Project, error)
 	ValidRuleAccountAdd(ctx iris.Context) (viewmodels.ProjectAccount, error)
 	ValidRuleAccountAdd(ctx iris.Context) (viewmodels.ProjectAccount, error)
+
+	ValidRuleAccountSync(ctx iris.Context) (viewmodels.Project, error)
+
 	ValidRuleAccountSave(ctx iris.Context) (viewmodels.ProjectAccount, error)
 	ValidRuleAccountSave(ctx iris.Context) (viewmodels.ProjectAccount, error)
 	ValidRuleAccountEnable(ctx iris.Context) (viewmodels.ProjectAccount, error)
 	ValidRuleAccountEnable(ctx iris.Context) (viewmodels.ProjectAccount, error)
 	ValidRuleAccountPassword(ctx iris.Context) (viewmodels.ProjectAccount, error)
 	ValidRuleAccountPassword(ctx iris.Context) (viewmodels.ProjectAccount, error)
@@ -105,6 +108,23 @@ func (s *backstageService) ValidRuleProjectAdd(ctx iris.Context) (viewmodels.Pro
 	return projectVaild, nil
 	return projectVaild, nil
 }
 }
 
 
+// 验证账号同步的接口
+func (s *backstageService) ValidRuleAccountSync(ctx iris.Context) (viewmodels.Project, error) {
+	projectVaild := viewmodels.Project{}
+	err := ctx.ReadJSON(&projectVaild)
+	if err != nil {
+		log.Println("ReadForm转换异常, error=", err)
+		return projectVaild, err
+	}
+
+	err = projectVaild.ValidateSync()
+	if err != nil {
+		log.Println("添加项目验证, error=", err)
+		return projectVaild, err
+	}
+	return projectVaild, nil
+}
+
 // 项目保存
 // 项目保存
 func (s *backstageService) ValidRuleProjectSave(ctx iris.Context) (viewmodels.Project, error) {
 func (s *backstageService) ValidRuleProjectSave(ctx iris.Context) (viewmodels.Project, error) {
 	projectVaild := viewmodels.Project{}
 	projectVaild := viewmodels.Project{}

+ 33 - 0
services/project_account_service.go

@@ -9,6 +9,7 @@ package services
 import (
 import (
 	"encoding/json"
 	"encoding/json"
 	"errors"
 	"errors"
+	"fmt"
 	"html"
 	"html"
 	"log"
 	"log"
 	"strconv"
 	"strconv"
@@ -17,6 +18,7 @@ import (
 
 
 	"github.com/kataras/iris/v12"
 	"github.com/kataras/iris/v12"
 	"go.mod/comm"
 	"go.mod/comm"
+	"go.mod/lib"
 	"go.mod/models"
 	"go.mod/models"
 	"go.mod/web/viewmodels"
 	"go.mod/web/viewmodels"
 
 
@@ -41,6 +43,9 @@ type ProjectAccountService interface {
 	Add(viewAccount viewmodels.ProjectAccount, projectId int) error
 	Add(viewAccount viewmodels.ProjectAccount, projectId int) error
 	Save(viewAccount viewmodels.ProjectAccount, id int, projectId int) error
 	Save(viewAccount viewmodels.ProjectAccount, id int, projectId int) error
 	SaveAccount(viewAccount viewmodels.ProjectAccount, id int, projectId int) error
 	SaveAccount(viewAccount viewmodels.ProjectAccount, id int, projectId int) error
+
+	SyncAccountBs(projectId int) error
+
 	Enable(id int, projectId int, enable int) error
 	Enable(id int, projectId int, enable int) error
 	ChangeAccount(id int, projectId int, viewAccount viewmodels.ProjectAccount) error
 	ChangeAccount(id int, projectId int, viewAccount viewmodels.ProjectAccount) error
 	ChangeAccountBS(id int, projectId int, viewAccount viewmodels.ProjectAccount) error
 	ChangeAccountBS(id int, projectId int, viewAccount viewmodels.ProjectAccount) error
@@ -57,6 +62,7 @@ type projectAccountService struct {
 	dao                  *dao.ProjectAccountDao
 	dao                  *dao.ProjectAccountDao
 	bidAccountDao        *dao.BidAccountDao
 	bidAccountDao        *dao.BidAccountDao
 	permissionAccountDao *dao.PermissionAccountDao
 	permissionAccountDao *dao.PermissionAccountDao
+	projectDao           *dao.ProjectDao
 	validSave            string
 	validSave            string
 	validAdd             string
 	validAdd             string
 	validPassword        string
 	validPassword        string
@@ -68,6 +74,7 @@ func NewProjectAccountService() ProjectAccountService {
 		dao:                  dao.NewProjectAccountDao(datasource.InstanceDbMaster()),
 		dao:                  dao.NewProjectAccountDao(datasource.InstanceDbMaster()),
 		bidAccountDao:        dao.NewBidAccountDao(datasource.InstanceDbMaster()),
 		bidAccountDao:        dao.NewBidAccountDao(datasource.InstanceDbMaster()),
 		permissionAccountDao: dao.NewPermissionAccountDao(datasource.InstanceDbMaster()),
 		permissionAccountDao: dao.NewPermissionAccountDao(datasource.InstanceDbMaster()),
+		projectDao:           dao.NewProjectDao(datasource.InstanceDbMaster()),
 		validSave:            "/api/projectSetting/account/save",
 		validSave:            "/api/projectSetting/account/save",
 		validAdd:             "/api/projectSetting/account/create",
 		validAdd:             "/api/projectSetting/account/create",
 		validPassword:        "/api/projectSetting/account/change",
 		validPassword:        "/api/projectSetting/account/change",
@@ -389,6 +396,32 @@ func (s *projectAccountService) SaveBs(viewAccount viewmodels.ProjectAccount, id
 	return err
 	return err
 }
 }
 
 
+// 同步账号后台
+func (s *projectAccountService) SyncAccountBs(projectId int) error {
+	var (
+		accountList []map[string]interface{}
+		err         error
+	)
+	// 1.先获得项目信息
+	projectData := s.projectDao.Get(projectId)
+	if projectData.Id == 0 {
+		return errors.New("项目不存在")
+	}
+
+	// 获得计量
+	Jlzf := lib.NewJlzf()
+	if accountList, err = Jlzf.GetAccountList(projectData.Code); err != nil {
+		return err
+	}
+
+	fmt.Println(accountList)
+
+	// 同步账号数据
+	// s.dao.JlSync(accountList)
+
+	return nil
+}
+
 // 设置is_admin为0
 // 设置is_admin为0
 func (s *projectAccountService) updateAdminZero(projectId int) error {
 func (s *projectAccountService) updateAdminZero(projectId int) error {
 	dataDao := s.dao.GetAdmin(projectId)
 	dataDao := s.dao.GetAdmin(projectId)

+ 32 - 0
web/backstage/project_account_bs.go

@@ -165,6 +165,38 @@ func (c *ProjectAccountBs) PostCreate() {
 
 
 }
 }
 
 
+// 批量同步计量账号
+func (c *ProjectAccountBs) PostSync() {
+	// 验证内容
+	projectData, err := c.ServiceBackstage.ValidRuleAccountSync(c.Ctx)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+
+	// 项目ID
+	projectId, err := utils.GetDecryptId(projectData.Id)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+	// // 是否有该项目
+	// _, err = c.ServiceProject.Get(projectId)
+	// if err != nil {
+	// 	c.Ctx.JSON(iris.Map{"code": -1, "msg": "项目不存在"})
+	// 	return
+	// }
+
+	// 新增账号信息
+	err = c.ServiceProjectAccount.SyncAccountBs(projectId)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+	c.Ctx.JSON(iris.Map{"code": 0, "msg": "新增成功"})
+
+}
+
 // @Summary 编辑账号
 // @Summary 编辑账号
 // @Tags 后台 - 项目账号
 // @Tags 后台 - 项目账号
 // @Description 编辑账号
 // @Description 编辑账号

+ 9 - 3
web/viewmodels/project.go

@@ -71,9 +71,15 @@ func (l Project) ValidateAdd() error {
 		validation.Field(&l.Code, validation.Required.Error("项目编号不能为空")),
 		validation.Field(&l.Code, validation.Required.Error("项目编号不能为空")),
 		validation.Field(&l.Name, validation.Required.Error("项目名称不能为空")),
 		validation.Field(&l.Name, validation.Required.Error("项目名称不能为空")),
 		validation.Field(&l.Category, validation.Required.Error("办事处不能为空")),
 		validation.Field(&l.Category, validation.Required.Error("办事处不能为空")),
-		validation.Field(&l.CategoryId, validation.Required.Error("办事处ID不能为空")),
+		// validation.Field(&l.CategoryId, validation.Required.Error("办事处ID不能为空")),
 		validation.Field(&l.StaffName, validation.Required.Error("负责人不能为空")),
 		validation.Field(&l.StaffName, validation.Required.Error("负责人不能为空")),
-		validation.Field(&l.StaffId, validation.Required.Error("负责人ID不能为空")),
+		// validation.Field(&l.StaffId, validation.Required.Error("负责人ID不能为空")),
+	)
+}
+
+func (l Project) ValidateSync() error {
+	return validation.ValidateStruct(&l,
+		validation.Field(&l.Id, validation.Required.Error("项目ID不能为空")),
 	)
 	)
 }
 }
 
 
@@ -88,7 +94,7 @@ func (l Project) ValidateSave() error {
 		validation.Field(&l.Category, validation.Required.Error("负责人办事处不能为空")),
 		validation.Field(&l.Category, validation.Required.Error("负责人办事处不能为空")),
 		// validation.Field(&l.CategoryId, validation.Required.Error("负责人办事处ID不能为空")),
 		// validation.Field(&l.CategoryId, validation.Required.Error("负责人办事处ID不能为空")),
 		validation.Field(&l.StaffName, validation.Required.Error("负责人不能为空")),
 		validation.Field(&l.StaffName, validation.Required.Error("负责人不能为空")),
-		validation.Field(&l.StaffId, validation.Required.Error("负责人ID不能为空")),
+		// validation.Field(&l.StaffId, validation.Required.Error("负责人ID不能为空")),
 	)
 	)
 }
 }