Browse Source

更新es部分,将es操作转到es服务中,这边负责调用

lrf 9 months ago
parent
commit
8b5d2bf5e0

+ 265 - 148
package-lock.json

@@ -9,7 +9,6 @@
       "version": "1.0.0",
       "license": "MIT",
       "dependencies": {
-        "@elastic/elasticsearch": "^8.12.2",
         "@midwayjs/axios": "^3.16.5",
         "@midwayjs/bootstrap": "^3.12.0",
         "@midwayjs/core": "^3.12.0",
@@ -17,10 +16,14 @@
         "@midwayjs/jwt": "^3.16.1",
         "@midwayjs/koa": "^3.12.0",
         "@midwayjs/logger": "^3.1.0",
+        "@midwayjs/rabbitmq": "^3.16.5",
         "@midwayjs/redis": "^3.16.0",
         "@midwayjs/swagger": "^3.16.1",
         "@midwayjs/typeorm": "^3.16.0",
         "@midwayjs/validate": "^3.12.0",
+        "amqp-connection-manager": "^4.1.14",
+        "amqplib": "^0.10.4",
+        "axios": "^1.7.4",
         "bcryptjs": "^2.4.3",
         "crypto-js": "^4.2.0",
         "dayjs": "^1.11.11",
@@ -31,6 +34,7 @@
       },
       "devDependencies": {
         "@midwayjs/mock": "^3.12.0",
+        "@types/amqplib": "^0.10.5",
         "@types/crypto-js": "^4.2.2",
         "@types/jest": "^29.2.0",
         "@types/lodash": "^4.17.4",
@@ -47,6 +51,24 @@
         "node": ">=12.0.0"
       }
     },
+    "node_modules/@acuminous/bitsyntax": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmmirror.com/@acuminous/bitsyntax/-/bitsyntax-0.1.2.tgz",
+      "integrity": "sha512-29lUK80d1muEQqiUsSo+3A0yP6CdspgC95EnKBMi22Xlwt79i/En4Vr67+cXhU+cZjbti3TgGGC5wy1stIywVQ==",
+      "dependencies": {
+        "buffer-more-ints": "~1.0.0",
+        "debug": "^4.3.4",
+        "safe-buffer": "~5.1.2"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/@acuminous/bitsyntax/node_modules/safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+    },
     "node_modules/@ampproject/remapping": {
       "version": "2.3.0",
       "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz",
@@ -611,50 +633,6 @@
       "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
       "dev": true
     },
-    "node_modules/@elastic/elasticsearch": {
-      "version": "8.12.2",
-      "resolved": "https://registry.npmmirror.com/@elastic/elasticsearch/-/elasticsearch-8.12.2.tgz",
-      "integrity": "sha512-04NvH3LIgcv1Uwguorfw2WwzC9Lhfsqs9f0L6uq6MrCw0lqe/HOQ6E8vJ6EkHAA15iEfbhtxOtenbZVVcE+mAQ==",
-      "dependencies": {
-        "@elastic/transport": "^8.4.1",
-        "tslib": "^2.4.0"
-      },
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@elastic/elasticsearch/node_modules/tslib": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz",
-      "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
-    },
-    "node_modules/@elastic/transport": {
-      "version": "8.7.0",
-      "resolved": "https://registry.npmmirror.com/@elastic/transport/-/transport-8.7.0.tgz",
-      "integrity": "sha512-IqXT7a8DZPJtqP2qmX1I2QKmxYyN27kvSW4g6pInESE1SuGwZDp2FxHJ6W2kwmYOJwQdAt+2aWwzXO5jHo9l4A==",
-      "dependencies": {
-        "@opentelemetry/api": "1.x",
-        "debug": "^4.3.4",
-        "hpagent": "^1.0.0",
-        "ms": "^2.1.3",
-        "secure-json-parse": "^2.4.0",
-        "tslib": "^2.4.0",
-        "undici": "^6.12.0"
-      },
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@elastic/transport/node_modules/ms": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
-      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
-    },
-    "node_modules/@elastic/transport/node_modules/tslib": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz",
-      "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
-    },
     "node_modules/@eslint-community/eslint-utils": {
       "version": "4.4.0",
       "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
@@ -1318,6 +1296,16 @@
         "node": ">=12"
       }
     },
+    "node_modules/@midwayjs/axios/node_modules/axios": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.2.tgz",
+      "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==",
+      "dependencies": {
+        "follow-redirects": "^1.15.6",
+        "form-data": "^4.0.0",
+        "proxy-from-env": "^1.1.0"
+      }
+    },
     "node_modules/@midwayjs/bootstrap": {
       "version": "3.16.0",
       "resolved": "https://registry.npmmirror.com/@midwayjs/bootstrap/-/bootstrap-3.16.0.tgz",
@@ -1343,9 +1331,9 @@
       }
     },
     "node_modules/@midwayjs/core": {
-      "version": "3.16.0",
-      "resolved": "https://registry.npmmirror.com/@midwayjs/core/-/core-3.16.0.tgz",
-      "integrity": "sha512-BJ043vVaKPQ8/r+LZb7EKpc+pD+C5tjkMC1ZzkzZO0ulOuRGSgaeHBuHjBekiW8EjQCPghW6Loe4CZoaNH5a1g==",
+      "version": "3.16.2",
+      "resolved": "https://registry.npmmirror.com/@midwayjs/core/-/core-3.16.2.tgz",
+      "integrity": "sha512-ucJzCjL3kvTW4iLmPbYWPeDAaIrbU0G63Lw4nz4AOz4+3NIUCmD/Ezgj8m4K0VKJ0usqM72Vdg6ySYXgreYkfg==",
       "dependencies": {
         "@midwayjs/glob": "^1.0.2",
         "class-transformer": "0.5.1",
@@ -1454,6 +1442,22 @@
         "node": ">=12"
       }
     },
+    "node_modules/@midwayjs/rabbitmq": {
+      "version": "3.16.5",
+      "resolved": "https://registry.npmmirror.com/@midwayjs/rabbitmq/-/rabbitmq-3.16.5.tgz",
+      "integrity": "sha512-8A8mTORtcUriAL4+PniRHNlY2pX9RE3Ucx5qYvTvVsmSW/OGSlnKswWAFgBmCaHDRUoGCyzAwryz6nOlrB9qRQ==",
+      "dependencies": {
+        "@midwayjs/core": "^3.16.2",
+        "amqp-connection-manager": "4.1.14"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "peerDependencies": {
+        "@types/amqplib": "*",
+        "amqplib": "*"
+      }
+    },
     "node_modules/@midwayjs/redis": {
       "version": "3.16.0",
       "resolved": "https://registry.npmmirror.com/@midwayjs/redis/-/redis-3.16.0.tgz",
@@ -1539,14 +1543,6 @@
         "node": ">= 8"
       }
     },
-    "node_modules/@opentelemetry/api": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmmirror.com/@opentelemetry/api/-/api-1.9.0.tgz",
-      "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==",
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
     "node_modules/@pkgjs/parseargs": {
       "version": "0.11.0",
       "resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
@@ -1632,6 +1628,14 @@
         "@types/node": "*"
       }
     },
+    "node_modules/@types/amqplib": {
+      "version": "0.10.5",
+      "resolved": "https://registry.npmmirror.com/@types/amqplib/-/amqplib-0.10.5.tgz",
+      "integrity": "sha512-/cSykxROY7BWwDoi4Y4/jLAuZTshZxd8Ey1QYa/VaXriMotBDoou7V/twJiOSHzU6t1Kp1AHAUXGCgqq+6DNeg==",
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
     "node_modules/@types/babel__core": {
       "version": "7.20.5",
       "resolved": "https://registry.npmmirror.com/@types/babel__core/-/babel__core-7.20.5.tgz",
@@ -2211,6 +2215,56 @@
         "url": "https://github.com/sponsors/epoberezkin"
       }
     },
+    "node_modules/amqp-connection-manager": {
+      "version": "4.1.14",
+      "resolved": "https://registry.npmmirror.com/amqp-connection-manager/-/amqp-connection-manager-4.1.14.tgz",
+      "integrity": "sha512-1km47dIvEr0HhMUazqovSvNwIlSvDX2APdUpULaINtHpiki1O+cLRaTeXb/jav4OLtH+k6GBXx5gsKOT9kcGKQ==",
+      "dependencies": {
+        "promise-breaker": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10.0.0",
+        "npm": ">5.0.0"
+      },
+      "peerDependencies": {
+        "amqplib": "*"
+      }
+    },
+    "node_modules/amqplib": {
+      "version": "0.10.4",
+      "resolved": "https://registry.npmmirror.com/amqplib/-/amqplib-0.10.4.tgz",
+      "integrity": "sha512-DMZ4eCEjAVdX1II2TfIUpJhfKAuoCeDIo/YyETbfAqehHTXxxs7WOOd+N1Xxr4cKhx12y23zk8/os98FxlZHrw==",
+      "dependencies": {
+        "@acuminous/bitsyntax": "^0.1.2",
+        "buffer-more-ints": "~1.0.0",
+        "readable-stream": "1.x >=1.1.9",
+        "url-parse": "~1.5.10"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/amqplib/node_modules/isarray": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmmirror.com/isarray/-/isarray-0.0.1.tgz",
+      "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+    },
+    "node_modules/amqplib/node_modules/readable-stream": {
+      "version": "1.1.14",
+      "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-1.1.14.tgz",
+      "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.1",
+        "isarray": "0.0.1",
+        "string_decoder": "~0.10.x"
+      }
+    },
+    "node_modules/amqplib/node_modules/string_decoder": {
+      "version": "0.10.31",
+      "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-0.10.31.tgz",
+      "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
+    },
     "node_modules/ansi-align": {
       "version": "3.0.1",
       "resolved": "https://registry.npmmirror.com/ansi-align/-/ansi-align-3.0.1.tgz",
@@ -2406,9 +2460,9 @@
       "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
     },
     "node_modules/axios": {
-      "version": "1.7.2",
-      "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.2.tgz",
-      "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==",
+      "version": "1.7.4",
+      "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.4.tgz",
+      "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==",
       "dependencies": {
         "follow-redirects": "^1.15.6",
         "form-data": "^4.0.0",
@@ -2791,6 +2845,11 @@
         "node": ">=0.10"
       }
     },
+    "node_modules/buffer-more-ints": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz",
+      "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg=="
+    },
     "node_modules/buffers": {
       "version": "0.1.1",
       "resolved": "https://registry.npmmirror.com/buffers/-/buffers-0.1.1.tgz",
@@ -4934,14 +4993,6 @@
       "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
       "dev": true
     },
-    "node_modules/hpagent": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmmirror.com/hpagent/-/hpagent-1.2.0.tgz",
-      "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==",
-      "engines": {
-        "node": ">=14"
-      }
-    },
     "node_modules/html-escaper": {
       "version": "2.0.2",
       "resolved": "https://registry.npmmirror.com/html-escaper/-/html-escaper-2.0.2.tgz",
@@ -7595,6 +7646,11 @@
         "node": ">=0.4.0"
       }
     },
+    "node_modules/promise-breaker": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/promise-breaker/-/promise-breaker-6.0.0.tgz",
+      "integrity": "sha512-BthzO9yTPswGf7etOBiHCVuugs2N01/Q/94dIPls48z2zCmrnDptUUZzfIb+41xq0MnYZ/BzmOd6ikDR4ibNZA=="
+    },
     "node_modules/prompts": {
       "version": "2.4.2",
       "resolved": "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz",
@@ -7674,6 +7730,11 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/querystringify": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz",
+      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
+    },
     "node_modules/queue-lit": {
       "version": "1.5.2",
       "resolved": "https://registry.npmmirror.com/queue-lit/-/queue-lit-1.5.2.tgz",
@@ -7981,6 +8042,11 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
+      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
+    },
     "node_modules/resolve": {
       "version": "1.22.8",
       "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz",
@@ -8168,11 +8234,6 @@
       "resolved": "https://registry.npmmirror.com/scmp/-/scmp-2.1.0.tgz",
       "integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q=="
     },
-    "node_modules/secure-json-parse": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmmirror.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz",
-      "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw=="
-    },
     "node_modules/semver": {
       "version": "6.3.1",
       "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
@@ -9104,14 +9165,6 @@
         "node": ">=4.2.0"
       }
     },
-    "node_modules/undici": {
-      "version": "6.19.7",
-      "resolved": "https://registry.npmmirror.com/undici/-/undici-6.19.7.tgz",
-      "integrity": "sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==",
-      "engines": {
-        "node": ">=18.17"
-      }
-    },
     "node_modules/unique-string": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/unique-string/-/unique-string-2.0.0.tgz",
@@ -9255,6 +9308,15 @@
         "punycode": "^2.1.0"
       }
     },
+    "node_modules/url-parse": {
+      "version": "1.5.10",
+      "resolved": "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz",
+      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+      "dependencies": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
     "node_modules/url-parse-lax": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
@@ -9541,6 +9603,23 @@
     }
   },
   "dependencies": {
+    "@acuminous/bitsyntax": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmmirror.com/@acuminous/bitsyntax/-/bitsyntax-0.1.2.tgz",
+      "integrity": "sha512-29lUK80d1muEQqiUsSo+3A0yP6CdspgC95EnKBMi22Xlwt79i/En4Vr67+cXhU+cZjbti3TgGGC5wy1stIywVQ==",
+      "requires": {
+        "buffer-more-ints": "~1.0.0",
+        "debug": "^4.3.4",
+        "safe-buffer": "~5.1.2"
+      },
+      "dependencies": {
+        "safe-buffer": {
+          "version": "5.1.2",
+          "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+          "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+        }
+      }
+    },
     "@ampproject/remapping": {
       "version": "2.3.0",
       "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz",
@@ -9962,48 +10041,6 @@
       "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
       "dev": true
     },
-    "@elastic/elasticsearch": {
-      "version": "8.12.2",
-      "resolved": "https://registry.npmmirror.com/@elastic/elasticsearch/-/elasticsearch-8.12.2.tgz",
-      "integrity": "sha512-04NvH3LIgcv1Uwguorfw2WwzC9Lhfsqs9f0L6uq6MrCw0lqe/HOQ6E8vJ6EkHAA15iEfbhtxOtenbZVVcE+mAQ==",
-      "requires": {
-        "@elastic/transport": "^8.4.1",
-        "tslib": "^2.4.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.6.3",
-          "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz",
-          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
-        }
-      }
-    },
-    "@elastic/transport": {
-      "version": "8.7.0",
-      "resolved": "https://registry.npmmirror.com/@elastic/transport/-/transport-8.7.0.tgz",
-      "integrity": "sha512-IqXT7a8DZPJtqP2qmX1I2QKmxYyN27kvSW4g6pInESE1SuGwZDp2FxHJ6W2kwmYOJwQdAt+2aWwzXO5jHo9l4A==",
-      "requires": {
-        "@opentelemetry/api": "1.x",
-        "debug": "^4.3.4",
-        "hpagent": "^1.0.0",
-        "ms": "^2.1.3",
-        "secure-json-parse": "^2.4.0",
-        "tslib": "^2.4.0",
-        "undici": "^6.12.0"
-      },
-      "dependencies": {
-        "ms": {
-          "version": "2.1.3",
-          "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
-          "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
-        },
-        "tslib": {
-          "version": "2.6.3",
-          "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz",
-          "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
-        }
-      }
-    },
     "@eslint-community/eslint-utils": {
       "version": "4.4.0",
       "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
@@ -10520,6 +10557,18 @@
       "integrity": "sha512-6upLhAcmYSgOCUb9kMwfg7GzHJwQ+PAY0UqhbUhEyp23hr0Ht/UNEMzE7I3vWIWWRJ0BfhB0mG6t8IJ/31Eltg==",
       "requires": {
         "axios": "1.7.2"
+      },
+      "dependencies": {
+        "axios": {
+          "version": "1.7.2",
+          "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.2.tgz",
+          "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==",
+          "requires": {
+            "follow-redirects": "^1.15.6",
+            "form-data": "^4.0.0",
+            "proxy-from-env": "^1.1.0"
+          }
+        }
       }
     },
     "@midwayjs/bootstrap": {
@@ -10541,9 +10590,9 @@
       }
     },
     "@midwayjs/core": {
-      "version": "3.16.0",
-      "resolved": "https://registry.npmmirror.com/@midwayjs/core/-/core-3.16.0.tgz",
-      "integrity": "sha512-BJ043vVaKPQ8/r+LZb7EKpc+pD+C5tjkMC1ZzkzZO0ulOuRGSgaeHBuHjBekiW8EjQCPghW6Loe4CZoaNH5a1g==",
+      "version": "3.16.2",
+      "resolved": "https://registry.npmmirror.com/@midwayjs/core/-/core-3.16.2.tgz",
+      "integrity": "sha512-ucJzCjL3kvTW4iLmPbYWPeDAaIrbU0G63Lw4nz4AOz4+3NIUCmD/Ezgj8m4K0VKJ0usqM72Vdg6ySYXgreYkfg==",
       "requires": {
         "@midwayjs/glob": "^1.0.2",
         "class-transformer": "0.5.1",
@@ -10628,6 +10677,15 @@
         "supertest": "6.3.3"
       }
     },
+    "@midwayjs/rabbitmq": {
+      "version": "3.16.5",
+      "resolved": "https://registry.npmmirror.com/@midwayjs/rabbitmq/-/rabbitmq-3.16.5.tgz",
+      "integrity": "sha512-8A8mTORtcUriAL4+PniRHNlY2pX9RE3Ucx5qYvTvVsmSW/OGSlnKswWAFgBmCaHDRUoGCyzAwryz6nOlrB9qRQ==",
+      "requires": {
+        "@midwayjs/core": "^3.16.2",
+        "amqp-connection-manager": "4.1.14"
+      }
+    },
     "@midwayjs/redis": {
       "version": "3.16.0",
       "resolved": "https://registry.npmmirror.com/@midwayjs/redis/-/redis-3.16.0.tgz",
@@ -10689,11 +10747,6 @@
         "fastq": "^1.6.0"
       }
     },
-    "@opentelemetry/api": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmmirror.com/@opentelemetry/api/-/api-1.9.0.tgz",
-      "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="
-    },
     "@pkgjs/parseargs": {
       "version": "0.11.0",
       "resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
@@ -10770,6 +10823,14 @@
         "@types/node": "*"
       }
     },
+    "@types/amqplib": {
+      "version": "0.10.5",
+      "resolved": "https://registry.npmmirror.com/@types/amqplib/-/amqplib-0.10.5.tgz",
+      "integrity": "sha512-/cSykxROY7BWwDoi4Y4/jLAuZTshZxd8Ey1QYa/VaXriMotBDoou7V/twJiOSHzU6t1Kp1AHAUXGCgqq+6DNeg==",
+      "requires": {
+        "@types/node": "*"
+      }
+    },
     "@types/babel__core": {
       "version": "7.20.5",
       "resolved": "https://registry.npmmirror.com/@types/babel__core/-/babel__core-7.20.5.tgz",
@@ -11233,6 +11294,48 @@
         "uri-js": "^4.2.2"
       }
     },
+    "amqp-connection-manager": {
+      "version": "4.1.14",
+      "resolved": "https://registry.npmmirror.com/amqp-connection-manager/-/amqp-connection-manager-4.1.14.tgz",
+      "integrity": "sha512-1km47dIvEr0HhMUazqovSvNwIlSvDX2APdUpULaINtHpiki1O+cLRaTeXb/jav4OLtH+k6GBXx5gsKOT9kcGKQ==",
+      "requires": {
+        "promise-breaker": "^6.0.0"
+      }
+    },
+    "amqplib": {
+      "version": "0.10.4",
+      "resolved": "https://registry.npmmirror.com/amqplib/-/amqplib-0.10.4.tgz",
+      "integrity": "sha512-DMZ4eCEjAVdX1II2TfIUpJhfKAuoCeDIo/YyETbfAqehHTXxxs7WOOd+N1Xxr4cKhx12y23zk8/os98FxlZHrw==",
+      "requires": {
+        "@acuminous/bitsyntax": "^0.1.2",
+        "buffer-more-ints": "~1.0.0",
+        "readable-stream": "1.x >=1.1.9",
+        "url-parse": "~1.5.10"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmmirror.com/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+        },
+        "readable-stream": {
+          "version": "1.1.14",
+          "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-1.1.14.tgz",
+          "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.1",
+            "isarray": "0.0.1",
+            "string_decoder": "~0.10.x"
+          }
+        },
+        "string_decoder": {
+          "version": "0.10.31",
+          "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-0.10.31.tgz",
+          "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
+        }
+      }
+    },
     "ansi-align": {
       "version": "3.0.1",
       "resolved": "https://registry.npmmirror.com/ansi-align/-/ansi-align-3.0.1.tgz",
@@ -11391,9 +11494,9 @@
       "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
     },
     "axios": {
-      "version": "1.7.2",
-      "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.2.tgz",
-      "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==",
+      "version": "1.7.4",
+      "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.4.tgz",
+      "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==",
       "requires": {
         "follow-redirects": "^1.15.6",
         "form-data": "^4.0.0",
@@ -11654,6 +11757,11 @@
       "resolved": "https://registry.npmmirror.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
       "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A=="
     },
+    "buffer-more-ints": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz",
+      "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg=="
+    },
     "buffers": {
       "version": "0.1.1",
       "resolved": "https://registry.npmmirror.com/buffers/-/buffers-0.1.1.tgz",
@@ -13224,11 +13332,6 @@
         }
       }
     },
-    "hpagent": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmmirror.com/hpagent/-/hpagent-1.2.0.tgz",
-      "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA=="
-    },
     "html-escaper": {
       "version": "2.0.2",
       "resolved": "https://registry.npmmirror.com/html-escaper/-/html-escaper-2.0.2.tgz",
@@ -15268,6 +15371,11 @@
       "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
       "dev": true
     },
+    "promise-breaker": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/promise-breaker/-/promise-breaker-6.0.0.tgz",
+      "integrity": "sha512-BthzO9yTPswGf7etOBiHCVuugs2N01/Q/94dIPls48z2zCmrnDptUUZzfIb+41xq0MnYZ/BzmOd6ikDR4ibNZA=="
+    },
     "prompts": {
       "version": "2.4.2",
       "resolved": "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz",
@@ -15322,6 +15430,11 @@
         "side-channel": "^1.0.6"
       }
     },
+    "querystringify": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz",
+      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
+    },
     "queue-lit": {
       "version": "1.5.2",
       "resolved": "https://registry.npmmirror.com/queue-lit/-/queue-lit-1.5.2.tgz",
@@ -15554,6 +15667,11 @@
       "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
       "dev": true
     },
+    "requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
+      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
+    },
     "resolve": {
       "version": "1.22.8",
       "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz",
@@ -15672,11 +15790,6 @@
       "resolved": "https://registry.npmmirror.com/scmp/-/scmp-2.1.0.tgz",
       "integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q=="
     },
-    "secure-json-parse": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmmirror.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz",
-      "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw=="
-    },
     "semver": {
       "version": "6.3.1",
       "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
@@ -16307,11 +16420,6 @@
       "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==",
       "dev": true
     },
-    "undici": {
-      "version": "6.19.7",
-      "resolved": "https://registry.npmmirror.com/undici/-/undici-6.19.7.tgz",
-      "integrity": "sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A=="
-    },
     "unique-string": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/unique-string/-/unique-string-2.0.0.tgz",
@@ -16421,6 +16529,15 @@
         "punycode": "^2.1.0"
       }
     },
+    "url-parse": {
+      "version": "1.5.10",
+      "resolved": "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz",
+      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+      "requires": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
     "url-parse-lax": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz",

+ 5 - 1
package.json

@@ -4,7 +4,6 @@
   "description": "",
   "private": true,
   "dependencies": {
-    "@elastic/elasticsearch": "^8.12.2",
     "@midwayjs/axios": "^3.16.5",
     "@midwayjs/bootstrap": "^3.12.0",
     "@midwayjs/core": "^3.12.0",
@@ -12,10 +11,14 @@
     "@midwayjs/jwt": "^3.16.1",
     "@midwayjs/koa": "^3.12.0",
     "@midwayjs/logger": "^3.1.0",
+    "@midwayjs/rabbitmq": "^3.16.5",
     "@midwayjs/redis": "^3.16.0",
     "@midwayjs/swagger": "^3.16.1",
     "@midwayjs/typeorm": "^3.16.0",
     "@midwayjs/validate": "^3.12.0",
+    "amqp-connection-manager": "^4.1.14",
+    "amqplib": "^0.10.4",
+    "axios": "^1.7.4",
     "bcryptjs": "^2.4.3",
     "crypto-js": "^4.2.0",
     "dayjs": "^1.11.11",
@@ -26,6 +29,7 @@
   },
   "devDependencies": {
     "@midwayjs/mock": "^3.12.0",
+    "@types/amqplib": "^0.10.5",
     "@types/crypto-js": "^4.2.2",
     "@types/jest": "^29.2.0",
     "@types/lodash": "^4.17.4",

+ 6 - 3
src/config/config.default.ts

@@ -6,8 +6,11 @@ export default {
   koa: {
     port: 7001,
   },
-  qichacha:{
+  qichacha: {
     key: 'd52e7d621b974b06a3f8a90645223c47',
-    secretKey:'230A5D226DFBD80F3BE73E42971EF837'
-  }
+    secretKey: '230A5D226DFBD80F3BE73E42971EF837',
+  },
+  modulesConfig: {
+    es: 'http://127.0.0.1:9701/cxyy/es',
+  },
 } as MidwayConfig;

+ 17 - 3
src/config/config.self.ts

@@ -18,6 +18,19 @@ const redisPwd = '1234qwer!@#$';
 const redisDB = 0;
 /**redis 记录登录的key */
 const loginSign = 'cxyy';
+/**mq设置 */
+const mqSetting = {
+  url: 'amqp://localhost',
+};
+/**elasticsearch ip */
+const esIp = '127.0.0.1'
+/**elasticsearch 端口 */
+const esPort= '9200'
+/**elasticsearch 用户名 */
+const esUserName = 'elastic'
+/**elasticsearch 密码 */
+const esPassword = 'NAjqFz_7tS2DkdpU7p*x'
+
 export default {
   // use for cookie sign key, should change to your own and keep security
   keys: '1697684406848_4978',
@@ -36,11 +49,12 @@ export default {
   swagger: {
     swaggerPath: '/doc/api',
   },
+  rabbitmq: mqSetting,
   elasticsearch: {
-    node: 'http://192.168.1.197:9200',
+    node: `http://${esIp}:${esPort}`,
     auth: {
-      username: 'elastic',
-      password: 'NAjqFz_7tS2DkdpU7p*x',
+      username: esUserName,
+      password: esPassword,
     },
   },
   typeorm: {

+ 3 - 0
src/configuration.ts

@@ -13,6 +13,7 @@ import { DefaultErrorFilter } from './filter/defaultError.filter';
 import { CheckTokenMiddleware } from './middleware/checkToken.middleware';
 import { ResponseMiddleware } from './middleware/response.middleware';
 import * as axios from '@midwayjs/axios';
+import * as rabbitmq from '@midwayjs/rabbitmq';
 @Configuration({
   imports: [
     koa,
@@ -21,6 +22,7 @@ import * as axios from '@midwayjs/axios';
     redis,
     orm,
     axios,
+    rabbitmq,
     {
       component: info,
       enabledEnvironment: ['local'],
@@ -42,5 +44,6 @@ export class MainConfiguration {
     // add filter
     this.app.useFilter([CustomErrorFilter, DefaultErrorFilter]);
     // this.app.useFilter([NotFoundFilter, DefaultErrorFilter]);
+
   }
 }

+ 5 - 2
src/controller/home.controller.ts

@@ -6,8 +6,7 @@ import { QichachaService } from '../service/thirdParty/qichacha.service';
 import { InitThreeService } from '../service/initData/initThree.service';
 import { DataDealService } from '../service/initData/dataDeal.service';
 import { TestsService } from '../service/tests.service';
-import { Opera } from '../frame/dbOpera';
-import { Client, estypes } from '@elastic/elasticsearch';
+import { ESService } from '../service/elasticsearch/es.service';
 @Controller('/')
 export class HomeController {
   @Inject()
@@ -24,8 +23,12 @@ export class HomeController {
   dataDealService: DataDealService;
   @Inject()
   testService: TestsService;
+  @Inject()
+  esService: ESService;
+
   @Get('/')
   async home(@Query() query: object): Promise<any> {
+    await this.esService.initES()
     // await this.dataDealService.initUserMenus();
     // await this.dataDealService.initRoleMenus();
     // await this.oneService.addTags();

+ 38 - 0
src/event/dbSubscriber.ts

@@ -1,8 +1,24 @@
 import { EventSubscriberModel } from '@midwayjs/typeorm';
 import { EntitySubscriberInterface, InsertEvent, UpdateEvent, RemoveEvent } from 'typeorm';
+import Axios from 'axios';
+import { Config } from '@midwayjs/core';
+import { get, toLower } from 'lodash';
 
+enum Methods {
+  CREATE = 'CREATE',
+  UPDATE = 'UPDATE',
+  DELETE = 'DELETE',
+}
+
+/**
+ * 数据库监听类
+ * 在这里通过对指定表的过滤,将数据变化通过http请求发送至es服务
+ * 让es服务去处理数据的同步问题
+ */
 @EventSubscriberModel()
 export class DbSubscriber implements EntitySubscriberInterface {
+  @Config('modulesConfig.es')
+  esServiceHttpPrefix: any;
   /**
    * 添加前触发
    */
@@ -31,6 +47,10 @@ export class DbSubscriber implements EntitySubscriberInterface {
    */
   afterInsert(event: InsertEvent<any>) {
     console.log('AFTER ENTITY INSERTED: ', event.entity);
+    const tableName = get(event, 'metadata.givenTableName');
+    const data = event.entity;
+    const m = Methods.CREATE;
+    this.toSync(tableName, data, m);
   }
 
   /**
@@ -38,6 +58,10 @@ export class DbSubscriber implements EntitySubscriberInterface {
    */
   afterUpdate(event: UpdateEvent<any>) {
     console.log('AFTER ENTITY UPDATED: ', event.entity);
+    const tableName = get(event, 'metadata.givenTableName');
+    const data = event.entity;
+    const m = Methods.UPDATE;
+    this.toSync(tableName, data, m);
   }
 
   /**
@@ -45,12 +69,26 @@ export class DbSubscriber implements EntitySubscriberInterface {
    */
   afterRemove(event: RemoveEvent<any>) {
     console.log(`AFTER ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
+    const tableName = get(event, 'metadata.givenTableName');
+    const data = event.entity;
+    const m = Methods.DELETE;
+    this.toSync(tableName, data, m);
   }
 
   /**
    * 查询后触发
    */
   async afterLoad(entity: any) {
+    // const url = 'http://127.0.0.1:9700';
+    // const axios = Axios.get(url);
+    // console.log(axios);
     // console.log('AFTER ENTITY LOADED: ', entity);
   }
+
+  async toSync(tableName: string, data: any, method: Methods) {
+    const url = `${this.esServiceHttpPrefix}/sync`;
+    tableName = toLower(tableName);
+    const body = { index: tableName, data, method };
+    await Axios.post(url, body, { responseType: 'json' });
+  }
 }

+ 79 - 19
src/service/elasticsearch/es.service.ts

@@ -1,26 +1,86 @@
-import { Client } from "@elastic/elasticsearch";
-import { Config, Init, Provide } from "@midwayjs/core";
-
-
+import { Config, Init, Provide } from '@midwayjs/core';
+import { get } from 'lodash';
+import { InjectEntityModel } from '@midwayjs/typeorm';
+import { Achievement } from '../../entity/platform/achievement.entity';
+import { Repository } from 'typeorm';
+import { Demand } from '../../entity/platform/demand.entity';
+import { Footplate } from '../../entity/platform/footplate.entity';
+import { Match } from '../../entity/platform/match.entity';
+import { Project } from '../../entity/platform/project.entity';
+import { Supply } from '../../entity/platform/supply.entity';
+import { Support } from '../../entity/platform/support.entity';
+import { Company } from '../../entity/users/company.entity';
+import { Expert } from '../../entity/users/expert.entity';
+import { Incubator } from '../../entity/users/incubator.entity';
+import { School } from '../../entity/users/school.entity';
+import { Unit } from '../../entity/users/unit.entity';
+import Axios from 'axios';
 
 @Provide()
 export class ESService {
-  @Config('elasticsearch')
-  esConfig: object;
-  /**es连接实例 */
-  esClient: Client;
-  @Init()
-  async initClient() {
-    const esClient = new Client(this.esConfig);
-    this.esClient = esClient;
+
+  @InjectEntityModel(Achievement)
+  achievement: Repository<Achievement>;
+  @InjectEntityModel(Demand)
+  demand: Repository<Demand>;
+  @InjectEntityModel(Footplate)
+  footplate: Repository<Footplate>;
+  @InjectEntityModel(Match)
+  match: Repository<Match>;
+  @InjectEntityModel(Project)
+  project: Repository<Project>;
+  @InjectEntityModel(Supply)
+  supply: Repository<Supply>;
+  @InjectEntityModel(Support)
+  support: Repository<Support>;
+  @InjectEntityModel(Company)
+  company: Repository<Company>;
+  @InjectEntityModel(Expert)
+  expert: Repository<Expert>;
+  @InjectEntityModel(Incubator)
+  incubator: Repository<Incubator>;
+  @InjectEntityModel(School)
+  school: Repository<School>;
+  @InjectEntityModel(Unit)
+  unit: Repository<Unit>;
+  @Config('modulesConfig.es')
+  esServiceHttpPrefix: any;
+  /**数据步进量 */
+  limit = 50;
+
+  /**初始化ES */
+  async initES() {
+    const initIndexUrl = `${this.esServiceHttpPrefix}/init/indices`;
+    const result = await Axios.post(initIndexUrl, {}, { responseType: 'json' });
+    if (result.status !== 200) return;
+    const tableList = get(result, 'data');
+    if (!tableList) return;
+    for (const index of tableList) {
+      this.initData(index);
+    }
   }
   /**
-   * 1.索引(es中的表)建立:根据编写的文件生成
-   * 2.初始化数据,通过接口触发
-   * 3.对指定表进行的数据修改做同步
+   * 按表,初始化es数据
+   * 1.获取数据总量
+   * 2.请求数据
+   * 3.交由es服务写入
+   * @param tableName 表名,全小写
    */
-
-  async initIndex() {
-    
+  async initData(tableName) {
+    const initDataUrl = `${this.esServiceHttpPrefix}/init/data`;
+    const model = this[tableName];
+    const builder = model.createQueryBuilder();
+    const total = await builder.getCount();
+    let i = 0;
+    while (i < total - 1) {
+      try {
+        const data = await builder.skip(i).take(this.limit).getMany();
+        await Axios.post(initDataUrl, { index: tableName, data }, { responseType: 'json' });
+      } catch (error) {
+        console.error(error);
+      } finally {
+        i = i + this.limit;
+      }
+    }
   }
-}
+}

+ 0 - 9
src/service/elasticsearch/indices.js

@@ -1,9 +0,0 @@
-export const indices = {
-  achievement: {},
-  demand: {},
-  footplate: {},
-  match: {},
-  project: {},
-  supply: {},
-  support: {},
-};

+ 40 - 0
src/service/mq/mq.service.ts

@@ -0,0 +1,40 @@
+// import { Provide, Scope, ScopeEnum, Init, Autoload, Destroy } from '@midwayjs/core';
+// import * as amqp from 'amqp-connection-manager'
+
+// @Autoload()
+// @Provide()
+// @Scope(ScopeEnum.Singleton) // Singleton 单例,全局唯一(进程级别)
+// export class RabbitmqService {
+
+//   private connection: amqp.AmqpConnectionManager;
+
+//   private channelWrapper;
+
+//   @Init()
+//   async connect() {
+//     // 创建连接,你可以把配置放在 Config 中,然后注入进来
+//     this.connection = await amqp.connect('amqp://localhost');
+
+//     // 创建 channel
+//     this.channelWrapper = this.connection.createChannel({
+//       json: true,
+//       setup: function(channel) {
+//         return Promise.all([
+//           // 绑定队列
+//             channel.assertQueue("tasks", { durable: true }),
+//         ]);
+//       }
+//     });
+//   }
+
+//   // 发送消息
+//   public async sendToQueue(queueName: string, data: any) {
+//     return this.channelWrapper.sendToQueue(queueName, data);
+//   }
+
+//   @Destroy()
+//   async close() {
+//     await this.channelWrapper.close();
+//     await this.connection.close();
+//   }
+// }