fix 增加状态判断

This commit is contained in:
2024-04-10 18:03:53 +08:00
parent 2bc76b4ce5
commit 4969717c92

View File

@@ -163,14 +163,39 @@ public class BalanceService : IBalanceService
public async Task SupplementBalanceAsync(BalanceSupplementRequest request)
{
var balanceInfo = await _dbContext.Queryable<BalanceRecordEntity>().Where(x => x.No == request.No).SingleAsync();
(balanceInfo.Status != BalanceRecordStatusEnumType.Valid).ThrowIfTrue("消费明细状态有误");
balanceInfo.ThrowIfNull("明细数据不存在");
(balanceInfo.Status != BalanceRecordStatusEnumType.Valid && balanceInfo.Type != BalanceRecordTypeEnumType.Out).ThrowIfTrue("消费明细状态有误");
balanceInfo.Status = BalanceRecordStatusEnumType.Obsolute;
balanceInfo.Remark += request.Reason;
var newBalanceRecord = balanceInfo.Adapt<BalanceRecordEntity>();
newBalanceRecord.Id = 0;
newBalanceRecord.No = SnowFlakeHelper.Instance.NextId().ToString();
newBalanceRecord.Amount = request.Amount;
newBalanceRecord.Remark = balanceInfo.No + ":" + request.Reason;
newBalanceRecord.Status = BalanceRecordStatusEnumType.Valid;
await _dbContext.Client.Ado.BeginTranAsync();
try
{
await _dbContext.UpdateAsync(balanceInfo);
await _dbContext.InsertAsync(newBalanceRecord);
await _dbContext.Client.Ado.CommitTranAsync();
}
catch (Exception)
{
await _dbContext.Client.Ado.RollbackTranAsync();
throw;
}
await CommonHelper.RetryAsync(async () =>
{
var gainfoMeal = await _dbContext.Queryable<GainfoMealEntity>().Where(x => x.UserCode == balanceInfo.UserCode).SingleAsync();
var balance = gainfoMeal.Balance + balanceInfo.Amount + request.Amount;
var balance = gainfoMeal.Balance + Math.Abs(balanceInfo.Amount) + request.Amount;
await _dbContext.Updateable<GainfoMealEntity>()
.SetColumns(x => x.Balance == balance)
@@ -179,17 +204,6 @@ public class BalanceService : IBalanceService
.Where(x => x.UserCode == balanceInfo.UserCode && x.Version == gainfoMeal.Version)
.ExecuteCommandThrowVersionAsync();
});
var newBalanceRecord = balanceInfo.Adapt<BalanceRecordEntity>();
newBalanceRecord.Id = 0;
newBalanceRecord.No = SnowFlakeHelper.Instance.NextId().ToString();
newBalanceRecord.Amount = request.Amount;
newBalanceRecord.Remark = balanceInfo.No;
newBalanceRecord.Status = BalanceRecordStatusEnumType.Valid;
await _dbContext.UpdateAsync(balanceInfo);
await _dbContext.InsertAsync(newBalanceRecord);
}