//package top.baogutang.admin.schedule;
//
//import cn.hutool.core.bean.BeanUtil;
//import com.binance.connector.client.SpotClient;
//import com.fasterxml.jackson.core.type.TypeReference;
//import com.xxl.job.core.biz.model.ReturnT;
//import com.xxl.job.core.handler.IJobHandler;
//import com.xxl.job.core.handler.annotation.XxlJob;
//import lombok.Data;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.cloud.context.config.annotation.RefreshScope;
//import org.springframework.stereotype.Component;
//import top.baogutang.admin.utils.DingTalkMsgPushUtils;
//import top.baogutang.admin.utils.OkCoinKLineUtil;
//import top.baogutang.common.domain.BinanceResults;
//import top.baogutang.common.utils.JacksonUtil;
//
//import javax.annotation.Resource;
//import java.text.SimpleDateFormat;
//import java.util.*;
//import java.util.stream.Collectors;
//
///**
// * @description: OKCOIN  K线数据
// * @author: nikooh
// * @date: 2024/08/22 : 09:52
// */
//@Slf4j
//@Component
//@RefreshScope
//public class OkCoinMarketCandlesHandler extends IJobHandler {
//
//    @Resource
//    private DingTalkMsgPushUtils dingTalkMsgPushUtils;
//
//    @Resource
//    private SpotClient spotClient;
//
//    public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
//
//    @Override
//    @XxlJob("marketCandlesHandler")
//    public ReturnT<String> execute(String params) throws Exception {
//
//
//        if (StringUtils.isBlank(params)) {
//            log.error(">>>>>>>>>>job params is null!<<<<<<<<<<");
//            return ReturnT.FAIL;
//        }
//        JobParams jobParams = JacksonUtil.fromJson(params, JobParams.class);
//        if (Objects.isNull(jobParams)) {
//            log.error(">>>>>>>>>>job params is null!<<<<<<<<<<");
//            return ReturnT.FAIL;
//        }
//        String interval = jobParams.getInterval();
//        Integer limit = jobParams.getLimit();
//        Arrays.stream(jobParams.getSymbolList().split(","))
//                .forEach(symbol -> {
//                    KLinesRequestParameters kLinesRequestParameters = new KLinesRequestParameters(symbol, interval, limit);
//                    Map<String, Object> parameters = BeanUtil.beanToMap(kLinesRequestParameters);
//                    String resultStr = spotClient.createMarket().uiKlines(parameters);
//                    if (StringUtils.isBlank(resultStr)) {
//                        log.error(">>>>>>>>>>request result is null!<<<<<<<<<<");
//                        return;
//                    }
//                    List<String[]> kLineDataList = JacksonUtil.fromJson(resultStr, new TypeReference<List<String[]>>() {
//                    });
//                    String[] kLineData = kLineDataList.get(0);
//                    log.info(">>>>>>>>>>当前：【{}】 开盘价：【{}】 最高价：【{}】最低价：【{}】收盘价：【{}】<<<<<<<<<<", DATE_FORMAT.format(new Date(Long.parseLong(kLineData[0]))), kLineData[1], kLineData[2], kLineData[3], kLineData[4]);
//                    kLineDataList = kLineDataList.stream()
//                            .sorted(Comparator.comparing(data -> data[0], Comparator.reverseOrder()))
//                            .limit(5)
//                            .collect(Collectors.toList());
//                    String markdownContent = OkCoinKLineUtil.getCoinMarkdownContent(symbol, kLineDataList);
//                    dingTalkMsgPushUtils.robotMarkdownMsg("交易产品K线数据", markdownContent);
//
//                });
//
//
//        return ReturnT.SUCCESS;
//    }
//
//    @Data
//    public static class JobParams {
//
//        // BTCUSDT,ETHUSDT
//        private String symbolList;
//
//        // 时间粒度
//        // 1s, 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M
//        private String interval;
//
//        // 默认 500; 最大值 1000
//        private Integer limit;
//    }
//
//    @Data
//    public static class KLinesRequestParameters {
//
//        // BTCUSDT,ETHUSDT
//        private String symbol;
//
//        // 1s, 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M
//        private String interval;
//
//        // 默认 500; 最大值 1000
//        private Integer limit;
//
//        public KLinesRequestParameters(String symbol, String interval, Integer limit) {
//            this.symbol = symbol;
//            this.interval = interval;
//            this.limit = limit;
//        }
//
//        public KLinesRequestParameters(String symbol, String interval) {
//            this.symbol = symbol;
//            this.interval = interval;
//        }
//    }
//
//}
