代码优化

This commit is contained in:
fuenmao
2026-08-27 11:09:20 +08:00
parent 658869b3a7
commit ae8167a566
46 changed files with 2051 additions and 204 deletions
@@ -25,10 +25,32 @@ public class OnboardingTaskLifecycleService : IOnboardingTaskLifecycleService
throw Oops.Bah("仅审核通过任务可归档");
}
task.TaskStatus = OnboardingTaskStatus.Archived;
task.ArchivedAt = DateTime.Now;
await _db.Updateable(task).ExecuteCommandAsync();
await Log(task, OnboardingAuditAction.Archive, input.AuditOpinion);
await _db.Ado.BeginTranAsync();
try
{
var archivedAt = DateTime.Now;
var updatedRows = await _db.Updateable<ObOnboardingTask>()
.SetColumns(item => new ObOnboardingTask
{
TaskStatus = OnboardingTaskStatus.Archived,
ArchivedAt = archivedAt
})
.Where(item => item.Id == task.Id
&& item.TaskStatus == OnboardingTaskStatus.Approved)
.ExecuteCommandAsync();
if (updatedRows != 1)
throw Oops.Bah("该入职任务状态已变化,请刷新后重试");
task.TaskStatus = OnboardingTaskStatus.Archived;
task.ArchivedAt = archivedAt;
await Log(task, OnboardingAuditAction.Archive, input.AuditOpinion);
await _db.Ado.CommitTranAsync();
}
catch
{
await _db.Ado.RollbackTranAsync();
throw;
}
}
/// <summary>
@@ -37,22 +59,43 @@ public class OnboardingTaskLifecycleService : IOnboardingTaskLifecycleService
public async Task Revoke(OnboardingAuditActionInput input)
{
var task = await Authorize(input.TaskId);
if (task.TaskStatus == OnboardingTaskStatus.Approved || task.TaskStatus == OnboardingTaskStatus.Archived)
if (task.TaskStatus == OnboardingTaskStatus.Approved
|| task.TaskStatus == OnboardingTaskStatus.Archived
|| task.TaskStatus == OnboardingTaskStatus.Revoked)
{
throw Oops.Bah("已通过或已归档任务不能撤销");
throw Oops.Bah("已通过、已归档或已撤销任务不能再次撤销");
}
task.TaskStatus = OnboardingTaskStatus.Revoked;
await _db.Updateable(task).ExecuteCommandAsync();
await _db.Updateable<ObTaskLink>()
.SetColumns(item => new ObTaskLink
{
LinkStatus = OnboardingLinkStatus.Revoked,
RevokedAt = DateTime.Now
})
.Where(item => item.TaskId == task.Id && item.LinkStatus == OnboardingLinkStatus.Active)
.ExecuteCommandAsync();
await Log(task, OnboardingAuditAction.Revoke, input.AuditOpinion);
await _db.Ado.BeginTranAsync();
try
{
var originalStatus = task.TaskStatus;
var revokedAt = DateTime.Now;
var updatedRows = await _db.Updateable<ObOnboardingTask>()
.SetColumns(item => item.TaskStatus == OnboardingTaskStatus.Revoked)
.Where(item => item.Id == task.Id && item.TaskStatus == originalStatus)
.ExecuteCommandAsync();
if (updatedRows != 1)
throw Oops.Bah("该入职任务状态已变化,请刷新后重试");
await _db.Updateable<ObTaskLink>()
.SetColumns(item => new ObTaskLink
{
LinkStatus = OnboardingLinkStatus.Revoked,
RevokedAt = revokedAt
})
.Where(item => item.TaskId == task.Id
&& item.LinkStatus == OnboardingLinkStatus.Active)
.ExecuteCommandAsync();
task.TaskStatus = OnboardingTaskStatus.Revoked;
await Log(task, OnboardingAuditAction.Revoke, input.AuditOpinion);
await _db.Ado.CommitTranAsync();
}
catch
{
await _db.Ado.RollbackTranAsync();
throw;
}
}
/// <summary>
@@ -86,6 +129,9 @@ public class OnboardingTaskLifecycleService : IOnboardingTaskLifecycleService
await _db.Deleteable<ObTaskMaterialRequirement>().Where(x => x.TaskId == task.Id).ExecuteCommandAsync();
await _db.Deleteable<ObTaskMaterial>().Where(x => x.TaskId == task.Id).ExecuteCommandAsync();
await _db.Deleteable<ObTaskEmployeeInfo>().Where(x => x.TaskId == task.Id).ExecuteCommandAsync();
await _db.Deleteable<ObTaskFormRequirement>().Where(x => x.TaskId == task.Id).ExecuteCommandAsync();
await _db.Deleteable<ObTaskFormValue>().Where(x => x.TaskId == task.Id).ExecuteCommandAsync();
await _db.Deleteable<ObTaskOperationLog>().Where(x => x.TaskId == task.Id).ExecuteCommandAsync();
await _db.Deleteable<ObTaskAudit>().Where(x => x.TaskId == task.Id).ExecuteCommandAsync();
await _db.Deleteable<ObOnboardingTask>().In(task.Id).ExecuteCommandAsync();
await _db.Ado.CommitTranAsync();
@@ -103,19 +149,7 @@ public class OnboardingTaskLifecycleService : IOnboardingTaskLifecycleService
?? throw Oops.Bah("入职任务不存在");
var config = await _config.GetByConfigKey(CateGoryConst.CONFIG_BIZ_DEFINE, "onboard.reviewer.userIds")
?? throw Oops.Bah("请配置入职审核人");
using var configJson = global::System.Text.Json.JsonDocument.Parse(config.ConfigValue);
var reviewerIds = new List<long>();
if (configJson.RootElement.TryGetProperty("all", out var allReviewers))
{
reviewerIds.AddRange(allReviewers.EnumerateArray().Select(item => item.GetInt64()));
}
if (configJson.RootElement.TryGetProperty("company", out var companyReviewers)
&& companyReviewers.TryGetProperty(task.CompanyId.ToString(), out var reviewers))
{
reviewerIds.AddRange(reviewers.EnumerateArray().Select(item => item.GetInt64()));
}
var reviewerIds = OnboardingReviewerConfigParser.Parse(config.ConfigValue, task.CompanyId);
if (!reviewerIds.Contains(UserManager.UserId))
{