using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using OfficeOpenXml; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net.Mime; using System.Threading.Tasks; using VolPro.Core.Enums; using VolPro.Core.Extensions; using VolPro.Core.Filters; using VolPro.Core.Generic; using VolPro.Core.Middleware; using VolPro.Core.Utilities; using VolPro.Entity.DomainModels; namespace VolPro.WebApi.Controllers.Generic { [Route("api/generic")] public class GenericController : GenericBaseController { private readonly IGenericDbProviderFactory _dbProviderFactory; public GenericController(IGenericDbProviderFactory dbProviderFactory) { _dbProviderFactory = dbProviderFactory; } [ActionLog("查询")] [HttpPost, Route("getPageData")] [ApiExplorerSettings(IgnoreApi = true), ActionPermission(ActionPermissionOptions.Search)] public virtual async Task GetPageData([FromBody] PageDataOptions loadData) { return await GetPageDataAsync(loadData); } [ActionLog("查询")] [HttpPost, Route("getPageDataAsync")] [ApiExplorerSettings(IgnoreApi = true), ActionPermission(ActionPermissionOptions.Search)] public virtual async Task GetPageDataAsync([FromBody] PageDataOptions loadData) { var response = await _dbProviderFactory.Provider.GetPageDataAsync(loadData); return JsonNormal(response); } /// /// 获取明细grid分页数据 /// /// /// [ActionLog("明细查询")] [HttpPost, Route("getDetailPage")] [ApiExplorerSettings(IgnoreApi = true), ActionPermission(ActionPermissionOptions.Search)] public virtual async Task GetDetailPage([FromBody] PageDataOptions loadData) { return await GetDetailPageAsync(loadData); } /// /// 获取明细grid分页数据 /// /// /// [ActionLog("明细查询")] [HttpPost, Route("getDetailPageAsync")] [ApiExplorerSettings(IgnoreApi = true), ActionPermission(ActionPermissionOptions.Search)] public virtual async Task GetDetailPageAsync([FromBody] PageDataOptions loadData) { var response = await _dbProviderFactory.Provider.GetDetailPageAsync(loadData); return JsonNormal(response); } /// /// 新增支持主子表 /// /// /// [ActionLog("新建")] [HttpPost, Route("add")] [ApiExplorerSettings(IgnoreApi = true), ActionPermission(ActionPermissionOptions.Add)] public virtual async Task Add([FromBody] SaveModel saveModel) { return await AddAsync(saveModel); } [ActionLog("新建")] [HttpPost, Route("addAsync")] [ApiExplorerSettings(IgnoreApi = true), ActionPermission(ActionPermissionOptions.Add)] public virtual async Task AddAsync([FromBody] SaveModel saveModel) { var response = await _dbProviderFactory.Provider.AddAsync(saveModel); return Json(response); } /// /// 新增支持主子表 /// /// /// [ActionLog("新建")] [HttpPost, Route("update")] [ApiExplorerSettings(IgnoreApi = true), ActionPermission(ActionPermissionOptions.Update)] public virtual async Task Update([FromBody] SaveModel saveModel) { return await UpdateAsync(saveModel); } [ActionLog("新建")] [HttpPost, Route("updateAsync")] [ApiExplorerSettings(IgnoreApi = true), ActionPermission(ActionPermissionOptions.Update)] public virtual async Task UpdateAsync([FromBody] SaveModel saveModel) { var response = await _dbProviderFactory.Provider.UpdateAsync(saveModel); return Json(response); } /// /// 删除 /// /// /// [ActionLog("删除")] [HttpPost, Route("del")] [ApiExplorerSettings(IgnoreApi = true), ActionPermission(ActionPermissionOptions.Delete)] public virtual async Task Del([FromBody] SaveModel saveModel) { return await DelAsync(saveModel); } [ActionLog("删除")] [HttpPost, Route("delAsync")] [ApiExplorerSettings(IgnoreApi = true), ActionPermission(ActionPermissionOptions.Delete)] public virtual async Task DelAsync([FromBody] SaveModel saveModel) { var response = await _dbProviderFactory.Provider.DelAsync(saveModel.DelKeys); return Json(response); } /// /// 上传文件 /// /// /// [ActionLog("上传文件")] [HttpPost, Route("upload")] [ApiActionPermission(ActionPermissionOptions.Upload | ActionPermissionOptions.Add | ActionPermissionOptions.Update)] [ApiExplorerSettings(IgnoreApi = true)] public virtual async Task Upload(IEnumerable fileInput) { return await UploadAsync(fileInput); } [HttpPost, Route("uploadAsync")] [ApiActionPermission(ActionPermissionOptions.Upload | ActionPermissionOptions.Add | ActionPermissionOptions.Update)] [ApiExplorerSettings(IgnoreApi = true)] public virtual async Task UploadAsync(IEnumerable fileInput) { var response = await _dbProviderFactory.Provider.UploadAsync(fileInput.ToList()); return Json(response); } /// /// 下载导入Excel模板 /// /// [ActionLog("下载导入Excel模板")] [HttpGet, Route("downLoadTemplate")] [ApiActionPermission(ActionPermissionOptions.Import)] [ApiExplorerSettings(IgnoreApi = true)] public virtual IActionResult DownLoadTemplate() { return DownLoadTemplateAsync(); } [ActionLog("下载导入Excel模板")] [HttpGet, Route("downLoadTemplateAsync")] [ApiActionPermission(ActionPermissionOptions.Import)] [ApiExplorerSettings(IgnoreApi = true)] public virtual IActionResult DownLoadTemplateAsync() { byte[] bytes = _dbProviderFactory.Provider.DownLoadTemplateAsync(); return File(bytes, MediaTypeNames.Application.Octet, "file.xlsx"); } /// /// 导入表数据Excel /// /// /// [ActionLog("导入Excel")] [HttpPost, Route("Import")] [ApiActionPermission(ActionPermissionOptions.Import)] [ApiExplorerSettings(IgnoreApi = true)] public virtual async Task Import(List fileInput) { return await ImportAsync(fileInput); } [ActionLog("导入Excel")] [HttpPost, Route("importAsync")] [ApiActionPermission(ActionPermissionOptions.Import)] [ApiExplorerSettings(IgnoreApi = true)] public virtual async Task ImportAsync(List fileInput) { var res = await _dbProviderFactory.Provider.ImportAsync(fileInput); return Json(res); } /// /// 导出文件,返回日期+文件名 /// /// /// [ActionLog("导出Excel")] [ApiActionPermission(ActionPermissionOptions.Export)] [ApiExplorerSettings(IgnoreApi = true)] [HttpPost, Route("Export")] public virtual async Task Export([FromBody] PageDataOptions loadData) { return await ExportAsync(loadData); } [ActionLog("导出Excel")] [ApiActionPermission(ActionPermissionOptions.Export)] [ApiExplorerSettings(IgnoreApi = true)] [HttpPost, Route("exportAsync")] public virtual async Task ExportAsync([FromBody] PageDataOptions loadData) { byte[] bytes = await _dbProviderFactory.Provider.ExportAsync(loadData); return File(bytes, MediaTypeNames.Application.Octet, "export.xlsx"); } [ApiActionPermission(ActionPermissionOptions.Audit)] [HttpPost, Route("Audit")] [ApiExplorerSettings(IgnoreApi = true)] public virtual async Task Audit([FromBody] object[] id, int? auditStatus, string auditReason) { return await AuditAsync(id, auditStatus, auditReason); } [ApiActionPermission(ActionPermissionOptions.Audit)] [HttpPost, Route("Audit")] [ApiExplorerSettings(IgnoreApi = true)] public virtual async Task AuditAsync([FromBody] object[] id, int? auditStatus, string auditReason) { var res = await _dbProviderFactory.Provider.AuditAsync(id, auditStatus, auditReason); return Json(res); } } }