72 lines
2.6 KiB
C#
72 lines
2.6 KiB
C#
namespace SimpleAdmin.Application;
|
|
|
|
/// <summary>
|
|
/// 实现候选人上传材料审核业务能力。
|
|
/// </summary>
|
|
public class OnboardingMaterialReviewService : IOnboardingMaterialReviewService
|
|
{
|
|
private readonly SqlSugarScope _db;
|
|
private readonly IConfigService _config;
|
|
private readonly IOnboardingDataPermissionService _dataPermission;
|
|
|
|
public OnboardingMaterialReviewService(
|
|
IConfigService config,
|
|
IOnboardingDataPermissionService dataPermission)
|
|
{
|
|
_db = DbContext.DB;
|
|
_config = config;
|
|
_dataPermission = dataPermission;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 审核单份候选人上传材料并记录审核意见。
|
|
/// </summary>
|
|
public async Task Review(OnboardingMaterialReviewInput input)
|
|
{
|
|
if (input.ReviewStatus != TaskMaterialReviewStatus.Passed
|
|
&& input.ReviewStatus != TaskMaterialReviewStatus.NeedSupplement)
|
|
{
|
|
throw Oops.Bah("资料审核状态不正确");
|
|
}
|
|
|
|
if (input.ReviewStatus == TaskMaterialReviewStatus.NeedSupplement
|
|
&& string.IsNullOrWhiteSpace(input.ReviewRemark))
|
|
{
|
|
throw Oops.Bah("请填写需补充原因");
|
|
}
|
|
|
|
var material = await _db.Queryable<ObTaskMaterial>().InSingleAsync(input.TaskMaterialId)
|
|
?? throw Oops.Bah("任务资料不存在");
|
|
var task = await _db.Queryable<ObOnboardingTask>().InSingleAsync(material.TaskId)
|
|
?? throw Oops.Bah("入职任务不存在");
|
|
if (task.TaskStatus != OnboardingTaskStatus.Reviewing)
|
|
{
|
|
throw Oops.Bah("当前任务不在审核中");
|
|
}
|
|
|
|
await EnsureReviewer(task);
|
|
material.ReviewStatus = input.ReviewStatus;
|
|
material.ReviewRemark = input.ReviewRemark;
|
|
await _db.Updateable(material).ExecuteCommandAsync();
|
|
}
|
|
|
|
private async Task EnsureReviewer(ObOnboardingTask task)
|
|
{
|
|
await _dataPermission.EnsureCanManage(
|
|
task.CreateUserId,
|
|
OnboardingPermissionCodes.TaskManageAll,
|
|
"入职任务");
|
|
if (await _dataPermission.CanManage(null, OnboardingPermissionCodes.TaskManageAll))
|
|
return;
|
|
|
|
var config = await _config.GetByConfigKey(CateGoryConst.CONFIG_BIZ_DEFINE, "onboard.reviewer.userIds")
|
|
?? throw Oops.Bah("请配置入职审核人");
|
|
var reviewerIds = OnboardingReviewerConfigParser.Parse(config.ConfigValue, task.CompanyId);
|
|
|
|
if (!reviewerIds.Contains(UserManager.UserId))
|
|
{
|
|
throw Oops.Bah("您不是该入职任务的审核人");
|
|
}
|
|
}
|
|
}
|