code refactor
This commit is contained in:
@@ -121,7 +121,7 @@ func (s *AccountService) CreateAccounts(mainAccount *models.Account, childrenAcc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
transactionTime := utils.GetTransactionTimeFromUnixTime(now)
|
transactionTime := utils.GetMinTransactionTimeFromUnixTime(now)
|
||||||
|
|
||||||
for i := 0; i < len(allAccounts); i++ {
|
for i := 0; i < len(allAccounts); i++ {
|
||||||
allAccounts[i].Deleted = false
|
allAccounts[i].Deleted = false
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ func (s *TransactionService) CreateTransaction(transaction *models.Transaction)
|
|||||||
}
|
}
|
||||||
|
|
||||||
transaction.TransactionId = s.GenerateUuid(uuid.UUID_TYPE_TRANSACTION)
|
transaction.TransactionId = s.GenerateUuid(uuid.UUID_TYPE_TRANSACTION)
|
||||||
transaction.TransactionTime = (transaction.TransactionTime / 1000) * 1000
|
transaction.TransactionTime = utils.GetMinTransactionTimeFromUnixTime(utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime))
|
||||||
|
|
||||||
transaction.CreatedUnixTime = time.Now().Unix()
|
transaction.CreatedUnixTime = time.Now().Unix()
|
||||||
transaction.UpdatedUnixTime = time.Now().Unix()
|
transaction.UpdatedUnixTime = time.Now().Unix()
|
||||||
@@ -222,16 +222,16 @@ func (s *TransactionService) CreateTransaction(transaction *models.Transaction)
|
|||||||
|
|
||||||
if err != nil || createdRows < 1 { // maybe another transaction has same time
|
if err != nil || createdRows < 1 { // maybe another transaction has same time
|
||||||
sameSecondLatestTransaction := &models.Transaction{}
|
sameSecondLatestTransaction := &models.Transaction{}
|
||||||
currentSecondUnixtime := (transaction.TransactionTime / 1000) * 1000
|
minTransactionTime := utils.GetMinTransactionTimeFromUnixTime(utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime))
|
||||||
nextSecondUnixtime := currentSecondUnixtime + 1000
|
maxTransactionTime := utils.GetMaxTransactionTimeFromUnixTime(utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime))
|
||||||
|
|
||||||
has, err = sess.Where("uid=? AND deleted=? AND transaction_time>=? AND transaction_time<?", transaction.Uid, false, currentSecondUnixtime, nextSecondUnixtime).OrderBy("transaction_time desc").Limit(1).Get(sameSecondLatestTransaction)
|
has, err = sess.Where("uid=? AND deleted=? AND transaction_time>=? AND transaction_time<=?", transaction.Uid, false, minTransactionTime, maxTransactionTime).OrderBy("transaction_time desc").Limit(1).Get(sameSecondLatestTransaction)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
} else if !has {
|
} else if !has {
|
||||||
return errs.ErrDatabaseOperationFailed
|
return errs.ErrDatabaseOperationFailed
|
||||||
} else if sameSecondLatestTransaction.TransactionTime == nextSecondUnixtime - 1 {
|
} else if sameSecondLatestTransaction.TransactionTime == maxTransactionTime - 1 {
|
||||||
return errs.ErrTooMuchTransactionInOneSecond
|
return errs.ErrTooMuchTransactionInOneSecond
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -306,7 +306,7 @@ func (s *TransactionService) ModifyTransaction(transaction *models.Transaction)
|
|||||||
|
|
||||||
now := time.Now().Unix()
|
now := time.Now().Unix()
|
||||||
|
|
||||||
transaction.TransactionTime = (transaction.TransactionTime / 1000) * 1000
|
transaction.TransactionTime = utils.GetMinTransactionTimeFromUnixTime(utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime))
|
||||||
transaction.UpdatedUnixTime = now
|
transaction.UpdatedUnixTime = now
|
||||||
updateCols = append(updateCols, "updated_unix_time")
|
updateCols = append(updateCols, "updated_unix_time")
|
||||||
|
|
||||||
@@ -394,16 +394,16 @@ func (s *TransactionService) ModifyTransaction(transaction *models.Transaction)
|
|||||||
updateCols = append(updateCols, "category_id")
|
updateCols = append(updateCols, "category_id")
|
||||||
}
|
}
|
||||||
|
|
||||||
if transaction.TransactionTime / 1000 != oldTransaction.TransactionTime / 1000 {
|
if utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime) != utils.GetUnixTimeFromTransactionTime(oldTransaction.TransactionTime) {
|
||||||
sameSecondLatestTransaction := &models.Transaction{}
|
sameSecondLatestTransaction := &models.Transaction{}
|
||||||
currentSecondUnixtime := (transaction.TransactionTime / 1000) * 1000
|
minTransactionTime := utils.GetMinTransactionTimeFromUnixTime(utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime))
|
||||||
nextSecondUnixtime := currentSecondUnixtime + 1000
|
maxTransactionTime := utils.GetMaxTransactionTimeFromUnixTime(utils.GetUnixTimeFromTransactionTime(transaction.TransactionTime))
|
||||||
|
|
||||||
has, err = sess.Where("uid=? AND deleted=? AND transaction_time>=? AND transaction_time<?", transaction.Uid, false, currentSecondUnixtime, nextSecondUnixtime).OrderBy("transaction_time desc").Limit(1).Get(sameSecondLatestTransaction)
|
has, err = sess.Where("uid=? AND deleted=? AND transaction_time>=? AND transaction_time<=?", transaction.Uid, false, minTransactionTime, maxTransactionTime).OrderBy("transaction_time desc").Limit(1).Get(sameSecondLatestTransaction)
|
||||||
|
|
||||||
if has && sameSecondLatestTransaction.TransactionTime < nextSecondUnixtime - 1 {
|
if has && sameSecondLatestTransaction.TransactionTime < maxTransactionTime - 1 {
|
||||||
transaction.TransactionTime = sameSecondLatestTransaction.TransactionTime + 1
|
transaction.TransactionTime = sameSecondLatestTransaction.TransactionTime + 1
|
||||||
} else if has && sameSecondLatestTransaction.TransactionTime == nextSecondUnixtime - 1 {
|
} else if has && sameSecondLatestTransaction.TransactionTime == maxTransactionTime - 1 {
|
||||||
return errs.ErrTooMuchTransactionInOneSecond
|
return errs.ErrTooMuchTransactionInOneSecond
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,14 @@ func ParseFromLongDateTime(t string) (time.Time, error) {
|
|||||||
return time.Parse(LongDateTimeFormat, t)
|
return time.Parse(LongDateTimeFormat, t)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetTransactionTimeFromUnixTime(unixTime int64) int64 {
|
func GetMinTransactionTimeFromUnixTime(unixTime int64) int64 {
|
||||||
return unixTime * 1000
|
return unixTime * 1000
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetMaxTransactionTimeFromUnixTime(unixTime int64) int64 {
|
||||||
|
return unixTime * 1000 + 999
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetUnixTimeFromTransactionTime(transactionTime int64) int64 {
|
||||||
|
return transactionTime / 1000
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user