fix 增加状态判断
This commit is contained in:
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user