const axios = require("axios"); const qs = require("qs"); const encryptUtil = require("./encryptUtil"); const fs = require("fs"); const queue = require("queue"); const config = require("./config.json"); axios.defaults.baseURL = config.baseUrl; axios.interceptors.request.use( function (config) { config.metadata = { startTime: new Date() }; return config; }, function (error) { return Promise.reject(error); } ); axios.interceptors.response.use( function (response) { response.config.metadata.endTime = new Date(); response.duration = response.config.metadata.endTime - response.config.metadata.startTime; return response; }, function (error) { error.config.metadata.endTime = new Date(); error.duration = error.config.metadata.endTime - error.config.metadata.startTime; return Promise.reject(error); } ); axios .post("/auth/phonePwdLogin", qs.stringify(config.user)) .then((res) => { axios.defaults.headers["Authorization"] = "Bearer " + res.data; start(); }) .catch((e) => { console.log(e.response); }); let orders = []; const queryResult = (id, i, cb) => { if (i > 30) { cb(); } else { axios .get("/order/createResult?id=" + id) .then((res) => { if (res.data) { cb(null, res.data.data.id); console.log(res.data.data.id); } else { setTimeout(() => { queryResult(id, ++i, cb); }, 1000); } }) .catch((e) => { setTimeout(() => { queryResult(id, ++i, cb); }, 1000); }); } }; function start() { const q = queue({ results: [], concurrency: 3000 }); for (let i = 0; i < 3000; i++) { q.push((cb) => { let params = { collectionId: config.collectionId, qty: 1, couponId: "", invitor: "", }; params.sign = encryptUtil.encrypt( qs.stringify({ ...params, ts: new Date().getTime() }) ); axios .post("/order/mqCreate", qs.stringify(params)) .then((res) => { queryResult(res.data.id, 0, cb); }) .catch((e) => { cb(); }); }); } q.start((err) => { console.log("all done", q.results); console.log( "count: " + q.results.map((i) => i[0]).filter((i) => !!i).length ); fs.writeFileSync( "orders.json", JSON.stringify( q.results.map((i) => i[0]).filter((i) => !!i), null, 4 ) ); }); }