permission_service.go 2.9 KB
package service

import (
	"github.com/linmadan/egglib-go/core/application"
	"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory"
	"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/permission/command"
	"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
)

type PermissionService struct {
}

func NewPermissionService() *PermissionService {
	newPermissionService := &PermissionService{}
	return newPermissionService
}

func (rs *PermissionService) Update(in *command.UpdatePermissionCommand) (interface{}, error) {
	transactionContext, err := factory.ValidateStartTransaction(in)
	if err != nil {
		return nil, err
	}
	defer func() {
		transactionContext.RollbackTransaction()
	}()
	permissionRepository := factory.CreatePermissionRepository(map[string]interface{}{"transactionContext": transactionContext})
	// 获取权限配置
	_, permissions, err := permissionRepository.Find(map[string]interface{}{"companyId": in.CompanyId})
	if err != nil {
		return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
	}
	if len(permissions) == 0 {
		return nil, application.ThrowError(application.BUSINESS_ERROR, "权限配置数据错误")
	}
	permission := permissions[0]
	permission.OptHrScore = in.OptHrScore
	permission.OptEvalScore = in.OptEvalScore

	permission, err = permissionRepository.Insert(permission)
	if err != nil {
		return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
	}
	if err := transactionContext.CommitTransaction(); err != nil {
		return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
	}
	return permission, nil
}

func (rs *PermissionService) Get(in *command.GetPermissionCommand) (interface{}, error) {
	transactionContext, err := factory.ValidateStartTransaction(in)
	if err != nil {
		return nil, err
	}
	defer func() {
		transactionContext.RollbackTransaction()
	}()
	permissionRepository := factory.CreatePermissionRepository(map[string]interface{}{"transactionContext": transactionContext})

	// 获取权限配置
	_, permissions, err := permissionRepository.Find(map[string]interface{}{"companyId": in.CompanyId})
	if err != nil {
		return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
	}
	var permission *domain.Permission
	if len(permissions) == 0 { // 不存在时,新增权限配置
		value := &domain.Permission{
			Id:           0,
			CompanyId:    in.CompanyId,
			OptHrScore:   domain.PermissionOff,
			OptEvalScore: domain.PermissionOff,
		}
		permission, err = permissionRepository.Insert(value)
		if err != nil {
			return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
		}
	} else {
		permission = permissions[0]
	}
	if err := transactionContext.CommitTransaction(); err != nil {
		return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
	}
	return permission, nil
}