fix 优化送餐
This commit is contained in:
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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; }
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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("不可重复订餐");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user