feat 生日券功能,自动上传消费数据,提醒访客到期

This commit is contained in:
2025-12-09 11:35:05 +08:00
parent 323eb367d0
commit c1462a03dc
60 changed files with 1451 additions and 409 deletions

View File

@@ -6,6 +6,8 @@ using Dlhis.Canteen.Setting.Services;
using Dlhis.Constants;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Canteen.Entities;
using Dlhis.Entity.Canteen.Entities.EMealVoucher;
using Dlhis.Entity.Canteen.Entities.Voucher;
using Dlhis.Entity.Canteen.Enums;
using Dlhis.Entity.Device;
using Dlhis.Entity.Device.Entities;
@@ -160,27 +162,35 @@ public class OrderService : IOrderService
switch (flag)
{
case QrCodeConstants.User:
{
gainfo = await GetUserByQrCodeAsync(request.UserUniqueNo);
await CheckPermissionAsync(gainfo.Code, request.DeviceUniqueNo);
}
{
gainfo = await GetUserByQrCodeAsync(request.UserUniqueNo);
await CheckPermissionAsync(gainfo.Code, request.DeviceUniqueNo);
}
break;
case QrCodeConstants.EMealVoucher:
{
request.Source = BalanceRecordSourceEnumType.EMealVoucher;
var eMealVoucherQrCode = await _dbContext.Queryable<EMealVoucherDetailQrCodeEntity>().Where(x => x.QrCode == request.UserUniqueNo).SingleAsync();
eMealVoucherQrCode.ThrowIfNull("无法识别");
var code = eMealVoucherQrCode.OriginData.Split(':')[2];
gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == code).SingleAsync();
}
{
request.Source = BalanceRecordSourceEnumType.EMealVoucher;
var eMealVoucherQrCode = await _dbContext.Queryable<EMealVoucherDetailQrCodeEntity>().Where(x => x.QrCode == request.UserUniqueNo).SingleAsync();
eMealVoucherQrCode.ThrowIfNull("无法识别");
var code = eMealVoucherQrCode.OriginData.Split(':')[2];
gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == code).SingleAsync();
}
break;
case QrCodeConstants.Birthday:
{
request.Source = BalanceRecordSourceEnumType.Birthday;
var ticket = await _dbContext.Queryable<TicketEntity>().Where(x => x.Type == TicketEnumType.Birthday).Where(x => x.QrCode == request.UserUniqueNo).SingleAsync();
ticket.ThrowIfNull("无法识别");
gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == ticket.UserCode).SingleAsync();
}
{
request.Source = BalanceRecordSourceEnumType.Birthday;
var qrcode = await _dbContext.Queryable<VoucherQrCodeEntity>()
.Where(x => x.QrCode == request.UserUniqueNo)
.SingleAsync();
qrcode.ThrowIfNull("券码无法识别");
var vourcher = await _dbContext.Queryable<VoucherUserInfoEntity>()
.Where(x => x.VoucherNo == qrcode.VoucherNo)
.SingleAsync();
gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == vourcher.UserCode).SingleAsync();
}
break;
default: throw new UserFriendlyException($"无法识别{request.UserUniqueNo}");
@@ -201,7 +211,7 @@ public class OrderService : IOrderService
//在线
if (!request.IsOffline)
{
gainfo.ThrowIfNull("无法识别");
gainfo.ThrowIfNull("无法识别人员信息");
}
else
{
@@ -213,6 +223,7 @@ public class OrderService : IOrderService
.FirstAsync();
}
gainfo.ThrowIfNull("无法识别人员信息");
return gainfo;
}
@@ -292,7 +303,9 @@ public class OrderService : IOrderService
.Where(x => x.DeviceUniqueNo == request.DeviceUniqueNo && x.BusinessPlaceCode.HasValue)
.Select((x, b, bs) => new
{
b.Code, bs.ShiftCode, Factory = b.TenantId
b.Code,
bs.ShiftCode,
Factory = b.TenantId
})
.SingleAsync();
@@ -485,7 +498,7 @@ public class OrderService : IOrderService
return await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == gainfoQrCode.UserCode).SingleAsync();
}
/// <summary>
/// 检查是否能够进行离线消费,处理hpt重复提交
/// </summary>