1
This commit is contained in:
+10
@@ -0,0 +1,10 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
public class OnboardingMaterialReviewInput
|
||||
{
|
||||
[IdNotNull(ErrorMessage = "任务资料Id不能为空")]
|
||||
public long TaskMaterialId { get; set; }
|
||||
|
||||
public string ReviewStatus { get; set; }
|
||||
public string ReviewRemark { get; set; }
|
||||
}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
public interface IOnboardingMaterialReviewService : ITransient { Task Review(OnboardingMaterialReviewInput input); }
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
public class OnboardingMaterialReviewService : IOnboardingMaterialReviewService
|
||||
{
|
||||
private readonly ISqlSugarClient _db;
|
||||
private readonly IConfigService _config;
|
||||
|
||||
public OnboardingMaterialReviewService(ISqlSugarClient db, IConfigService config)
|
||||
{
|
||||
_db = db;
|
||||
_config = config;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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()));
|
||||
}
|
||||
|
||||
if (!reviewerIds.Contains(UserManager.UserId))
|
||||
{
|
||||
throw Oops.Bah("您不是该入职任务的审核人");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user