54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package blockchainservicelogic
|
||
|
||
import (
|
||
"blockchain/internal/domain/usecase"
|
||
"context"
|
||
"fmt"
|
||
"time"
|
||
|
||
"blockchain/gen_result/pb/code.30cm.net/digimon/app-cloudep-blockchain"
|
||
"blockchain/internal/svc"
|
||
|
||
"github.com/zeromicro/go-zero/core/logx"
|
||
)
|
||
|
||
type ListCandleDataLogic struct {
|
||
ctx context.Context
|
||
svcCtx *svc.ServiceContext
|
||
logx.Logger
|
||
}
|
||
|
||
func NewListCandleDataLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListCandleDataLogic {
|
||
return &ListCandleDataLogic{
|
||
ctx: ctx,
|
||
svcCtx: svcCtx,
|
||
Logger: logx.WithContext(ctx),
|
||
}
|
||
}
|
||
|
||
func (l *ListCandleDataLogic) ListCandleData(in *app_cloudep_blockchain.HistoryReq) (*app_cloudep_blockchain.ListCandleDataResp, error) {
|
||
// 1) 先驗證輸入(避免把錯誤時間丟進背景 goroutine)
|
||
st, err := time.Parse(time.RFC3339, in.GetStartTime())
|
||
if err != nil {
|
||
return nil, fmt.Errorf("invalid startTime (RFC3339): %w", err)
|
||
}
|
||
et, err := time.Parse(time.RFC3339, in.GetEndTime())
|
||
if err != nil {
|
||
return nil, fmt.Errorf("invalid endTime (RFC3339): %w", err)
|
||
}
|
||
|
||
kline, err := l.svcCtx.BinanceDataSource.ListKline(l.ctx, usecase.QueryKline{
|
||
Symbol: in.GetSymbol(),
|
||
Interval: in.GetInterval(),
|
||
StartTime: st.UnixMilli(),
|
||
EndTime: et.UnixMilli(),
|
||
})
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
fmt.Println(kline)
|
||
|
||
return &app_cloudep_blockchain.ListCandleDataResp{}, nil
|
||
}
|