From 4fb986c04d8fc49673b412642f49b8091a591727 Mon Sep 17 00:00:00 2001 From: pringgosutono Date: Wed, 6 May 2026 14:42:22 +0700 Subject: [PATCH] overspeed address --- controllers/ListenController.js | 37 ++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/controllers/ListenController.js b/controllers/ListenController.js index afb0d7f..d68ec5d 100644 --- a/controllers/ListenController.js +++ b/controllers/ListenController.js @@ -12,6 +12,9 @@ const ZoneModels = require("../models/ZoneModels") const LibHelper = require("../library/LibHelper") const db = require("../config/dbConnCron") const axios = require("axios") +const request = require("../config/request") +const url = require("url") +const TIMEFIX = 25200 Validator.useLang("en") const devices = [] @@ -338,7 +341,39 @@ async function commitMessage(now, logDevice) { const users = await db.query(queryUsers, []) if (users && users.length > 0) { const nopol = (vhc[0].nopol1 || "") + (vhc[0].nopol2 || "") + (vhc[0].nopol3 || "") - const rawMsg = `${nopol} | OVERSPEED | ${logDevice.crt_d_format} | ${logDevice.speed} km/h` + let address = "" + if (logDevice.latitude && logDevice.longitude) { + try { + const sameAddr = await GpsTracksModels.select2Address(logDevice.latitude, logDevice.longitude) + if (sameAddr.length > 0) { + address = decodeURIComponent(sameAddr[0].fulladdress) + } else { + const axInstance = axios.create({ + proxy: process.env.PROXY_URL ? { + host: process.env.PROXY_URL, + port: Number(process.env.PROXY_PORT), + } : false, + timeout: 15_000, + }) + const urlBase = request.osm_reverse_geo.urlFull + const params = new url.URLSearchParams({ + lat: logDevice.latitude, + lon: logDevice.longitude, + format: "geojson", + }) + const resp = await axInstance.get(`${urlBase}?${params.toString()}`, { + headers: { "User-Agent": `movana-fleet-management-overspeed` }, + }) + if (resp.status === 200 && resp.data && resp.data.features && resp.data.features.length > 0) { + address = resp.data.features[0].properties.display_name + } + } + } catch (addrErr) { + console.error("Error fetching address for overspeed alert:", addrErr.message) + } + } + const time = moment.unix(logDevice.crt_d + TIMEFIX).format('DD MMM YYYY HH:mm:ss') + const rawMsg = `${nopol} | OVERSPEED | ${time} | ${logDevice.speed} km/h | ${address}` for (let user of users) { if (user.phone) { try {