From 68167a50b8d2f969f699d215605eb55d56beb3fc Mon Sep 17 00:00:00 2001 From: "JOHNNY.X" <2546088435@qq.com> Date: Wed, 15 Jan 2025 14:20:01 +0800 Subject: [PATCH] fix restaurant menu --- ...Script0001_modify_restaurant_menu_item.sql | 5 +++ .../Domain/Restaurants/RestaurantMenuItem.cs | 6 ++++ .../RestaurantProcessJobService.cs | 33 ++++++++++++++----- .../Dto/EasyPos/EasyPosResponseDto.cs | 9 +++++ .../PhoneOrder/PhoneCallOrderItemModifiers.cs | 25 ++++++++++++++ 5 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 src/SmartTalk.Core/DbUpFile/Scripts_2025/Script0001_modify_restaurant_menu_item.sql create mode 100644 src/SmartTalk.Messages/Dto/PhoneOrder/PhoneCallOrderItemModifiers.cs diff --git a/src/SmartTalk.Core/DbUpFile/Scripts_2025/Script0001_modify_restaurant_menu_item.sql b/src/SmartTalk.Core/DbUpFile/Scripts_2025/Script0001_modify_restaurant_menu_item.sql new file mode 100644 index 00000000..65feddd6 --- /dev/null +++ b/src/SmartTalk.Core/DbUpFile/Scripts_2025/Script0001_modify_restaurant_menu_item.sql @@ -0,0 +1,5 @@ +alter table `restaurant_menu_item` + add column `product_id` bigint null; + +alter table `restaurant_menu_item` + add column `order_item_modifiers` text null; \ No newline at end of file diff --git a/src/SmartTalk.Core/Domain/Restaurants/RestaurantMenuItem.cs b/src/SmartTalk.Core/Domain/Restaurants/RestaurantMenuItem.cs index c26957e1..f6beb205 100644 --- a/src/SmartTalk.Core/Domain/Restaurants/RestaurantMenuItem.cs +++ b/src/SmartTalk.Core/Domain/Restaurants/RestaurantMenuItem.cs @@ -21,6 +21,12 @@ public class RestaurantMenuItem : IEntity [Column("name"), StringLength(256)] public string Name { get; set; } + [Column("product_id")] + public long ProductId { get; set; } + + [Column("order_item_modifiers")] + public string OrderItemModifiers { get; set; } + [Column("language")] public RestaurantItemLanguage Language { get; set; } diff --git a/src/SmartTalk.Core/Services/Restaurants/RestaurantProcessJobService.cs b/src/SmartTalk.Core/Services/Restaurants/RestaurantProcessJobService.cs index 25cf03dc..a1d1fad1 100644 --- a/src/SmartTalk.Core/Services/Restaurants/RestaurantProcessJobService.cs +++ b/src/SmartTalk.Core/Services/Restaurants/RestaurantProcessJobService.cs @@ -1,21 +1,23 @@ -using AutoMapper; using Serilog; +using AutoMapper; +using Newtonsoft.Json; +using SmartTalk.Core.Ioc; using SmartTalk.Core.Constants; -using SmartTalk.Core.Domain.Restaurants; using SmartTalk.Core.Extensions; -using SmartTalk.Core.Ioc; -using SmartTalk.Core.Services.Http.Clients; using SmartTalk.Core.Services.Jobs; -using SmartTalk.Core.Services.RetrievalDb.VectorDb; -using SmartTalk.Messages.Commands.Restaurant; using SmartTalk.Messages.Constants; using SmartTalk.Messages.Dto.EasyPos; -using SmartTalk.Messages.Dto.Embedding; -using SmartTalk.Messages.Dto.Restaurant; using SmartTalk.Messages.Dto.Smarties; using SmartTalk.Messages.Dto.VectorDb; +using SmartTalk.Messages.Dto.Embedding; +using SmartTalk.Core.Domain.Restaurants; +using SmartTalk.Messages.Dto.PhoneOrder; +using SmartTalk.Messages.Dto.Restaurant; using SmartTalk.Messages.Enums.PhoneOrder; using SmartTalk.Messages.Enums.Restaurants; +using SmartTalk.Core.Services.Http.Clients; +using SmartTalk.Messages.Commands.Restaurant; +using SmartTalk.Core.Services.RetrievalDb.VectorDb; namespace SmartTalk.Core.Services.Restaurants; @@ -112,12 +114,26 @@ private List GenerateMenuItems(EasyPosResponseProduct produc if (product.Price == 0 && product.ModifierGroups.Any()) { var modifierGroup = product.ModifierGroups.First(); + + var orderItemModifiers = new PhoneCallOrderItemModifiers + { + Quantity = 1, + ModifierId = modifierGroup.Id, + Localizations = modifierGroup.Localizations + }; + foreach (var modifierProduct in modifierGroup.ModifierProducts) { + orderItemModifiers.Price = modifierProduct.Price; + orderItemModifiers.ModifierProductId = modifierProduct.Id; + orderItemModifiers.ModifierLocalizations = modifierProduct.Localizations; + menuItems.Add(new RestaurantMenuItem { RestaurantId = restaurantId, Price = modifierProduct.Price, + ProductId = product.Id, + OrderItemModifiers = JsonConvert.SerializeObject(orderItemModifiers), Name = $"{GetMenuItemName(product.Localizations, language)} {GetMenuItemName(modifierProduct.Localizations, language)}", Language = languageEnum }); @@ -129,6 +145,7 @@ private List GenerateMenuItems(EasyPosResponseProduct produc { RestaurantId = restaurantId, Price = product.Price, + ProductId = product.Id, Name = GetMenuItemName(product.Localizations, language), Language = languageEnum }); diff --git a/src/SmartTalk.Messages/Dto/EasyPos/EasyPosResponseDto.cs b/src/SmartTalk.Messages/Dto/EasyPos/EasyPosResponseDto.cs index 1adae25e..dbf12255 100644 --- a/src/SmartTalk.Messages/Dto/EasyPos/EasyPosResponseDto.cs +++ b/src/SmartTalk.Messages/Dto/EasyPos/EasyPosResponseDto.cs @@ -55,12 +55,21 @@ public class EasyPosResponseLocalization public class EasyPosResponseModifierGroups { + [JsonProperty("id")] + public long Id { get; set; } + + [JsonProperty("localizations")] + public List Localizations { get; set; } + [JsonProperty("modifierProducts")] public List ModifierProducts { get; set; } } public class EasyPosResponseModifierProducts { + [JsonProperty("id")] + public long Id { get; set; } + [JsonProperty("price")] public decimal Price { get; set; } diff --git a/src/SmartTalk.Messages/Dto/PhoneOrder/PhoneCallOrderItemModifiers.cs b/src/SmartTalk.Messages/Dto/PhoneOrder/PhoneCallOrderItemModifiers.cs new file mode 100644 index 00000000..2a441406 --- /dev/null +++ b/src/SmartTalk.Messages/Dto/PhoneOrder/PhoneCallOrderItemModifiers.cs @@ -0,0 +1,25 @@ +using Newtonsoft.Json; +using SmartTalk.Messages.Dto.EasyPos; + +namespace SmartTalk.Messages.Dto.PhoneOrder; + +public class PhoneCallOrderItemModifiers +{ + [JsonProperty("price")] + public decimal Price { get; set; } + + [JsonProperty("quantity")] + public int Quantity { get; set; } + + [JsonProperty("ModifierId")] + public long ModifierId { get; set; } + + [JsonProperty("localizations")] + public List Localizations { get; set; } + + [JsonProperty("modifierProductId")] + public long ModifierProductId { get; set; } + + [JsonProperty("ModifierLocalizations")] + public List ModifierLocalizations { get; set; } +} \ No newline at end of file