public async Task <JsonResult> AltMenuOnSales(string id, int onsaleweek, decimal price) { MenuOnSale menuonsales = await db.MenuOnSales.FirstOrDefaultAsync(p => p.Id == id && (int)p.OnSaleWeek == onsaleweek); if (menuonsales == null) { return(Json(new { succeeded = false })); } else { menuonsales.Price = price; await db.SaveChangesAsync(); return(Json(new { succeeded = true })); } }
/// <summary> /// 处理每个菜品 /// </summary> private async Task <FunctionResult> handleDineMenu(List <MenuExtensionWithGift> menuExtensionWithGifts, Dine dine) { List <DineMenu> addedDineMenus = new List <DineMenu>(); foreach (MenuExtensionWithGift menuExtensionWithGift in menuExtensionWithGifts) { MenuExtension menuExtension = menuExtensionWithGift.MenuExtension; Menu menu = await ctx.Menus .Include(p => p.MenuPrice) .FirstOrDefaultAsync(p => p.Id == menuExtension.Id); // 菜品判断 if (menu == null) { return(new FunctionResult(false, "未找到菜品", $"No Menu {menuExtension.Id}")); } if (!menu.Usable) { return(new FunctionResult(false, $"{menu.Name} 不可用", $"Menu Disabled {menu.Id}: {menu.Name}")); } if (menu.Status == MenuStatus.SellOut) { return(new FunctionResult(false, $"{menu.Name} 已售完", $"Menu SellOut {menu.Id}: {menu.Name}")); } DineMenu dineMenu = new DineMenu { Count = menuExtension.Ordered, OriPrice = menu.MenuPrice.Price, Price = menuExtensionWithGift.IsGift ? 0 : menu.MenuPrice.Price, RemarkPrice = 0, Menu = menu, Remarks = new List <Remark>(), Type = menuExtensionWithGift.IsGift ? DineMenuType.Gift : DineMenuType.None }; if (!menuExtensionWithGift.IsGift) { // 是否排除在总单打折之外 bool excludePayDiscount = menu.MenuPrice.ExcludePayDiscount; // 是否打折 if (menu.MenuPrice.Discount < 1) { excludePayDiscount = true; dineMenu.Price = menu.MenuPrice.Price * (decimal)menu.MenuPrice.Discount; dineMenu.Type = DineMenuType.MenuDiscount; } // 是否为特价菜 DayOfWeek week = DateTime.Now.DayOfWeek; MenuOnSale menuOnSales = await ctx.MenuOnSales.FirstOrDefaultAsync(p => p.Id == menu.Id && p.OnSaleWeek == week); if (menuOnSales != null) { excludePayDiscount = true; dineMenu.Price = menuOnSales.Price; dineMenu.Type = DineMenuType.OnSale; } // 是否为套餐 var menuSetMeals = await ctx.MenuSetMeals.FirstOrDefaultAsync(p => p.MenuSetId == menu.Id && p.Menu.IsSetMeal); if (menuSetMeals != null) { excludePayDiscount = true; dineMenu.Type = DineMenuType.SetMeal; } if (!excludePayDiscount) { dineMenu.Price = menu.MenuPrice.Price * (decimal)dine.Discount; switch (dine.DiscountType) { case DiscountType.PayKind: dineMenu.Type = DineMenuType.PayKindDiscount; break; case DiscountType.Vip: dineMenu.Type = DineMenuType.VipDiscount; break; case DiscountType.Time: dineMenu.Type = DineMenuType.TimeDiscount; break; case DiscountType.Custom: dineMenu.Type = DineMenuType.CustomDiscount; break; } } } // 菜品备注处理 foreach (int remarkId in menuExtension.Remarks) { Remark remark = await ctx.Remarks.FirstOrDefaultAsync(p => p.Id == remarkId); if (remark == null) { return(new FunctionResult(false, "未找到备注信息", $"No Remark {remarkId}")); } if (!menuExtensionWithGift.IsGift) { dineMenu.RemarkPrice += remark.Price; } dineMenu.Remarks.Add(remark); } dine.Price += dineMenu.Price * dineMenu.Count + dineMenu.RemarkPrice; dine.OriPrice += dineMenu.OriPrice * dineMenu.Count + dineMenu.RemarkPrice; addedDineMenus.Add(dineMenu); dine.DineMenus.Add(dineMenu); } return(new FunctionResult(true, addedDineMenus)); }