mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-21 02:04:26 +08:00
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
|
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 {
|
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())
|
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 {
|
if len(transactionTagIndexs) > 0 {
|
||||||
for i := 0; i < len(transactionTagIndexs); i++ {
|
for i := 0; i < len(transactionTagIndexs); i++ {
|
||||||
transactionTagIndex := transactionTagIndexs[i]
|
transactionTagIndex := transactionTagIndexs[i]
|
||||||
|
transactionTagIndex.TransactionTime = transaction.TransactionTime
|
||||||
|
|
||||||
_, err := sess.Insert(transactionTagIndex)
|
_, err := sess.Insert(transactionTagIndex)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -419,7 +421,7 @@ func (s *TransactionService) CreateTransaction(c *core.Context, transaction *mod
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ModifyTransaction saves an existed transaction to database
|
// 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 {
|
if transaction.Uid <= 0 {
|
||||||
return errs.ErrUserIdInvalid
|
return errs.ErrUserIdInvalid
|
||||||
}
|
}
|
||||||
@@ -517,6 +519,8 @@ func (s *TransactionService) ModifyTransaction(c *core.Context, transaction *mod
|
|||||||
updateCols = append(updateCols, "category_id")
|
updateCols = append(updateCols, "category_id")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
modifyTransactionTime := false
|
||||||
|
|
||||||
if utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime) != utils.GetUnixTimeFromTransactionTime(oldTransaction.TransactionTime) {
|
if utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime) != utils.GetUnixTimeFromTransactionTime(oldTransaction.TransactionTime) {
|
||||||
sameSecondLatestTransaction := &models.Transaction{}
|
sameSecondLatestTransaction := &models.Transaction{}
|
||||||
minTransactionTime := utils.GetMinTransactionTimeFromUnixTime(utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime))
|
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")
|
updateCols = append(updateCols, "transaction_time")
|
||||||
|
modifyTransactionTime = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if transaction.TimezoneUtcOffset != oldTransaction.TimezoneUtcOffset {
|
if transaction.TimezoneUtcOffset != oldTransaction.TimezoneUtcOffset {
|
||||||
@@ -633,12 +638,24 @@ func (s *TransactionService) ModifyTransaction(c *core.Context, transaction *mod
|
|||||||
if len(transactionTagIndexs) > 0 {
|
if len(transactionTagIndexs) > 0 {
|
||||||
for i := 0; i < len(transactionTagIndexs); i++ {
|
for i := 0; i < len(transactionTagIndexs); i++ {
|
||||||
transactionTagIndex := transactionTagIndexs[i]
|
transactionTagIndex := transactionTagIndexs[i]
|
||||||
|
transactionTagIndex.TransactionTime = transaction.TransactionTime
|
||||||
|
|
||||||
_, err := sess.Insert(transactionTagIndex)
|
_, err := sess.Insert(transactionTagIndex)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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
|
// Update account table
|
||||||
|
|||||||
Reference in New Issue
Block a user