fix the bug that the transaction time was not correctly saved into the transaction tag index table

This commit is contained in:
MaysWind
2024-07-08 23:54:23 +08:00
parent ee003160e5
commit a371058096
2 changed files with 19 additions and 2 deletions
+1 -1
View File
@@ -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())
+18 -1
View File
@@ -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