add candlestick chart for account balance trends

This commit is contained in:
MaysWind
2025-08-05 23:29:49 +08:00
parent 0d55912f6c
commit 7283b724b1
24 changed files with 292 additions and 64 deletions
+6 -3
View File
@@ -368,17 +368,20 @@ func (a *TransactionsApi) TransactionReconciliationStatementHandler(c *core.WebC
for i := 0; i < len(transactionResult); i++ {
transactionResult := transactionResult[i]
accountBalance := int64(0)
accountOpeningBalance := int64(0)
accountClosingBalance := int64(0)
if transactionWithBalance, exists := transactionAccountBalanceMap[transactionResult.Id]; exists {
accountBalance = transactionWithBalance.AccountBalance
accountOpeningBalance = transactionWithBalance.AccountOpeningBalance
accountClosingBalance = transactionWithBalance.AccountClosingBalance
} else {
log.Warnf(c, "[transactions.TransactionReconciliationStatementHandler] missing account balance for transaction \"id:%d\" of user \"uid:%d\"", transactionResult.Id, uid)
}
responseItems[i] = &models.TransactionReconciliationStatementResponseItem{
TransactionInfoResponse: transactionResult,
AccountBalance: accountBalance,
AccountOpeningBalance: accountOpeningBalance,
AccountClosingBalance: accountClosingBalance,
}
}
+4 -2
View File
@@ -123,7 +123,8 @@ type Transaction struct {
// TransactionWithAccountBalance represents a transaction item with account balance
type TransactionWithAccountBalance struct {
*Transaction
AccountBalance int64
AccountOpeningBalance int64
AccountClosingBalance int64
}
// TransactionGeoLocationRequest represents all parameters of transaction geographic location info update request
@@ -338,7 +339,8 @@ type TransactionInfoPageWrapperResponse2 struct {
// TransactionReconciliationStatementResponseItem represents a transaction reconciliation statement response
type TransactionReconciliationStatementResponseItem struct {
*TransactionInfoResponse
AccountBalance int64 `json:"accountBalance"`
AccountOpeningBalance int64 `json:"accountOpeningBalance"`
AccountClosingBalance int64 `json:"accountClosingBalance"`
}
// TransactionReconciliationStatementResponse represents the response of all transaction reconciliation statement response
+6 -2
View File
@@ -142,6 +142,7 @@ func (s *TransactionService) GetAllTransactionsWithAccountBalanceByMaxTime(c cor
totalOutflows := int64(0)
openingBalance := int64(0)
accumulatedBalance := int64(0)
lastAccumulatedBalance := int64(0)
for i := len(allTransactions) - 1; i >= 0; i-- {
transaction := allTransactions[i]
@@ -163,6 +164,7 @@ func (s *TransactionService) GetAllTransactionsWithAccountBalanceByMaxTime(c cor
if transaction.TransactionTime < minTransactionTime {
openingBalance = accumulatedBalance
lastAccumulatedBalance = accumulatedBalance
continue
}
@@ -183,10 +185,12 @@ func (s *TransactionService) GetAllTransactionsWithAccountBalanceByMaxTime(c cor
}
transactionsAndAccountBalance := &models.TransactionWithAccountBalance{
Transaction: transaction,
AccountBalance: accumulatedBalance,
Transaction: transaction,
AccountOpeningBalance: lastAccumulatedBalance,
AccountClosingBalance: accumulatedBalance,
}
lastAccumulatedBalance = accumulatedBalance
allTransactionsAndAccountBalance = append(allTransactionsAndAccountBalance, transactionsAndAccountBalance)
}