xiongzhu il y a 3 ans
Parent
commit
860f94833c
5 fichiers modifiés avec 128 ajouts et 40 suppressions
  1. 29 0
      notify.js
  2. 53 38
      order.js
  3. 36 0
      orders.json
  4. 2 1
      package.json
  5. 8 1
      yarn.lock

+ 29 - 0
notify.js

@@ -0,0 +1,29 @@
+const axios = require("axios");
+const qs = require("qs");
+const fs = require("fs");
+const encryptUtil = require("./encryptUtil");
+const { Producer, PushConsumer } = require("apache-rocketmq");
+
+const producer = new Producer("my-producer-dev", "test", {
+    nameServer: "120.24.204.226:9876",
+});
+
+producer.start(function (err) {
+    if (err) {
+        console.log(err);
+    } else {
+        JSON.parse(fs.readFileSync("orders.json").toString()).forEach(
+            (order) => {
+                producer.send(
+                    "order-notify-topic-test",
+                    JSON.stringify({
+                        orderId: order.id,
+                        payMethod: "ALIPAY",
+                        transactionId: new Date().getTime(),
+                        time: new Date().getTime(),
+                    })
+                );
+            }
+        );
+    }
+});

+ 53 - 38
order.js

@@ -1,11 +1,8 @@
 const axios = require("axios");
 const axios = require("axios");
 const qs = require("qs");
 const qs = require("qs");
 const encryptUtil = require("./encryptUtil");
 const encryptUtil = require("./encryptUtil");
-const { Producer, PushConsumer } = require("apache-rocketmq");
-
-const producer = new Producer("my-producer-dev", "test", {
-    nameServer: "120.24.204.226:9876",
-});
+const fs = require("fs");
+const queue = require("queue");
 
 
 axios.defaults.baseURL = "https://test.raex.vip";
 axios.defaults.baseURL = "https://test.raex.vip";
 axios.interceptors.request.use(
 axios.interceptors.request.use(
@@ -40,51 +37,69 @@ axios
     )
     )
     .then((res) => {
     .then((res) => {
         axios.defaults.headers["Authorization"] = "Bearer " + res.data;
         axios.defaults.headers["Authorization"] = "Bearer " + res.data;
-        producer.start(function (err) {
-            if (err) {
-                console.log(err);
-            } else {
-                start();
-            }
-        });
+        start();
     })
     })
     .catch((e) => {
     .catch((e) => {
         console.log(e.response);
         console.log(e.response);
     });
     });
+let orders = [];
 
 
-const createOrder = () => {
-    let params = {
-        collectionId: 151602,
-        qty: 1,
-        couponId: "",
-        invitor: "",
-    };
-    params.sign = encryptUtil.encrypt(
-        qs.stringify({ ...params, ts: new Date().getTime() })
-    );
-    axios.post("/order/mqCreate", qs.stringify(params)).then((res) => {
-        let i = setInterval(() => {
-            axios.get("/order/createResult?id=" + res.data.id).then((res) => {
+const queryResult = (id, i, cb) => {
+    if (i > 5) {
+        cb();
+    } else {
+        axios
+            .get("/order/createResult?id=" + id)
+            .then((res) => {
                 if (res.data) {
                 if (res.data) {
-                    clearInterval(i);
+                    cb(null, res.data.data);
                     console.log(res.data.data);
                     console.log(res.data.data);
-                    producer.send(
-                        "order-notify-topic-test",
-                        JSON.stringify({
-                            orderId: res.data.data.id,
-                            payMethod: "ALIPAY",
-                            transactionId: new Date().getTime(),
-                            time: new Date().getTime(),
-                        })
-                    );
+                } else {
+                    setTimeout(() => {
+                        queryResult(id, ++i, cb);
+                    }, 1000);
                 }
                 }
+            })
+            .catch((e) => {
+                setTimeout(() => {
+                    queryResult(id, ++i, cb);
+                }, 1000);
             });
             });
-        }, 2000);
-    });
+    }
 };
 };
 
 
 function start() {
 function start() {
+    const q = queue({ results: [], concurrency: 1000 });
     for (let i = 0; i < 1; i++) {
     for (let i = 0; i < 1; i++) {
-        createOrder();
+        q.push((cb) => {
+            let params = {
+                collectionId: 151602,
+                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);
+        fs.writeFileSync(
+            "orders.json",
+            JSON.stringify(
+                q.results.map((i) => i[0]),
+                null,
+                4
+            )
+        );
+    });
 }
 }

+ 36 - 0
orders.json

@@ -0,0 +1,36 @@
+[
+    {
+        "id": "943540628849950720",
+        "del": false,
+        "userId": "134613",
+        "collectionId": "151602",
+        "qty": 1,
+        "name": "测盲盒并发",
+        "pic": [
+            {
+                "name": "111.png",
+                "url": "https://raex-meta.oss-cn-shenzhen.aliyuncs.com/nft/2022-02-16-15-14-11qEXTgdel.png",
+                "thumb": null,
+                "type": "image/png"
+            }
+        ],
+        "detail": "<p>1</p>",
+        "properties": [],
+        "category": "勋章",
+        "canResale": false,
+        "royalties": 0,
+        "serviceCharge": 0,
+        "type": "BLIND_BOX",
+        "source": "OFFICIAL",
+        "minter": "RAEX绿洲数字藏品中心",
+        "minterId": "7150",
+        "minterAvatar": "https://raex-meta.oss-cn-shenzhen.aliyuncs.com/image/2021-12-17-19-03-38BNAlEhlJ.png",
+        "price": 1,
+        "gasPrice": 0.01,
+        "totalPrice": 1.01,
+        "status": "NOT_PAID",
+        "hide": false,
+        "opened": false,
+        "createdAt": "2022-02-16 16:13:36"
+    }
+]

+ 2 - 1
package.json

@@ -2,6 +2,7 @@
   "dependencies": {
   "dependencies": {
     "apache-rocketmq": "^1.0.0-rc1",
     "apache-rocketmq": "^1.0.0-rc1",
     "axios": "^0.24.0",
     "axios": "^0.24.0",
-    "qs": "^6.10.3"
+    "qs": "^6.10.3",
+    "queue": "^6.0.2"
   }
   }
 }
 }

+ 8 - 1
yarn.lock

@@ -340,7 +340,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.15:
   dependencies:
   dependencies:
     safer-buffer ">= 2.1.2 < 3"
     safer-buffer ">= 2.1.2 < 3"
 
 
-inherits@2.0.4, inherits@~2.0.1:
+inherits@2.0.4, inherits@~2.0.1, inherits@~2.0.3:
   version "2.0.4"
   version "2.0.4"
   resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
   resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
   integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
   integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -547,6 +547,13 @@ qs@^6.10.3, qs@^6.4.0:
   dependencies:
   dependencies:
     side-channel "^1.0.4"
     side-channel "^1.0.4"
 
 
+queue@^6.0.2:
+  version "6.0.2"
+  resolved "https://registry.npmmirror.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65"
+  integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==
+  dependencies:
+    inherits "~2.0.3"
+
 raw-body@^2.2.0:
 raw-body@^2.2.0:
   version "2.4.3"
   version "2.4.3"
   resolved "https://registry.npmmirror.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c"
   resolved "https://registry.npmmirror.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c"