ProductController.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. using Infrastructure.Extensions;
  2. using Infrastructure.Model;
  3. using Microsoft.AspNetCore.Mvc;
  4. using ZR.Common;
  5. using ZR.Mall.Model;
  6. using ZR.Mall.Model.Dto;
  7. using ZR.Mall.Service.IService;
  8. //创建时间:2025-05-23
  9. namespace ZR.Mall.Controllers
  10. {
  11. /// <summary>
  12. /// 商品管理
  13. /// </summary>
  14. [Route("shopping/product")]
  15. [ApiExplorerSettings(GroupName = "shopping")]
  16. public class ProductController : BaseController
  17. {
  18. /// <summary>
  19. /// 商品管理接口
  20. /// </summary>
  21. private readonly IProductService _ShoppingProductService;
  22. public ProductController(IProductService ShoppingProductService)
  23. {
  24. _ShoppingProductService = ShoppingProductService;
  25. }
  26. /// <summary>
  27. /// 查询商品管理列表
  28. /// </summary>
  29. /// <param name="parm"></param>
  30. /// <returns></returns>
  31. [HttpGet("list")]
  32. [ActionPermissionFilter(Permission = "shop:product:list")]
  33. public IActionResult QueryShoppingProduct([FromQuery] ShoppingProductQueryDto parm)
  34. {
  35. var response = _ShoppingProductService.GetList(parm);
  36. return SUCCESS(response);
  37. }
  38. /// <summary>
  39. /// 查询商品管理详情
  40. /// </summary>
  41. /// <param name="ProductId"></param>
  42. /// <returns></returns>
  43. [HttpGet("{ProductId}")]
  44. public IActionResult GetShoppingProduct(int ProductId)
  45. {
  46. var response = _ShoppingProductService.GetInfo(ProductId);
  47. var info = response.Adapt<ProductDto>();
  48. return SUCCESS(info);
  49. }
  50. /// <summary>
  51. /// 添加商品管理
  52. /// </summary>
  53. /// <returns></returns>
  54. [HttpPost]
  55. [ActionPermissionFilter(Permission = "shop:product:add")]
  56. [Log(Title = "商品添加", BusinessType = BusinessType.INSERT)]
  57. public IActionResult AddShoppingProduct([FromBody] ProductDto parm)
  58. {
  59. if (parm == null) { return ToResponse(ResultCode.PARAM_ERROR, "参数错误"); }
  60. var response = _ShoppingProductService.AddShoppingProduct(parm.ToCreate());
  61. return SUCCESS(response);
  62. }
  63. /// <summary>
  64. /// 更新商品管理
  65. /// </summary>
  66. /// <returns></returns>
  67. [HttpPut]
  68. [ActionPermissionFilter(Permission = "shop:product:edit")]
  69. [Log(Title = "商品编辑", BusinessType = BusinessType.UPDATE)]
  70. public IActionResult UpdateShoppingProduct([FromBody] ProductDto parm)
  71. {
  72. var response = _ShoppingProductService.UpdateShoppingProduct(parm.ToUpdate());
  73. return SUCCESS(response);
  74. }
  75. /// <summary>
  76. /// 更新商品管理
  77. /// </summary>
  78. /// <returns></returns>
  79. [HttpPut("edit")]
  80. [ActionPermissionFilter(Permission = "shop:product:edit")]
  81. [Log(Title = "商品编辑", BusinessType = BusinessType.UPDATE)]
  82. public IActionResult EditInfo([FromBody] ProductDto parm)
  83. {
  84. var response = _ShoppingProductService.UpdateInfo(parm.ToUpdate());
  85. return ToResponse(response);
  86. }
  87. /// <summary>
  88. /// 删除商品管理
  89. /// </summary>
  90. /// <returns></returns>
  91. [HttpPost("delete/{ids}")]
  92. [ActionPermissionFilter(Permission = "shop:product:delete")]
  93. [Log(Title = "商品删除", BusinessType = BusinessType.DELETE)]
  94. public IActionResult DeleteShoppingProduct([FromRoute] string ids)
  95. {
  96. var idArr = Tools.SpitLongArrary(ids);
  97. var result = _ShoppingProductService.Deleteable()
  98. .Where(f => f.IsDelete == 0)
  99. .In(idArr)
  100. .IsLogic()
  101. .ExecuteCommand();
  102. return SUCCESS(result);
  103. }
  104. /// <summary>
  105. /// 批量上架/下架
  106. /// </summary>
  107. /// <param name="ids"></param>
  108. /// <param name="type"></param>
  109. /// <returns></returns>
  110. [HttpPost("multi/{type}/{ids}")]
  111. [ActionPermissionFilter(Permission = "shop:product:edit")]
  112. [Log(Title = "商品上下架", BusinessType = BusinessType.UPDATE)]
  113. public IActionResult MultiShoppingProduct([FromRoute] string ids, string type)
  114. {
  115. var userName = HttpContext.GetName();
  116. var idArr = Tools.SpitLongArrary(ids);
  117. var result = _ShoppingProductService.Update(f => idArr.Contains(f.ProductId), f => new Product()
  118. {
  119. SaleStatus = type == "up" ? Enum.SaleStatus.OnSale : Enum.SaleStatus.TakeOff,
  120. Update_time = DateTime.Now,
  121. Update_by = userName
  122. });
  123. return SUCCESS(result);
  124. }
  125. /// <summary>
  126. /// 保存排序
  127. /// </summary>
  128. /// <param name="id">主键</param>
  129. /// <param name="value">排序值</param>
  130. /// <returns></returns>
  131. [ActionPermissionFilter(Permission = "shop:product:edit")]
  132. [HttpGet("ChangeSort")]
  133. [Log(Title = "保存排序", BusinessType = BusinessType.UPDATE)]
  134. public IActionResult ChangeSort(int id = 0, int value = 0)
  135. {
  136. if (id <= 0) { return ToResponse(ApiResult.Error(101, "请求参数错误")); }
  137. var response = _ShoppingProductService.Update(w => w.ProductId == id, it => new Product()
  138. {
  139. SortId = value,
  140. });
  141. return ToResponse(response);
  142. }
  143. /// <summary>
  144. /// 导出商品管理
  145. /// </summary>
  146. /// <returns></returns>
  147. [Log(Title = "商品管理", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)]
  148. [HttpGet("export")]
  149. [ActionPermissionFilter(Permission = "shop:product:export")]
  150. public IActionResult Export([FromQuery] ShoppingProductQueryDto parm)
  151. {
  152. parm.PageNum = 1;
  153. parm.PageSize = 100000;
  154. var list = _ShoppingProductService.ExportList(parm).Result;
  155. if (list == null || list.Count <= 0)
  156. {
  157. return ToResponse(ResultCode.FAIL, "没有要导出的数据");
  158. }
  159. var result = ExportExcelMini(list, "商品管理", "商品管理");
  160. return ExportExcel(result.Item2, result.Item1);
  161. }
  162. }
  163. }