From 8cb980063ebb8f487949e254859f4a9862f73734 Mon Sep 17 00:00:00 2001 From: jianweie code Date: Sun, 7 May 2023 23:33:46 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BF=AE=E5=A4=8D=E3=80=91=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=A4=9A=E5=95=86=E5=93=81=E5=90=88=E5=B9=B6=E4=B8=8B?= =?UTF-8?q?=E5=8D=95=EF=BC=8C=E5=85=B6=E4=B8=AD=E4=B8=80=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E4=B8=8D=E8=B6=B3=EF=BC=8C=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E6=95=B4=E4=B8=AA=E4=B8=8B=E5=8D=95=E5=A4=B1=E8=B4=A5=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E3=80=82=20=E3=80=90=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E3=80=91=E4=BF=AE=E5=A4=8D=E4=B8=8B=E5=8D=95=E6=9B=B4=E6=94=B9?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E5=A4=B1=E8=B4=A5=EF=BC=8C=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E4=BE=9D=E7=84=B6=E5=BE=85=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Good/CoreCmsGoodsRepository.cs | 2 +- .../Order/CoreCmsOrderServices.cs | 103 ++++++++++-------- 2 files changed, 60 insertions(+), 45 deletions(-) diff --git a/CoreCms.Net.Repository/Good/CoreCmsGoodsRepository.cs b/CoreCms.Net.Repository/Good/CoreCmsGoodsRepository.cs index bf875ceb..3584e813 100644 --- a/CoreCms.Net.Repository/Good/CoreCmsGoodsRepository.cs +++ b/CoreCms.Net.Repository/Good/CoreCmsGoodsRepository.cs @@ -835,7 +835,7 @@ namespace CoreCms.Net.Repository //更新记录。 bl = DbClient.Updateable() .SetColumns(it => it.freezeStock == it.freezeStock + num) - .Where(p => p.id == productModel.id && insertNum >= num).ExecuteCommandHasChange(); + .Where(p => p.id == productModel.id && insertNum >= num && p.freezeStock < p.stock).ExecuteCommandHasChange(); break; case "send": //发货 bl = DbClient.Updateable() diff --git a/CoreCms.Net.Services/Order/CoreCmsOrderServices.cs b/CoreCms.Net.Services/Order/CoreCmsOrderServices.cs index 0360ac87..03b936b4 100644 --- a/CoreCms.Net.Services/Order/CoreCmsOrderServices.cs +++ b/CoreCms.Net.Services/Order/CoreCmsOrderServices.cs @@ -283,42 +283,6 @@ namespace CoreCms.Net.Services order.createTime = DateTime.Now; order.scene = scene; - - //不同的订单类型会有不同的操作 - switch (orderType) - { - case (int)GlobalEnumVars.OrderType.Common: - //标准模式不需要修改订单数据和商品数据 - break; - case (int)GlobalEnumVars.OrderType.PinTuan: - //拼团模式去校验拼团是否存在,并添加拼团记录 - var pinTuanRes = await _pinTuanRecordServices.OrderAdd(order, orderItems, teamId); - if (pinTuanRes.status == false) - { - return pinTuanRes; - } - break; - case (int)GlobalEnumVars.OrderType.Group: - var groupRes = await _promotionRecordServices.OrderAdd(order, orderItems, objectId, orderType); - if (groupRes.status == false) - { - return groupRes; - } - break; - case (int)GlobalEnumVars.OrderType.Seckill: - var seckillRes = await _promotionRecordServices.OrderAdd(order, orderItems, objectId, orderType); - if (seckillRes.status == false) - { - return seckillRes; - } - break; - case (int)GlobalEnumVars.OrderType.Bargain: - //砍价模式 - - break; - } - - //开始事务处理 await _dal.InsertAsync(order); @@ -337,22 +301,38 @@ namespace CoreCms.Net.Services { jm.msg = "更改库存"; //更改库存 - foreach (var item in orderItems) + var avaliableOrderItems = orderItems.Where(item => { var res = _goodsServices.ChangeStock(item.productId, GlobalEnumVars.OrderChangeStockType.order.ToString(), item.nums); if (res.status == false) { - - jm.msg = "更新库存数据失败"; - return jm; + jm.msg += $"{item.name}库存不足"; } + return res.status; + }).ToList(); + + if (avaliableOrderItems.Count == 0) + { + await _orderItemServices.InsertCommandAsync(orderItems); + + await _dal.UpdateAsync(n => new CoreCmsOrder() + { + status = (int)GlobalEnumVars.OrderStatus.Cancel, + updateTime = DateTime.Now + }, + m => m.orderId == order.orderId); + + //清除购物车信息 + await _cartServices.DeleteAsync(p => ids.Contains(p.id) && p.userId == userId && p.type == orderType); + jm.msg = "下单失败,库存不足"; + return jm; } - jm.msg = "订单明细更新" + orderItems.Count; - var outItems = await _orderItemServices.InsertCommandAsync(orderItems); + + jm.msg = "订单明细更新" + avaliableOrderItems.Count; + var outItems = await _orderItemServices.InsertCommandAsync(avaliableOrderItems); var outItemsBool = outItems > 0; if (outItemsBool == false) { - jm.msg = "订单明细更新失败"; jm.data = outItems; return jm; @@ -378,6 +358,41 @@ namespace CoreCms.Net.Services return pointLogRes; } } + + //不同的订单类型会有不同的操作 + switch (orderType) + { + case (int)GlobalEnumVars.OrderType.Common: + //标准模式不需要修改订单数据和商品数据 + break; + case (int)GlobalEnumVars.OrderType.PinTuan: + //拼团模式去校验拼团是否存在,并添加拼团记录 + var pinTuanRes = await _pinTuanRecordServices.OrderAdd(order, avaliableOrderItems, teamId); + if (pinTuanRes.status == false) + { + return pinTuanRes; + } + break; + case (int)GlobalEnumVars.OrderType.Group: + var groupRes = await _promotionRecordServices.OrderAdd(order, avaliableOrderItems, objectId, orderType); + if (groupRes.status == false) + { + return groupRes; + } + break; + case (int)GlobalEnumVars.OrderType.Seckill: + var seckillRes = await _promotionRecordServices.OrderAdd(order, avaliableOrderItems, objectId, orderType); + if (seckillRes.status == false) + { + return seckillRes; + } + break; + case (int)GlobalEnumVars.OrderType.Bargain: + //砍价模式 + + break; + } + } //清除购物车信息 @@ -583,7 +598,7 @@ namespace CoreCms.Net.Services order.shipName = userShipInfo.name; order.shipMobile = userShipInfo.mobile; - var ship = await _shipServices.GetShip(userShipInfo.areaId); + var ship =await _shipServices.GetShip(userShipInfo.areaId); if (ship != null) { order.logisticsId = ship.id;