46 lines
1.0 KiB
Go
46 lines
1.0 KiB
Go
|
package binance
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"strconv"
|
||
|
"time"
|
||
|
|
||
|
"git.qtrade.icu/lychiyu/bbgo/pkg/exchange/binance/binanceapi"
|
||
|
"git.qtrade.icu/lychiyu/bbgo/pkg/types"
|
||
|
)
|
||
|
|
||
|
func (e *Exchange) QueryRewards(ctx context.Context, startTime time.Time) ([]types.Reward, error) {
|
||
|
req := e.client2.NewGetSpotRebateHistoryRequest()
|
||
|
req.StartTime(startTime)
|
||
|
history, err := req.Do(ctx)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
var rewards []types.Reward
|
||
|
|
||
|
for _, entry := range history {
|
||
|
t := types.RewardCommission
|
||
|
switch entry.Type {
|
||
|
case binanceapi.RebateTypeReferralKickback:
|
||
|
t = types.RewardReferralKickback
|
||
|
case binanceapi.RebateTypeCommission:
|
||
|
// use the default type
|
||
|
}
|
||
|
|
||
|
rewards = append(rewards, types.Reward{
|
||
|
UUID: strconv.FormatInt(entry.UpdateTime.Time().UnixMilli(), 10),
|
||
|
Exchange: types.ExchangeBinance,
|
||
|
Type: t,
|
||
|
Currency: entry.Asset,
|
||
|
Quantity: entry.Amount,
|
||
|
State: "done",
|
||
|
Note: "",
|
||
|
Spent: false,
|
||
|
CreatedAt: types.Time(entry.UpdateTime),
|
||
|
})
|
||
|
}
|
||
|
|
||
|
return rewards, nil
|
||
|
}
|