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 }