@@ -1,302 +1,312 @@
// using Dlhis.Canteen.Dishes.Request;
using Dlhis.Canteen.Dishes.Request ;
// using Dlhis.Canteen.Order.Request;
using Dlhis.Canteen.Order.Request ;
// using Dlhis.Canteen.Order.Response;
using Dlhis.Canteen.Order.Response ;
// using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Basic.Entity ;
// using Dlhis.Entity.Canteen.Entities;
using Dlhis.Entity.Canteen.Entities ;
// using Dlhis.Entity.Canteen.Enums;
using Dlhis.Entity.Canteen.Enums ;
// using Kurisu.AspNetCore.Utils.Extensions;
using Kurisu.AspNetCore.Utils.Extensions ;
// using Kurisu.AspNetCore.Utils;
using Kurisu.AspNetCore.Utils ;
// using Dlhis.Canteen.Setting.Services;
using Dlhis.Canteen.Setting.Services ;
// using Dlhis.Basic.Api;
using Dlhis.Basic.Api ;
// using Kurisu.AspNetCore.Authentication.Abstractions ;
using Dlhis.Constants ;
// using Kurisu.AspNetCore.DataAccess.Dto ;
using Kurisu.AspNetCore.Authentication.Abstractions ;
// using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions ;
using Kurisu.AspNetCore.DataAccess.Dto ;
// using Kurisu.AspNetCore.DataAccess.SqlSugar.Services ;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions ;
// using SqlSugar ;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services ;
// using Mapster ;
using SqlSugar ;
//
// namespace Dlhis.Canteen.Order.Services.Implements;
namespace Dlhis.Canteen.Order.Services.Implements ;
//
// public class BookingOrderService : BaseOrderService, IBookingOrderService
public class BookingOrderService : IBookingOrderService
// {
{
// private readonly ICanteenSettingService _canteenSettingService;
private readonly ICanteenSettingService _canteenSettingService ;
// private readonly IDishesMenuApi _dishesMenuApi ;
private readonly IDbContext _dbContext ;
// private readonly IBusinessPlacePermissionsApi _businessPlacePermissionsApi;
private readonly IBusinessPlacePermissionsApi _businessPlacePermissionsApi ;
//
private readonly ICurrentUser _currentUser ;
// public BookingOrderService(ICanteenSettingService canteenSettingService, IDbContext dbContext,
// IDishesMenuApi dishesMenuApi ,
public BookingOrderService ( ICanteenSettingService canteenSettingService ,
// IBusinessPlacePermissionsApi businessPlacePermissionsApi ,
IDbContext dbContext ,
// ICurrentUser currentUser, ILogger<BookingOrderService> logger)
IBusinessPlacePermissionsApi businessPlacePermissionsApi ,
// : base(canteenSettingService, dbContext, currentUser, logger )
ICurrentUser currentUser )
// {
{
// _canteenSettingService = canteenSettingService;
_canteenSettingService = canteenSettingService ;
// _dishesMenuApi = dishesMenuApi ;
_dbContext = dbContext ;
// _businessPlacePermissionsApi = businessPlacePermissionsApi;
_businessPlacePermissionsApi = businessPlacePermissionsApi ;
// }
_currentUser = currentUser ;
//
}
// public async Task<BookingResponse> BookingAsync(BookingMealRequest request)
// {
public async Task < BookingResponse > BookingAsync ( BookingMealRequest request )
// var gainfo = await CheckExistsMyBookingsAsync(request.BookingDate, request.ShiftType);
{
//
var gainfo = await CheckExistsMyBookingsAsync ( request . BookingDate , request . ShiftType ) ;
// var businessPlace = await DbContext.Queryable<BusinessPlaceEntity>().Where(x => x.Code == request.BusinessPlaceCode).FirstAsync();
//
var businessPlace = await _dbContext . Queryable < BusinessPlaceEntity > ( ) . Where ( x = > x . Code = = request . BusinessPlaceCode ) . FirstAsync ( ) ;
// //预定时间
// var now = DateTime.Now;
//预定时间
//
var now = DateTime . Now ;
// var bookingDeadline = await _canteenSettingService.GetSettingAsync(CanteenSettingItemEnumType.BookingDeadline, businessPlace.TenantId, gainfo.No, new TimeOnly(20, 30, 00));
// var dealLine = DateTime.Today.Add(bookingDeadline.ToTimeSpan()) ;
var bookingDeadline = await _canteenSettingService . GetSettingAsync ( CanteenSettingItemEnumType . BookingDeadline , businessPlace . TenantId , gainfo . No , new TimeOnly ( 20 , 30 , 00 ) ) ;
// (now >= dealLine).ThrowIfTrue("超出订餐时间") ;
var dealLine = DateTime . Today . Add ( bookingDeadline . ToTimeSpan ( ) ) ;
//
( now > = dealLine ) . ThrowIfTrue ( "超出订餐时间" ) ;
// //菜单存在
// var menuDetailResult = await _dishesMenuApi.GetBookingDishesDetailAsync(request.BookingDate, request.BusinessPlaceCode, (int)request.ShiftType, request.DishesCode);
//菜单存在
// var menuDetail = menuDetailResult.Data ;
var menuDetail = await GetBookingDishesDetailAsync ( request . BookingDate , request . BusinessPlaceCode , request . ShiftType , request . DishesCode ) ;
// menuDetail. ThrowIfNull( "预定失败,菜品已经下架") ;
menuDetail. ThrowIfNull( "预定失败,菜品已经下架") ;
//
// var order = new CanteenOrderEntity
var order = new CanteenOrderEntity
// {
{
// RequestJson = request. ToJson() ,
RequestJson = request. ToJson( ) ,
// ThirdNo = string. Empty,
ThirdNo = string. Empty ,
// Type = BalanceRecordTypeEnumType. Out,
Type = BalanceRecordTypeEnumType. Out ,
// ApplicationType = CanteenApplicationTypeEnumType. Booking,
ApplicationType = CanteenApplicationTypeEnumType. Booking ,
// Name = gainfo. Name,
Name = gainfo. Name ,
// Source = request. Source,
Source = request. Source ,
// UserNo = gainfo.No ,
UserNo = gainfo . No ,
// UserCode = gainfo. Code,
UserCode = gainfo. Code ,
// Amount = -Math.Abs(menuDetail.Price * request. Number) ,
Amount = - Math . Abs ( menuDetail . Price * request. Number) ,
// BusinessPlaceCode = request. BusinessPlaceCode,
BusinessPlaceCode = request. BusinessPlaceCode ,
// BusinessShiftCode = null,
BusinessShiftCode = null ,
// ShiftType = request. ShiftType,
ShiftType = request. ShiftType ,
// CostDate = now. Date,
CostDate = now . Date ,
// CostId = gainfo. CostId,
CostId = gainfo. CostId ,
// DepartmentNo = gainfo. DepartmentNo,
DepartmentNo = gainfo. DepartmentNo ,
// DeviceUniqueNo = string. Empty,
DeviceUniqueNo = string. Empty ,
// DeliveryAddress = request. DeliveryAddress,
DeliveryAddress = request. DeliveryAddress ,
//
// No = SnowFlakeHelper. Instance. NextId().ToString() ,
No = SnowFlakeHelper. Instance. NextId( ) . ToString ( ) ,
// IsOffline = false,
IsOffline = false ,
// IsCostCrossTenant = await _canteenSettingService. GetSettingAsync<bool>( CanteenSettingItemEnumType. AllowCrossTenant, businessPlace. TenantId, gainfo.No) ,
IsCostCrossTenant = await _canteenSettingService. GetSettingAsync< bool > ( CanteenSettingItemEnumType. AllowCrossTenant, businessPlace. TenantId, gainfo . No ) ,
//
// OriginTenantId = gainfo. Factory, //人员可能跨基地消费
OriginTenantId = gainfo. Factory, //人员可能跨基地消费
//
// Status = BalanceRecordStatusEnumType. Valid,
Status = BalanceRecordStatusEnumType. Valid ,
// OrderStatus = CanteenOrderStatusEnumType. Success,
OrderStatus = CanteenOrderStatusEnumType. Success ,
//
// CostDateTime = now,
CostDateTime = now ,
//
// //标识当前消费的基地
//标识当前消费的基地
// TenantId = businessPlace. TenantId,
TenantId = businessPlace. TenantId ,
// } ;
} ;
//
// await D bContext. InsertAsync(order) ;
await _d bContext. InsertAsync( order ) ;
// await CommonHelper. RetryAsync(async () = >
await CommonHelper. RetryAsync( async ( ) = >
// {
{
// await _dishesMenuApi. GetBookingDishesDetailAsync( request. BookingDate, request. BusinessPlaceCode, (int) request. ShiftType, request. DishesCode) ;
menuDetail = await GetBookingDishesDetailAsync( request. BookingDate, request. BusinessPlaceCode, request. ShiftType, request. DishesCode) ;
// menuDetail = menuDetailResult.Data ;
menuDetail. ThrowIfNull ( "预定失败,菜品已经下架" ) ;
// menuDetail.ThrowIfNull("预定失败,菜品已经下架") ;
menuDetail. Number - = request . Number ;
// menuDetail.Number -= request.Number;
//
( menuDetail . Number < 0 ) . ThrowIfTrue ( $"{menuDetail.DishesName}剩余数量不足" ) ;
// (menuDetail.Number < 0).ThrowIfTrue($"{menuDetail.DishesName}剩余数量不足");
//
await _dbContext . Updateable < DishesMenuEntity > ( )
// //餐补
. SetColumns ( x = > x . Number = = menuDetail . Number )
// if (request.Source == BalanceRecordSourceEnumType.LocalTenantSubsidies )
. SetColumns ( x = > x . Version = = x . Version + 1 )
// {
. SetColumns ( x = > x . ModifiedTime = = now )
// var mealInfo = await DbContext.Queryable<GainfoMealEntity>().Where(x => x.UserCode == order.UserCode).FirstAsync();
. Where ( x = > x . StartDate < = menuDetail . Date & & menuDetail . Date < = x . EndDate
// mealInfo.ThrowIfNull("余额不足,无法消费");
& & x . ShiftType = = request . ShiftType
//
& & x . BusinessPlaceCode = = request . BusinessPlaceCode
// //金额+-
& & x . DishesCode = = request . DishesCode
// mealInfo.Balance += order.Amount;
& & x . Version = = menuDetail . Version
// (mealInfo.Balance < 0).ThrowIfTrue("余额不足,无法消费");
)
//
. ExecuteCommandThrowVersionAsync ( ) ;
// await DbContext.Updateable<GainfoMealEntity>()
// .SetColumns(x => x.Balance == mealInfo.Balance)
await _dbContext . InsertAsync ( new CanteenOrderDetailEntity
// .SetColumns(x => x.Version == x.Version + 1)
{
// .SetColumns(x => x.ModifiedTime == DateTime.Now)
OrderNo = order . No ,
// .Where(x => x.UserCode == order.UserCode && x.Version == mealInfo.Version) //必须与查询时的version一致
BookingDate = request . BookingDate ,
// .ExecuteCommandThrowVersionAsync();
DishesCode = request . DishesCode ,
// }
Price = menuDetail . Price ,
//
Unit = request . Unit ,
// await DbContext.Updateable<DishesMenuEntity>()
Number = request . Number ,
// .SetColumns(x => x.Number == menuDetail.Number)
TenantId = order . TenantId ,
// .SetColumns(x => x.Version == x.Version + 1)
} ) ;
// .SetColumns(x => x.ModifiedTime == now)
} , 10 ) ;
// .Where(x => x.StartDate <= menuDetail.Date && menuDetail.Date <= x.EndDate
// && x.ShiftType == request.ShiftType
// && x.BusinessPlaceCode == request.BusinessPlaceCod e
return new BookingRespons e
// && x.DishesCode == request.DishesCode
{
// && x.Version == menuDetail.Version
No = order . No ,
// )
CreateTime = order . CreateTime ,
// .ExecuteCommandThrowVersionAsync();
Source = order . Source ,
//
Amount = Math . Abs ( order . Amount )
// //写入记录
} ;
// var balanceRecord = order.Adapt<BalanceRecordEntity>();
}
// await DbContext.InsertAsync(balanceRecord);
//
// await DbContext.InsertAsync(new CanteenOrderDetailEntity
public async Task < DishesMenuDetailDto > GetBookingDishesDetailAsync ( DateTime date , Guid businessPlaceCode , ShiftEnumType shiftType , string dishesCode )
// {
{
// OrderNo = order.No,
var detail = await _dbContext . Queryable < DishesMenuEntity > ( )
// BookingDate = request.BookingDate,
. LeftJoin < DishesEntity > ( ( x , d ) = > x . DishesCode = = d . CustomCode )
// DishesCode = request.DishesCode,
. Where ( x = > x . StartDate < = date & & date < = x . EndDate )
// Price = menuDetail.Price,
. Where ( x = > x . BusinessPlaceCode = = businessPlaceCode )
// Unit = request.Unit,
. Where ( x = > x . ShiftType = = shiftType )
// Number = request.Number,
. Where ( x = > x . DishesCode = = dishesCode )
// TenantId = order.TenantId,
. Where ( ( x , d ) = > d . Enable )
// });
. Select ( ( x , d ) = > new DishesMenuDetailDto
// }, 10);
{
//
Date = date ,
//
MenuId = x . Id ,
// return new BookingResponse
DishesId = d . Id ,
// {
DishesCode = d . CustomCode ,
// No = order.No ,
DishesName = d . Name ,
// CreateTime = order.CreateTime ,
Price = x . Price = = null | | x . Price = = 0 ? d . Price : x . Price . Value ,
// Source = order.Source ,
Number = x . Number ,
// Amount = Math.Abs(order.Amount)
Version = x . Version ,
// };
} )
// }
. SingleAsync ( ) ;
//
//
return detail ;
// public async Task<Pagination<OrderBookingResponse>> GetBookingPageAsync(OrderBookingPageRequest request)
}
// {
// var myCodes = (await _businessPlacePermissionsApi.GetMyAsync()).Data.Select(x => (Guid?)x.Code).ToList();
//
public async Task < Pagination < OrderBookingResponse > > GetBookingPageAsync ( OrderBookingPageRequest request )
// var page = await DbContext.Queryable<CanteenOrderEntity>()
{
// .LeftJoin<GainfoEntity>((x, ga) => x.UserNo == ga.No)
var myCodes = ( await _businessPlacePermissionsApi . GetMyAsync ( ) ) . Select ( x = > ( Guid ? ) x . Code ) . ToList ( ) ;
// .LeftJoin<DepartmentEntity>((x, ga, dept) => dept.No == ga.DepartmentNo)
// .Where(x => myCodes.Contains(x.BusinessPlaceCode) )
var page = await _dbContext . Queryable < CanteenOrderEntity > ( )
// .WhereIF(request.OrderStatus.HasValue, x => x.OrderStatus == request.OrderStatus )
. LeftJoin < GainfoEntity > ( ( x , ga ) = > x . UserNo = = ga . No )
// .WhereIF(request.Source.HasValue, x => x.Source == request.Source )
. LeftJoin < DepartmentEntity > ( ( x , ga , dept ) = > dept . No = = ga . DepartmentNo )
// . WhereIF(request.Search.IsPresent(), (x, ga) => x.UserCode == request.Search || ga.Name.Contains(request.Search) )
. Where( x = > myCodes . Contains ( x . BusinessPlaceCode ) )
// . WhereIF( request.BookingPeriod?.Start.HasValue == true && request.BookingPeriod?.End.HasValue == true, x =>
. WhereIF( request. OrderStatus . HasValue , x = > x . OrderStatus = = request . OrderStatus )
// SqlFunc.Subqueryable<CanteenOrderDetailEntity>( )
. WhereIF ( request . Source . HasValue , x = > x . Source = = request . Source )
// . Where(p => p.OrderNo == x.No )
. WhereIF ( request . Search . IsPresent ( ) , ( x , ga ) = > x . UserCode = = request . Search | | ga . Name . Contains ( request . Search ) )
// . Where(p => p.BookingDate >= request. BookingPeriod.Start)
. WhereIF ( request . BookingPeriod ? . Start . HasValue = = true & & request. BookingPeriod? . End . HasValue = = true , x = >
// .Where(p => p.BookingDate <= request.BookingPeriod.End )
SqlFunc . Subqueryable < CanteenOrderDetailEntity > ( )
// .Any( )
. Where ( p = > p . OrderNo = = x . No )
// )
. Where ( p = > p . BookingDate > = request . BookingPeriod . Start )
// . WhereIF(request.ShiftType.HasValue, x => x.ShiftType == request.ShiftType )
. Where( p = > p . BookingDate < = request . BookingPeriod . End )
// .Select((x, ga, dept) => new OrderBookingResponse
. Any ( )
// {
)
// No = x.No,
. WhereIF ( request . ShiftType . HasValue , x = > x . ShiftType = = request . ShiftType )
// DeliveryAddress = x.DeliveryAddress,
. Select ( ( x , ga , dept ) = > new OrderBookingResponse
// Remark = x.Remark,
{
// Amount = SqlFunc.Abs(x.Amount) ,
No = x . No ,
// CreateTime = x.CreateTime ,
DeliveryAddress = x . DeliveryAddress ,
// ShiftType = x.ShiftType ,
Remark = x . Remark ,
// Status = x.OrderStatus ,
Amount = SqlFunc . Abs ( x . Amount ) ,
// UserCode = x.UserCode ,
CreateTime = x . CreateTime ,
// UserName = ga.Name ,
ShiftType = x . ShiftType ,
// Source = x.Source ,
Status = x . OrderStatus ,
// DepartmentName = dept.Name ,
UserCode = x . UserCode ,
// })
UserName = ga . Name ,
// .ToPageListAsync(request);
Source = x . Source ,
//
DepartmentName = dept . Name ,
// var nos = page.Data.Select(x => x.No).ToList();
} )
// var details = await DbContext.Queryable<CanteenOrderDetailEntity>()
. ToPageListAsync ( request ) ;
// .LeftJoin<DishesEntity>((x, dishes) => x.DishesCode == dishes.CustomCode)
// .Where(x => nos.Contains(x.OrderNo))
var nos = page . Data . Select ( x = > x . No ) . ToList ( ) ;
// .Select((x, dishes) => new { x.OrderNo, x.BookingDate, x.Number, dishes.Name }).ToListAsync();
var details = await _dbContext . Queryable < CanteenOrderDetailEntity > ( )
//
. LeftJoin < DishesEntity > ( ( x , dishes ) = > x . DishesCode = = dishes . CustomCode )
// page.Data.ForEach(x =>
. Where ( x = > nos . Contains ( x . OrderNo ) )
// {
. Select ( ( x , dishes ) = > new { x . OrderNo , x . BookingDate , x . Number , dishes . Name } ) . ToListAsync ( ) ;
// x.BookingDate = details.First(item => item.OrderNo == x.No).BookingDate;
// x.TotalNumber = details.Where(item => item.OrderNo == x.No).Sum(item => item.Number);
page . Data . ForEach ( x = >
// x.DishesInfos = details.Where(item => item.OrderNo == x.No).Select(item => new
{
// {
x . BookingDate = details . First ( item = > item . OrderNo = = x . No ) . BookingDate ;
// item.Name
x . TotalNumber = details . Where ( item = > item . OrderNo = = x . No ) . Sum ( item = > item . Number ) ;
// })
x . DishesInfos = details . Where ( item = > item . OrderNo = = x . No ) . Select ( item = > new
// .ToList();
{
// });
item . Name
//
} )
// return page ;
. ToList ( ) ;
// }
}) ;
//
// public async Task UserCancelOrderAsync(OrderCancelRequest request)
return page ;
// {
}
// var order = await DbContext.Queryable<CanteenOrderEntity>().Where(x => x.No == request.No).FirstAsync();
// order.ThrowIfNull("订单不存在");
public async Task UserCancelOrderAsync ( OrderCancelRequest request )
//
{
// var bookingDeadline = await _canteenSettingService.GetSettingAsync(CanteenSettingItemEnumType.BookingDeadline, order.TenantId, order.No, new TimeOnly(20, 30, 00)) ;
return ;
// var dealLine = DateTime.Today.Add(bookingDeadline.ToTimeSpan());
// (DateTime.Now >= dealLine).ThrowIfTrue("不在订单取消允许范围内,不可操作") ;
var order = await _dbContext . Queryable < CanteenOrderEntity > ( ) . Where ( x = > x . No = = request . No ) . FirstAsync ( ) ;
//
order . ThrowIfNull ( "订单不存在" ) ;
// await ManagerCancelOrderAsync(new OrderCancelRequest
// {
var bookingDeadline = await _canteenSettingService . GetSettingAsync ( CanteenSettingItemEnumType . BookingDeadline , order . TenantId , order . No , new TimeOnly ( 20 , 30 , 00 ) ) ;
// No = request.No,
var dealLine = DateTime . Today . Add ( bookingDeadline . ToTimeSpan ( ) ) ;
// Reason = request.Reason,
( DateTime . Now > = dealLine ) . ThrowIfTrue ( "不在订单取消允许范围内,不可操作" ) ;
// });
// }
await ManagerCancelOrderAsync ( new OrderCancelRequest
//
{
//
No = request . No ,
// public async Task ManagerCancelOrderAsync(OrderCancelRequest request)
Reason = request . Reason ,
// {
} ) ;
// var now = DateTime.Now;
}
// var userId = CurrentUser.GetIntSubjectId();
//
// var order = await DbContext.Queryable<CanteenOrderEntity>().Where(x => x.No == request.No).FirstAsync();
public async Task ManagerCancelOrderAsync ( OrderCancelRequest request )
// order.ThrowIfNull("订单不存在");
{
//
return ;
// await DbContext.Updateable<CanteenOrderEntity>()
// .SetColumns(x => x.OrderStatus == CanteenOrderStatusEnumType.Cancel)
var now = DateTime . Now ;
// .SetColumns(x => x.Remark == request.Reason)
var userId = _currentUser . GetIntSubjectId ( ) ;
// .SetColumns(x => x.ModifiedTime == now)
// .SetColumns(x => x.ModifiedBy == userId)
var order = await _dbContext . Queryable < CanteenOrderEntity > ( ) . Where ( x = > x . No = = request . No ) . FirstAsync ( ) ;
// .Where(x => x.No == request.No)
order . ThrowIfNull ( "订单不存在" ) ;
// .ExecuteCommandAsync();
//
await _dbContext . Updateable < CanteenOrderEntity > ( )
// await DbContext.Updateable<BalanceRecordEntity>( )
. SetColumns ( x = > x . OrderStatus = = CanteenOrderStatusEnumType . Cancel )
// . SetColumns(x => x.Status == BalanceRecordStatusEnumType.Obsolute )
. SetColumns( x = > x . Remark = = request . Reason )
// . SetColumns(x => x.Remark == request.Reason )
. SetColumns( x = > x . ModifiedTime = = now )
// . SetColumns(x => x.ModifiedTime == now )
. SetColumns( x = > x . ModifiedBy = = userId )
// .SetColumns(x => x.ModifiedBy == userId )
. Where ( x = > x . No = = request . No )
// .Where(x => x.No == request.No)
. ExecuteCommandAsync ( ) ;
// .ExecuteCommandAsync();
//
await _dbContext . Updateable < BalanceRecordEntity > ( )
// if (order.Source == BalanceRecordSource EnumType.LocalTenantSubsidies )
. SetColumns ( x = > x . Status = = BalanceRecordStatus EnumType. Obsolute )
// {
. SetColumns ( x = > x . Remark = = request . Reason )
// await CommonHelper.RetryAsync(async () =>
. SetColumns ( x = > x . ModifiedTime = = now )
// {
. SetColumns ( x = > x . ModifiedBy = = userId )
// var mealInfo = await DbContext.Queryable<GainfoMealEntity>().Where(x => x.UserCode == order.UserCode).FirstAsync();
. Where ( x = > x . No = = request . No )
// var setBalance = mealInfo.Balance + Math.Abs(order.Amount) ;
. ExecuteCommandAsync ( ) ;
// await DbContext.Updateable<GainfoMealEntity>()
}
// .SetColumns(x => x.Version == x.Version + 1)
// .SetColumns(x => x.Balance == setBalance)
// .SetColumns(x => x.ModifiedTime == now)
/// <summary>
// .SetColumns(x => x.ModifiedBy == userId)
/// 检查我的订餐是否存在,存在抛出异常
// .Where(x => x.Id == mealInfo.Id && x.Version == mealInfo.Version)
/// </summary>
// .ExecuteCommandThrowVersionAsync();
/// <param name="bookingDate"></param>
// }, 5);
/// <param name="shiftType"></param>
// }
/// <returns></returns>
// }
private async Task < GainfoEntity > CheckExistsMyBookingsAsync ( DateTime bookingDate , ShiftEnumType shiftType )
//
{
//
var subjectId = _currentUser . GetIntSubjectId ( ) ;
// /// <summary>
var gainfo = await _dbContext . Queryable < GainfoEntity > ( ) . Where ( x = > x . IdentityUserId = = subjectId ) . FirstAsync ( ) ;
// /// 检查我的订餐是否存在,存在抛出异常
var jinkoCode = _currentUser . GetUserClaim ( UserClaimConstants . JinkoCode ) ? ? string . Empty ;
// /// </summary>
if ( jinkoCode . IsPresent ( ) )
// /// <param name="bookingDate"></param>
{
// /// <param name="shiftType"></param>
gainfo = await _dbContext . Queryable < GainfoEntity > ( ) . Where ( x = > x . Code = = jinkoCode ) . FirstAsync ( ) ;
// /// <returns></returns>
}
// private async Task<GainfoEntity> CheckExistsMyBookingsAsync(DateTime bookingDate, ShiftEnumType shiftType)
// {
var start = bookingDate . Date . AddDays ( - 1 ) ;
// var subjectId = CurrentUser.GetIntSubjectId() ;
var end = start . AddDays ( 1 ) . AddSeconds ( - 1 ) ;
// var gainfo = await DbContext.Queryable<GainfoEntity>().Where(x => x.IdentityUserId == subjectId).FirstAsync();
// var jinkoCode = CurrentUser.GetUserClaim("jinko-code") ?? string.Empty;
var exists = await _dbContext . Queryable < CanteenOrderEntity > ( )
// if (jinkoCode.IsPresent() )
. Where ( x = > x . ApplicationType = = CanteenApplicationTypeEnumType . Booking )
// {
. Where ( x = > x . OrderStatus = = CanteenOrderStatusEnumType . Success )
// gainfo = await DbContext.Queryable<GainfoEntity>().Where(x => x.Code == jinkoCode).FirstAsync();
. Where ( x = > x . ShiftType = = shiftType )
// }
. Where ( x = > x . UserNo = = gainfo . No )
//
. Where ( x = > x . CreateTime > = start & & x . CreateTime < = end )
// var start = bookingDate.Date.AddDays(-1) ;
. AnyAsync ( ) ;
// var end = start.AddDays(1).AddSeconds(-1);
//
exists . ThrowIfTrue ( "不可重复订餐" ) ;
// var exists = await DbContext.Queryable<CanteenOrderEntity>()
// .Where(x => x.ApplicationType == CanteenApplicationTypeEnumType.Booking)
return gainfo ;
// .Where(x => x.OrderStatus == CanteenOrderStatusEnumType.Success)
}
// .Where(x => x.ShiftType == shiftType)
}
// .Where(x => x.UserNo == gainfo.No)
// .Where(x => x.CreateTime >= start && x.CreateTime <= end)
public class DishesMenuDetailDto
// .AnyAsync();
{
//
public DateTime Date { get ; set ; }
// exists.ThrowIfTrue("不可重复订餐");
//
public long MenuId { get ; set ; }
// return gainfo;
// }
public long DishesId { get ; set ; }
// }
public string DishesCode { get ; set ; }
public string DishesName { get ; set ; }
public decimal Price { get ; set ; }
public int Number { get ; set ; }
public int Version { get ; set ; }
}