From 37a5a651eb4a490ce76b817214111519a40115ec Mon Sep 17 00:00:00 2001 From: lwh <2679599887@qq.com> Date: Wed, 28 Jun 2023 14:47:07 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E6=B7=BB=E5=8A=A0=E5=95=86=E5=93=81?= =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E6=9E=B6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Business/GoodsManager/Goodss/GoodsDto.cs | 12 +++++ .../GoodsManager/Goodss/GoodsService.cs | 48 +++++++++++++++--- .../GoodsManager/Goodss/IGoodsService.cs | 6 +++ .../GoodsManager/Goodss/GoodsController.cs | 20 ++++++++ .../wwwroot/excel/商品导入模板模板 (4).xlsx | Bin 0 -> 12955 bytes 5 files changed, 78 insertions(+), 8 deletions(-) create mode 100644 ARW.WebApi/wwwroot/excel/商品导入模板模板 (4).xlsx diff --git a/ARW.Model/Dto/Business/GoodsManager/Goodss/GoodsDto.cs b/ARW.Model/Dto/Business/GoodsManager/Goodss/GoodsDto.cs index 4eb867d..5ddea76 100644 --- a/ARW.Model/Dto/Business/GoodsManager/Goodss/GoodsDto.cs +++ b/ARW.Model/Dto/Business/GoodsManager/Goodss/GoodsDto.cs @@ -114,6 +114,18 @@ namespace ARW.Model.Dto.Business.GoodsManager.Goodss + } + + /// + /// + /// @author lwh + /// @date 2023-06-28 + /// 上下架对象 + /// + public class GoodsShelfDto + { + public int GoodsShelfStatus { get; set; } + public string ids { get; set; } } diff --git a/ARW.Service/Business/BusinessService/GoodsManager/Goodss/GoodsService.cs b/ARW.Service/Business/BusinessService/GoodsManager/Goodss/GoodsService.cs index b73f856..2fed5b7 100644 --- a/ARW.Service/Business/BusinessService/GoodsManager/Goodss/GoodsService.cs +++ b/ARW.Service/Business/BusinessService/GoodsManager/Goodss/GoodsService.cs @@ -33,6 +33,7 @@ using ARW.Repository.Business.ShopManager.Shops; using ARW.Repository.Business.LogisticsManage.Deliverys; using ARW.Repository.Business.GoodsManager.GoodsServicess; using Senparc.CO2NET.Extensions; +using ARW.Repository.Business.Custom.Customers; namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss { @@ -228,6 +229,37 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss } + /// + /// 上下架商品 + /// + public async Task ShelfGoods(int id, int status) + { + try + { + var res = await _GoodsRepository.GetFirstAsync(s => s.GoodsId == id); + var shelfStatus = res.GoodsShelfStatus; + + if (shelfStatus == status) + { + var errorRes = $"商品:【{res.GoodsName}】已{(status == 1 ? "上" : "下")}架,请勿重复{(status == 1 ? "上" : "下")}架
"; + return errorRes; + } + + await UseTranAsync(async () => + { + await _GoodsRepository.UpdateAsync(f => new Goods { GoodsShelfStatus = status, Update_time = DateTime.Now }, s => s.GoodsId == id); + }); + + var addStr = $"商品:【{res.GoodsName}】{(status == 1 ? "上" : "下")}架成功!
"; + return addStr; + } + catch (Exception) + { + throw; + } + } + + #region Excel处理 /// @@ -242,8 +274,6 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss if (string.IsNullOrEmpty(Goods.GoodsPicture)) throw new CustomException("商品图片不能为空"); if (Goods.GoodsPriceLowest == 0) throw new CustomException("商品价格不能为空"); if (Goods.GoodsTotalInventory == 0) throw new CustomException("库存总量不能为空"); - if (string.IsNullOrEmpty(Goods.GoodsPicture)) throw new CustomException("商品图片不能为空"); - if (string.IsNullOrEmpty(Goods.GoodsPicture)) throw new CustomException("商品图片不能为空"); // 店铺 @@ -279,7 +309,7 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss // 配送模板 - var delivery = await _DeliveryRepository.GetFirstAsync(s => s.DeliveryName == "全国配送" && s.ShopGuid == Goods.ShopGuid); + var delivery = await _DeliveryRepository.GetFirstAsync(s => s.DeliveryName == "全国包邮" && s.ShopGuid == Goods.ShopGuid); Goods.DeliveryGuid = delivery.DeliveryGuid; @@ -299,14 +329,18 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss Goods.GoodsShelfStatus = 1; } + // 排序 + if (Goods.GoodsSort == 0) + { + Goods.GoodsSort = 100; + } + Goods.GoodsSpecType = 1; Goods.GoodsDeductStockType = 1; Goods.GoodsIsPointsGift = 0; Goods.GoodsIsPointsDiscount = 0; Goods.GoodsIsAlonePointsDiscount = 0; Goods.GoodsIsEnableGrade = 1; - Goods.GoodsSpecType = 0; - Goods.GoodsSort = 10; return Goods; } @@ -334,7 +368,7 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss GoodsVideoCover = goodsVo.GoodsVideoCover, GoodsPicture = goodsVo.GoodsPicture, GoodsSellingPoint = goodsVo.GoodsSellingPoint, - GoodsSpecType = goodsVo.GoodsSpecType, + GoodsSpecType = 1, GoodsPriceLowest = goodsVo.GoodsPriceLowest, GoodsPriceHighest = goodsVo.GoodsPriceHighest, GoodsDashedPriceLowest = goodsVo.GoodsDashedPriceLowest, @@ -763,8 +797,6 @@ namespace ARW.Service.Business.BusinessService.GoodsManager.Goodss - - #endregion } diff --git a/ARW.Service/Business/IBusinessService/GoodsManager/Goodss/IGoodsService.cs b/ARW.Service/Business/IBusinessService/GoodsManager/Goodss/IGoodsService.cs index 50ad7a5..8e89668 100644 --- a/ARW.Service/Business/IBusinessService/GoodsManager/Goodss/IGoodsService.cs +++ b/ARW.Service/Business/IBusinessService/GoodsManager/Goodss/IGoodsService.cs @@ -56,5 +56,11 @@ namespace ARW.Service.Business.IBusinessService.GoodsManager.Goodss Task> HandleExportData(List data); + /// + /// 上下架商品 + /// + Task ShelfGoods(int id, int status); + + } } diff --git a/ARW.WebApi/Controllers/Business/GoodsManager/Goodss/GoodsController.cs b/ARW.WebApi/Controllers/Business/GoodsManager/Goodss/GoodsController.cs index c6c433c..a5c48a3 100644 --- a/ARW.WebApi/Controllers/Business/GoodsManager/Goodss/GoodsController.cs +++ b/ARW.WebApi/Controllers/Business/GoodsManager/Goodss/GoodsController.cs @@ -23,6 +23,7 @@ using ARW.Service.Business.IBusinessService.GoodsManager.GoodsSpecs.GoodsSpecRel using ARW.Service.Business.IBusinessService.GoodsManager.GoodsSpecs.Specs; using ARW.Service.Business.IBusinessService.GoodsManager.GoodsSpecs.SpecValues; using ARW.Service.Business.IBusinessService.ShopManager.Shops; +using ARW.Model.Dto.Business.ShopManager.Shops; namespace ARW.WebApi.Controllers.Business.GoodsManager.Goodss { @@ -269,6 +270,25 @@ namespace ARW.WebApi.Controllers.Business.GoodsManager.Goodss } + /// + /// 上下架商品 + /// + /// + [HttpPut("shelfGoods")] + public async Task ShelfGoods([FromBody] GoodsShelfDto param) + { + int[] idsArr = Tools.SpitIntArrary(param.ids); + if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"操作失败 Id 不能为空")); } + + var msgList = new List(); + foreach (var item in idsArr) + { + var msg = await _GoodsService.ShelfGoods(item, param.GoodsShelfStatus); + msgList.Add(msg); + } + + return SUCCESS(msgList.ToArray()); + } } diff --git a/ARW.WebApi/wwwroot/excel/商品导入模板模板 (4).xlsx b/ARW.WebApi/wwwroot/excel/商品导入模板模板 (4).xlsx new file mode 100644 index 0000000000000000000000000000000000000000..edea3be6868cf4f33cd55805ec4737412fe555d4 GIT binary patch literal 12955 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 S2LQl+d{91Q)`9MiU;hur{|ub~ literal 0 HcmV?d00001