fix the bug that the transaction time was not correctly saved into the transaction tag index table
This commit is contained in:
@@ -769,7 +769,7 @@ func (a *TransactionsApi) TransactionModifyHandler(c *core.Context) (any, *errs.
|
||||
return nil, errs.ErrCannotModifyTransactionWithThisTransactionTime
|
||||
}
|
||||
|
||||
err = a.transactions.ModifyTransaction(c, newTransaction, addTransactionTagIds, removeTransactionTagIds)
|
||||
err = a.transactions.ModifyTransaction(c, newTransaction, len(transactionTagIds), addTransactionTagIds, removeTransactionTagIds)
|
||||
|
||||
if err != nil {
|
||||
log.ErrorfWithRequestId(c, "[transactions.TransactionModifyHandler] failed to update transaction \"id:%d\" for user \"uid:%d\", because %s", transactionModifyReq.Id, uid, err.Error())
|
||||
|
||||
@@ -356,6 +356,8 @@ func (s *TransactionService) CreateTransaction(c *core.Context, transaction *mod
|
||||
if len(transactionTagIndexs) > 0 {
|
||||
for i := 0; i < len(transactionTagIndexs); i++ {
|
||||
transactionTagIndex := transactionTagIndexs[i]
|
||||
transactionTagIndex.TransactionTime = transaction.TransactionTime
|
||||
|
||||
_, err := sess.Insert(transactionTagIndex)
|
||||
|
||||
if err != nil {
|
||||
@@ -419,7 +421,7 @@ func (s *TransactionService) CreateTransaction(c *core.Context, transaction *mod
|
||||
}
|
||||
|
||||
// ModifyTransaction saves an existed transaction to database
|
||||
func (s *TransactionService) ModifyTransaction(c *core.Context, transaction *models.Transaction, addTagIds []int64, removeTagIds []int64) error {
|
||||
func (s *TransactionService) ModifyTransaction(c *core.Context, transaction *models.Transaction, currentTagIdsCount int, addTagIds []int64, removeTagIds []int64) error {
|
||||
if transaction.Uid <= 0 {
|
||||
return errs.ErrUserIdInvalid
|
||||
}
|
||||
@@ -517,6 +519,8 @@ func (s *TransactionService) ModifyTransaction(c *core.Context, transaction *mod
|
||||
updateCols = append(updateCols, "category_id")
|
||||
}
|
||||
|
||||
modifyTransactionTime := false
|
||||
|
||||
if utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime) != utils.GetUnixTimeFromTransactionTime(oldTransaction.TransactionTime) {
|
||||
sameSecondLatestTransaction := &models.Transaction{}
|
||||
minTransactionTime := utils.GetMinTransactionTimeFromUnixTime(utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime))
|
||||
@@ -535,6 +539,7 @@ func (s *TransactionService) ModifyTransaction(c *core.Context, transaction *mod
|
||||
}
|
||||
|
||||
updateCols = append(updateCols, "transaction_time")
|
||||
modifyTransactionTime = true
|
||||
}
|
||||
|
||||
if transaction.TimezoneUtcOffset != oldTransaction.TimezoneUtcOffset {
|
||||
@@ -633,12 +638,24 @@ func (s *TransactionService) ModifyTransaction(c *core.Context, transaction *mod
|
||||
if len(transactionTagIndexs) > 0 {
|
||||
for i := 0; i < len(transactionTagIndexs); i++ {
|
||||
transactionTagIndex := transactionTagIndexs[i]
|
||||
transactionTagIndex.TransactionTime = transaction.TransactionTime
|
||||
|
||||
_, err := sess.Insert(transactionTagIndex)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else if len(transactionTagIndexs) == 0 && currentTagIdsCount > 0 && modifyTransactionTime {
|
||||
tagIndexUpdateModel := &models.TransactionTagIndex{
|
||||
TransactionTime: transaction.TransactionTime,
|
||||
}
|
||||
|
||||
_, err := sess.Where("uid=? AND deleted=? AND transaction_id=?", transaction.Uid, false, transaction.TransactionId).Update(tagIndexUpdateModel)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// Update account table
|
||||
|
||||
Reference in New Issue
Block a user