153 lines
5.7 KiB
Go
153 lines
5.7 KiB
Go
package hr
|
|
|
|
import (
|
|
"WiiCITMS/models/hr"
|
|
"WiiCITMS/process/common"
|
|
"WiiGenerates/WiiCITMS/generates/v1/go/types"
|
|
"WiiGoLibrary/apply/middle/process/v1"
|
|
"WiiGoLibrary/framework/db/v1/utils/mssql/unique"
|
|
"errors"
|
|
)
|
|
|
|
// AssignStaffPositionWithPermission 分配员工到岗位,带权限检查
|
|
func AssignStaffPositionWithPermission(params AssignStaffPositionRequest, operatorGuid string) (*StaffPositionResponse, *process.Process) {
|
|
// 检查操作者权限
|
|
result := CheckAccessControl(operatorGuid, common.OperationUpdate, common.ResourceStaff, "")
|
|
if !result.HasPermission {
|
|
return nil, process.FailError(types.NoPermissionError, errors.New(result.ErrorMessage))
|
|
}
|
|
|
|
// 转换为AssignPosition参数并执行分配
|
|
positionResult, proc := AssignPosition(AssignPositionRequest{
|
|
StaffGuid: params.StaffGuid,
|
|
OrganizationGuid: params.PositionGuid, // 假设这里有参数转换逻辑
|
|
})
|
|
|
|
if proc.IsError() {
|
|
return nil, proc
|
|
}
|
|
|
|
// 将结果转换为StaffPositionResponse
|
|
return &StaffPositionResponse{
|
|
RecordGuid: positionResult.RecordGuid.String(),
|
|
StaffGuid: positionResult.StaffGuid.String(),
|
|
StaffName: positionResult.StaffName,
|
|
PositionGuid: positionResult.PositionGuid.String(),
|
|
PositionName: positionResult.PositionName,
|
|
OrganizationID: int64(0), // 需要根据实际情况转换
|
|
}, process.Success(200)
|
|
}
|
|
|
|
// RemoveStaffPositionWithPermission 从岗位中移除员工,带权限检查
|
|
func RemoveStaffPositionWithPermission(staffPositionGuid string, operatorGuid string) *process.Process {
|
|
// 检查操作者权限
|
|
result := CheckAccessControl(operatorGuid, common.OperationUpdate, common.ResourceStaff, "")
|
|
if !result.HasPermission {
|
|
return process.FailError(types.NoPermissionError, errors.New(result.ErrorMessage))
|
|
}
|
|
|
|
// 执行移除
|
|
return RemoveStaffPosition(RemoveStaffPositionRequest{
|
|
StaffGuid: staffPositionGuid,
|
|
})
|
|
}
|
|
|
|
// UpdateOrganizationWithPermission 更新组织信息,带权限检查
|
|
func UpdateOrganizationWithPermission(orgGuid string, params UpdateOrganizationRequest, operatorGuid string) (*hr.OrganizationModel, *process.Process) {
|
|
// 检查操作者权限
|
|
result := CheckAccessControl(operatorGuid, common.OperationUpdate, common.ResourceOrganization, orgGuid)
|
|
if !result.HasPermission {
|
|
return nil, process.FailError(types.NoPermissionError, errors.New(result.ErrorMessage))
|
|
}
|
|
|
|
// 将UpdateOrganizationRequest转换为CreateOrganizationRequest
|
|
createParams := CreateOrganizationRequest{
|
|
OrganizationName: params.OrganizationName,
|
|
OrganizationType: params.OrganizationType,
|
|
ParentGuid: params.ParentGuid,
|
|
Description: params.Description,
|
|
}
|
|
|
|
// 执行更新
|
|
return UpdateOrganization(orgGuid, createParams)
|
|
}
|
|
|
|
// CreatePositionWithPermission 创建岗位,带权限检查
|
|
func CreatePositionWithPermission(params CreatePositionRequest, operatorGuid string) (*hr.PositionModel, *process.Process) {
|
|
// 检查操作者权限
|
|
result := CheckAccessControl(operatorGuid, common.OperationCreate, common.ResourcePosition, "")
|
|
if !result.HasPermission {
|
|
return nil, process.FailError(types.NoPermissionError, errors.New(result.ErrorMessage))
|
|
}
|
|
|
|
// 执行创建
|
|
return CreatePosition(params)
|
|
}
|
|
|
|
// UpdatePositionWithPermission 更新岗位信息,带权限检查
|
|
func UpdatePositionWithPermission(positionGuid string, params CreatePositionRequest, operatorGuid string) (*hr.PositionModel, *process.Process) {
|
|
// 检查操作者权限
|
|
result := CheckAccessControl(operatorGuid, common.OperationUpdate, common.ResourcePosition, "")
|
|
if !result.HasPermission {
|
|
return nil, process.FailError(types.NoPermissionError, errors.New(result.ErrorMessage))
|
|
}
|
|
|
|
// 执行更新
|
|
return UpdatePosition(positionGuid, params)
|
|
}
|
|
|
|
// DeletePositionWithPermission 删除岗位,带权限检查
|
|
func DeletePositionWithPermission(positionGuid string, operatorGuid string) *process.Process {
|
|
// 检查操作者权限
|
|
result := CheckAccessControl(operatorGuid, common.OperationDelete, common.ResourcePosition, "")
|
|
if !result.HasPermission {
|
|
return process.FailError(types.NoPermissionError, errors.New(result.ErrorMessage))
|
|
}
|
|
|
|
// 执行删除
|
|
return DeletePosition(positionGuid)
|
|
}
|
|
|
|
// AssignPositionToOrgWithPermission 分配岗位到组织,带权限检查
|
|
func AssignPositionToOrgWithPermission(params OrgPositionRelRequest, operatorGuid string) (*hr.OrgPositionRelModel, *process.Process) {
|
|
// 验证组织ID和岗位ID
|
|
orgGuid, err := unique.FromString(params.OrganizationGuid)
|
|
if err != nil {
|
|
return nil, process.FailError(types.InvalidParamError, err)
|
|
}
|
|
|
|
// 检查操作者权限 - 需要对组织有更新权限
|
|
result := CheckAccessControl(operatorGuid, common.OperationUpdate, common.ResourceOrganization, orgGuid.String())
|
|
if !result.HasPermission {
|
|
return nil, process.FailError(types.NoPermissionError, errors.New(result.ErrorMessage))
|
|
}
|
|
|
|
// 将OrgPositionRelRequest转换为AssignPositionToOrgRequest
|
|
assignParams := AssignPositionToOrgRequest{
|
|
OrganizationGuid: params.OrganizationGuid,
|
|
PositionGuid: params.PositionGuid,
|
|
HeadCount: params.HeadCount,
|
|
}
|
|
|
|
// 执行分配
|
|
return AssignPositionToOrg(assignParams)
|
|
}
|
|
|
|
// RemovePositionFromOrgWithPermission 从组织中移除岗位,带权限检查
|
|
func RemovePositionFromOrgWithPermission(relationGuid string, operatorGuid string) *process.Process {
|
|
// 获取关系记录以确定组织ID
|
|
rel, proc := GetPositionOrgRelation(relationGuid)
|
|
if proc.IsError() {
|
|
return proc
|
|
}
|
|
|
|
// 检查操作者权限 - 需要对组织有更新权限
|
|
result := CheckAccessControl(operatorGuid, common.OperationUpdate, common.ResourceOrganization, rel.OrganizationGuid)
|
|
if !result.HasPermission {
|
|
return process.FailError(types.NoPermissionError, errors.New(result.ErrorMessage))
|
|
}
|
|
|
|
// 执行移除
|
|
return RemovePositionFromOrg(relationGuid)
|
|
}
|