修复入职权限问题
This commit is contained in:
+5
@@ -21,4 +21,9 @@ public interface IOnboardingContractDocumentService : ITransient
|
||||
/// 根据已审核通过的任务合同生成并保存 DOCX 文件。
|
||||
/// </summary>
|
||||
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,
|
||||
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
|
||||
|| task.TaskStatus == OnboardingTaskStatus.Rejected
|
||||
|| task.TaskStatus == OnboardingTaskStatus.Reviewing
|
||||
@@ -340,7 +361,7 @@ public class OnboardingContractDocumentService : IOnboardingContractDocumentServ
|
||||
.FirstOrDefault(definition => string.IsNullOrWhiteSpace(
|
||||
variables.FirstOrDefault(variable => variable.VariableCode == definition.VariableCode)?.VariableValue));
|
||||
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 })
|
||||
?? throw Oops.Bah("无法读取合同源文件");
|
||||
|
||||
+3
-4
@@ -200,10 +200,9 @@ public class OnboardingPublicTaskService : IOnboardingPublicTaskService
|
||||
}
|
||||
|
||||
await _snapshotService.Build(link.TaskId);
|
||||
var fileId = await _contractDocumentService.Generate(new OnboardingGenerateContractInput
|
||||
{
|
||||
TaskContractId = contract.Id
|
||||
});
|
||||
var fileId = await _contractDocumentService.GenerateForPublicAccess(
|
||||
contract.Id,
|
||||
link.TaskId);
|
||||
|
||||
var generatedAt = await _db.Queryable<ObTaskContract>()
|
||||
.Where(item => item.Id == contract.Id)
|
||||
|
||||
Reference in New Issue
Block a user