caipin hace 4 años
padre
commit
87ac683586

+ 2 - 2
dao/safe_audit_dao.go

@@ -2,7 +2,7 @@
  * @description: 安全巡检数据库操作相关
  * @Author: LanJianRong
  * @Date: 2020-11-20
- * @FilePath: \construction_management\dao\safe_dao.go
+ * @FilePath: \construction_management\dao\safe_audit_dao.go
  */
 
 package dao
@@ -70,7 +70,7 @@ func (d *SafeAuditDao) GetAuditorsWithOwner(id int, times int, cur_uid int) []vi
 		fmt.Println(err)
 	}
 	auditors = append(auditors, auditor)
-	d.engine.Sql("select pa.`name`, pa.`position`,ca.`audit_id`, ca.`progress` from `cm_project_account` as pa, `cm_safe_audit` as ca where ca.`safe_id` = ? and ca.`times` = ? and ca.audit_id = pa.id order by `audit_order`", id, times).Find(&auditors)
+	d.engine.Sql("select pa.`name`,pa.`account_group`, pa.`position`,ca.`audit_id`, ca.`progress` from `cm_project_account` as pa, `cm_safe_audit` as ca where ca.`safe_id` = ? and ca.`times` = ? and ca.audit_id = pa.id order by `audit_order`", id, times).Find(&auditors)
 
 	return auditors
 }

+ 0 - 8
services/bid_account_service.go

@@ -90,14 +90,6 @@ func (s *bidAccountService) Create(viewBidAccount viewmodels.BidAccount, project
 		return errors.New("目录不合法")
 	}
 	treeId := treeData.Id
-	// treeId, err := utils.GetDecryptId(viewBidAccount.FolderId)
-	// if err != nil {
-	// 	return err
-	// }
-	// treeData := s.treeDao.Get(treeId, projectId)
-	// if treeData.Id == 0 {
-	// 	return errors.New("目录不合法")
-	// }
 
 	// 新增成员到标段
 	err = s.bidAccountDao.Create(bidsectionId, accountData, treeId, projectId)

+ 47 - 3
services/project_account_service.go

@@ -27,6 +27,8 @@ import (
 //定义项目用户Service接口
 type ProjectAccountService interface {
 	ValidRule(ctx iris.Context) (viewmodels.ProjectAccount, error)
+	ValidRulePermission(ctx iris.Context) (viewmodels.Permission, error)
+
 	Get(accountId int, projectId int) *viewmodels.ProjectAccount
 	GetAll(projectId int) []viewmodels.ProjectAccount
 	GetBidAccount(bidsectionId int, projectId int, projectAccountId int) []viewmodels.ProjectAccount
@@ -37,6 +39,8 @@ type ProjectAccountService interface {
 	ChangeAccount(id int, projectId int, viewAccount viewmodels.ProjectAccount) error
 	GetProjectInfo(id int) (viewmodels.ProjectInfo, error)
 	Delete(id int, projectId int) error
+
+	SaveAuth(permission viewmodels.Permission, projectId int) error
 }
 
 //返回service操作类
@@ -53,8 +57,8 @@ func NewProjectAccountService() ProjectAccountService {
 	return &projectAccountService{
 		dao:           dao.NewProjectAccountDao(datasource.InstanceDbMaster()),
 		bidAccountDao: dao.NewBidAccountDao(datasource.InstanceDbMaster()),
-		validSave:     "/api/projectSetting/account/create",
-		validAdd:      "/api/projectSetting/account/add",
+		validSave:     "/api/projectSetting/account/save",
+		validAdd:      "/api/projectSetting/account/create",
 		validPassword: "/api/projectSetting/account/change",
 	}
 }
@@ -105,6 +109,25 @@ func (s *projectAccountService) ValidRule(ctx iris.Context) (viewmodels.ProjectA
 	return accountVaild, nil
 }
 
+// 用户规则验证
+func (s *projectAccountService) ValidRulePermission(ctx iris.Context) (viewmodels.Permission, error) {
+	accountVaild := viewmodels.Permission{}
+	err := ctx.ReadJSON(&accountVaild)
+	if err != nil {
+		log.Println("account-ValidRule-ReadForm转换异常, error=", err)
+		return accountVaild, err
+	}
+
+	err = accountVaild.Validate()
+
+	if err != nil {
+		log.Println("权限验证, error=", err)
+		return accountVaild, err
+	}
+
+	return accountVaild, nil
+}
+
 // 获得一个项目用户
 func (s *projectAccountService) Get(id int, projectId int) *viewmodels.ProjectAccount {
 	modelsAccount := s.dao.Get(id, projectId)
@@ -257,6 +280,27 @@ func (s *projectAccountService) ChangeAccount(id int, projectId int, viewAccount
 
 func (s *projectAccountService) GetProjectInfo(id int) (viewmodels.ProjectInfo, error) {
 	projectInfo, err := s.dao.FindById(id)
-	// return new errors("啊啊啊")
 	return projectInfo, err
 }
+
+// 保存权限设置
+func (s *projectAccountService) SaveAuth(permission viewmodels.Permission, projectId int) error {
+	// 1.构造权限字符串
+	// contractPermission := map[string]int{
+	// 	"add":    permission.ContractAdd,
+	// 	"delete": permission.ContractDelete,
+	// 	"access": permission.ContractAccess,
+	// }
+	// safePermission := map[string]int{
+	// 	"add":    permission.SafeAdd,
+	// 	"delete": permission.SafeDelete,
+	// 	"access": permission.SafeAccess,
+	// }
+	// qualityPermission := map[string]int{
+	// 	"add":    permission.QualityAdd,
+	// 	"delete": permission.QualityDelete,
+	// 	"access": permission.QualityAccess,
+	// }
+
+	return nil
+}

+ 1 - 0
services/safe_service.go

@@ -132,6 +132,7 @@ func (s *safeService) GetDetail(id int, pid int) viewmodels.SafeDetail {
 		auditorVM.Name = item.Name
 		auditorVM.Position = item.Position
 		auditorVM.Progress = item.Progress
+
 		encryptAuditors = append(encryptAuditors, auditorVM)
 	}
 	auditHistory := s.daoSafeAudit.GetAuditHistory(safeData.Id, safeData.Times)

+ 2 - 3
web/api/project_setting_api.go

@@ -112,13 +112,13 @@ func (c *ProjectSettingApi) GetAccountSearch() {
 // @Security ApiKeyAuth
 // @Param   account     body    string     true        "账号"
 // @Param   password     body    string     true        "密码"
+// @Param   role     body    int     true        "角色ID"
 // @Param   name     body    string     true        "姓名"
 // @Param   company     body    string     true        "公司"
 // @Param   position     body    string     true        "职位"
 // @Param   mobile     body    string     true        "手机"
 // @Param   telephone     body    string     true        "座机"
 // @Param   accountGroup     body    int     true        "账号组"
-// @Param   X-CSRF-Token      header    string     true        "csrf"
 // @Success 200 {string} string "{code:0成功,-1参数类错误,data:viewmodels.ProjectAccount,msg:错误信息}"
 // @Router /api/projectSetting/account/create [post]
 func (c *ProjectSettingApi) PostAccountCreate() {
@@ -153,6 +153,7 @@ func (c *ProjectSettingApi) PostAccountCreate() {
 // @Produce  json
 // @Security ApiKeyAuth
 // @Param   id     body    string     true        "账号ID" default(PcqqGsn1O0jBSmLqkuOTwQ)
+// @Param   role     body    int     true        "角色ID"
 // @Param   name     body    string     true        "姓名"
 // @Param   company     body    string     true        "公司"
 // @Param   position     body    string     true        "职位"
@@ -198,7 +199,6 @@ func (c *ProjectSettingApi) PostAccountSave() {
 // @Security ApiKeyAuth
 // @Param   id     body    string     true        "账号ID" default(PcqqGsn1O0jBSmLqkuOTwQ)
 // @Param   enable     body    int     true        "启用/禁用"
-// @Param   X-CSRF-Token      header    string     true        "csrf"
 // @Success 200 {string} string "{code:0成功,-1参数类错误,data:viewmodels.ProjectAccount,msg:错误信息}"
 // @Router /api/projectSetting/account/enable [post]
 func (c *ProjectSettingApi) PostAccountEnable() {
@@ -238,7 +238,6 @@ func (c *ProjectSettingApi) PostAccountEnable() {
 // @Produce  json
 // @Security ApiKeyAuth
 // @Param   id     body    string     true        "账号ID" default(PcqqGsn1O0jBSmLqkuOTwQ)
-// @Param   X-CSRF-Token      header    string     true        "csrf"
 // @Success 200 {string} string "{code:0成功,-1参数类错误,data:viewmodels.ProjectAccount,msg:错误信息}"
 // @Router /api/projectSetting/account/delete [post]
 func (c *ProjectSettingApi) PostAccountDelete() {

+ 41 - 1
web/api/project_setting_auth_api.go

@@ -103,9 +103,49 @@ func (c *ProjectSettingApi) PostBidAccountCreate() {
 	})
 }
 
-// 设置权限
+//
+// @Summary 设置成员权限
+// @Tags 项目设置-标段成员权限-管理员
+// @Description 设置成员权限
+// @Accept  json
+// @Produce  json
+// @Security ApiKeyAuth
+// @Param   bidsectionId     body    string     false        "标段ID"
+// @Param   accountId     body    string     false        "账号ID"
+// @Param   contractAdd    body    int     false        "合同创建 1拥有0不拥有"
+// @Param   contractDelete        body    int     false        "合同删除 1拥有0不拥有"
+// @Param   contractAccess        body    int     false        "合同查看 1拥有0不拥有"
+
+// @Param   safeAdd    body    int     false        "安全创建 1拥有0不拥有"
+// @Param   safeDelete        body    int     false        "安全删除 1拥有0不拥有"
+// @Param   safeAccess        body    int     false        "安全查看 1拥有0不拥有"
+
+// @Param   qualityAdd    body    int     false        "合同创建 1拥有0不拥有"
+// @Param   qualityDelete        body    int     false        "合同删除 1拥有0不拥有"
+// @Param   qualityAccess        body    int     false        "合同查看 1拥有0不拥有"
+// @Success 200 {string} string "{code:0成功,-1参数类错误,data:viewmodels.ProjectAccount,msg:错误信息}"
+// @Router /api/projectSetting/bid/account/auth [post]
 func (c *ProjectSettingApi) PostBidAccountAuth() {
+	// 1.验证消息
+	PermissionData, err := c.ServiceProjectAccount.ValidRulePermission(c.Ctx)
 
+	// 获得项目ID
+	projectId, err := utils.GetProjectId(c.Ctx)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+
+	// 保存设置的权限
+	err = c.ServiceProjectAccount.SaveAuth(PermissionData, projectId)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": ""})
+		return
+	}
+	c.Ctx.JSON(iris.Map{
+		"code": 0,
+		"msg":  "新增成功",
+	})
 }
 
 // @Summary 移除标段成员-账号

+ 2 - 0
web/viewmodels/project_account.go

@@ -34,6 +34,7 @@ func (l ProjectAccount) Validate() error {
 	return validation.ValidateStruct(&l,
 		validation.Field(&l.Account, validation.Required.Error("账号不能为空"), validation.Match(regexp.MustCompile("^[A-Za-z0-9]+$")).Error("只支持英文数字组合")),
 		validation.Field(&l.Password, validation.Required.Error("密码不能为空"), validation.Match(regexp.MustCompile("^[a-zA-Z]\\w{5,17}$")).Error("密码支持英文数字及符号,6~18之间")),
+		validation.Field(&l.Role, validation.Required.Error("账号组不能为空"), validation.In(1, 2, 3, 4).Error("未找到相关账号组")),
 		validation.Field(&l.Name, validation.Required.Error("姓名不能为空")),
 		validation.Field(&l.Company, validation.Required.Error("单位不能为空")),
 		validation.Field(&l.Position, validation.Required.Error("职位不能为空")),
@@ -45,6 +46,7 @@ func (l ProjectAccount) Validate() error {
 func (l ProjectAccount) ValidateUpdate() error {
 	return validation.ValidateStruct(&l,
 		validation.Field(&l.Name, validation.Required.Error("姓名不能为空")),
+		validation.Field(&l.Role, validation.Required.Error("账号组不能为空"), validation.In(1, 2, 3, 4).Error("未找到相关账号组")),
 		validation.Field(&l.Company, validation.Required.Error("单位不能为空")),
 		validation.Field(&l.Position, validation.Required.Error("职位不能为空")),
 		//validation.Field(&l.Mobile, validation.Required.Error("手机不能为空"), validation.Match(regexp.MustCompile("^([1][3,4,5,6,7,8,9])\\d{9}$")).Error("只支持英文数字组合")),

+ 5 - 4
web/viewmodels/safe.go

@@ -73,10 +73,11 @@ type SafeFile struct {
 	CreateTime  time.Time `from:"create_time" json:"createTime"`
 }
 type Auditors struct {
-	Name     string `from:"name" json:"name"`
-	Progress string `from:"progress" json:"progress"`
-	AuditId  string `from:"audit_id" json:"audit_id"`
-	Position string `from:"position" json:"position"`
+	Name         string `from:"name" json:"name"`
+	Progress     string `from:"progress" json:"progress"`
+	AuditId      string `from:"audit_id" json:"audit_id"`
+	Position     string `from:"position" json:"position"`
+	AccountGroup string `from:"accountGroup" json:"accountGroup"`
 }
 
 type SafeListAuditRecord struct {