order.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. const axios = require("axios");
  2. const qs = require("qs");
  3. const encryptUtil = require("./encryptUtil");
  4. const fs = require("fs");
  5. const queue = require("queue");
  6. const config = require("./config.json");
  7. axios.defaults.baseURL = config.baseUrl;
  8. axios.interceptors.request.use(
  9. function (config) {
  10. config.metadata = { startTime: new Date() };
  11. return config;
  12. },
  13. function (error) {
  14. return Promise.reject(error);
  15. }
  16. );
  17. axios.interceptors.response.use(
  18. function (response) {
  19. response.config.metadata.endTime = new Date();
  20. response.duration =
  21. response.config.metadata.endTime -
  22. response.config.metadata.startTime;
  23. return response;
  24. },
  25. function (error) {
  26. error.config.metadata.endTime = new Date();
  27. error.duration =
  28. error.config.metadata.endTime - error.config.metadata.startTime;
  29. return Promise.reject(error);
  30. }
  31. );
  32. axios
  33. .post("/auth/phonePwdLogin", qs.stringify(config.user))
  34. .then((res) => {
  35. axios.defaults.headers["Authorization"] = "Bearer " + res.data;
  36. start();
  37. })
  38. .catch((e) => {
  39. console.log(e.response);
  40. });
  41. let orders = [];
  42. const queryResult = (id, i, cb) => {
  43. if (i > 30) {
  44. cb();
  45. } else {
  46. axios
  47. .get("/order/createResult?id=" + id)
  48. .then((res) => {
  49. if (res.data) {
  50. cb(null, res.data.data.id);
  51. console.log(res.data.data.id);
  52. } else {
  53. setTimeout(() => {
  54. queryResult(id, ++i, cb);
  55. }, 1000);
  56. }
  57. })
  58. .catch((e) => {
  59. setTimeout(() => {
  60. queryResult(id, ++i, cb);
  61. }, 1000);
  62. });
  63. }
  64. };
  65. function start() {
  66. const q = queue({ results: [], concurrency: 3000 });
  67. for (let i = 0; i < 3000; i++) {
  68. q.push((cb) => {
  69. let params = {
  70. collectionId: config.collectionId,
  71. qty: 1,
  72. couponId: "",
  73. invitor: "",
  74. };
  75. params.sign = encryptUtil.encrypt(
  76. qs.stringify({ ...params, ts: new Date().getTime() })
  77. );
  78. axios
  79. .post("/order/mqCreate", qs.stringify(params))
  80. .then((res) => {
  81. queryResult(res.data.id, 0, cb);
  82. })
  83. .catch((e) => {
  84. cb();
  85. });
  86. });
  87. }
  88. q.start((err) => {
  89. console.log("all done", q.results);
  90. console.log(
  91. "count: " + q.results.map((i) => i[0]).filter((i) => !!i).length
  92. );
  93. fs.writeFileSync(
  94. "orders.json",
  95. JSON.stringify(
  96. q.results.map((i) => i[0]).filter((i) => !!i),
  97. null,
  98. 4
  99. )
  100. );
  101. });
  102. }