Пример #1
0
        public async Task <GameTransaction> GenerateGameTransactionId(UserGameKey userGameKey, GameTransactionType gameTransactionType)
        {
            if (userGameKey.IsFunPlay)
            {
                return new GameTransaction {
                           Id = 0, DateTimeUtc = DateTime.UtcNow
                }
            }
            ;

            using (var db = databaseManager.GetWritableDatabase())
            {
                var gameTransaction = new GameTransaction
                {
                    UserId = userGameKey.UserId,
                    GameId = userGameKey.GameId,
                    Type   = gameTransactionType
                };

                db.GameTransactions.Add(gameTransaction);
                await db.SaveChangesAsync();

                return(gameTransaction);
            }
        }
Пример #2
0
 public async Task UpdateGameTransaction(GameTransaction gameTransaction)
 {
     using (var db = databaseManager.GetWritableDatabase())
     {
         db.GameTransactions.Update(gameTransaction);
         await db.SaveChangesAsync();
     }
 }
Пример #3
0
        private async Task <long> _addTransaction(IDbConnection db, IDbTransaction tx, GameTransaction item)
        {
            try
            {
                var t = await db.ExecuteAsync($"insert into {T_Transaction} (AccountName,TransactionAmount,TransactionType,TransactionTime,Comment,AfterAmount,ReferenceId) values (@AccountName,@TransactionAmount,@TransactionType,@TransactionTime,@Comment,@AfterAmount,@ReferenceId)", item, tx);

                if (t < 1)
                {
                    throw new Exception(WalletException.TransactionFailed);
                }
                long tid = await db.QueryFirstAsync <long>($"select last_insert_id()", null, tx);

                return(tid);
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, "");
                throw new WalletException(WalletException.TransactionFailed);
            }
        }