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 }