This commit is contained in:
fuenmao
2026-08-26 15:30:31 +08:00
parent 9ae5e0bc54
commit db3d58bc99
16 changed files with 565 additions and 39 deletions
@@ -72,6 +72,7 @@ public class OnboardingPublicSubmissionController
public async Task UploadMaterial(
[FromQuery] string token,
[FromQuery] long materialTypeId,
[FromQuery] long? taskMaterialId,
[FromForm] IFormFile file)
{
if (file == null || file.Length == 0)
@@ -84,7 +85,8 @@ public class OnboardingPublicSubmissionController
Token = token,
MaterialTypeId = materialTypeId,
FileName = file.FileName,
FileLength = file.Length
FileLength = file.Length,
TaskMaterialId = taskMaterialId
});
var fileId = await _fileService.UploadFile(SysDictConst.FILE_ENGINE_ALIYUN_OSS, file);
@@ -92,7 +94,8 @@ public class OnboardingPublicSubmissionController
{
Token = token,
MaterialTypeId = materialTypeId,
FileId = fileId
FileId = fileId,
TaskMaterialId = taskMaterialId
});
}
}
@@ -44,4 +44,35 @@ public class OnboardingPublicTaskController
var fileId = await _service.GetContractSourceFileId(input);
return await _fileService.Download(new BaseIdInput { Id = fileId });
}
/// <summary>
/// 通过任务 Token 内联输出候选人已上传的图片材料,供手机端预览。
/// </summary>
[HttpGet("material-source")]
public async Task<FileStreamResult> MaterialSource(
[FromQuery] OnboardingPublicMaterialSourceInput input)
{
var material = await _service.GetMaterialSource(input);
var source = await _fileService.Download(new BaseIdInput { Id = material.FileId })
?? throw Oops.Bah("上传文件不存在");
return new FileStreamResult(
source.FileStream,
GetImageContentType(material.FileSuffix));
}
/// <summary>
/// 根据图片扩展名设置浏览器可内联展示的响应类型。
/// </summary>
private static string GetImageContentType(string suffix)
{
return suffix?.TrimStart('.').ToLowerInvariant() switch
{
"png" => "image/png",
"jpg" or "jpeg" => "image/jpeg",
"gif" => "image/gif",
"bmp" => "image/bmp",
"webp" => "image/webp",
_ => "application/octet-stream"
};
}
}
@@ -32,4 +32,13 @@ public class OnboardingTaskQueryController
{
return await _service.Detail(input);
}
/// <summary>
/// 获取或重新生成入职任务专属填写链接。
/// </summary>
[HttpGet("get-link")]
public async Task<dynamic> GetTaskLink([FromQuery] BaseIdInput input)
{
return await _service.GetTaskLink(input);
}
}