From db460259294e82bdc5d11995c6dc4580f25e7a71 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Tue, 24 Dec 2024 16:37:04 +0800 Subject: [PATCH] =?UTF-8?q?todo:=20=E8=B7=AF=E7=94=B1=E8=BD=AC=E5=8F=91;?= =?UTF-8?q?=20=E5=88=A0=E9=99=A4opi=5Fsn=20=E5=AD=97=E6=AE=B5;=20=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=B5=8B=E8=AF=95=E8=B7=AF=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wai-server/.env.development | 2 +- wai-server/api/channels/channel.controller.js | 2 +- wai-server/api/index.js | 5 ++ wai-server/api/users/index.js | 1 - wai-server/api/users/user.controller.js | 54 ------------------- wai-server/api/users/user.routes.js | 16 ------ wai-server/core/services/whatsappHandler.js | 3 +- .../components/forward.middleware.js | 19 +++++++ .../components/request.middleware.js | 1 - .../components/request_log.middleware.js | 6 +-- wai-server/middleware/index.js | 7 +-- wai-server/models/connections.js | 4 -- 12 files changed, 34 insertions(+), 86 deletions(-) delete mode 100644 wai-server/api/users/index.js delete mode 100644 wai-server/api/users/user.controller.js delete mode 100644 wai-server/api/users/user.routes.js create mode 100644 wai-server/middleware/components/forward.middleware.js diff --git a/wai-server/.env.development b/wai-server/.env.development index 45152ff..5f34498 100644 --- a/wai-server/.env.development +++ b/wai-server/.env.development @@ -11,5 +11,5 @@ NODE_ENV='development' WEBHOOK_URL='https://p9axztuwd7x8a7.mycht.cn/whatsapp_server/wawebhook' -SERVER_DOMAIN='' +SERVER_DOMAIN='http://202.103.68.93:3031' SERVER_NAME='aliyun1' diff --git a/wai-server/api/channels/channel.controller.js b/wai-server/api/channels/channel.controller.js index bbf18a4..6b3b20b 100644 --- a/wai-server/api/channels/channel.controller.js +++ b/wai-server/api/channels/channel.controller.js @@ -9,7 +9,7 @@ const waInstance = { exports.newConnect = async ctx => { try { const { phone } = ctx.query; - const findSession = getConnection({ sesson_id: phone, status: 'open' }); + const findSession = await getConnection({ sesson_id: phone, status: 'open' }); if (findSession) { return findSession; } diff --git a/wai-server/api/index.js b/wai-server/api/index.js index 648510c..157f03b 100644 --- a/wai-server/api/index.js +++ b/wai-server/api/index.js @@ -21,6 +21,11 @@ function applyApiMiddleware(app) { }); app.use(router.routes()).use(router.allowedMethods()); + + // debug: Print out all registered routes + router.stack.forEach(layer => { + console.log(`${layer.methods} ${layer.path}`); + }); } module.exports = applyApiMiddleware; diff --git a/wai-server/api/users/index.js b/wai-server/api/users/index.js deleted file mode 100644 index 0c29102..0000000 --- a/wai-server/api/users/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./user.routes'); diff --git a/wai-server/api/users/user.controller.js b/wai-server/api/users/user.controller.js deleted file mode 100644 index 09b2206..0000000 --- a/wai-server/api/users/user.controller.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -const generateId = require('../../utils/generateId.util'); - -/** - * Mock database, replace this with your db models import, required to perform query to your database. - */ -const db = { - users: [ - { - id: 'bff28903-042e-47c2-b9ee-07c3954989ec', - name: 'Marco', - created_at: 1558536830937, - }, - { - id: 'dca01a32-36e6-4886-af75-8e7caa0162a9', - name: 'Leonardo', - created_at: 1558536843742, - }, - { - id: 'dca01a32-36e6-4886-af75-8e7caa0162a9', - name: 'Berta', - created_at: 1558536863550, - }, - ], -}; -function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); -} -exports.getOne = async ctx => { - const { userId } = ctx.params; - const user = db.users.find(user => user.id === userId); - await sleep(500); - ctx.assert(user, 404, "The requested user doesn't exist"); - return user; -}; - -exports.getAll = async ctx => { - return db.users; -}; - -exports.createOne = async ctx => { - const { name } = ctx.request.body; - ctx.assert(name, 400, 'The user info is malformed!'); - const id = generateId(); - const newUser = { - id, - name, - timestamp: Date.now(), - }; - db.users.push(newUser); - const createdUser = db.users.find(user => user.id === id); - return createdUser; -}; diff --git a/wai-server/api/users/user.routes.js b/wai-server/api/users/user.routes.js deleted file mode 100644 index 03ca522..0000000 --- a/wai-server/api/users/user.routes.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -const controller = require('./user.controller'); - -module.exports = Router => { - const router = new Router({ - prefix: `/users`, - }); - - router - .get('/:userId', controller.getOne) - .get('/', controller.getAll) - .post('/', controller.createOne); - - return router; -}; diff --git a/wai-server/core/services/whatsappHandler.js b/wai-server/core/services/whatsappHandler.js index 12f7e78..6a55bbd 100644 --- a/wai-server/core/services/whatsappHandler.js +++ b/wai-server/core/services/whatsappHandler.js @@ -28,8 +28,8 @@ const webhookBodyBuilder = (messageData, messageType) => { const setupConnectionHandler = () => { // connectionEventNames.forEach(eventName => { - logger.info(`Setting up event ${'connection:added'}`); whatsappEvents.on('connection:added', async connectionData => { + logger.info(`Setting up event ${'connection:added'}`); try { await addConnection({ ...objectMapper(connectionData, { phone: [{ key: 'wa_id' }, { key: 'sesson_id' }], channelId: 'channel_id', createTimestamp: 'createtime' }), @@ -41,6 +41,7 @@ const setupConnectionHandler = () => { } }); whatsappEvents.on('connection:updated', async connectionData => { + logger.info(`Setting up event ${'connection:updated'}`); try { await updateConnection({ ...objectMapper(connectionData, { phone: [{ key: 'wa_id' }, { key: 'sesson_id' }], channelId: 'channel_id' }), diff --git a/wai-server/middleware/components/forward.middleware.js b/wai-server/middleware/components/forward.middleware.js new file mode 100644 index 0000000..b5d4d9b --- /dev/null +++ b/wai-server/middleware/components/forward.middleware.js @@ -0,0 +1,19 @@ +const { domain } = require('../../config').server; +const { isEmpty } = require('../../utils/commons.util'); +const { getConnection } = require('../../services/connections.service'); +const axios = require('axios'); + +module.exports = async (ctx, next) => { + try { + console.log('forward start ---------------'); + // console.log(/^\/wai-server\/v\d{1}\/(?!channels|messages)/.test(ctx.path)); + const { waisession } = ctx.headers; + const findSession = await getConnection({ sesson_id: waisession, status: 'open' }); + if (!isEmpty(findSession) && findSession.connect_domain === domain) { + await next(); + } + // todo: forward to target server + + console.log('forward End ---------------'); + } catch (err) {} +}; diff --git a/wai-server/middleware/components/request.middleware.js b/wai-server/middleware/components/request.middleware.js index 1ce8523..074f295 100644 --- a/wai-server/middleware/components/request.middleware.js +++ b/wai-server/middleware/components/request.middleware.js @@ -1,6 +1,5 @@ module.exports = async (ctx, next) => { try { - console.log('request handdle'); const data = await next(); ctx.body = { errcode: 0, diff --git a/wai-server/middleware/components/request_log.middleware.js b/wai-server/middleware/components/request_log.middleware.js index ac5fb67..b336951 100644 --- a/wai-server/middleware/components/request_log.middleware.js +++ b/wai-server/middleware/components/request_log.middleware.js @@ -1,8 +1,7 @@ const { createRequestLog } = require('../../services/requestLogs.service'); -const rlog = async (ctx, next) => { - try { - console.log('request log'); +module.exports = async (ctx, next) => { + try { await next(); } catch (err) { } finally { @@ -14,4 +13,3 @@ const rlog = async (ctx, next) => { }); } }; -module.exports = rlog; diff --git a/wai-server/middleware/index.js b/wai-server/middleware/index.js index b04dafc..48a3875 100644 --- a/wai-server/middleware/index.js +++ b/wai-server/middleware/index.js @@ -9,12 +9,13 @@ function applyMiddleware(app) { const components = fs.readdirSync(basePath); const nosorts = components.filter(item => item.indexOf('request.middleware') === -1); - nosorts.forEach(file => { + [...nosorts, 'request.middleware.js'].forEach(file => { const componentMiddleware = require(path.join(basePath, file)); app.use(componentMiddleware); }); - const requestHandler = require(path.join(basePath, 'request.middleware.js')); // 必须在最后 - app.use(requestHandler); + + // const requestHandler = require(path.join(basePath, 'request.middleware.js')); // 必须在最后 + // app.use(requestHandler); } module.exports = applyMiddleware; diff --git a/wai-server/models/connections.js b/wai-server/models/connections.js index 10a9fef..5218419 100644 --- a/wai-server/models/connections.js +++ b/wai-server/models/connections.js @@ -9,10 +9,6 @@ module.exports = function(sequelize, DataTypes) { allowNull: false, primaryKey: true, }, - opi_sn: { - type: DataTypes.INTEGER, - allowNull: true, - }, wa_id: { type: DataTypes.STRING(100), allowNull: true,