caipin 3 年 前
コミット
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 {
 	_, err := d.engine.Insert(data)

+ 38 - 0
lib/jlzf.go

@@ -63,6 +63,44 @@ func makeTokenString(claimsData jwt.MapClaims) (string, error) {
 	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) {
 	var (

+ 20 - 0
services/backstage_service.go

@@ -32,6 +32,9 @@ type BackstageService interface {
 	ValidRuleProjectAdd(ctx iris.Context) (viewmodels.Project, error)
 	ValidRuleProjectSave(ctx iris.Context) (viewmodels.Project, error)
 	ValidRuleAccountAdd(ctx iris.Context) (viewmodels.ProjectAccount, error)
+
+	ValidRuleAccountSync(ctx iris.Context) (viewmodels.Project, error)
+
 	ValidRuleAccountSave(ctx iris.Context) (viewmodels.ProjectAccount, error)
 	ValidRuleAccountEnable(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
 }
 
+// 验证账号同步的接口
+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) {
 	projectVaild := viewmodels.Project{}

+ 33 - 0
services/project_account_service.go

@@ -9,6 +9,7 @@ package services
 import (
 	"encoding/json"
 	"errors"
+	"fmt"
 	"html"
 	"log"
 	"strconv"
@@ -17,6 +18,7 @@ import (
 
 	"github.com/kataras/iris/v12"
 	"go.mod/comm"
+	"go.mod/lib"
 	"go.mod/models"
 	"go.mod/web/viewmodels"
 
@@ -41,6 +43,9 @@ type ProjectAccountService interface {
 	Add(viewAccount viewmodels.ProjectAccount, projectId int) error
 	Save(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
 	ChangeAccount(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
 	bidAccountDao        *dao.BidAccountDao
 	permissionAccountDao *dao.PermissionAccountDao
+	projectDao           *dao.ProjectDao
 	validSave            string
 	validAdd             string
 	validPassword        string
@@ -68,6 +74,7 @@ func NewProjectAccountService() ProjectAccountService {
 		dao:                  dao.NewProjectAccountDao(datasource.InstanceDbMaster()),
 		bidAccountDao:        dao.NewBidAccountDao(datasource.InstanceDbMaster()),
 		permissionAccountDao: dao.NewPermissionAccountDao(datasource.InstanceDbMaster()),
+		projectDao:           dao.NewProjectDao(datasource.InstanceDbMaster()),
 		validSave:            "/api/projectSetting/account/save",
 		validAdd:             "/api/projectSetting/account/create",
 		validPassword:        "/api/projectSetting/account/change",
@@ -389,6 +396,32 @@ func (s *projectAccountService) SaveBs(viewAccount viewmodels.ProjectAccount, id
 	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
 func (s *projectAccountService) updateAdminZero(projectId int) error {
 	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 编辑账号
 // @Tags 后台 - 项目账号
 // @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.Name, 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.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.CategoryId, validation.Required.Error("负责人办事处ID不能为空")),
 		validation.Field(&l.StaffName, validation.Required.Error("负责人不能为空")),
-		validation.Field(&l.StaffId, validation.Required.Error("负责人ID不能为空")),
+		// validation.Field(&l.StaffId, validation.Required.Error("负责人ID不能为空")),
 	)
 }