fix 优化送餐

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

View File

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

View File

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

View File

@@ -41,6 +41,11 @@ public class BookingMealRequest : IValidatableObject
{
BookingDate = BookingDate.Date;
if (DateTime.Now.Date >= BookingDate)
{
yield return new ValidationResult("订餐日期小于当天", new[] { nameof(BookingDate) });
}
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)
{
await CheckExistsMyBookingsAsync(request.BookingDate);
var jinkoCode = _currentUser.GetUserClaim("jinko-code");
var gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == jinkoCode).FirstAsync();
@@ -87,6 +89,7 @@ public class OrderService : IOrderService
RequestJson = request.ToJson(),
ThirdNo = string.Empty,
Type = BalanceRecordTypeEnumType.Out,
ApplicationType = CanteenApplicaitonTypeEnumType.Booking,
Name = gainfo.Name,
Source = request.Source,
UserNo = gainfo.No,
@@ -129,10 +132,7 @@ public class OrderService : IOrderService
var canteenUser = await _dbContext.Queryable<CanteenUserEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
//金额+-
canteenUser.Balance += order.Amount;
if (canteenUser.Balance < 0)
{
throw new UserFriendlyException("余额不足,无法消费");
}
(canteenUser.Balance < 0).ThrowIfTrue("余额不足,无法消费");
var effect = await _dbContext.Updateable<CanteenUserEntity>()
.SetColumns(x => x.Balance == canteenUser.Balance)
@@ -168,6 +168,7 @@ public class OrderService : IOrderService
}, 10);
}
public async Task<OrderResultResponse> DeviceConsume(OrderAddRequest request)
{
return await AddAsync(request);
@@ -303,6 +304,7 @@ public class OrderService : IOrderService
RequestJson = request.ToJson(),
ThirdNo = request.ThirdNo,
Type = BalanceRecordTypeEnumType.Out,
ApplicationType = CanteenApplicaitonTypeEnumType.Device,
Name = gainfo.Name,
Source = request.Source,
UserNo = gainfo.No,
@@ -643,4 +645,25 @@ public class OrderService : IOrderService
}, 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("不可重复订餐");
}
}