修复入职权限问题
This commit is contained in:
+5
@@ -21,4 +21,9 @@ public interface IOnboardingContractDocumentService : ITransient
|
|||||||
/// 根据已审核通过的任务合同生成并保存 DOCX 文件。
|
/// 根据已审核通过的任务合同生成并保存 DOCX 文件。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Task<long> Generate(OnboardingGenerateContractInput input);
|
Task<long> Generate(OnboardingGenerateContractInput input);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 员工公开入口已验证一次性任务链接后,生成该链接所属的合同文件。
|
||||||
|
/// </summary>
|
||||||
|
Task<long> GenerateForPublicAccess(long taskContractId, long taskId);
|
||||||
}
|
}
|
||||||
|
|||||||
+22
-1
@@ -306,6 +306,27 @@ public class OnboardingContractDocumentService : IOnboardingContractDocumentServ
|
|||||||
task.CreateUserId,
|
task.CreateUserId,
|
||||||
OnboardingPermissionCodes.TaskManageAll,
|
OnboardingPermissionCodes.TaskManageAll,
|
||||||
"入职任务");
|
"入职任务");
|
||||||
|
|
||||||
|
return await GenerateCore(contract, task);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public async Task<long> GenerateForPublicAccess(long taskContractId, long taskId)
|
||||||
|
{
|
||||||
|
var contract = await _db.Queryable<ObTaskContract>()
|
||||||
|
.FirstAsync(item => item.Id == taskContractId && item.TaskId == taskId)
|
||||||
|
?? throw Oops.Bah("合同不存在");
|
||||||
|
var task = await _db.Queryable<ObOnboardingTask>().InSingleAsync(taskId)
|
||||||
|
?? throw Oops.Bah("入职任务不存在");
|
||||||
|
|
||||||
|
return await GenerateCore(contract, task);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 执行已经完成调用方权限或公开链接归属校验的合同生成逻辑。
|
||||||
|
/// </summary>
|
||||||
|
private async Task<long> GenerateCore(ObTaskContract contract, ObOnboardingTask task)
|
||||||
|
{
|
||||||
var statusAllowsGeneration = task.TaskStatus == OnboardingTaskStatus.PendingFill
|
var statusAllowsGeneration = task.TaskStatus == OnboardingTaskStatus.PendingFill
|
||||||
|| task.TaskStatus == OnboardingTaskStatus.Rejected
|
|| task.TaskStatus == OnboardingTaskStatus.Rejected
|
||||||
|| task.TaskStatus == OnboardingTaskStatus.Reviewing
|
|| task.TaskStatus == OnboardingTaskStatus.Reviewing
|
||||||
@@ -340,7 +361,7 @@ public class OnboardingContractDocumentService : IOnboardingContractDocumentServ
|
|||||||
.FirstOrDefault(definition => string.IsNullOrWhiteSpace(
|
.FirstOrDefault(definition => string.IsNullOrWhiteSpace(
|
||||||
variables.FirstOrDefault(variable => variable.VariableCode == definition.VariableCode)?.VariableValue));
|
variables.FirstOrDefault(variable => variable.VariableCode == definition.VariableCode)?.VariableValue));
|
||||||
if (missing != null)
|
if (missing != null)
|
||||||
throw Oops.Bah($"合同变量“{missing.VariableName}”尚未填写,暂时不能预览合同");
|
throw Oops.Bah($"合同“{contract.ContractName}”的变量“{missing.VariableName}”尚未填写,暂时不能预览合同");
|
||||||
|
|
||||||
var sourceResult = await _fileService.Download(new BaseIdInput { Id = source.Id })
|
var sourceResult = await _fileService.Download(new BaseIdInput { Id = source.Id })
|
||||||
?? throw Oops.Bah("无法读取合同源文件");
|
?? throw Oops.Bah("无法读取合同源文件");
|
||||||
|
|||||||
+3
-4
@@ -200,10 +200,9 @@ public class OnboardingPublicTaskService : IOnboardingPublicTaskService
|
|||||||
}
|
}
|
||||||
|
|
||||||
await _snapshotService.Build(link.TaskId);
|
await _snapshotService.Build(link.TaskId);
|
||||||
var fileId = await _contractDocumentService.Generate(new OnboardingGenerateContractInput
|
var fileId = await _contractDocumentService.GenerateForPublicAccess(
|
||||||
{
|
contract.Id,
|
||||||
TaskContractId = contract.Id
|
link.TaskId);
|
||||||
});
|
|
||||||
|
|
||||||
var generatedAt = await _db.Queryable<ObTaskContract>()
|
var generatedAt = await _db.Queryable<ObTaskContract>()
|
||||||
.Where(item => item.Id == contract.Id)
|
.Where(item => item.Id == contract.Id)
|
||||||
|
|||||||
Reference in New Issue
Block a user