namespace SimpleAdmin.Web.Core; /// /// 提供员工端资料提交相关 HTTP 接口。 /// [ApiDescriptionSettings("Application", Tag = "员工入职提交")] [Route("open/onboarding")] [AllowAnonymous] public class OnboardingPublicSubmissionController { private readonly IOnboardingPublicSubmissionService _service; private readonly IFileService _fileService; public OnboardingPublicSubmissionController(IOnboardingPublicSubmissionService service, IFileService fileService) { _service = service; _fileService = fileService; } /// /// 保存员工动态字段。 /// [HttpPost("save-dynamic-values")] public async Task SaveDynamicValues([FromBody] OnboardingSaveDynamicValuesInput input) { await _service.SaveDynamicValues(input); } /// /// 保存员工已上传材料记录。 /// [HttpPost("save-material")] public async Task SaveMaterial([FromBody] OnboardingSaveMaterialInput input) { await _service.SaveMaterial(input); } /// /// 删除当前入职任务中的一条已上传材料。 /// [HttpPost("delete-material")] public async Task DeleteMaterial( [FromBody] OnboardingDeleteMaterialInput input) { await _service.DeleteMaterial(input); } /// /// 确认已阅读指定合同。 /// [HttpPost("confirm-contract")] public async Task ConfirmContract([FromBody] OnboardingConfirmContractInput input) { await _service.ConfirmContract(input); } /// /// 提交入职资料进入审核。 /// [HttpPost("submit")] public async Task Submit([FromBody] OnboardingSubmitInput input) { await _service.Submit(input); } /// /// 校验并上传员工入职材料。 /// [HttpPost("upload-material")] [Consumes("multipart/form-data")] [RequestSizeLimit(20 * 1024 * 1024)] public async Task UploadMaterial( [FromQuery] string token, [FromQuery] long materialTypeId, [FromQuery] long? taskMaterialId, [FromForm] IFormFile file) { if (file == null || file.Length == 0) { throw Oops.Bah("请选择需要上传的文件"); } await _service.ValidateMaterialUpload(new OnboardingMaterialUploadValidationInput { Token = token, MaterialTypeId = materialTypeId, FileName = file.FileName, FileLength = file.Length, TaskMaterialId = taskMaterialId }); var fileId = await _fileService.UploadFile(SysDictConst.FILE_ENGINE_ALIYUN_OSS, file); await _service.SaveMaterial(new OnboardingSaveMaterialInput { Token = token, MaterialTypeId = materialTypeId, FileId = fileId, TaskMaterialId = taskMaterialId }); } }