location only geocode

This commit is contained in:
Pringgosutono
2025-10-02 16:51:45 +07:00
parent 205ee1f0e5
commit 7d8d6ed2b9

View File

@ -1,244 +1,281 @@
const db = require(`../config/dbMysqlConn`); const db = require(`../config/dbMysqlConn`)
const MysqlHelpers = require(`../library/LibMysqlHelper`); const MysqlHelpers = require(`../library/LibMysqlHelper`)
class GpsTracksModels { class GpsTracksModels {
static DEFAULT_COUNTRY_ID = 1; static DEFAULT_COUNTRY_ID = 1
static TYPE_ADDR_OSM = 1; static TYPE_ADDR_OSM = 1
static STTS_REVERSE_GEO_SC = 1; static STTS_REVERSE_GEO_SC = 1
static STTS_REVERSE_GEO_NOT = 2; static STTS_REVERSE_GEO_NOT = 2
static STTS_REVERSE_GEO_ER = 3; static STTS_REVERSE_GEO_ER = 3
static STTS_REVERSE_GEO_LOST = 4; static STTS_REVERSE_GEO_LOST = 4
static STTS_EN_DFT = 0; static STTS_EN_DFT = 0
static STTS_EN_IDLING = 1; static STTS_EN_IDLING = 1
static STTS_EN_MOVING = 2; static STTS_EN_MOVING = 2
static STTS_EN_STOPING = 3; static STTS_EN_STOPING = 3
static STTS_IGNITION_DFT = 0; static STTS_IGNITION_DFT = 0
static STTS_IGNITION_ON = 1; static STTS_IGNITION_ON = 1
static STTS_IGNITION_OFF = 2; static STTS_IGNITION_OFF = 2
static STTS_IGNITION_LOW = 3; static STTS_IGNITION_LOW = 3
static STTS_IGNITION_HIGH = 4; static STTS_IGNITION_HIGH = 4
static STTS_GPS_DFT = 0; // default static STTS_GPS_DFT = 0 // default
static STTS_GPS_ON = 1; static STTS_GPS_ON = 1
static STTS_GPS_OFF = 2; static STTS_GPS_OFF = 2
// realtime GPS or differential positioning // realtime GPS or differential positioning
static STTS_POS_TYPE_GPS_DFT = 0; // default static STTS_POS_TYPE_GPS_DFT = 0 // default
static STTS_POS_TYPE_GPS_DIFF = 1; static STTS_POS_TYPE_GPS_DIFF = 1
static STTS_POS_TYPE_GPS_RLTM = 2; static STTS_POS_TYPE_GPS_RLTM = 2
// GPS has been positioned or not // GPS has been positioned or not
static STTS_IS_POS_GPS_DFT = 0; // default static STTS_IS_POS_GPS_DFT = 0 // default
static STTS_IS_POS_GPS_NOT = 1; // not positioning static STTS_IS_POS_GPS_NOT = 1 // not positioning
static STTS_IS_POS_GPS_HAS = 2; // positioning static STTS_IS_POS_GPS_HAS = 2 // positioning
// 1=>no signal, 2=>extremely weak signal 3=>very weak signal, 4=>good signal, 5=>strong signal // 1=>no signal, 2=>extremely weak signal 3=>very weak signal, 4=>good signal, 5=>strong signal
static STTS_GSM_DFT = 0; // default static STTS_GSM_DFT = 0 // default
static STTS_GSM_NO_SIGNAL = 1; static STTS_GSM_NO_SIGNAL = 1
static STTS_GSM_BAD_SIGNAL = 2; static STTS_GSM_BAD_SIGNAL = 2
static STTS_GSM_WEAK_SIGNAL = 3; static STTS_GSM_WEAK_SIGNAL = 3
static STTS_GSM_GOOD_SIGNAL = 4; static STTS_GSM_GOOD_SIGNAL = 4
static STTS_GSM_STRONG_SIGNAL = 5; static STTS_GSM_STRONG_SIGNAL = 5
static STTS_OIL_ELECTRIC_DFT = 0; static STTS_OIL_ELECTRIC_DFT = 0
static STTS_OIL_ELECTRIC_ON = 1; static STTS_OIL_ELECTRIC_ON = 1
static STTS_OIL_ELECTRIC_OFF = 2; static STTS_OIL_ELECTRIC_OFF = 2
static STTS_ALARM_DFT = 0; static STTS_ALARM_DFT = 0
static STTS_ALARM_NORMAL = 1; static STTS_ALARM_NORMAL = 1
static STTS_ALARM_SHOCK = 2; static STTS_ALARM_SHOCK = 2
static STTS_ALARM_POWER_CUT = 3; static STTS_ALARM_POWER_CUT = 3
static STTS_ALARM_LOW_BATTERY = 4; static STTS_ALARM_LOW_BATTERY = 4
static STTS_ALARM_SOS = 5; static STTS_ALARM_SOS = 5
static STTS_CHARGE_DFT = 0; static STTS_CHARGE_DFT = 0
static STTS_CHARGE_OFF = 1; static STTS_CHARGE_OFF = 1
static STTS_CHARGE_ON = 2; static STTS_CHARGE_ON = 2
static STTS_ACC_DFT = 0; static STTS_ACC_DFT = 0
static STTS_ACC_LOW = 1; static STTS_ACC_LOW = 1
static STTS_ACC_HIGH = 2; static STTS_ACC_HIGH = 2
static STTS_VOLT_DFT = 0; static STTS_VOLT_DFT = 0
static STTS_VOLT_SHUTDOWN = 1; static STTS_VOLT_SHUTDOWN = 1
static STTS_VOLT_EXTREME_LOW_BATTERY = 2; static STTS_VOLT_EXTREME_LOW_BATTERY = 2
static STTS_VOLT_VERY_LOW_BATTERY = 3; static STTS_VOLT_VERY_LOW_BATTERY = 3
static STTS_VOLT_LOW_BATTERY = 4; static STTS_VOLT_LOW_BATTERY = 4
static STTS_VOLT_MEDIUM = 5; static STTS_VOLT_MEDIUM = 5
static STTS_VOLT_HIGH = 6; static STTS_VOLT_HIGH = 6
static STTS_VOLT_VERY_HIGH = 7; static STTS_VOLT_VERY_HIGH = 7
static STTS_SWITCH_DFT = 0; static STTS_SWITCH_DFT = 0
static STTS_SWITCH_OFF = 1; static STTS_SWITCH_OFF = 1
static STTS_SWITCH_ON = 2; static STTS_SWITCH_ON = 2
static STTS_ENTER_ZONE = 1; static STTS_ENTER_ZONE = 1
static STTS_LEAVE_ZONE = 2; static STTS_LEAVE_ZONE = 2
// type source // type source
static SOURCE_GPS_TRACKER = 1; static SOURCE_GPS_TRACKER = 1
static SOURCE_SMARTPHONE = 2; static SOURCE_SMARTPHONE = 2
static PROTOCOL_SMARTPHONE = "smartphone"; static PROTOCOL_SMARTPHONE = "smartphone"
static ACT_LOGIN = "login"; static ACT_LOGIN = "login"
static ACT_HEARTBEAT = "heartbeat"; static ACT_HEARTBEAT = "heartbeat"
static ACT_LOCATION = "location"; static ACT_LOCATION = "location"
static ACT_OTHER = "other"; static ACT_OTHER = "other"
static async create2(data) { static async create2(data) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const query = `INSERT INTO t_gps_tracks SET ?;`; const query = `INSERT INTO t_gps_tracks SET ?;`
db.getConnection(function (err, conn) { db.getConnection(function (err, conn) {
if (err) { if (err) {
conn.release(); conn.release()
reject(err); reject(err)
return false; return false
} }
conn.beginTransaction(async function (err) { conn.beginTransaction(async function (err) {
if (err) { if (err) {
conn.release(); conn.release()
reject(err); reject(err)
return false; return false
} }
conn.query(query, data, function (err, resp) { conn.query(query, data, function (err, resp) {
if (err) { if (err) {
conn.rollback(async function () { conn.rollback(async function () {
conn.release(); conn.release()
reject(err.message); reject(err.message)
}); })
return false; return false
} }
// Number(resp.insertId); // Number(resp.insertId);
conn.commit(async function (err) { conn.commit(async function (err) {
if (err) { if (err) {
conn.release(); conn.release()
reject(err); reject(err)
return false; return false
} }
conn.release(); conn.release()
resolve(resp); resolve(resp)
return true; return true
}); })
}); })
}); })
}); })
}); })
} }
static bundleCreate2(logs = {}, rltm = {}) { static bundleCreate2(logs = {}, rltm = {}) {
return new Promise(async (resolve, reject) => { return new Promise(async (resolve, reject) => {
try { try {
const conn = await MysqlHelpers.createConnection(); const conn = await MysqlHelpers.createConnection()
await MysqlHelpers.createTrx(conn); await MysqlHelpers.createTrx(conn)
let rltmLength = Object.keys(rltm).length; let rltmLength = Object.keys(rltm).length
let resLogs = undefined; let resLogs = undefined
if (Object.keys(logs).length > 0) resLogs = await MysqlHelpers.queryTrx(conn, `INSERT INTO t_gps_tracks SET ?;`, [logs]); if (Object.keys(logs).length > 0)
resLogs = await MysqlHelpers.queryTrx(conn, `INSERT INTO t_gps_tracks SET ?;`, [logs])
if (rltmLength > 0 && typeof resLogs !== "undefined") rltm.master_id = resLogs.insertId; if (rltmLength > 0 && typeof resLogs !== "undefined") rltm.master_id = resLogs.insertId
if (rltmLength > 0 && rltm.latitude !== null && rltm.longitude !== null) { if (rltmLength > 0 && rltm.latitude !== null && rltm.longitude !== null) {
let devices = await MysqlHelpers.queryTrx(conn, `SELECT id FROM t_gps_tracks_rltm as rltm WHERE rltm.device_id = ?`, [rltm.device_id]); let devices = await MysqlHelpers.queryTrx(
if (devices.length > 1) await MysqlHelpers.queryTrx(conn, `DELETE from t_gps_tracks_rltm WHERE device_id = ?;`, [rltm.device_id]); conn,
`SELECT id FROM t_gps_tracks_rltm as rltm WHERE rltm.device_id = ?`,
[rltm.device_id]
)
if (devices.length > 1)
await MysqlHelpers.queryTrx(conn, `DELETE from t_gps_tracks_rltm WHERE device_id = ?;`, [
rltm.device_id,
])
if (rltm.vhc_id != 0) { if (rltm.vhc_id != 0) {
let vhcs = await MysqlHelpers.queryTrx(conn, `SELECT id FROM t_gps_tracks_rltm as rltm WHERE rltm.vhc_id = ?`, [rltm.vhc_id]); let vhcs = await MysqlHelpers.queryTrx(
if (vhcs.length > 1) await MysqlHelpers.queryTrx(conn, `DELETE from t_gps_tracks_rltm WHERE vhc_id = ?;`, [rltm.vhc_id]); conn,
`SELECT id FROM t_gps_tracks_rltm as rltm WHERE rltm.vhc_id = ?`,
[rltm.vhc_id]
)
if (vhcs.length > 1)
await MysqlHelpers.queryTrx(conn, `DELETE from t_gps_tracks_rltm WHERE vhc_id = ?;`, [
rltm.vhc_id,
])
} }
if (rltm.drv_id != 0) { if (rltm.drv_id != 0) {
let drvs = await MysqlHelpers.queryTrx(conn, `SELECT id FROM t_gps_tracks_rltm as rltm WHERE rltm.drv_id = ?`, [rltm.drv_id]); let drvs = await MysqlHelpers.queryTrx(
if (drvs.length > 1) await MysqlHelpers.queryTrx(conn, `DELETE from t_gps_tracks_rltm WHERE drv_id = ?;`, [rltm.drv_id]); conn,
`SELECT id FROM t_gps_tracks_rltm as rltm WHERE rltm.drv_id = ?`,
[rltm.drv_id]
)
if (drvs.length > 1)
await MysqlHelpers.queryTrx(conn, `DELETE from t_gps_tracks_rltm WHERE drv_id = ?;`, [
rltm.drv_id,
])
} }
await MysqlHelpers.queryTrx(conn, `INSERT INTO t_gps_tracks_rltm SET ? ON DUPLICATE KEY UPDATE ?;`, [rltm, rltm]); await MysqlHelpers.queryTrx(
conn,
`INSERT INTO t_gps_tracks_rltm SET ? ON DUPLICATE KEY UPDATE ?;`,
[rltm, rltm]
)
} }
await MysqlHelpers.commit(conn); await MysqlHelpers.commit(conn)
resolve({ resolve({
type: "success", type: "success",
result: resLogs, result: resLogs,
}); })
} catch (err) { } catch (err) {
console.log("err"); console.log("err")
reject(err); reject(err)
} }
}); })
} }
static async get2() { static async get2() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let params = []; let params = []
let query = "SELECT * FROM t_gps_tracks ORDER BY id DESC LIMIT 1000"; let query = "SELECT * FROM t_gps_tracks ORDER BY id DESC LIMIT 1000"
db.query(query, params, function (err, resp) { db.query(query, params, function (err, resp) {
if (err) { if (err) {
reject(err); reject(err)
return false; return false
} }
resolve(resp); resolve(resp)
return true; return true
}); })
}); })
} }
static async get2ForReverseGeo(limit) { static async get2ForReverseGeo(limit) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let params = []; let params = []
let query = "SELECT * FROM t_gps_tracks WHERE latitude is not null AND longitude is not null AND stts_reverse_geo = ? ORDER BY id ASC LIMIT ?"; let query = `
params.push(GpsTracksModels.STTS_REVERSE_GEO_NOT, limit); SELECT *
FROM t_gps_tracks
WHERE
latitude is not null
AND longitude is not null
AND stts_reverse_geo = ?
and action = 'location'
ORDER BY id ASC
LIMIT ?
`
params.push(GpsTracksModels.STTS_REVERSE_GEO_NOT, limit)
db.query(query, params, function (err, resp) { db.query(query, params, function (err, resp) {
if (err) { if (err) {
reject(err); reject(err)
return false; return false
} }
resolve(resp); resolve(resp)
return true; return true
}); })
}); })
} }
static async get2LastDevice(device_id) { static async get2LastDevice(device_id) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let params = []; let params = []
let query = "SELECT * FROM t_gps_tracks WHERE device_id = ? ORDER BY id DESC LIMIT 1"; let query = "SELECT * FROM t_gps_tracks WHERE device_id = ? ORDER BY id DESC LIMIT 1"
params.push(device_id); params.push(device_id)
db.query(query, params, function (err, resp) { db.query(query, params, function (err, resp) {
if (err) { if (err) {
reject(err); reject(err)
return false; return false
} }
resolve(resp); resolve(resp)
return true; return true
}); })
}); })
} }
static async get2LastLocByDeviceId(device_id) { static async get2LastLocByDeviceId(device_id) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let params = []; let params = []
// let query = 'SELECT * FROM t_gps_tracks WHERE device_id = ? AND latitude is not null AND longitude != 0 ORDER BY id DESC LIMIT 1'; // let query = 'SELECT * FROM t_gps_tracks WHERE device_id = ? AND latitude is not null AND longitude != 0 ORDER BY id DESC LIMIT 1';
let query = 'SELECT * FROM t_gps_tracks WHERE action IN ("location","alarm") AND device_id = ? AND latitude is not null AND longitude != 0 ORDER BY id DESC LIMIT 1'; // kalo gamau ngambil data heartbeat(idling) let query =
params.push(device_id); 'SELECT * FROM t_gps_tracks WHERE action IN ("location","alarm") AND device_id = ? AND latitude is not null AND longitude != 0 ORDER BY id DESC LIMIT 1' // kalo gamau ngambil data heartbeat(idling)
params.push(device_id)
db.query(query, params, function (err, resp) { db.query(query, params, function (err, resp) {
if (err) { if (err) {
reject(err); reject(err)
return false; return false
} }
resolve(resp); resolve(resp)
return true; return true
}); })
}); })
} }
static async getLastSumMileage(device_id) { static async getLastSumMileage(device_id) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let params = []; let params = []
let query = ` let query = `
select select
* *
@ -248,301 +285,315 @@ class GpsTracksModels {
tv.device_id = "0866833070208837" tv.device_id = "0866833070208837"
and tv.dlt is null and tv.dlt is null
limit 1 limit 1
`; `
params.push(device_id); params.push(device_id)
db.query(query, params, function (err, resp) { db.query(query, params, function (err, resp) {
if (err) { if (err) {
reject(err); reject(err)
return false; return false
} }
resolve(resp); resolve(resp)
return true; return true
}); })
}); })
} }
static async get2LastLoc(filter = {}) { static async get2LastLoc(filter = {}) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let params = [], let params = [],
where = ""; where = ""
if (filter["device_id"]) { if (filter["device_id"]) {
where += " AND device_id = ?"; where += " AND device_id = ?"
params.push(filter["device_id"]); params.push(filter["device_id"])
} else if (filter["vhc_id"]) { } else if (filter["vhc_id"]) {
where += " AND vhc_id = ?"; where += " AND vhc_id = ?"
params.push(filter["vhc_id"]); params.push(filter["vhc_id"])
} else if (filter["drv_id"]) { } else if (filter["drv_id"]) {
where += " AND drv_id = ?"; where += " AND drv_id = ?"
params.push(filter["drv_id"]); params.push(filter["drv_id"])
} else { } else {
reject(false); reject(false)
return false; return false
} }
let query = `SELECT * FROM t_gps_tracks WHERE latitude is not null AND longitude != 0 ${where} ORDER BY id DESC LIMIT 1`; let query = `SELECT * FROM t_gps_tracks WHERE latitude is not null AND longitude != 0 ${where} ORDER BY id DESC LIMIT 1`
db.query(query, params, function (err, resp) { db.query(query, params, function (err, resp) {
if (err) { if (err) {
reject(err); reject(err)
return false; return false
} }
resolve(resp); resolve(resp)
return true; return true
}); })
}); })
} }
static async getLastLocAndAddrByDid(filter = {}) { static async getLastLocAndAddrByDid(filter = {}) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let params = [], let params = [],
where = "", where = "",
limit = ""; limit = ""
if (typeof filter["did"] !== "undefined") { if (typeof filter["did"] !== "undefined") {
where += " AND tr.drv_id = ?"; where += " AND tr.drv_id = ?"
params.push(filter["did"]); params.push(filter["did"])
} }
if (typeof filter["limit"] !== "undefined") { if (typeof filter["limit"] !== "undefined") {
limit += " LIMIT ?"; limit += " LIMIT ?"
params.push(filter["limit"]); params.push(filter["limit"])
} }
let query = `SELECT tr.*,tra.state_text,tra.city_text,tra.district_text,tra.village_text,tra.postcode,tra.streets,tra.fulladdress FROM t_gps_tracks as tr LEFT JOIN t_gps_tracks_address as tra ON tr.id = tra.master_id WHERE latitude is not null AND longitude != 0 ${where} ORDER BY id DESC ${limit}`; let query = `SELECT tr.*,tra.state_text,tra.city_text,tra.district_text,tra.village_text,tra.postcode,tra.streets,tra.fulladdress FROM t_gps_tracks as tr LEFT JOIN t_gps_tracks_address as tra ON tr.id = tra.master_id WHERE latitude is not null AND longitude != 0 ${where} ORDER BY id DESC ${limit}`
db.query(query, params, function (err, resp) { db.query(query, params, function (err, resp) {
if (err) { if (err) {
reject(err); reject(err)
return false; return false
} }
resolve(resp); resolve(resp)
return true; return true
}); })
}); })
} }
static async checkSttsEngineBetweenDate(device_id, stts_engine, start, end) { static async checkSttsEngineBetweenDate(device_id, stts_engine, start, end) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let params = []; let params = []
let query = "SELECT * FROM t_gps_tracks WHERE device_id = ? AND stts_engine = ? AND crt BETWEEN ? AND ? ORDER BY id ASC LIMIT 1"; let query =
params.push(device_id, stts_engine, start, end); "SELECT * FROM t_gps_tracks WHERE device_id = ? AND stts_engine = ? AND crt BETWEEN ? AND ? ORDER BY id ASC LIMIT 1"
params.push(device_id, stts_engine, start, end)
db.query(query, params, function (err, resp) { db.query(query, params, function (err, resp) {
if (err) { if (err) {
reject(err); reject(err)
return false; return false
} }
resolve(resp); resolve(resp)
return true; return true
}); })
}); })
} }
static async get2LastHeartbeatOrAlarm(device_id) { static async get2LastHeartbeatOrAlarm(device_id) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let params = []; let params = []
let query = 'SELECT * FROM t_gps_tracks WHERE device_id = ? AND action IN ("heartbeat","alarm") AND stts_gps != 0 AND stts_gsm != 0 ORDER BY id DESC LIMIT 1'; let query =
params.push(device_id); 'SELECT * FROM t_gps_tracks WHERE device_id = ? AND action IN ("heartbeat","alarm") AND stts_gps != 0 AND stts_gsm != 0 ORDER BY id DESC LIMIT 1'
params.push(device_id)
db.query(query, params, function (err, resp) { db.query(query, params, function (err, resp) {
if (err) { if (err) {
reject(err); reject(err)
return false; return false
} }
resolve(resp); resolve(resp)
return true; return true
}); })
}); })
} }
static async getLastHeartbeatToDeterminIdling(device_id, lst_pos_crt, now) { static async getLastHeartbeatToDeterminIdling(device_id, lst_pos_crt, now) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let params = []; let params = []
let query = 'SELECT * FROM t_gps_tracks WHERE device_id = ? AND action IN ("heartbeat") AND stts_gps != 0 AND crt BETWEEN ' + lst_pos_crt + " AND " + now + " ORDER BY id DESC;"; let query = `
params.push(device_id); SELECT *
FROM t_gps_tracks
WHERE
device_id = ?
AND action IN ("heartbeat")
AND stts_gps != 0
AND crt BETWEEN ${lst_pos_crt} AND ${now}
ORDER BY id DESC;
`
params.push(device_id)
db.query(query, params, function (err, resp) { db.query(query, params, function (err, resp) {
if (err) { if (err) {
reject(err); reject(err)
return false; return false
} }
resolve(resp); resolve(resp)
return true; return true
}); })
}); })
} }
static async update2(id, data) { static async update2(id, data) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const query = `UPDATE t_gps_tracks SET ? WHERE id = ?;`; const query = `UPDATE t_gps_tracks SET ? WHERE id = ?;`
db.getConnection(function (err, conn) { db.getConnection(function (err, conn) {
if (err) { if (err) {
conn.release(); conn.release()
reject(err); reject(err)
return false; return false
} }
conn.beginTransaction(async function (err) { conn.beginTransaction(async function (err) {
if (err) { if (err) {
conn.release(); conn.release()
reject(err); reject(err)
return false; return false
} }
conn.query(query, [data, id], function (err, resp) { conn.query(query, [data, id], function (err, resp) {
if (err) { if (err) {
conn.rollback(async function () { conn.rollback(async function () {
conn.release(); conn.release()
reject(err.message); reject(err.message)
}); })
return false; return false
} }
conn.commit(async function (err) { conn.commit(async function (err) {
if (err) { if (err) {
conn.release(); conn.release()
reject(err); reject(err)
return false; return false
} }
conn.release(); conn.release()
resolve(resp); resolve(resp)
return true; return true
}); })
}); })
}); })
}); })
}); })
} }
static async select2Address(lat = "", lng = "") { static async select2Address(lat = "", lng = "") {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let params = []; let params = []
let query = "SELECT * FROM t_gps_tracks_address WHERE stts_reverse_geo = " + GpsTracksModels.STTS_REVERSE_GEO_SC + " AND lat = ? AND lng = ? ORDER BY id DESC LIMIT 1;"; let query =
params.push(lat, lng); "SELECT * FROM t_gps_tracks_address WHERE stts_reverse_geo = " +
GpsTracksModels.STTS_REVERSE_GEO_SC +
" AND lat = ? AND lng = ? ORDER BY id DESC LIMIT 1;"
params.push(lat, lng)
db.query(query, params, function (err, resp) { db.query(query, params, function (err, resp) {
if (err) { if (err) {
reject(err); reject(err)
return false; return false
} }
resolve(resp); resolve(resp)
return true; return true
}); })
}); })
} }
static async create2Address(data) { static async create2Address(data) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const query = `INSERT INTO t_gps_tracks_address SET ?;`; const query = `INSERT INTO t_gps_tracks_address SET ?;`
db.getConnection(function (err, conn) { db.getConnection(function (err, conn) {
if (err) { if (err) {
conn.release(); conn.release()
reject(err); reject(err)
return false; return false
} }
conn.beginTransaction(async function (err) { conn.beginTransaction(async function (err) {
if (err) { if (err) {
conn.release(); conn.release()
reject(err); reject(err)
return false; return false
} }
conn.query(query, data, function (err, resp) { conn.query(query, data, function (err, resp) {
if (err) { if (err) {
conn.rollback(async function () { conn.rollback(async function () {
conn.release(); conn.release()
reject(err.message); reject(err.message)
}); })
return false; return false
} }
// Number(resp.insertId); // Number(resp.insertId);
conn.commit(async function (err) { conn.commit(async function (err) {
if (err) { if (err) {
conn.release(); conn.release()
reject(err); reject(err)
return false; return false
} }
conn.release(); conn.release()
resolve(resp); resolve(resp)
return true; return true
}); })
}); })
}); })
}); })
}); })
} }
static async create2SpawnZone(data) { static async create2SpawnZone(data) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const query = `INSERT INTO t_gps_tracks_spawn SET ?;`; const query = `INSERT INTO t_gps_tracks_spawn SET ?;`
db.getConnection(function (err, conn) { db.getConnection(function (err, conn) {
if (err) { if (err) {
conn.release(); conn.release()
reject(err); reject(err)
return false; return false
} }
conn.beginTransaction(async function (err) { conn.beginTransaction(async function (err) {
if (err) { if (err) {
conn.release(); conn.release()
reject(err); reject(err)
return false; return false
} }
conn.query(query, data, function (err, resp) { conn.query(query, data, function (err, resp) {
if (err) { if (err) {
conn.rollback(async function () { conn.rollback(async function () {
conn.release(); conn.release()
reject(err.message); reject(err.message)
}); })
return false; return false
} }
// Number(resp.insertId); // Number(resp.insertId);
conn.commit(async function (err) { conn.commit(async function (err) {
if (err) { if (err) {
conn.release(); conn.release()
reject(err); reject(err)
return false; return false
} }
conn.release(); conn.release()
resolve(resp); resolve(resp)
return true; return true
}); })
}); })
}); })
}); })
}); })
} }
static async updt2SpawnZone(data, id) { static async updt2SpawnZone(data, id) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const query = `UPDATE t_gps_tracks_spawn SET ? WHERE id = ?;`; const query = `UPDATE t_gps_tracks_spawn SET ? WHERE id = ?;`
db.getConnection(function (err, conn) { db.getConnection(function (err, conn) {
if (err) { if (err) {
conn.release(); conn.release()
reject(err); reject(err)
return false; return false
} }
conn.beginTransaction(async function (err) { conn.beginTransaction(async function (err) {
if (err) { if (err) {
conn.release(); conn.release()
reject(err); reject(err)
return false; return false
} }
conn.query(query, [data, id], function (err, resp) { conn.query(query, [data, id], function (err, resp) {
if (err) { if (err) {
conn.rollback(async function () { conn.rollback(async function () {
conn.release(); conn.release()
reject(err.message); reject(err.message)
}); })
return false; return false
} }
// Number(resp.insertId); // Number(resp.insertId);
conn.commit(async function (err) { conn.commit(async function (err) {
if (err) { if (err) {
conn.release(); conn.release()
reject(err); reject(err)
return false; return false
} }
conn.release(); conn.release()
resolve(resp); resolve(resp)
return true; return true
}); })
}); })
}); })
}); })
}); })
} }
static listSpawnZone(filter = {}) { static listSpawnZone(filter = {}) {
@ -553,45 +604,45 @@ class GpsTracksModels {
join = "", join = "",
order_by = "", order_by = "",
group_by = "", group_by = "",
limit = ""; limit = ""
if (filter["zone_id"]) { if (filter["zone_id"]) {
where += " AND spawn.zone_id = ?"; where += " AND spawn.zone_id = ?"
params.push(filter["zone_id"]); params.push(filter["zone_id"])
} }
if (filter["ord_id"]) { if (filter["ord_id"]) {
where += " AND spawn.ord_id = ?"; where += " AND spawn.ord_id = ?"
params.push(filter["ord_id"]); params.push(filter["ord_id"])
} }
if (filter["ord_pck_drop_id"]) { if (filter["ord_pck_drop_id"]) {
where += " AND spawn.ord_pck_drop_id = ?"; where += " AND spawn.ord_pck_drop_id = ?"
params.push(filter["ord_pck_drop_id"]); params.push(filter["ord_pck_drop_id"])
} }
if (filter["drv_id"]) { if (filter["drv_id"]) {
where += " AND spawn.drv_id = ?"; where += " AND spawn.drv_id = ?"
params.push(filter["drv_id"]); params.push(filter["drv_id"])
} }
if (filter["vhc_id"]) { if (filter["vhc_id"]) {
where += " AND spawn.vhc_id = ?"; where += " AND spawn.vhc_id = ?"
params.push(filter["vhc_id"]); params.push(filter["vhc_id"])
} }
if (filter["source"]) { if (filter["source"]) {
where += " AND spawn.source = ?"; where += " AND spawn.source = ?"
params.push(filter["source"]); params.push(filter["source"])
} }
if (typeof filter["leave_at_d"] != undefined) { if (typeof filter["leave_at_d"] != undefined) {
where += " AND spawn.leave_at_d = ?"; where += " AND spawn.leave_at_d = ?"
params.push(filter["leave_at_d"]); params.push(filter["leave_at_d"])
} }
if (filter["group_by"]) { if (filter["group_by"]) {
group_by = filter["group_by"]; group_by = filter["group_by"]
} }
if (filter["order_by"]) { if (filter["order_by"]) {
order_by = filter["order_by"]; order_by = filter["order_by"]
} }
if (filter["limit"]) { if (filter["limit"]) {
limit = " LIMIT " + filter["limit"]; limit = " LIMIT " + filter["limit"]
} }
let query = `SELECT let query = `SELECT
@ -604,17 +655,17 @@ class GpsTracksModels {
${group_by} ${group_by}
${order_by} ${order_by}
${limit} ${limit}
;`; ;`
db.query(query, params, function (err, resp) { db.query(query, params, function (err, resp) {
if (err) { if (err) {
reject(err); reject(err)
return false; return false
} }
resolve(resp); resolve(resp)
return true; return true
}); })
}); })
} }
} }
module.exports = GpsTracksModels; module.exports = GpsTracksModels