fei.wang
2024-05-13 b9b58b9ef261cb290d93465f88a2cbd814b576f0
src/main/java/com/flow/quartz/MyJob.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,276 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.flow.quartz;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.flow.pojo.Card;
import com.flow.service.CardService;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Base64;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.concurrent.TimeUnit;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.springframework.beans.factory.annotation.Autowired;
public class MyJob {
    @Autowired
    CardService cardService;
    public MyJob() {
    }
    public void execute() throws NoSuchAlgorithmException, InvalidKeyException, IOException, ParseException {
        String accessKey = "448c2cedcdce41428a290d144e81ab6e";
        String str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        String accessSecret = "RgoIWycMYGmQfrLwLuT2VWawAhwMO8w7P9zh2dZp";
        String nonce = "";
        Date now = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
        String Timestamp = dateFormat.format(now);
        int length = 30;
        Random random = new Random();
        for (int i = length; i > 0; --i) {
            int index = random.nextInt(str.length());
            nonce = nonce + str.charAt(index);
        }
        String stringSignTemp = accessKey + nonce + Timestamp;
        Mac sha256Hmac = Mac.getInstance("HmacSHA256");
        SecretKeySpec secretKeySpec = new SecretKeySpec(accessSecret.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
        sha256Hmac.init(secretKeySpec);
        byte[] hmacBytes = sha256Hmac.doFinal(stringSignTemp.getBytes(StandardCharsets.UTF_8));
        String sign = Base64.getEncoder().encodeToString(hmacBytes);
        String targetUrl = "https://api.spruceiot.cn/api/v1/sim/list/query?pageIndex=1&pageSize=10";
        URL url = new URL(targetUrl);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestProperty("Accept-Charset", "UTF-8");
        connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
        connection.setRequestProperty("Access-Control-Allow-Origin", "http://localhost:8080");
        connection.setRequestProperty("AccessKey", accessKey);
        connection.setRequestProperty("Nonce", nonce);
        connection.setRequestProperty("Timestamp", Timestamp);
        connection.setRequestProperty("Sign", sign);
        connection.connect();
        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
        StringBuilder response1 = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            response1.append(line);
        }
        reader.close();
        connection.disconnect();
        JSONObject jsonObject = new JSONObject(response1);
        int code = jsonObject.getInt("code");
        String message = jsonObject.getStr("message");
        JSONObject result = jsonObject.getJSONObject("result");
        int total1 = result.getInt("total");
        JSONArray list = result.getJSONArray("list");
        System.out.println("定时器执行成功!更新数据");
        int num = total1;  //第三方所有卡号
        int t = 0;
        int total = 90;
        int num1 = 0;
        int numm = 0;
        int index;
        String nonce1;
        String Timestamp1;
        String stringSignTemp1;
        String line1;
        String stt1;
        while (numm < num) {
            ++num1;
            System.out.println("第" + num1 + "次调用接口从" + t + "到" + total + "结束:总条数" + num);
            List<Card> card = this.cardService.proxyfindCard();
            String stt = ""; //从数据库查询的卡号
            for (int i = t; i < total; ++i) {
                ++numm;
                if (numm == 90) {
                    stt = stt + ((Card) card.get(i)).getCardnumber();
                } else {
                    if (card.size() <= i) {
                        break;
                    } else {
                        stt = stt + ((Card) card.get(i)).getCardnumber() + ",";
                    }
                }
            }
            stt1 = "";
            for (int i = length; i > 0; --i) {
                index = random.nextInt(str.length());
                stt1 = stt1 + str.charAt(index);
            }
            Date now1 = new Date();
            SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyyMMddHHmmss");
            nonce1 = dateFormat1.format(now1);
            stringSignTemp1 = accessKey + stt1 + nonce1;
            byte[] hmacBytes1 = sha256Hmac.doFinal(stringSignTemp1.getBytes(StandardCharsets.UTF_8));
            Timestamp1 = Base64.getEncoder().encodeToString(hmacBytes1);
            stringSignTemp1 = "https://api.spruceiot.cn/api/v1/sim/detail/batch/query";
            stringSignTemp1 = stringSignTemp1 + "?cNo=" + stt.replaceAll("\\s+", "");
            URL url1 = new URL(stringSignTemp1);
            HttpURLConnection connection1 = (HttpURLConnection) url1.openConnection();
            connection1.setRequestProperty("Accept-Charset", "UTF-8");
            connection1.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            connection1.setRequestProperty("Access-Control-Allow-Origin", "http://localhost:8080");
            connection1.setRequestProperty("AccessKey", accessKey);
            connection1.setRequestProperty("Nonce", stt1);
            connection1.setRequestProperty("Timestamp", nonce1);
            connection1.setRequestProperty("Sign", Timestamp1);
            connection1.connect();
            BufferedReader reader1 = new BufferedReader(new InputStreamReader(connection1.getInputStream(), "UTF-8"));
            StringBuilder response11 = new StringBuilder();
            while ((line1 = reader1.readLine()) != null) {
                response11.append(line1);
            }
            reader1.close();
            connection1.disconnect();
            JSONObject jsonObject1 = new JSONObject(response11);
            int code1 = jsonObject1.getInt("code");
            line1 = jsonObject1.getStr("message");
            JSONArray resultArray = jsonObject1.getJSONArray("result");
            Calendar calendar = Calendar.getInstance();
            SimpleDateFormat date1 = new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");
            if (resultArray!=null) {
                for (int i = 0; i < resultArray.size(); ++i) {
                    Card cardl = new Card();
                    JSONObject item1 = resultArray.getJSONObject(i);
                    cardl.setCardnumber(item1.getStr("iccid"));
                    cardl.setOperator(item1.getStr("operators"));
                    cardl.setCarddate(item1.getStr("serviceStartDate"));
                    cardl.setEnddate(item1.getStr("serviceEndDate"));
                    cardl.setEnterdate(item1.getStr("serviceStartDate"));
                    cardl.setZflow(item1.getInt("dataLimit"));
                    cardl.setSyflow(item1.getInt("dataUsage"));
                    cardl.setSyll(item1.getInt("dataLimit") - item1.getInt("dataUsage"));
                    cardl.setStatus(item1.getStr("status"));
                    cardl.setIccid(item1.getStr("msisdn"));
                    this.cardService.proxyupXinXi(cardl);
                }
                t += 90;
                total += 90;
                try {
                    TimeUnit.SECONDS.sleep(12L);
                } catch (InterruptedException var59) {
                    var59.printStackTrace();
                }
            }else{
                break;
            }
        }
//
//        int sheng = num % 90;
//        List<Card> card = this.cardService.proxyfindCard();
//        stt1 = "";
//        int i = 0;
//        index = sheng - 1;
//
//        for (int j = num - sheng; j < num - 1; ++j) {
//            ++i;
//            if (i == index) {
//                stt1 = stt1 + ((Card) card.get(j)).getCardnumber();
//            } else {
//                stt1 = stt1 + ((Card) card.get(j)).getCardnumber() + ",";
//            }
//        }
//
//        nonce1 = "";
//
//        for (i = length; i > 0; --i) {
//            index = random.nextInt(str.length());
//            nonce1 = nonce1 + str.charAt(index);
//        }
//
//        Date now1 = new Date();
//        SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyyMMddHHmmss");
//        Timestamp1 = dateFormat1.format(now1);
//        stringSignTemp1 = accessKey + nonce1 + Timestamp1;
//        byte[] hmacBytes1 = sha256Hmac.doFinal(stringSignTemp1.getBytes(StandardCharsets.UTF_8));
//        String sign1 = Base64.getEncoder().encodeToString(hmacBytes1);
//        String targetUrl1 = "https://api.spruceiot.cn/api/v1/sim/detail/batch/query";
//        targetUrl1 = targetUrl1 + "?cNo=" + stt1.replaceAll("\\s+", "");
//        URL url1 = new URL(targetUrl1);
//        HttpURLConnection connection1 = (HttpURLConnection) url1.openConnection();
//        connection1.setRequestProperty("Accept-Charset", "UTF-8");
//        connection1.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
//        connection1.setRequestProperty("Access-Control-Allow-Origin", "http://localhost:8080");
//        connection1.setRequestProperty("AccessKey", accessKey);
//        connection1.setRequestProperty("Nonce", nonce1);
//        connection1.setRequestProperty("Timestamp", Timestamp1);
//        connection1.setRequestProperty("Sign", sign1);
//        connection1.connect();
//        BufferedReader reader1 = new BufferedReader(new InputStreamReader(connection1.getInputStream(), "UTF-8"));
//        StringBuilder response11 = new StringBuilder();
//
//        while ((line1 = reader1.readLine()) != null) {
//            response11.append(line1);
//        }
//
//        reader1.close();
//        connection1.disconnect();
//        JSONObject jsonObject1 = new JSONObject(response11);
//        int code1 = jsonObject1.getInt("code");
//        String message1 = jsonObject1.getStr("message");
//        JSONArray resultArray = jsonObject1.getJSONArray("result");
//        Calendar calendar = Calendar.getInstance();
//        SimpleDateFormat date2 = new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");
//
//        for (i = 0; i < resultArray.size(); ++i) {
//            Card cardl = new Card();
//            JSONObject item1 = resultArray.getJSONObject(i);
//            cardl.setCardnumber(item1.getStr("iccid"));
//            cardl.setOperator(item1.getStr("operators"));
//            cardl.setCarddate(item1.getStr("serviceStartDate"));
//            cardl.setEnddate(item1.getStr("serviceEndDate"));
//            cardl.setEnterdate(item1.getStr("serviceStartDate"));
//            cardl.setZflow(item1.getInt("dataLimit"));
//            cardl.setSyflow(item1.getInt("dataUsage"));
//            cardl.setStatus(item1.getStr("status"));
//            cardl.setIccid(item1.getStr("msisdn"));
//            cardl.setSyll(item1.getInt("dataLimit") - item1.getInt("dataUsage"));
//
////            Date date = new Date();
////            Date endDay=date2.parse(cardl.getEnddate());//结束时间
////            Long starTime = date.getTime();
////            Long endTime=endDay.getTime();
////            Long num11=endTime-starTime;//时间戳相差的毫秒数
////            cardl.setRemainingdays(+num11/24/60/60/1000+"天");
////            cardl.setUptime(date2.format(calendar.getTime()));
//            this.cardService.proxyupXinXi(cardl);
//        }
        System.out.println("循环结束,等待定时器触发再次调用");
    }
}