fix 优化送餐

This commit is contained in:
2024-03-18 16:59:45 +08:00
parent 8f26e7e84b
commit c4b48131d2
5 changed files with 40 additions and 130 deletions

View File

@@ -10,7 +10,7 @@ namespace Dlhis.Basic.BusinessPlace.Controllers;
/// <summary> /// <summary>
/// 营业点管理 /// 营业点管理
/// </summary> /// </summary>
[Authorize(Roles = "admin")] [Authorize]
[Route("api/[controller]")] [Route("api/[controller]")]
[ApiController] [ApiController]
public class BusinessPlacePermissionsController public class BusinessPlacePermissionsController
@@ -27,6 +27,7 @@ public class BusinessPlacePermissionsController
/// </summary> /// </summary>
/// <param name="request"></param> /// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
[Authorize(Roles = "admin,tenant-admin")]
[HttpGet("page")] [HttpGet("page")]
public async Task<Pagination<BusinessPlacePermissionPageResponse>> GetPageAsync([FromQuery] BusinessPlacePermissionPageRequest request) public async Task<Pagination<BusinessPlacePermissionPageResponse>> GetPageAsync([FromQuery] BusinessPlacePermissionPageRequest request)
{ {
@@ -49,6 +50,7 @@ public class BusinessPlacePermissionsController
/// </summary> /// </summary>
/// <param name="request"></param> /// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
[Authorize(Roles = "admin,tenant-admin")]
[HttpPost("save")] [HttpPost("save")]
public async Task SaveBusinessPlacePermissionAsync(SaveBusinessPlacePermissionRequest request) public async Task SaveBusinessPlacePermissionAsync(SaveBusinessPlacePermissionRequest request)
{ {

View File

@@ -5,6 +5,11 @@ namespace Dlhis.Basic.Dishes.Request;
public class DisheMenuPageRequest : PageDto public class DisheMenuPageRequest : PageDto
{ {
/// <summary>
/// 营业点code
/// </summary>
public Guid BusinessPlaceCode { get; set; }
/// <summary> /// <summary>
/// 餐次 /// 餐次
/// </summary> /// </summary>

View File

@@ -41,6 +41,11 @@ public class BookingMealRequest : IValidatableObject
{ {
BookingDate = BookingDate.Date; BookingDate = BookingDate.Date;
if (DateTime.Now.Date >= BookingDate)
{
yield return new ValidationResult("订餐日期小于当天", new[] { nameof(BookingDate) });
}
yield break; yield break;
} }
} }

View File

@@ -1,125 +0,0 @@
using Dlhis.Entity.Canteen.Enums;
using Kurisu.AspNetCore.Utils.Extensions;
namespace Dlhis.Canteen.Order.Response;
public class GetMiniProgramOrderResponse
{
/// <summary>
/// 订单号
/// </summary>
public string No { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 工号
/// </summary>
public string Code { get; set; }
/// <summary>
/// 人事范围
/// </summary>
public string Werks { get; set; }
/// <summary>
/// 部门编码
/// </summary>
public string DepartmentNo { get; set; }
/// <summary>
/// 部门名称
/// </summary>
public string DepartmentName { get; set; }
/// <summary>
/// 成本中心
/// </summary>
public string CostId { get; set; }
/// <summary>
/// 工作地
/// </summary>
public string Workplace { get; set; }
/// <summary>
/// 厂区
/// </summary>
public string Factory { get; set; }
/// <summary>
/// 营业点
/// </summary>
public Guid PlaceCode { get; set; }
/// <summary>
/// 营业名称
/// </summary>
public string PlaceName { get; set; }
/// <summary>
/// 餐次
/// </summary>
public ShiftEnumType ShiftType { get; set; }
/// <summary>
/// 餐次CN
/// </summary>
public string ShiftTypeCN => ShiftType.GetDescription();
/// <summary>
/// 菜品
/// </summary>
public Guid DishesCode { get; set; }
/// <summary>
/// 菜品名称
/// </summary>
public string DishesName { get; set; }
/// <summary>
/// 手机号码
/// </summary>
public string Phone { get; set; }
/// <summary>
/// 用餐日期
/// </summary>
public DateOnly SysDate { get; set; }
/// <summary>
/// 下单时间
/// </summary>
public DateTime CostDate { get; set; }
/// <summary>
/// 支付方式
/// </summary>
public BalanceRecordSourceEnumType PayType { get; set; }
/// <summary>
/// 支付方式CN
/// </summary>
public string PayTypeCN => PayType.GetDescription();
/// <summary>
/// 订单状态
/// </summary>
public MiniProgramOrderStatusEnumType OrderStatus { get; set; }
/// <summary>
/// 订单状态CN
/// </summary>
public string OrderStatusCN => OrderStatus.GetDescription();
/// <summary>
/// 总金额
/// </summary>
public decimal TotalAmount { get; set; }
}

View File

@@ -64,6 +64,8 @@ public class OrderService : IOrderService
public async Task Booking(BookingMealRequest request) public async Task Booking(BookingMealRequest request)
{ {
await CheckExistsMyBookingsAsync(request.BookingDate);
var jinkoCode = _currentUser.GetUserClaim("jinko-code"); var jinkoCode = _currentUser.GetUserClaim("jinko-code");
var gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == jinkoCode).FirstAsync(); var gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == jinkoCode).FirstAsync();
@@ -87,6 +89,7 @@ public class OrderService : IOrderService
RequestJson = request.ToJson(), RequestJson = request.ToJson(),
ThirdNo = string.Empty, ThirdNo = string.Empty,
Type = BalanceRecordTypeEnumType.Out, Type = BalanceRecordTypeEnumType.Out,
ApplicationType = CanteenApplicaitonTypeEnumType.Booking,
Name = gainfo.Name, Name = gainfo.Name,
Source = request.Source, Source = request.Source,
UserNo = gainfo.No, UserNo = gainfo.No,
@@ -129,10 +132,7 @@ public class OrderService : IOrderService
var canteenUser = await _dbContext.Queryable<CanteenUserEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync(); var canteenUser = await _dbContext.Queryable<CanteenUserEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
//金额+- //金额+-
canteenUser.Balance += order.Amount; canteenUser.Balance += order.Amount;
if (canteenUser.Balance < 0) (canteenUser.Balance < 0).ThrowIfTrue("余额不足,无法消费");
{
throw new UserFriendlyException("余额不足,无法消费");
}
var effect = await _dbContext.Updateable<CanteenUserEntity>() var effect = await _dbContext.Updateable<CanteenUserEntity>()
.SetColumns(x => x.Balance == canteenUser.Balance) .SetColumns(x => x.Balance == canteenUser.Balance)
@@ -168,6 +168,7 @@ public class OrderService : IOrderService
}, 10); }, 10);
} }
public async Task<OrderResultResponse> DeviceConsume(OrderAddRequest request) public async Task<OrderResultResponse> DeviceConsume(OrderAddRequest request)
{ {
return await AddAsync(request); return await AddAsync(request);
@@ -303,6 +304,7 @@ public class OrderService : IOrderService
RequestJson = request.ToJson(), RequestJson = request.ToJson(),
ThirdNo = request.ThirdNo, ThirdNo = request.ThirdNo,
Type = BalanceRecordTypeEnumType.Out, Type = BalanceRecordTypeEnumType.Out,
ApplicationType = CanteenApplicaitonTypeEnumType.Device,
Name = gainfo.Name, Name = gainfo.Name,
Source = request.Source, Source = request.Source,
UserNo = gainfo.No, UserNo = gainfo.No,
@@ -643,4 +645,25 @@ public class OrderService : IOrderService
}, 5); }, 5);
} }
/// <summary>
/// 检查我的订餐是否存在,存在抛出异常
/// </summary>
/// <param name="bookingDate"></param>
/// <returns></returns>
private async Task CheckExistsMyBookingsAsync(DateTime bookingDate)
{
var jinkoCode = _currentUser.GetUserClaim("jinko-code");
var gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == jinkoCode).FirstAsync();
var start = bookingDate.Date;
var end = start.AddDays(1).AddSeconds(-1);
var exists = await _dbContext.Queryable<CanteenOrderEntity>().Where(x => x.ApplicationType == CanteenApplicaitonTypeEnumType.Booking)
.Where(x => x.UserNo == gainfo.No)
.Where(x => x.CreateTime >= start && x.CreateTime <= end)
.AnyAsync();
exists.ThrowIfTrue("不可重复订餐");
}
} }