SysFileController.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. using Microsoft.AspNetCore.Mvc;
  2. using SqlSugar;
  3. using ZR.Model.System;
  4. using ZR.Model.System.Dto;
  5. namespace ZR.Admin.WebApi.Controllers
  6. {
  7. /// <summary>
  8. /// 文件存储Controller
  9. /// </summary>
  10. [Route("tool/file")]
  11. [ApiExplorerSettings(GroupName = "sys")]
  12. public class SysFileController : BaseController
  13. {
  14. /// <summary>
  15. /// 文件存储接口
  16. /// </summary>
  17. private readonly ISysFileService _SysFileService;
  18. public SysFileController(ISysFileService SysFileService)
  19. {
  20. _SysFileService = SysFileService;
  21. }
  22. /// <summary>
  23. /// 查询文件存储列表
  24. /// </summary>
  25. /// <param name="parm"></param>
  26. /// <returns></returns>
  27. [HttpGet("list")]
  28. [ActionPermissionFilter(Permission = "tool:file:list")]
  29. public IActionResult QuerySysFile([FromQuery] SysFileQueryDto parm)
  30. {
  31. var predicate = Expressionable.Create<SysFile>();
  32. predicate = predicate.AndIF(parm.BeginCreate_time != null, it => it.Create_time >= parm.BeginCreate_time);
  33. predicate = predicate.AndIF(parm.EndCreate_time != null, it => it.Create_time <= parm.EndCreate_time);
  34. predicate = predicate.AndIF(parm.StoreType != null, m => m.StoreType == parm.StoreType);
  35. predicate = predicate.AndIF(parm.FileId != null, m => m.Id == parm.FileId);
  36. predicate = predicate.AndIF(parm.ClassifyType != null, m => m.ClassifyType == parm.ClassifyType);
  37. var response = _SysFileService.GetPages(predicate.ToExpression(), parm, x => x.Id, OrderByType.Desc);
  38. return SUCCESS(response);
  39. }
  40. /// <summary>
  41. /// 查询文件存储列表
  42. /// </summary>
  43. /// <param name="parm"></param>
  44. /// <returns></returns>
  45. [HttpGet("listByGroup")]
  46. public IActionResult QueryFile([FromQuery] SysFileQueryDto parm)
  47. {
  48. var predicate = Expressionable.Create<SysFile>();
  49. predicate = predicate.AndIF(parm.StoreType != null, m => m.StoreType == parm.StoreType);
  50. predicate = predicate.AndIF(parm.FileId != null, m => m.Id == parm.FileId);
  51. predicate = predicate.AndIF(parm.ClassifyType != null, m => m.ClassifyType == parm.ClassifyType);
  52. predicate = predicate.AndIF(parm.CategoryId > 0, m => m.CategoryId == parm.CategoryId);
  53. predicate = predicate.And(m => m.FileType.StartsWith("image/", StringComparison.OrdinalIgnoreCase));
  54. var response = _SysFileService.GetPages(predicate.ToExpression(), parm, x => x.Id, OrderByType.Desc);
  55. return SUCCESS(response);
  56. }
  57. /// <summary>
  58. /// 查询文件存储详情
  59. /// </summary>
  60. /// <param name="Id"></param>
  61. /// <returns></returns>
  62. [HttpGet("{Id}")]
  63. [ActionPermissionFilter(Permission = "tool:file:query")]
  64. public IActionResult GetSysFile(long Id)
  65. {
  66. var response = _SysFileService.GetFirst(x => x.Id == Id);
  67. return SUCCESS(response);
  68. }
  69. /// <summary>
  70. /// 更新
  71. /// </summary>
  72. /// <returns></returns>
  73. [HttpPut]
  74. [ActionPermissionFilter(Permission = "tool:file:edit")]
  75. [Log(Title = "文件存储", BusinessType = BusinessType.UPDATE)]
  76. public IActionResult UpdateFile([FromBody] SysFileDto parm)
  77. {
  78. var modal = parm.Adapt<SysFile>().ToUpdate(HttpContext);
  79. modal.ClassifyType ??= "";
  80. var response = _SysFileService.UpdateFile(modal);
  81. return ToResponse(response);
  82. }
  83. /// <summary>
  84. /// 删除文件存储
  85. /// </summary>
  86. /// <returns></returns>
  87. [HttpDelete("{ids}")]
  88. [ActionPermissionFilter(Permission = "tool:file:delete")]
  89. [Log(Title = "文件存储", BusinessType = BusinessType.DELETE)]
  90. public IActionResult DeleteSysFile(string ids)
  91. {
  92. long[] idsArr = Tools.SpitLongArrary(ids);
  93. if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); }
  94. var response = _SysFileService.Delete(idsArr);
  95. //TODO 删除本地资源
  96. return ToResponse(response);
  97. }
  98. /// <summary>
  99. /// 文件存储导出
  100. /// </summary>
  101. /// <returns></returns>
  102. [Log(BusinessType = BusinessType.EXPORT, IsSaveResponseData = false, Title = "文件存储")]
  103. [HttpGet("export")]
  104. [ActionPermissionFilter(Permission = "tool:file:export")]
  105. public IActionResult Export()
  106. {
  107. var list = _SysFileService.GetAll();
  108. string sFileName = ExportExcel(list, "SysFile", "文件存储");
  109. return SUCCESS(new { path = "/export/" + sFileName, fileName = sFileName });
  110. }
  111. }
  112. }