//// This file is auto-generated, don't edit it. Thanks.
//package com.muyu.cloud.vehicle.gateway.utils;
//
//import com.aliyun.ecs20140526.Client;
//import com.aliyun.ecs20140526.models.DeleteInstancesRequest;
//import com.aliyun.tea.*;
//import com.aliyun.teaopenapi.models.Config;
//import com.aliyun.teautil.Common;
//import com.aliyun.teautil.models.RuntimeOptions;
//import lombok.extern.log4j.Log4j2;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.ApplicationListener;
//import org.springframework.context.event.ContextClosedEvent;
//import org.springframework.data.redis.core.StringRedisTemplate;
//import org.springframework.stereotype.Component;
//
//import java.util.List;
//
///**
// * 删除实例
// */
//@Log4j2
//@Component
//public class DelInstance{
//
//    @Autowired
//    private StringRedisTemplate redisTemplate;
//
//
//    /**
//     * <b>description</b> :
//     * <p>使用AK&amp;SK初始化账号Client</p>
//     * @return Client
//     *
//     * @throws Exception
//     */
//    public static Client createClient() throws Exception {
//        // 工程代码泄露可能会导致 AccessKey 泄露，并威胁账号下所有资源的安全性。以下代码示例仅供参考。
//        // 建议使用更安全的 STS 方式，更多鉴权访问方式请参见：https://help.aliyun.com/document_detail/378657.html。
//        Config config = new Config()
//                // 必填，请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
//                .setAccessKeyId("LTAI5t7Fnx2QLTYLSu9357wP")
//                // 必填，请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
//                .setAccessKeySecret("3LOnydNZ25ytsTGczuSygElx0HJ6nN");
//        // Endpoint 请参考 https://api.aliyun.com/product/Ecs
//        config.endpoint = "ecs.cn-shanghai.aliyuncs.com";
//        return new Client(config);
//    }
//
//
//
//    public void delInstance() throws Exception{
//        //创建ECS客户端对象，用于后续调用ECS相关API
//        Client client = DelInstance.createClient();
//
//        List<String> list = redisTemplate.opsForList().range("instanceIds",0,-1);
//
////        DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest()
////                .setRegionId("cn-shanghai");
//
////        //创建运行时选择对象,用于配置运行时的选项参数
////        RuntimeOptions runtimeOptions = new RuntimeOptions();
////
////        //获取实例列表
////        DescribeInstancesResponse describeInstancesResponse = client.describeInstancesWithOptions(describeInstancesRequest, runtimeOptions);
////
////        //提取实例ID集合
////        ArrayList<String> list = new ArrayList<>();
////        DescribeInstancesResponseBody body = describeInstancesResponse.getBody();
////
////        for (DescribeInstancesResponseBody.DescribeInstancesResponseBodyInstancesInstance instance : body.getInstances().getInstance()) {
////            list.add(instance.getInstanceId());
////        }
////
////        System.out.println("Instance IDs"+list);
//
//        // 创建删除实例请求对象，并设置请求参数
//        DeleteInstancesRequest deleteInstancesRequest = new DeleteInstancesRequest()
//                // 设置地域ID，指定要删除的实例所属的地域ID。
//                .setRegionId("cn-shanghai")
//                //设置DryRun为True，用于验证请求是否可以成功，但不实际执行删除操作
//                .setDryRun(false)
//                // 设置Force为true，表示即使实例有正在运行的任务，也强制删除实例
//                .setForce(true)
//                // 设置TerminateSubscription为true，表示删除按订阅付费的实例时终止订阅
//                .setTerminateSubscription(true)
//                // 设置实例ID列表，使用参数名称 instanceId，参数类型为数组。
//                .setInstanceId(list);
//        // 创建运行时选项对象，用于配置运行时的选项参数
//        RuntimeOptions runtime = new RuntimeOptions();
//        try{
//            //复制代码运行请自行打印 API 的返回值
//            client.deleteInstancesWithOptions(deleteInstancesRequest,runtime);
//        } catch (TeaException error) {
//            // 此处仅做打印展示，请谨慎对待异常处理，在工程项目中切勿直接忽略异常。
//            // 错误 message
//            log.error(error.getMessage());
//            // 诊断地址
//            log.error(error.getData().get("Recommend"));
//            Common.assertAsString(error.message);
//        } catch (Exception _error){
//            TeaException error = new TeaException(_error.getMessage(), _error);
//            // 此处仅做打印展示，请谨慎对待异常处理，在工程项目中切勿直接忽略异常。
//            // 错误 message
//            log.error(error.getMessage());
//            // 诊断地址
//            log.error(error.getData().get("Recommend"));
//            Common.assertAsString(error.message);
//        }
//    }
//
//
////    @Override
////    public void destroy() throws Exception {
////        log.info("===============>开始执行删除实例方法");
////        delInstance();
////    }
//
////    @Override
////    public void onApplicationEvent(ContextClosedEvent event) {
////        try{
////            log.info("=======>删除实例");
////            delInstance();
//////            redisTemplate.delete("instanceIds");
//////            redisTemplate.delete("instanceList");
////        } catch (Exception e) {
////            throw new RuntimeException(e);
////        }
////    }
//}
