make related transaction has the same unix time with the original transaction

This commit is contained in:
MaysWind
2023-03-27 00:11:39 +08:00
parent 7443e8a532
commit 9e3aa19a09
2 changed files with 19 additions and 8 deletions
+2 -2
View File
@@ -501,7 +501,7 @@ func (a *TransactionsApi) TransactionGetHandler(c *core.Context) (interface{}, *
} }
if transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN { if transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN {
transaction = a.transactions.GetRelatedTransferTransaction(transaction, transaction.RelatedId) transaction = a.transactions.GetRelatedTransferTransaction(transaction)
} }
accountIds := make([]int64, 0, 2) accountIds := make([]int64, 0, 2)
@@ -983,7 +983,7 @@ func (a *TransactionsApi) getTransactionListResult(c *core.Context, user *models
transaction := transactions[i] transaction := transactions[i]
if transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN { if transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN {
transaction = a.transactions.GetRelatedTransferTransaction(transaction, transaction.RelatedId) transaction = a.transactions.GetRelatedTransferTransaction(transaction)
} }
transactionEditable := transaction.IsEditable(user, utcOffset, allAccounts[transaction.AccountId], allAccounts[transaction.RelatedAccountId]) transactionEditable := transaction.IsEditable(user, utcOffset, allAccounts[transaction.AccountId], allAccounts[transaction.RelatedAccountId])
+17 -6
View File
@@ -186,7 +186,19 @@ func (s *TransactionService) CreateTransaction(transaction *models.Transaction,
now := time.Now().Unix() now := time.Now().Unix()
transaction.TransactionId = s.GenerateUuid(uuid.UUID_TYPE_TRANSACTION) needUuidCount := 1
if transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_OUT || transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN {
needUuidCount = 2
}
uuids := s.GenerateUuids(uuid.UUID_TYPE_TRANSACTION, uint8(needUuidCount))
transaction.TransactionId = uuids[0]
if transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_OUT || transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN {
transaction.RelatedId = uuids[1]
}
transaction.TransactionTime = utils.GetMinTransactionTimeFromUnixTime(utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime)) transaction.TransactionTime = utils.GetMinTransactionTimeFromUnixTime(utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime))
transaction.CreatedUnixTime = now transaction.CreatedUnixTime = now
@@ -256,8 +268,7 @@ func (s *TransactionService) CreateTransaction(transaction *models.Transaction,
var relatedTransaction *models.Transaction var relatedTransaction *models.Transaction
if transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_OUT || transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN { if transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_OUT || transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN {
relatedTransaction = s.GetRelatedTransferTransaction(transaction, s.GenerateUuid(uuid.UUID_TYPE_TRANSACTION)) relatedTransaction = s.GetRelatedTransferTransaction(transaction)
transaction.RelatedId = relatedTransaction.TransactionId
} }
createdRows, err := sess.Insert(transaction) createdRows, err := sess.Insert(transaction)
@@ -537,7 +548,7 @@ func (s *TransactionService) ModifyTransaction(transaction *models.Transaction,
} }
if transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_OUT || transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN { if transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_OUT || transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN {
relatedTransaction := s.GetRelatedTransferTransaction(transaction, transaction.RelatedId) relatedTransaction := s.GetRelatedTransferTransaction(transaction)
if utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime) != utils.GetUnixTimeFromTransactionTime(relatedTransaction.TransactionTime) { if utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime) != utils.GetUnixTimeFromTransactionTime(relatedTransaction.TransactionTime) {
return errs.ErrTooMuchTransactionInOneSecond return errs.ErrTooMuchTransactionInOneSecond
@@ -905,7 +916,7 @@ func (s *TransactionService) DeleteAllTransactions(uid int64) error {
} }
// GetRelatedTransferTransaction returns the related transaction for transfer transaction // GetRelatedTransferTransaction returns the related transaction for transfer transaction
func (s *TransactionService) GetRelatedTransferTransaction(originalTransaction *models.Transaction, relatedTransactionId int64) *models.Transaction { func (s *TransactionService) GetRelatedTransferTransaction(originalTransaction *models.Transaction) *models.Transaction {
var relatedType models.TransactionDbType var relatedType models.TransactionDbType
var relatedTransactionTime int64 var relatedTransactionTime int64
@@ -920,7 +931,7 @@ func (s *TransactionService) GetRelatedTransferTransaction(originalTransaction *
} }
relatedTransaction := &models.Transaction{ relatedTransaction := &models.Transaction{
TransactionId: relatedTransactionId, TransactionId: originalTransaction.RelatedId,
Uid: originalTransaction.Uid, Uid: originalTransaction.Uid,
Deleted: originalTransaction.Deleted, Deleted: originalTransaction.Deleted,
Type: relatedType, Type: relatedType,