mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-19 09:14:27 +08:00
support changing tags order when editing transaction
This commit is contained in:
@@ -320,8 +320,6 @@ func (a *TransactionsApi) TransactionModifyHandler(c *core.Context) (interface{}
|
|||||||
}
|
}
|
||||||
|
|
||||||
transactionTagIds := allTransactionTagIds[transaction.TransactionId]
|
transactionTagIds := allTransactionTagIds[transaction.TransactionId]
|
||||||
addTransactionTagIds := utils.Int64SliceMinus(tagIds, transactionTagIds)
|
|
||||||
removeTransactionTagIds := utils.Int64SliceMinus(transactionTagIds, tagIds)
|
|
||||||
|
|
||||||
newTransaction := &models.Transaction{
|
newTransaction := &models.Transaction{
|
||||||
TransactionId: transaction.TransactionId,
|
TransactionId: transaction.TransactionId,
|
||||||
@@ -345,11 +343,18 @@ func (a *TransactionsApi) TransactionModifyHandler(c *core.Context) (interface{}
|
|||||||
(transaction.Type != models.TRANSACTION_DB_TYPE_TRANSFER_OUT || newTransaction.RelatedAccountId == transaction.RelatedAccountId) &&
|
(transaction.Type != models.TRANSACTION_DB_TYPE_TRANSFER_OUT || newTransaction.RelatedAccountId == transaction.RelatedAccountId) &&
|
||||||
(transaction.Type != models.TRANSACTION_DB_TYPE_TRANSFER_OUT || newTransaction.RelatedAccountAmount == transaction.RelatedAccountAmount) &&
|
(transaction.Type != models.TRANSACTION_DB_TYPE_TRANSFER_OUT || newTransaction.RelatedAccountAmount == transaction.RelatedAccountAmount) &&
|
||||||
newTransaction.Comment == transaction.Comment &&
|
newTransaction.Comment == transaction.Comment &&
|
||||||
len(addTransactionTagIds) < 1 &&
|
utils.Int64SliceEquals(tagIds, transactionTagIds) {
|
||||||
len(removeTransactionTagIds) < 1 {
|
|
||||||
return nil, errs.ErrNothingWillBeUpdated
|
return nil, errs.ErrNothingWillBeUpdated
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var addTransactionTagIds []int64
|
||||||
|
var removeTransactionTagIds []int64
|
||||||
|
|
||||||
|
if !utils.Int64SliceEquals(tagIds, transactionTagIds) {
|
||||||
|
removeTransactionTagIds = transactionTagIds
|
||||||
|
addTransactionTagIds = tagIds
|
||||||
|
}
|
||||||
|
|
||||||
err = a.transactions.ModifyTransaction(newTransaction, addTransactionTagIds, removeTransactionTagIds)
|
err = a.transactions.ModifyTransaction(newTransaction, addTransactionTagIds, removeTransactionTagIds)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -1,5 +1,24 @@
|
|||||||
package utils
|
package utils
|
||||||
|
|
||||||
|
// Int64SliceEquals returns whether specific two int64 arrays equal
|
||||||
|
func Int64SliceEquals(s1, s2 []int64) bool {
|
||||||
|
if (s1 == nil) != (s2 == nil) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(s1) != len(s2) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < len(s1); i++ {
|
||||||
|
if s1[i] != s2[i] {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// Int64SliceMinus returns a int64 array which contains items in s1 but not in s2
|
// Int64SliceMinus returns a int64 array which contains items in s1 but not in s2
|
||||||
func Int64SliceMinus(s1, s2 []int64) []int64 {
|
func Int64SliceMinus(s1, s2 []int64) []int64 {
|
||||||
if s1 == nil {
|
if s1 == nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user