//package com.ruoyi.system.util;
//
//import org.springframework.http.HttpEntity;
//import org.springframework.http.HttpHeaders;
//import org.springframework.http.HttpMethod;
//import org.springframework.http.ResponseEntity;
//import org.springframework.web.client.RestTemplate;
//import org.springframework.web.util.UriComponentsBuilder;
//
//import javax.crypto.Mac;
//import javax.crypto.SecretKey;
//import javax.crypto.spec.SecretKeySpec;
//import java.net.URI;
//import java.time.LocalDateTime;
//import java.time.format.DateTimeFormatter;
//
//public class HmacUtils {
//    private static final String MAC_NAME = "HmacSHA1";
//    private static final String ENCODING = "UTF-8";
//    /**
//     *@param  encryptKey    秘钥由中控系统分配
//     *@param plainText 加密内容：token + 时间戳 + URI
//     */
//    public static String getHmac(String plainText,String encryptKey) {
//        try{
//            byte[] dataKey=encryptKey.getBytes(ENCODING);
//            byte[] dataValue=plainText.getBytes(ENCODING);
//            //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
//            SecretKey secretKey = new SecretKeySpec(dataKey, MAC_NAME);
//            // 2、创建MAC对象
//            Mac mac = Mac.getInstance(MAC_NAME);
//            // 3、设置密钥
//            mac.init(secretKey);
//            // 4、数据加密
//            byte[] bytes = mac.doFinal(dataValue);
//            // 5、生成数据
//            String rs = encodeHex(bytes,false);
//            return rs;
//        }catch (Exception e){
//            throw new IllegalArgumentException(e.getMessage());
//        }
//
//    }
//    // 数据转16进制编码
//    public static String encodeHex(final byte[] data, final boolean toLowerCase) {
//        final char[] DIGITS_LOWER = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
//        final char[] DIGITS_UPPER = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
//        final char[] toDigits = toLowerCase ? DIGITS_LOWER : DIGITS_UPPER;
//        final int l = data.length;
//        final char[] out = new char[l << 1];
//        // two characters form the hex value.
//        for (int i = 0, j = 0; i < l; i++) {
//            out[j++] = toDigits[(0xF0 & data[i]) >>> 4];
//            out[j++] = toDigits[0x0F & data[i]];
//        }
//        return new String(out);
//    }
//    public static void main(String[] args) {
//        RestTemplate restTemplate = new RestTemplate();
//        try {
//            System.out.println("开始执行定时任务，时间：" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
//
//            // 计算时间范围：当前时间往前推3小时的整点时间段
//            LocalDateTime now = LocalDateTime.now();
//
//            // 计算查询的时间段（4小时前的整点小时）
//            LocalDateTime queryBaseTime = now.minusHours(4);
//            LocalDateTime startTime = queryBaseTime.withMinute(0).withSecond(0).withNano(0);
//            LocalDateTime endTime = startTime.plusHours(1);
//
//            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//            String startTimeStr = startTime.format(formatter);
//            String endTimeStr = endTime.format(formatter);
//
//            System.out.println("查询时间范围：" + startTimeStr + " 至 " + endTimeStr);
//
//            long timestamp = System.currentTimeMillis();
//            String plainText = "efea5f0218c84a24b9fdab3264de3da5" + timestamp + "/supplier/outer/dev/getFlow";
//            String secretKey = getHmac(plainText, "91a73fd806ab2c005c13b4dc19130a884e909dea3f72d46e30266fe1a1f588d8");
//
//            // 设置请求头
//            HttpHeaders headers = new HttpHeaders();
//            headers.set("Content-Type", "application/json");
//            headers.set("TOKEN", "efea5f0218c84a24b9fdab3264de3da5");
//            headers.set("secret-key", secretKey);
//            headers.set("timestamps", String.valueOf(timestamp));
//
//            // 构建URL
//            URI uri = UriComponentsBuilder
//                    .fromHttpUrl("https://ecscm-openapi.ksyun.com/supplier/outer/dev/getFlow")
//                    .queryParam("srmChannel", "1000121954")
//                    .queryParam("startTime", startTimeStr)
//                    .queryParam("endTime", endTimeStr)
//                    .build()
//                    .toUri();
//
//            HttpEntity<String> entity = new HttpEntity<>(headers);
//
//            // GET 请求
//            ResponseEntity<String> response = restTemplate.exchange(
//                    uri,
//                    HttpMethod.GET,
//                    entity,
//                    String.class
//            );
//
//            System.out.println("secretKey：" + secretKey);
//            System.out.println("API响应结果：" + response.getBody());
//            System.out.println("定时任务执行完成");
//
//        } catch (Exception e) {
//            System.err.println("定时任务执行失败：" + e.getMessage());
//            e.printStackTrace();
//        }
//    }
//}
