Browse Source

feat: 111

lanjianrong 4 years ago
parent
commit
79e0f7481c

+ 49 - 0
dao/permission_account_dao.go

@@ -8,10 +8,12 @@
 package dao
 package dao
 
 
 import (
 import (
+	"encoding/json"
 	"errors"
 	"errors"
 
 
 	"github.com/go-xorm/xorm"
 	"github.com/go-xorm/xorm"
 	"go.mod/models"
 	"go.mod/models"
+	"go.mod/web/viewmodels"
 )
 )
 
 
 //数据库操作引擎
 //数据库操作引擎
@@ -67,3 +69,50 @@ func (d *PermissionAccountDao) Update(data *models.CmPermissionAccount, columns
 	}
 	}
 	return nil
 	return nil
 }
 }
+
+// 获得当前账号下的标段权限
+func (d *PermissionAccountDao) GetPermissionWithAccountId(accountId int, bidsectionId int) (viewmodels.PermissionView, error) {
+	data := viewmodels.PermissionView{}
+	permission := viewmodels.Permission{}
+	has, err := d.engine.
+		Sql("select * from cm_permission_account where bidsection_id= ? and account_id = ?", accountId, bidsectionId).
+		Get(&data)
+	if has == false {
+		contractPermission := map[string]int{
+			"add":    permission.ContractAccess,
+			"delete": permission.ContractDelete,
+			"access": permission.ContractAccess,
+		}
+		contractPermissionByte, err := json.Marshal(contractPermission)
+		if err != nil {
+			return data, errors.New("合同权限解析失败")
+		}
+		contractPermissionStr := string(contractPermissionByte)
+
+		qualityPermission := map[string]int{
+			"add":    permission.QualityAdd,
+			"delete": permission.QualityDelete,
+			"access": permission.QualityAccess,
+		}
+		qualityPermissionByte, err := json.Marshal(qualityPermission)
+		if err != nil {
+			return data, errors.New("合同权限解析失败")
+		}
+		qualityPermissionStr := string(qualityPermissionByte)
+
+		safePermission := map[string]int{
+			"add":    permission.SafeAdd,
+			"delete": permission.SafeDelete,
+			"access": permission.SafeAccess,
+		}
+		safePermissionByte, err := json.Marshal(safePermission)
+		if err != nil {
+			return data, errors.New("合同权限解析失败")
+		}
+		safePermissionStr := string(safePermissionByte)
+		data.ContractPermission = contractPermissionStr
+		data.QualityPermission = qualityPermissionStr
+		data.SafePermission = safePermissionStr
+	}
+	return data, err
+}

+ 9 - 0
services/bid_account_service.go

@@ -23,6 +23,7 @@ type BidAccountService interface {
 	ValidRuleDelete(ctx iris.Context) (viewmodels.BidAccount, error)
 	ValidRuleDelete(ctx iris.Context) (viewmodels.BidAccount, error)
 	Create(viewBidAccount viewmodels.BidAccount, projectId int, accountId int) error
 	Create(viewBidAccount viewmodels.BidAccount, projectId int, accountId int) error
 	Delete(viewBidAccount viewmodels.BidAccount, projectId int) error
 	Delete(viewBidAccount viewmodels.BidAccount, projectId int) error
+	GetPermission(accountId int, bidsectionId int) (viewmodels.PermissionView, error)
 }
 }
 
 
 //返回service操作类
 //返回service操作类
@@ -32,6 +33,7 @@ type bidAccountService struct {
 	bidsectionDao     *dao.BidsectionDao
 	bidsectionDao     *dao.BidsectionDao
 	treeDao           *dao.TreeDao
 	treeDao           *dao.TreeDao
 	bidAccountDao     *dao.BidAccountDao
 	bidAccountDao     *dao.BidAccountDao
+	permissionDao     *dao.PermissionAccountDao
 }
 }
 
 
 //创建项目用户service
 //创建项目用户service
@@ -42,6 +44,7 @@ func NewBidAccountService() BidAccountService {
 		bidsectionDao:     dao.NewBidsectionDao(datasource.InstanceDbMaster()),
 		bidsectionDao:     dao.NewBidsectionDao(datasource.InstanceDbMaster()),
 		treeDao:           dao.NewTreeDao(datasource.InstanceDbMaster()),
 		treeDao:           dao.NewTreeDao(datasource.InstanceDbMaster()),
 		bidAccountDao:     dao.NewBidAccountDao(datasource.InstanceDbMaster()),
 		bidAccountDao:     dao.NewBidAccountDao(datasource.InstanceDbMaster()),
+		permissionDao:     dao.NewPermissionAccountDao(datasource.InstanceDbMaster()),
 	}
 	}
 }
 }
 
 
@@ -79,6 +82,12 @@ func (s *bidAccountService) ValidRuleDelete(ctx iris.Context) (viewmodels.BidAcc
 	return bidAccountVaild, nil
 	return bidAccountVaild, nil
 }
 }
 
 
+// 获取当前标段的权限
+func (s *bidAccountService) GetPermission(accountId int, bidsectionId int) (viewmodels.PermissionView, error) {
+	data, err := s.permissionDao.GetPermissionWithAccountId(accountId, bidsectionId)
+	return data, err
+}
+
 // 新增标段于账号的关系
 // 新增标段于账号的关系
 func (s *bidAccountService) Create(viewBidAccount viewmodels.BidAccount, projectId int, loginAccountId int) error {
 func (s *bidAccountService) Create(viewBidAccount viewmodels.BidAccount, projectId int, loginAccountId int) error {
 	// 写入关系表-标段的成员数量-账号表中标段ID
 	// 写入关系表-标段的成员数量-账号表中标段ID

+ 20 - 1
services/project_account_service.go

@@ -31,7 +31,7 @@ type ProjectAccountService interface {
 	ValidRuleChangePassword(ctx iris.Context) (viewmodels.AccountPassword, error)
 	ValidRuleChangePassword(ctx iris.Context) (viewmodels.AccountPassword, error)
 	ValidRulePermission(ctx iris.Context) (viewmodels.Permission, error)
 	ValidRulePermission(ctx iris.Context) (viewmodels.Permission, error)
 	ValidRuleAccount(ctx iris.Context) (viewmodels.ProjectAccount, error)
 	ValidRuleAccount(ctx iris.Context) (viewmodels.ProjectAccount, error)
-
+	ValidGetPermission(ctx iris.Context) (viewmodels.Permission, error)
 	Get(accountId int, projectId int) *viewmodels.ProjectAccount
 	Get(accountId int, projectId int) *viewmodels.ProjectAccount
 	GetAll(projectId int) []viewmodels.ProjectAccount
 	GetAll(projectId int) []viewmodels.ProjectAccount
 	GetBidAccount(bidsectionId int, projectId int, projectAccountId int) []viewmodels.ProjectAccount
 	GetBidAccount(bidsectionId int, projectId int, projectAccountId int) []viewmodels.ProjectAccount
@@ -155,6 +155,25 @@ func (s *projectAccountService) ValidRulePermission(ctx iris.Context) (viewmodel
 	return accountVaild, nil
 	return accountVaild, nil
 }
 }
 
 
+// 用户规则验证
+func (s *projectAccountService) ValidGetPermission(ctx iris.Context) (viewmodels.Permission, error) {
+	accountVaild := viewmodels.Permission{}
+	err := ctx.ReadForm(&accountVaild)
+	if err != nil {
+		log.Println("account-ValidRule-ReadForm转换异常, error=", err)
+		return accountVaild, err
+	}
+
+	err = accountVaild.ValidateSinglePermission()
+
+	if err != nil {
+		log.Println("权限验证, error=", err)
+		return accountVaild, err
+	}
+
+	return accountVaild, nil
+}
+
 // 验证编辑用户
 // 验证编辑用户
 func (s *projectAccountService) ValidRuleAccount(ctx iris.Context) (viewmodels.ProjectAccount, error) {
 func (s *projectAccountService) ValidRuleAccount(ctx iris.Context) (viewmodels.ProjectAccount, error) {
 	accountVaild := viewmodels.ProjectAccount{}
 	accountVaild := viewmodels.ProjectAccount{}

+ 37 - 0
web/api/project_setting_auth_api.go

@@ -202,3 +202,40 @@ func (c *ProjectSettingApi) DeleteBidAccount() {
 		"msg":  "移除成功",
 		"msg":  "移除成功",
 	})
 	})
 }
 }
+
+// @Summary 获得标段权限
+// @Tags 项目设置-标段成员权限-管理员
+// @Description 获得当前用户下当前标段的权限
+// @Accept  json
+// @Produce  json
+// @Security ApiKeyAuth
+// @Param   bidsectionId     path    string     false        "标段ID"
+// @Success 200 {object} viewmodels.PermissionView "{code:0成功,-1参数类错误,data:viewmodels.PermissionView,msg:错误信息}"
+// @Router /api/projectSetting/permission [get]
+func (c *ProjectSettingApi) GetPermission() {
+	// 1.验证消息
+	PermissionData, err := c.ServiceProjectAccount.ValidGetPermission(c.Ctx)
+	// 账号ID
+	accountId, err := utils.GetProjectAccountId(c.Ctx)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+
+	bidsectionId, err := utils.GetDecryptId(PermissionData.BidsectionId)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+
+	data, err := c.ServiceBidAccount.GetPermission(accountId, bidsectionId)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
+		return
+	}
+	c.Ctx.JSON(iris.Map{
+		"code": 0,
+		"msg":  "请求成功",
+		"data": data,
+	})
+}

+ 11 - 0
web/viewmodels/permission.go

@@ -28,6 +28,12 @@ type Permission struct {
 	BidsectionType int `form:"bidsectionType" json:"bidsectionType"`
 	BidsectionType int `form:"bidsectionType" json:"bidsectionType"`
 }
 }
 
 
+type PermissionView struct {
+	ContractPermission string `from:"contract_permission" json:"contract"`
+	QualityPermission  string `from:"quality_permission" json:"quality"`
+	SafePermission     string `from:"safe_permission" json:"safe"`
+}
+
 func (l Permission) Validate() error {
 func (l Permission) Validate() error {
 	return validation.ValidateStruct(&l,
 	return validation.ValidateStruct(&l,
 		validation.Field(&l.BidsectionId, validation.Required.Error("标段ID不能为空")),
 		validation.Field(&l.BidsectionId, validation.Required.Error("标段ID不能为空")),
@@ -40,3 +46,8 @@ func (l Permission) ValidateType() error {
 		validation.Field(&l.BidsectionType, validation.In(0, 1, 2).Error("未找到相关请求类型")),
 		validation.Field(&l.BidsectionType, validation.In(0, 1, 2).Error("未找到相关请求类型")),
 	)
 	)
 }
 }
+func (l Permission) ValidateSinglePermission() error {
+	return validation.ValidateStruct(&l,
+		validation.Field(&l.BidsectionId, validation.Required.Error("标段ID不能为空")),
+	)
+}