This commit is contained in:
2024-07-19 17:34:20 +08:00
parent 0f455ca61d
commit eb186fc81d

View File

@@ -1,7 +1,5 @@
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Canteen.Entities;
using System.Diagnostics;
using Dlhis.Entity.Canteen.Enums;
using Dlhis.Entity.Device.Entities;
using Dlhis.Middle.Entities;
using Kurisu.AspNetCore.Utils;
using Kurisu.AspNetCore.Utils.Extensions;
@@ -19,6 +17,7 @@ public class OrderService : IOrderService
{
private readonly ICanteenSettingService _canteenSettingService;
private readonly IRemoteOrderService _remoteOrderService;
private readonly ILogger<OrderService> _logger;
private readonly string _factory;
private readonly IDbContext _dbContext;
private Dictionary<CanteenSettingItemEnumType, string> _settings;
@@ -26,78 +25,89 @@ public class OrderService : IOrderService
public OrderService(ICanteenSettingService canteenSettingService,
IRemoteOrderService remoteOrderService,
IConfiguration configuration,
ILogger<OrderService> logger,
IDbContext dbContext)
{
_canteenSettingService = canteenSettingService;
_remoteOrderService = remoteOrderService;
_logger = logger;
_factory = configuration.GetSection("Factory").Value;
_dbContext = dbContext;
}
public async Task<DefaultApiResult<OrderResultResponse>> AddAsync(OrderAddRequest request)
{
if (await _remoteOrderService.AbleRemoteCallAsync())
{
var remoteResult = await _remoteOrderService.AddAsync(request);
if (remoteResult.Code == ApiStateCode.Success)
{
var d = remoteResult.Data;
await _dbContext.Updateable<LocalGainfoMealEntity>()
.SetColumns(x => x.Balance == d.Balance)
.Where(x => x.UserCode == d.UserCode)
.ExecuteCommandAsync();
}
var sw = Stopwatch.StartNew();
remoteResult.Msg = "在线消费:" + remoteResult.Msg;
return remoteResult;
}
//根据档案号
var gainfo = await _dbContext.Queryable<LocalGainfoEntity>()
.Where(x => x.Code == request.UserUniqueNo || x.CardNo == request.UserUniqueNo)
.FirstAsync();
var message = "离线消费:";
gainfo.ThrowIfNull("无消费权限");
var isError = false;
try
{
(await _dbContext.Queryable<LocalGainfoMealEntity>().Where(x => x.UserNo == gainfo.No).AnyAsync())
.ThrowIfFalse("余额不足,无法消费");
await ConsumeAsync(request.Adapt<ConsumeRequest>(), gainfo);
}
catch (Exception ex)
{
message += ex.Message;
isError = true;
}
//获取人员余额
var data = await _dbContext.Queryable<LocalGainfoEntity>()
.LeftJoin<LocalDepartmentEntity>((ga, department) => ga.DepartmentNo == department.No)
.LeftJoin<LocalGainfoMealEntity>((ga, department, mealUser) => ga.No == mealUser.UserNo)
.Where(ga => ga.Id == gainfo.Id)
.Select((ga, department, mealUser) => new OrderResultResponse
if (await _remoteOrderService.AbleRemoteCallAsync())
{
UserCode = ga.Code,
UserName = ga.Name,
DepartmentNo = ga.DepartmentNo,
DepartmentName = department.Name,
Balance = mealUser.Balance
})
.SingleAsync();
var remoteResult = await _remoteOrderService.AddAsync(request);
if (remoteResult.Code == ApiStateCode.Success)
{
var d = remoteResult.Data;
await _dbContext.Updateable<LocalGainfoMealEntity>()
.SetColumns(x => x.Balance == d.Balance)
.Where(x => x.UserCode == d.UserCode)
.ExecuteCommandAsync();
}
return new DefaultApiResult<OrderResultResponse>
remoteResult.Msg = "在线消费:" + remoteResult.Msg;
return remoteResult;
}
//根据档案号
var gainfo = await _dbContext.Queryable<LocalGainfoEntity>()
.Where(x => x.Code == request.UserUniqueNo || x.CardNo == request.UserUniqueNo)
.FirstAsync();
var message = "离线消费:";
gainfo.ThrowIfNull("无消费权限");
var isError = false;
try
{
(await _dbContext.Queryable<LocalGainfoMealEntity>().Where(x => x.UserNo == gainfo.No).AnyAsync())
.ThrowIfFalse("余额不足,无法消费");
await ConsumeAsync(request.Adapt<ConsumeRequest>(), gainfo);
}
catch (Exception ex)
{
message += ex.Message;
isError = true;
}
//获取人员余额
var data = await _dbContext.Queryable<LocalGainfoEntity>()
.LeftJoin<LocalDepartmentEntity>((ga, department) => ga.DepartmentNo == department.No)
.LeftJoin<LocalGainfoMealEntity>((ga, department, mealUser) => ga.No == mealUser.UserNo)
.Where(ga => ga.Id == gainfo.Id)
.Select((ga, department, mealUser) => new OrderResultResponse
{
UserCode = ga.Code,
UserName = ga.Name,
DepartmentNo = ga.DepartmentNo,
DepartmentName = department.Name,
Balance = mealUser.Balance
})
.SingleAsync();
return new DefaultApiResult<OrderResultResponse>
{
Code = isError ? ApiStateCode.Error : ApiStateCode.Success,
Data = data,
Msg = message
};
}
finally
{
Code = isError ? ApiStateCode.Error : ApiStateCode.Success,
Data = data,
Msg = message
};
_logger.LogInformation("消费请求:{json}. 耗时:{time}", request.ToJson(), sw.ElapsedMilliseconds);
}
}