using System.ComponentModel;
namespace SimpleAdmin.Web.Core;
///
/// 提供合同模板、DOCX 版本和自动识别变量配置接口。
///
[ApiDescriptionSettings("Application", Tag = "入职合同模板")]
[Route("biz/onboarding/contract-template")]
[Route("biz/onboarding/contract")]
[RolePermission]
public class OnboardingContractTemplateController
{
private readonly IOnboardingContractTemplateService _service;
private readonly IFileService _fileService;
public OnboardingContractTemplateController(
IOnboardingContractTemplateService service,
IFileService fileService)
{
_service = service;
_fileService = fileService;
}
///
/// 将入职合同 DOCX 模板上传到阿里云 OSS。
///
[HttpPost("file/upload-docx")]
[Consumes("multipart/form-data")]
[RequestSizeLimit(20 * 1024 * 1024)]
[DisplayName("上传合同DOCX模板")]
public async Task UploadDocx([FromForm] IFormFile file)
{
if (file == null || file.Length == 0)
throw Oops.Bah("请选择需要上传的 DOCX 文件");
var suffix = Path.GetExtension(file.FileName);
if (!string.Equals(suffix, ".docx", StringComparison.OrdinalIgnoreCase))
throw Oops.Bah("合同模板仅支持 DOCX 文件");
return await _fileService.UploadFile(SysDictConst.FILE_ENGINE_ALIYUN_OSS, file);
}
///
/// 分页查询合同模板。
///
[HttpGet("page")]
[DisplayName("分页查询合同模板")]
public async Task Page([FromQuery] OnboardingContractTemplatePageInput input)
{
return await _service.Page(input);
}
///
/// 查询合同模板详情。
///
[HttpGet("detail")]
[DisplayName("查询合同模板详情")]
public async Task Detail([FromQuery] BaseIdInput input)
{
return await _service.Detail(input);
}
///
/// 查询入职模板当前公司、部门及岗位可选择的合同模板。
///
[HttpPost("list-available")]
public async Task ListAvailable([FromBody] OnboardingContractTemplateAvailableInput input)
{
return await _service.ListAvailable(input);
}
///
/// 新增合同模板。
///
[HttpPost("add")]
[DisplayName("新增合同业务模板")]
public async Task Add([FromBody] OnboardingContractTemplateAddInput input)
{
await _service.Add(input);
}
///
/// 编辑合同模板。
///
[HttpPost("edit")]
[DisplayName("编辑合同业务模板")]
public async Task Edit([FromBody] OnboardingContractTemplateEditInput input)
{
await _service.Edit(input);
}
///
/// 删除合同模板。
///
[HttpPost("delete")]
[DisplayName("删除合同业务模板")]
public async Task Delete([FromBody] BaseIdListInput input)
{
await _service.Delete(input);
}
///
/// 分页查询合同模板版本。
///
[HttpGet("version/page")]
[DisplayName("分页查询合同版本")]
public async Task VersionPage([FromQuery] OnboardingContractVersionPageInput input)
{
return await _service.VersionPage(input);
}
///
/// 新增合同模板版本。
///
[HttpPost("version/add")]
public async Task AddVersion([FromBody] OnboardingContractVersionAddInput input)
{
await _service.AddVersion(input);
}
///
/// 设置合同模板版本状态。
///
[HttpPost("version/set-status")]
public async Task SetVersionStatus([FromBody] OnboardingContractVersionStatusInput input)
{
await _service.SetVersionStatus(input);
}
///
/// 删除未被入职模板或任务使用的合同模板版本。
///
[HttpPost("version/delete")]
public async Task DeleteVersion([FromBody] BaseIdInput input)
{
await _service.DeleteVersion(input);
}
///
/// 分页查询模板变量。
///
[HttpGet("variable/page")]
[DisplayName("分页查询合同变量")]
public async Task VariablePage([FromQuery] OnboardingTemplateVariablePageInput input)
{
return await _service.VariablePage(input);
}
///
/// 编辑模板变量。
///
[HttpPost("variable/edit")]
public async Task EditVariable([FromBody] OnboardingTemplateVariableEditInput input)
{
await _service.EditVariable(input);
}
}