mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-19 01:04:25 +08:00
fix tag ids request and response type error
This commit is contained in:
+17
-3
@@ -161,6 +161,13 @@ func (a *TransactionsApi) TransactionCreateHandler(c *core.Context) (interface{}
|
|||||||
return nil, errs.NewIncompleteOrIncorrectSubmissionError(err)
|
return nil, errs.NewIncompleteOrIncorrectSubmissionError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tagIds, err := utils.StringArrayToInt64Array(transactionCreateReq.TagIds)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.WarnfWithRequestId(c, "[transactions.TransactionCreateHandler] parse tag ids failed, because %s", err.Error())
|
||||||
|
return nil, errs.ErrTransactionTagIdInvalid
|
||||||
|
}
|
||||||
|
|
||||||
if transactionCreateReq.Type < models.TRANSACTION_TYPE_MODIFY_BALANCE || transactionCreateReq.Type > models.TRANSACTION_TYPE_TRANSFER {
|
if transactionCreateReq.Type < models.TRANSACTION_TYPE_MODIFY_BALANCE || transactionCreateReq.Type > models.TRANSACTION_TYPE_TRANSFER {
|
||||||
log.WarnfWithRequestId(c, "[transactions.TransactionCreateHandler] transaction type is invalid")
|
log.WarnfWithRequestId(c, "[transactions.TransactionCreateHandler] transaction type is invalid")
|
||||||
return nil, errs.ErrTransactionTypeInvalid
|
return nil, errs.ErrTransactionTypeInvalid
|
||||||
@@ -187,7 +194,7 @@ func (a *TransactionsApi) TransactionCreateHandler(c *core.Context) (interface{}
|
|||||||
uid := c.GetCurrentUid()
|
uid := c.GetCurrentUid()
|
||||||
transaction := a.createNewTransactionModel(uid, &transactionCreateReq)
|
transaction := a.createNewTransactionModel(uid, &transactionCreateReq)
|
||||||
|
|
||||||
err = a.transactions.CreateTransaction(transaction, transactionCreateReq.TagIds)
|
err = a.transactions.CreateTransaction(transaction, tagIds)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.ErrorfWithRequestId(c, "[transactions.TransactionCreateHandler] failed to create transaction \"id:%d\" for user \"uid:%d\", because %s", transaction.TransactionId, uid, err.Error())
|
log.ErrorfWithRequestId(c, "[transactions.TransactionCreateHandler] failed to create transaction \"id:%d\" for user \"uid:%d\", because %s", transaction.TransactionId, uid, err.Error())
|
||||||
@@ -211,6 +218,13 @@ func (a *TransactionsApi) TransactionModifyHandler(c *core.Context) (interface{}
|
|||||||
return nil, errs.NewIncompleteOrIncorrectSubmissionError(err)
|
return nil, errs.NewIncompleteOrIncorrectSubmissionError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tagIds, err := utils.StringArrayToInt64Array(transactionModifyReq.TagIds)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.WarnfWithRequestId(c, "[transactions.TransactionModifyHandler] parse tag ids failed, because %s", err.Error())
|
||||||
|
return nil, errs.ErrTransactionTagIdInvalid
|
||||||
|
}
|
||||||
|
|
||||||
uid := c.GetCurrentUid()
|
uid := c.GetCurrentUid()
|
||||||
transaction, err := a.transactions.GetTransactionByTransactionId(uid, transactionModifyReq.Id)
|
transaction, err := a.transactions.GetTransactionByTransactionId(uid, transactionModifyReq.Id)
|
||||||
|
|
||||||
@@ -227,8 +241,8 @@ func (a *TransactionsApi) TransactionModifyHandler(c *core.Context) (interface{}
|
|||||||
}
|
}
|
||||||
|
|
||||||
transactionTagIds := allTransactionTagIds[transaction.TransactionId]
|
transactionTagIds := allTransactionTagIds[transaction.TransactionId]
|
||||||
addTransactionTagIds := utils.Int64SliceMinus(transactionModifyReq.TagIds, transactionTagIds)
|
addTransactionTagIds := utils.Int64SliceMinus(tagIds, transactionTagIds)
|
||||||
removeTransactionTagIds := utils.Int64SliceMinus(transactionTagIds, transactionModifyReq.TagIds)
|
removeTransactionTagIds := utils.Int64SliceMinus(transactionTagIds, tagIds)
|
||||||
|
|
||||||
newTransaction := &models.Transaction{
|
newTransaction := &models.Transaction{
|
||||||
TransactionId: transaction.TransactionId,
|
TransactionId: transaction.TransactionId,
|
||||||
|
|||||||
+12
-12
@@ -40,21 +40,21 @@ type TransactionCreateRequest struct {
|
|||||||
DestinationAccountId int64 `json:"destinationAccountId,string" binding:"required,min=1"`
|
DestinationAccountId int64 `json:"destinationAccountId,string" binding:"required,min=1"`
|
||||||
SourceAmount int64 `json:"sourceAmount" binding:"min=-99999999999,max=99999999999"`
|
SourceAmount int64 `json:"sourceAmount" binding:"min=-99999999999,max=99999999999"`
|
||||||
DestinationAmount int64 `json:"destinationAmount" binding:"min=-99999999999,max=99999999999"`
|
DestinationAmount int64 `json:"destinationAmount" binding:"min=-99999999999,max=99999999999"`
|
||||||
TagIds []int64 `json:"tagIds,string"`
|
TagIds []string `json:"tagIds"`
|
||||||
Comment string `json:"comment" binding:"max=255"`
|
Comment string `json:"comment" binding:"max=255"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// TransactionModifyRequest represents all parameters of transaction modification request
|
// TransactionModifyRequest represents all parameters of transaction modification request
|
||||||
type TransactionModifyRequest struct {
|
type TransactionModifyRequest struct {
|
||||||
Id int64 `json:"id,string" binding:"required,min=1"`
|
Id int64 `json:"id,string" binding:"required,min=1"`
|
||||||
CategoryId int64 `json:"categoryId,string"`
|
CategoryId int64 `json:"categoryId,string"`
|
||||||
Time int64 `json:"time" binding:"required,min=1"`
|
Time int64 `json:"time" binding:"required,min=1"`
|
||||||
SourceAccountId int64 `json:"sourceAccountId,string" binding:"required,min=1"`
|
SourceAccountId int64 `json:"sourceAccountId,string" binding:"required,min=1"`
|
||||||
DestinationAccountId int64 `json:"destinationAccountId,string" binding:"required,min=1"`
|
DestinationAccountId int64 `json:"destinationAccountId,string" binding:"required,min=1"`
|
||||||
SourceAmount int64 `json:"sourceAmount" binding:"min=-99999999999,max=99999999999"`
|
SourceAmount int64 `json:"sourceAmount" binding:"min=-99999999999,max=99999999999"`
|
||||||
DestinationAmount int64 `json:"destinationAmount" binding:"min=-99999999999,max=99999999999"`
|
DestinationAmount int64 `json:"destinationAmount" binding:"min=-99999999999,max=99999999999"`
|
||||||
TagIds []int64 `json:"tagIds,string"`
|
TagIds []string `json:"tagIds"`
|
||||||
Comment string `json:"comment" binding:"max=255"`
|
Comment string `json:"comment" binding:"max=255"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// TransactionListByMaxTimeRequest represents all parameters of transaction listing by max time request
|
// TransactionListByMaxTimeRequest represents all parameters of transaction listing by max time request
|
||||||
@@ -92,7 +92,7 @@ type TransactionInfoResponse struct {
|
|||||||
DestinationAccountId int64 `json:"destinationAccountId,string"`
|
DestinationAccountId int64 `json:"destinationAccountId,string"`
|
||||||
SourceAmount int64 `json:"sourceAmount"`
|
SourceAmount int64 `json:"sourceAmount"`
|
||||||
DestinationAmount int64 `json:"destinationAmount"`
|
DestinationAmount int64 `json:"destinationAmount"`
|
||||||
TagIds []int64 `json:"tagIds,string"`
|
TagIds []string `json:"tagIds"`
|
||||||
Comment string `json:"comment"`
|
Comment string `json:"comment"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,7 +114,7 @@ func (c *Transaction) ToTransactionInfoResponse(tagIds []int64) *TransactionInfo
|
|||||||
DestinationAccountId: c.DestinationAccountId,
|
DestinationAccountId: c.DestinationAccountId,
|
||||||
SourceAmount: c.SourceAmount,
|
SourceAmount: c.SourceAmount,
|
||||||
DestinationAmount: c.DestinationAmount,
|
DestinationAmount: c.DestinationAmount,
|
||||||
TagIds: tagIds,
|
TagIds: utils.Int64ArrayToStringArray(tagIds),
|
||||||
Comment: c.Comment,
|
Comment: c.Comment,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,11 +29,39 @@ func Int64ToString(num int64) string {
|
|||||||
return strconv.FormatInt(num, 10)
|
return strconv.FormatInt(num, 10)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Int64ArrayToStringArray returns a array of textual representation of these numbers
|
||||||
|
func Int64ArrayToStringArray(num []int64) []string {
|
||||||
|
ret := make([]string, 0, len(num))
|
||||||
|
|
||||||
|
for i := 0; i < len(num); i++ {
|
||||||
|
ret = append(ret, Int64ToString(num[i]))
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
// StringToInt64 parses a textual representation of the number to int64
|
// StringToInt64 parses a textual representation of the number to int64
|
||||||
func StringToInt64(str string) (int64, error) {
|
func StringToInt64(str string) (int64, error) {
|
||||||
return strconv.ParseInt(str, 10, 64)
|
return strconv.ParseInt(str, 10, 64)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// StringArrayToInt64Array parses a series textual representations of the numbers to int64 array
|
||||||
|
func StringArrayToInt64Array(strs []string) ([]int64, error) {
|
||||||
|
ret := make([]int64, 0, len(strs))
|
||||||
|
|
||||||
|
for i := 0; i < len(strs); i++ {
|
||||||
|
val, err := StringToInt64(strs[i])
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = append(ret, val)
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret, nil
|
||||||
|
}
|
||||||
|
|
||||||
// StringTryToInt64 parses a textual representation of the number to int64 if str is valid,
|
// StringTryToInt64 parses a textual representation of the number to int64 if str is valid,
|
||||||
// or returns the default value
|
// or returns the default value
|
||||||
func StringTryToInt64(str string, defaultValue int64) int64 {
|
func StringTryToInt64(str string, defaultValue int64) int64 {
|
||||||
|
|||||||
Reference in New Issue
Block a user