mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 18:53:25 +08:00
【修复】修复多商品合并下单,其中一商品库存不足,导致整个下单失败的问题。
【修复】修复下单更改库存失败,订单状态依然待支付的问题。
This commit is contained in:
@@ -835,7 +835,7 @@ namespace CoreCms.Net.Repository
|
|||||||
//更新记录。
|
//更新记录。
|
||||||
bl = DbClient.Updateable<CoreCmsProducts>()
|
bl = DbClient.Updateable<CoreCmsProducts>()
|
||||||
.SetColumns(it => it.freezeStock == it.freezeStock + num)
|
.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;
|
break;
|
||||||
case "send": //发货
|
case "send": //发货
|
||||||
bl = DbClient.Updateable<CoreCmsProducts>()
|
bl = DbClient.Updateable<CoreCmsProducts>()
|
||||||
|
|||||||
@@ -283,42 +283,6 @@ namespace CoreCms.Net.Services
|
|||||||
order.createTime = DateTime.Now;
|
order.createTime = DateTime.Now;
|
||||||
order.scene = scene;
|
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);
|
await _dal.InsertAsync(order);
|
||||||
|
|
||||||
@@ -337,22 +301,38 @@ namespace CoreCms.Net.Services
|
|||||||
{
|
{
|
||||||
jm.msg = "更改库存";
|
jm.msg = "更改库存";
|
||||||
//更改库存
|
//更改库存
|
||||||
foreach (var item in orderItems)
|
var avaliableOrderItems = orderItems.Where(item =>
|
||||||
{
|
{
|
||||||
var res = _goodsServices.ChangeStock(item.productId, GlobalEnumVars.OrderChangeStockType.order.ToString(), item.nums);
|
var res = _goodsServices.ChangeStock(item.productId, GlobalEnumVars.OrderChangeStockType.order.ToString(), item.nums);
|
||||||
if (res.status == false)
|
if (res.status == false)
|
||||||
{
|
{
|
||||||
|
jm.msg += $"{item.name}库存不足";
|
||||||
jm.msg = "更新库存数据失败";
|
|
||||||
return jm;
|
|
||||||
}
|
}
|
||||||
|
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;
|
var outItemsBool = outItems > 0;
|
||||||
if (outItemsBool == false)
|
if (outItemsBool == false)
|
||||||
{
|
{
|
||||||
|
|
||||||
jm.msg = "订单明细更新失败";
|
jm.msg = "订单明细更新失败";
|
||||||
jm.data = outItems;
|
jm.data = outItems;
|
||||||
return jm;
|
return jm;
|
||||||
@@ -378,6 +358,41 @@ namespace CoreCms.Net.Services
|
|||||||
return pointLogRes;
|
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.shipName = userShipInfo.name;
|
||||||
order.shipMobile = userShipInfo.mobile;
|
order.shipMobile = userShipInfo.mobile;
|
||||||
|
|
||||||
var ship = await _shipServices.GetShip(userShipInfo.areaId);
|
var ship =await _shipServices.GetShip(userShipInfo.areaId);
|
||||||
if (ship != null)
|
if (ship != null)
|
||||||
{
|
{
|
||||||
order.logisticsId = ship.id;
|
order.logisticsId = ship.id;
|
||||||
|
|||||||
Reference in New Issue
Block a user