public static void ProductNotAuto_SetVirtualUpdate(ProductNotAutoSetVirtualEntity entity) { DataCommand command = DataCommandManager.GetDataCommand("UpdateProductNotAuto_SetVirtualKey"); command.SetParameterValue("@ProductSysNo", entity.ProductSysNo); command.SetParameterValue("@AbandonTime", entity.AbandonTime); command.SetParameterValue("@AbandonUserSysNo", entity.AbandonUserSysNo); command.SetParameterValue("@Note", entity.Note); command.SetParameterValue("@Status", entity.Status); command.SetParameterValue("@SysNo", entity.SysNo); command.ExecuteNonQuery(); }
private static void ProductNotAutoSetVirtualUpdate(ProductNotAutoSetVirtualEntity entity , SecKillEntity oCountdown) { int ProductSysNo = entity.ProductSysNo; //作废禁设虚库记录 SecKillDA.ProductNotAuto_SetVirtualUpdate(entity); if (!IsExistsNotAutoSetVirtual(ProductSysNo)) { //更新总仓,分仓虚库数量 //自动设虚库 20091214和shadow确认:先进行自动设虚库,在更改inventory的虚拟库存 //SecKillDA.AotuSetStockVirtualQty(ProductSysNo); //把51+配置里的分仓的虚拟库存之和更新到inventory表的虚拟库存上 //SecKillDA.Update_Inventory_VirtualQty(ProductSysNo); } }
public static void SetVirtualQty_CountDownFinish(SecKillEntity countDown, int SysNo) { if (SysNo != -999 && SysNo > 0) { ProductNotAutoSetVirtualEntity entity = new ProductNotAutoSetVirtualEntity(); entity.SysNo = SysNo; entity.ProductSysNo = countDown.ProductSysNo; entity.Note = "CountDown Interupted/Finished"; entity.Status = -1; entity.AbandonTime = DateTime.Now; entity.AbandonUserSysNo = 493; entity.CountDownSysNo = countDown.SysNo; SecKillDA.ProductNotAuto_SetVirtualUpdate(entity); //BatchUpdateStockVirtual_AfterRun(countDown); //ProductNotAutoSetVirtualUpdate(entity, countDown); } }
public static ProductNotAutoSetVirtualEntity InsertProduct_NotAutoSetVirtual(ProductNotAutoSetVirtualEntity entity) { DataCommand command = DataCommandManager.GetDataCommand("InsertProduct_NotAutoSetVirtual"); command.SetParameterValue("@ProductSysNo", entity.ProductSysNo); command.SetParameterValue("@NotAutoSetVirtualType", entity.NotAutoSetVirtualType); command.SetParameterValue("@CreateUserSysNo", entity.CreateUserSysNo); command.SetParameterValue("@CreateTime", entity.CreateTime); command.SetParameterValue("@CountDownSysNo", entity.CountDownSysNo); command.SetParameterValue("@AbandonUserSysNo", entity.AbandonUserSysNo); command.SetParameterValue("@AbandonTime", entity.AbandonTime); command.SetParameterValue("@Note", entity.Note); command.SetParameterValue("@Status", entity.Status); command.ExecuteEntity<ProductNotAutoSetVirtualEntity>(); entity.SysNo = Convert.ToInt32(command.GetParameterValue("@SysNo")); return entity; }
public static void SetVirtualQty_WhenCountDownAbandon(SecKillEntity countDown, int SysNo) { if (SysNo != -999 && SysNo > 0) { ProductNotAutoSetVirtualEntity entity = new ProductNotAutoSetVirtualEntity(); entity.SysNo = SysNo; entity.ProductSysNo = countDown.ProductSysNo; entity.Note = "CountDown Abandon"; entity.Status = -1; entity.AbandonTime = DateTime.Now; entity.AbandonUserSysNo = 493; entity.CountDownSysNo = countDown.SysNo; //作废禁设虚库记录 SecKillDA.ProductNotAuto_SetVirtualUpdate(entity); //更新总仓,分仓虚库数量 //SecKillDA.UpdateInventoryVirtualQty(countDown.ProductSysNo); //SecKillDA.AotuSetStockVirtualQty(countDown.ProductSysNo); } }
private static void ProductNotAutoSetVirtualInsert(ProductNotAutoSetVirtualEntity entity) { if (!IsExistsNotAutoSetVirtual(entity.ProductSysNo)) { //更新总仓,分仓虚库数量 //SecKillDA.UpdateInventoryVirtualQty(entity.ProductSysNo); //插入记录 SecKillDA.InsertProduct_NotAutoSetVirtual(entity); } else { if (!IsExistsNotAutoSetVirtual(entity.ProductSysNo, entity.NotAutoSetVirtualType)) { //插入记录 SecKillDA.InsertProduct_NotAutoSetVirtual(entity); } else { throw new BusinessException("已存在同类型的有效的记录!商品编号:" + entity.ProductSysNo); } } }
private static bool SetRunning(int countdownSysNo) { //必须是Ready状态,切换价格和库存 SecKillEntity countdownItem = SecKillDA.GetCountDownItemBySysno(countdownSysNo); if (countdownItem.Status != (int)CountdownStatus.Ready) { throw new BusinessException("不是就绪状态"); } TransactionOptions transactionOptions = new TransactionOptions(); transactionOptions.IsolationLevel = IsolationLevel.ReadCommitted; using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required, transactionOptions)) { //最前端修改,不会影响其他逻辑 if (countdownItem.IsReservedQty == 1) { //这里改,更新库存. UpdateReservedQTY(countdownItem); } countdownItem.Status = (int)CountdownStatus.Running; #region 设置限时抢购为原始价格并记录抢购价格//获取商品价格 ItemEntity itemPrice = SecKillDA.LoadItemPrice(countdownItem.ProductSysNo); countdownItem.SnapShotCurrentPrice = itemPrice.CurrentPrice; countdownItem.SnapShotCashRebate = itemPrice.CashRebate; countdownItem.SnapShotPoint = itemPrice.Point; itemPrice.CurrentPrice = countdownItem.CountDownCurrentPrice; itemPrice.CashRebate = countdownItem.CountDownCashRebate; itemPrice.Point = countdownItem.CountDownPoint; #endregion InventoryEntity inventory = SecKillDA.GetInventoryByProductSysNo(countdownItem.ProductSysNo); countdownItem.AffectedVirtualQty = inventory.VirtualQty; //获取当前的分仓的虚库数量 List <InventoryStockEntity> Invstocklist = SecKillDA.GetInventoryStock(countdownItem.ProductSysNo); StringBuilder stockonlineqty = new StringBuilder(); foreach (InventoryStockEntity itemStock in Invstocklist) { stockonlineqty.Append(string.Format("{0}:{1};", itemStock.StockSysNo , itemStock.AvailableQty + itemStock.ConsignQty + itemStock.VirtualQty)); } //判断是否满足各分仓的OnlineQty>=各分仓的限时抢购数量 //--逻辑已经修改,不满足分仓数量也可以限时抢购 string curVirtualQty = string.Empty; IsCanRunningCountDown(Invstocklist, countdownItem, out curVirtualQty); countdownItem.SnapShotCurrentVirtualQty = curVirtualQty; #region 设置记录为不自动设置虚拟库存 ProductNotAutoSetVirtualEntity oEntity = new ProductNotAutoSetVirtualEntity(); oEntity.CountDownSysNo = countdownSysNo; oEntity.CreateTime = DateTime.Now; oEntity.CreateUserSysNo = 493; oEntity.NotAutoSetVirtualType = (int)NotAutoSetVirtualType.CountDown; oEntity.Note = "CountDown Run"; oEntity.ProductSysNo = countdownItem.ProductSysNo; oEntity.Status = 0; ProductNotAutoSetVirtualInsert(oEntity); #endregion #region 通过虚库控制库存 注释此间代码 if (1 == 2) { #region 获取当前商品总库信息 string curStockQty = string.Empty; if (!BatchUpdateStockVirtual_Run(countdownItem, stockonlineqty.ToString())) { return(false); } List <InventoryStockEntity> inventoryStocklist = SecKillDA.GetInventoryStock(countdownItem.ProductSysNo); //处理库存差额, 库存差额是为计算可用库存做准备的。最小为0,为0代表实际库存就是可卖库存。 int AffectedVirtualQty = 0; foreach (InventoryStockEntity stock in inventoryStocklist) { AffectedVirtualQty += stock.VirtualQty; curStockQty += stock.StockSysNo + ":" + (stock.AvailableQty + stock.ConsignQty + stock.VirtualQty).ToString() + ";"; } if (!(countdownItem.IsLimitedQty == 1 && countdownItem.IsReservedQty == 1)) { countdownItem.AffectedStock = curStockQty; } #endregion ////更改总仓虚库 //if (!SetVirtualQty(countdownItem.ProductSysNo, AffectedVirtualQty)) //{ // return false; //} InventoryEntity inventory2 = SecKillDA.GetInventoryByProductSysNo(countdownItem.ProductSysNo); if (countdownItem.IsLimitedQty == 0 && countdownItem.IsReservedQty == 0) { countdownItem.CountDownQty = inventory2.AvailableQty + inventory2.ConsignQty;// +inventory2.VirtualQty; } else if (countdownItem.IsLimitedQty == 0 && inventory2.AvailableQty + inventory2.ConsignQty + inventory2.VirtualQty != countdownItem.CountDownQty) { countdownItem.CountDownQty = inventory2.AvailableQty + inventory2.ConsignQty;// +inventory2.VirtualQty; } } #endregion SecKillDA.CountDownStartWithholdQty(countdownItem.SysNo); SecKillDA.UpdateCountdown(countdownItem); SecKillDA.UpdateItemPrice(itemPrice); if (countdownItem.IsPromotionSchedule == 1) { SecKillDA.UpdateMaxPerOrder(countdownItem.ProductSysNo, countdownItem.MaxPerOrder); } if (!string.IsNullOrEmpty(countdownItem.PromotionType) && countdownItem.PromotionType.ToUpper() == "DC") { SecKillDA.UpdateProduct_Ex(countdownItem.ProductSysNo, "DC"); } ts.Complete(); } return(true); }