修复相关漏洞
This commit is contained in:
+30
-1
@@ -25,6 +25,11 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
|
||||
/// 关联已上传 OSS 文件与任务材料要求。
|
||||
/// </summary>
|
||||
public async Task SaveMaterial(OnboardingSaveMaterialInput input)
|
||||
{
|
||||
await OnboardingConcurrency.RunPublic(_db, input.Token, () => SaveMaterialCore(input), transactional: true);
|
||||
}
|
||||
|
||||
private async Task SaveMaterialCore(OnboardingSaveMaterialInput input)
|
||||
{
|
||||
var task = await GetEditableTask(input.Token);
|
||||
var requirement = await _db.Queryable<ObTaskMaterialRequirement>()
|
||||
@@ -84,6 +89,12 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
|
||||
/// </summary>
|
||||
public async Task DeleteMaterial(
|
||||
OnboardingDeleteMaterialInput input)
|
||||
{
|
||||
await OnboardingConcurrency.RunPublic(_db, input.Token, () => DeleteMaterialCore(input), transactional: true);
|
||||
}
|
||||
|
||||
private async Task DeleteMaterialCore(
|
||||
OnboardingDeleteMaterialInput input)
|
||||
{
|
||||
var task = await GetEditableTask(input.Token);
|
||||
var material = await _db.Queryable<ObTaskMaterial>()
|
||||
@@ -102,6 +113,11 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
|
||||
/// 记录候选人已经查看并确认动态生成的合同。
|
||||
/// </summary>
|
||||
public async Task ConfirmContract(OnboardingConfirmContractInput input)
|
||||
{
|
||||
await OnboardingConcurrency.RunPublic(_db, input.Token, () => ConfirmContractCore(input), transactional: true);
|
||||
}
|
||||
|
||||
private async Task ConfirmContractCore(OnboardingConfirmContractInput input)
|
||||
{
|
||||
var task = await GetEditableTask(input.Token);
|
||||
var contract = await _db.Queryable<ObTaskContract>()
|
||||
@@ -119,6 +135,11 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
|
||||
/// 校验固定信息、动态字段、材料、合同变量和合同确认后提交审核。
|
||||
/// </summary>
|
||||
public async Task Submit(OnboardingSubmitInput input)
|
||||
{
|
||||
await OnboardingConcurrency.RunPublic(_db, input.Token, () => SubmitCore(input), transactional: true, protectIdentity: true);
|
||||
}
|
||||
|
||||
private async Task SubmitCore(OnboardingSubmitInput input)
|
||||
{
|
||||
var task = await GetEditableTask(input.Token);
|
||||
var info = await _db.Queryable<ObTaskEmployeeInfo>()
|
||||
@@ -160,11 +181,19 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
|
||||
|
||||
var submittedAt = DateTime.Now;
|
||||
var identityConfirmationHash = BuildIdentityConfirmationHash(info);
|
||||
var originalStatus = task.TaskStatus;
|
||||
var originalSubmitCount = task.SubmitCount;
|
||||
task.TaskStatus = OnboardingTaskStatus.Reviewing;
|
||||
task.SubmitCount++;
|
||||
task.LastSubmittedAt = submittedAt;
|
||||
task.RejectReason = null;
|
||||
await _db.Updateable(task).ExecuteCommandAsync();
|
||||
var changed = await _db.Updateable(task)
|
||||
.UpdateColumns(item => new { item.TaskStatus, item.SubmitCount, item.LastSubmittedAt, item.RejectReason })
|
||||
.Where(item => item.Id == task.Id && item.TaskStatus == originalStatus
|
||||
&& item.SubmitCount == originalSubmitCount)
|
||||
.ExecuteCommandAsync();
|
||||
if (changed != 1)
|
||||
throw Oops.Bah("任务状态已变更,请刷新后重试");
|
||||
|
||||
await _db.Insertable(new ObTaskAudit
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user