From 69a80f22634481dd3cac3044ffba5041ca458e49 Mon Sep 17 00:00:00 2001 From: cheche <717840555@qq.com> Date: Fri, 15 Mar 2024 12:39:43 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=AD=97=E6=AE=B5=E4=BF=AE=E6=94=B91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Order/Controllers/MenuDishesController.cs | 2 +- .../Order/Request/DispositionDishesDto.cs | 10 ++++++ .../Order/Request/DispositionDishesRequest.cs | 4 ++- .../Order/Request/OrderRequest.cs | 7 +++- .../Order/Request/SaveDishesRequest.cs | 5 --- .../Order/Request/SaveMenuRequest.cs | 6 +--- .../Order/Response/GetDishesResponse.cs | 8 ----- .../Order/Response/GetMenuResponse.cs | 6 +--- .../Services/Implements/MenuDishesService.cs | 7 ++-- .../MiniProgramOrderDetailService.cs | 33 ++++++++++++------- .../Canteen/Entities/CanteenDishesEntity.cs | 6 ---- .../CanteenMenuDishersRelationshipEntity.cs | 17 +++++++++- .../Canteen/Entities/CanteenMenuEntity.cs | 15 ++------- 13 files changed, 67 insertions(+), 59 deletions(-) create mode 100644 Src/Dlhis.Canteen/Order/Request/DispositionDishesDto.cs diff --git a/Src/Dlhis.Canteen/Order/Controllers/MenuDishesController.cs b/Src/Dlhis.Canteen/Order/Controllers/MenuDishesController.cs index 9001b4f4..b6ecc0d5 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/MenuDishesController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/MenuDishesController.cs @@ -68,7 +68,7 @@ public class MenuDishesController : ControllerBase } /// - /// 配置菜单菜品 + /// 配置每日菜单菜品及限售 /// /// /// diff --git a/Src/Dlhis.Canteen/Order/Request/DispositionDishesDto.cs b/Src/Dlhis.Canteen/Order/Request/DispositionDishesDto.cs new file mode 100644 index 00000000..07863df5 --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Request/DispositionDishesDto.cs @@ -0,0 +1,10 @@ +namespace Dlhis.Canteen.Order.Request +{ + public class DispositionDishesDto + { + public Guid DisherCode { get; set; } + + public int RestrictedNum { get; set; } + + } +} diff --git a/Src/Dlhis.Canteen/Order/Request/DispositionDishesRequest.cs b/Src/Dlhis.Canteen/Order/Request/DispositionDishesRequest.cs index 5beb9f23..070e8c42 100644 --- a/Src/Dlhis.Canteen/Order/Request/DispositionDishesRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/DispositionDishesRequest.cs @@ -3,6 +3,8 @@ public class DispositionDishesRequest { public Guid MenudCode { get; set; } - public List DishersCodes { get; set; } + + public List DishersDtos { get; set; } + } } diff --git a/Src/Dlhis.Canteen/Order/Request/OrderRequest.cs b/Src/Dlhis.Canteen/Order/Request/OrderRequest.cs index 2369dd07..4d8b9cc2 100644 --- a/Src/Dlhis.Canteen/Order/Request/OrderRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/OrderRequest.cs @@ -18,7 +18,7 @@ namespace Dlhis.Canteen.Order.Request public Guid PlaceCode { get; set; } /// - /// 餐别 + /// 餐次 /// public ShiftEnumType ShiftType { get; set; } @@ -27,6 +27,11 @@ namespace Dlhis.Canteen.Order.Request /// public string Address { get; set; } + /// + /// 菜单 + /// + public Guid MenuCode { get; set; } + /// /// 菜品 /// diff --git a/Src/Dlhis.Canteen/Order/Request/SaveDishesRequest.cs b/Src/Dlhis.Canteen/Order/Request/SaveDishesRequest.cs index 11429d96..f68b41e1 100644 --- a/Src/Dlhis.Canteen/Order/Request/SaveDishesRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/SaveDishesRequest.cs @@ -46,11 +46,6 @@ namespace Dlhis.Canteen.Order.Request /// public string Unit { get; set; } - /// - /// 限售份数 - /// - public int RestrictedNum { get; set; } - /// /// 图片 /// diff --git a/Src/Dlhis.Canteen/Order/Request/SaveMenuRequest.cs b/Src/Dlhis.Canteen/Order/Request/SaveMenuRequest.cs index d4420c48..76e7d66e 100644 --- a/Src/Dlhis.Canteen/Order/Request/SaveMenuRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/SaveMenuRequest.cs @@ -26,14 +26,10 @@ namespace Dlhis.Canteen.Order.Request public string Factory { get; set; } /// - /// 开始日期 + /// 营业日期 /// public DateOnly StartDate { get; set; } - /// - /// 结束日期 - /// - public DateOnly EndDate { get; set; } /// /// 餐次段 diff --git a/Src/Dlhis.Canteen/Order/Response/GetDishesResponse.cs b/Src/Dlhis.Canteen/Order/Response/GetDishesResponse.cs index 3fa98a24..4d149b01 100644 --- a/Src/Dlhis.Canteen/Order/Response/GetDishesResponse.cs +++ b/Src/Dlhis.Canteen/Order/Response/GetDishesResponse.cs @@ -7,10 +7,6 @@ namespace Dlhis.Canteen.Order.Response { public class GetDishesResponse { - /// - /// 菜单名称 - /// - public string MenuName { get; set; } /// /// 大类 @@ -57,10 +53,6 @@ namespace Dlhis.Canteen.Order.Response /// public string Unit { get; set; } - /// - /// 限售份数 - /// - public int RestrictedNum { get; set; } /// /// 图片 diff --git a/Src/Dlhis.Canteen/Order/Response/GetMenuResponse.cs b/Src/Dlhis.Canteen/Order/Response/GetMenuResponse.cs index 11a864da..111e0ecb 100644 --- a/Src/Dlhis.Canteen/Order/Response/GetMenuResponse.cs +++ b/Src/Dlhis.Canteen/Order/Response/GetMenuResponse.cs @@ -32,14 +32,10 @@ namespace Dlhis.Canteen.Order.Response public string Factory { get; set; } /// - /// 开始日期 + /// 营业日期 /// public DateOnly StartDate { get; set; } - /// - /// 结束日期 - /// - public DateOnly EndDate { get; set; } /// /// 餐次段 diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/MenuDishesService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/MenuDishesService.cs index 84b2d4dd..a5965110 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/MenuDishesService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/MenuDishesService.cs @@ -32,6 +32,7 @@ namespace Dlhis.Canteen.Order.Services.Implements .Select((x,place) => new GetMenuResponse { ShiftTypesSrt = x.ShiftTypes.ToString(), + //ShiftTypesSrt = string.Join(", ", x.ShiftTypes.Select(enumValue => enumValue.GetDescription())), PlaceName = place.Name, },true) .ToPageListAsync(request); @@ -100,12 +101,14 @@ namespace Dlhis.Canteen.Order.Services.Implements public async Task DispositionDishesAsync(DispositionDishesRequest request) { var lst = new List(); - foreach (var dCode in request.DishersCodes) + + foreach (var dto in request.DishersDtos) { var entity = new CanteenMenuDishersRelationshipEntity { MenuCode = request.MenudCode, - DishersCode = dCode, + DishersCode = dto.DisherCode, + RestrictedNum = dto.RestrictedNum, }; lst.Add(entity); } diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/MiniProgramOrderDetailService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/MiniProgramOrderDetailService.cs index b30107d1..9c31e57e 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/MiniProgramOrderDetailService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/MiniProgramOrderDetailService.cs @@ -10,6 +10,7 @@ using Kurisu.Core.DataAccess.Dto; using Kurisu.SqlSugar.Extensions; using Kurisu.SqlSugar.Services; using Mapster; +using SqlSugar; namespace Dlhis.Canteen.Order.Services.Implements; @@ -82,16 +83,20 @@ public class MiniProgramOrderDetailService : IMiniProgramOrderDetailService var dishes = await _dbContext.Queryable().Where(x => x.Code == request.DishesCode).FirstAsync(); dishes.Enable.ThrowIfFalse($"{dishes.Name}没启用!"); - //var menu = await _dbContext.Queryable().Where(x => x.Code == dishes.MenuCode).FirstAsync(); - //menu.Enable.ThrowIfFalse($"{dishes.Name}没启用!"); + var menu = await _dbContext.Queryable().Where(x => x.Code == request.MenuCode).FirstAsync(); + menu.Enable.ThrowIfFalse($"{dishes.Name}没启用!"); // 获取用餐日期 DateOnly tomorrow = DateOnly.FromDateTime(DateTime.Today.AddDays(1)); - //if (!(tomorrow >= menu.StartDate && tomorrow <= menu.EndDate)) - //{ - // true.ThrowIfTrue($"菜品:{dishes.Name}对应的菜单:{menu.Name}不在营业日!"); - //} - if(dishes.RestrictedNum < 0) + if (tomorrow != menu.StartDate) + { + true.ThrowIfTrue($"菜品:{dishes.Name}对应的菜单:{menu.Name}不在营业日!"); + } + + var restricted= await _dbContext.Queryable< CanteenMenuDishersRelationshipEntity>() + .Where(x => x.MenuCode == request.MenuCode && x.DishersCode == request.DishesCode).FirstAsync(); + restricted.ThrowIfNull($"每日菜单:{menu.Name} 还没有配置菜品:{dishes.Name} 的限售数量!"); + if (restricted.RestrictedNum < 0) { true.ThrowIfTrue($"菜品:{dishes.Name}已售罄!"); } @@ -99,6 +104,7 @@ public class MiniProgramOrderDetailService : IMiniProgramOrderDetailService var gainfo = await _dbContext.Queryable() .Where(x => x.Code == request.UserCode) .FirstAsync(); + gainfo.ThrowIfNull($"用户{request.UserCode}无档案信息,无法订餐!"); //判断是否订过餐 var flag = await _dbContext.Queryable() @@ -140,7 +146,7 @@ public class MiniProgramOrderDetailService : IMiniProgramOrderDetailService OrderStatus = MiniProgramOrderStatusEnumType.I, OrderType = dishes.Type, }; - //订单明细 + //生成订单明细 var detail = new OrderDetailsEntity { ThirdNo = order.No, @@ -155,11 +161,16 @@ public class MiniProgramOrderDetailService : IMiniProgramOrderDetailService OrderStatus = OrderDetailsStatusEnumType.I, }; order.TotalAmount = detail.Amount; - await _dbContext.InsertAsync(order); await _dbContext.InsertAsync(detail); - dishes.RestrictedNum-=request.DishesNum; - await _dbContext.UpdateAsync(dishes); + //扣减份数 + var effect = await _dbContext.Updateable() + .SetColumns(x => x.RestrictedNum == restricted.RestrictedNum - request.DishesNum) + .SetColumns(x => x.Version == x.Version + 1) + .Where(x => x.MenuCode == request.MenuCode && x.DishersCode == request.DishesCode && x.Version == restricted.Version) + .ExecuteCommandAsync(); + + if (effect <= 0) throw new VersionExceptions("更新版本冲突"); } } diff --git a/Src/Dlhis.Entity/Canteen/Entities/CanteenDishesEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/CanteenDishesEntity.cs index 7c8a4292..25dfd418 100644 --- a/Src/Dlhis.Entity/Canteen/Entities/CanteenDishesEntity.cs +++ b/Src/Dlhis.Entity/Canteen/Entities/CanteenDishesEntity.cs @@ -65,12 +65,6 @@ namespace Dlhis.Entity.Canteen.Entities [SugarColumn(ColumnDescription = "单位")] public string Unit { get; set; } - /// - /// 限售份数 - /// - [SugarColumn(ColumnDescription = "限售份数")] - public int RestrictedNum { get; set; } - /// /// 图片 /// diff --git a/Src/Dlhis.Entity/Canteen/Entities/CanteenMenuDishersRelationshipEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/CanteenMenuDishersRelationshipEntity.cs index 28341644..da94aa3b 100644 --- a/Src/Dlhis.Entity/Canteen/Entities/CanteenMenuDishersRelationshipEntity.cs +++ b/Src/Dlhis.Entity/Canteen/Entities/CanteenMenuDishersRelationshipEntity.cs @@ -9,9 +9,24 @@ namespace Dlhis.Entity.Canteen.Entities [SugarTable(TableName = "CanteenMenuDishersRelationship", TableDescription = "菜单菜品表")] public class CanteenMenuDishersRelationshipEntity : SugarBaseEntity { + /// + /// 菜单code + /// public Guid MenuCode { get; set; } - + /// + /// 菜品code + /// public Guid DishersCode { get; set; } + + /// + /// 限售份数 + /// + public int RestrictedNum { get; set; } + + /// + /// 版本 + /// + public int Version { get; set; } } } diff --git a/Src/Dlhis.Entity/Canteen/Entities/CanteenMenuEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/CanteenMenuEntity.cs index 2c8501ba..03461d3a 100644 --- a/Src/Dlhis.Entity/Canteen/Entities/CanteenMenuEntity.cs +++ b/Src/Dlhis.Entity/Canteen/Entities/CanteenMenuEntity.cs @@ -1,12 +1,6 @@ using Dlhis.Entity.Canteen.Enums; -using Dlhis.Entity.Device.Enums; using Kurisu.SqlSugar; using SqlSugar; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Dlhis.Entity.Canteen.Entities; @@ -42,16 +36,11 @@ public class CanteenMenuEntity : SugarBaseEntity public string Factory { get; set; } /// - /// 开始日期 + /// 营业日期 /// - [SugarColumn(ColumnDescription = "开始日期")] + [SugarColumn(ColumnDescription = "营业日期")] public DateOnly StartDate { get; set; } - /// - /// 结束日期 - /// - [SugarColumn(ColumnDescription = "结束日期")] - public DateOnly EndDate { get; set; } /// /// 餐次段