Pārlūkot izejas kodu

cron wa service

master
jefry pirms 4 gadiem
vecāks
revīzija
8f7c6ee9d5
2 mainītis faili ar 60 papildinājumiem un 63 dzēšanām
  1. +57
    -62
      config/functions/cron.js
  2. +3
    -1
      model/messageModel.js

+ 57
- 62
config/functions/cron.js Parādīt failu

@@ -13,11 +13,19 @@ const { parseMultipartData, sanitizeEntity } = require("strapi-utils");
let clients = {}; let clients = {};
let taskClientLoading = false; let taskClientLoading = false;
let taskSendingMessage = false; let taskSendingMessage = false;

function loadClient(i) {
return new Promise((resolve) => {
messageModel.loadClient(i["session_data"], async (data) => {
return resolve(data);
});
});
}

module.exports = { module.exports = {
"*/10 * * * * *": async () => { "*/10 * * * * *": async () => {
if (!taskClientLoading) { if (!taskClientLoading) {
console.log("refresh cients");
taskClientLoading = true;
// console.log("refresh cients");
const session_key = await strapi.api["session-data"].services[ const session_key = await strapi.api["session-data"].services[
"session-data" "session-data"
].find({ ].find({
@@ -25,57 +33,39 @@ module.exports = {
}); });
if (session_key.length == 0) taskClientLoading = false; if (session_key.length == 0) taskClientLoading = false;
else { else {
session_key.forEach(async (i, indx) => {
for (const i of session_key) {
if (!Object.keys(clients).includes(`${i["id"]}`)) { if (!Object.keys(clients).includes(`${i["id"]}`)) {
taskClientLoading = true;
clients[i["id"]] = null; clients[i["id"]] = null;
await messageModel.loadClient(
i["session_data"],
async (data) => {
if (
data["STATUS"] == 1 &&
data["TYPE"] == "READY"
) {
if (indx + 1 == session_key.length)
taskClientLoading = false;
clients[i["id"]] = data["DATA"];
return;
} else if (
data["STATUS"] == 0 &&
data["AUTH_FAILURE"]
) {
let id = i["id"];
await strapi.api["session-data"].services[
"session-data"
].delete({ id });
if (indx + 1 == session_key.length)
taskClientLoading = false;
return;
} else if (data["STATUS"] == 0) {
if (indx + 1 == session_key.length)
taskClientLoading = false;
return;
}
}
);
var data = await loadClient(i);
if (data["TYPE"] == "READY") {
clients[i["id"]] = data["DATA"];
} else if (data["TYPE"] == "AUTH_FAILURE") {
let id = i["id"];
await strapi.api["session-data"].services[
"session-data"
].delete({ id });
}
} }
});
}
taskClientLoading = false;
} }
} }
}, },
"*/3 * * * * *": async () => { "*/3 * * * * *": async () => {
if (!taskSendingMessage) {
console.log("auto send", clients);
if (!taskSendingMessage && Object.keys(clients).length != 0) {
// console.log("auto send");
taskSendingMessage = true; taskSendingMessage = true;
if (Object.keys(clients).length == 0) taskSendingMessage = false; if (Object.keys(clients).length == 0) taskSendingMessage = false;
else { else {
Object.keys(clients).forEach(async (i, indx) => {
for (const i of Object.keys(clients)) {
const sessions = await strapi.api["session-data"].services[ const sessions = await strapi.api["session-data"].services[
"session-data" "session-data"
].getId({ ].getId({
_sort: "phonenumber:desc", _sort: "phonenumber:desc",
}); });
if (!sessions.includes(i)) {
delete clients[i];
if (!sessions.includes(parseInt(i))) {
delete clients[parseInt(i)];
} else { } else {
const messages = await strapi.api.message.services.message.find( const messages = await strapi.api.message.services.message.find(
{ {
@@ -84,36 +74,41 @@ module.exports = {
session_datum_key: i, session_datum_key: i,
} }
); );
messages.forEach(async (message) => {
console.log(clients[i] != null, i, clients);
if (clients[i] != null) {
await strapi.api.message.services.message.update(
{ id: message.id },
{ state: "SENDING" }
);
let send = await messageModel.sendMessage(
clients[i],
message["send_to"],
message["raw_text"]
);
if (send["STATUS"] == 1) {
for (const message of messages) {
// console.log(clients[i] != null, i, clients);
try {
if (clients[i] != null) {
await strapi.api.message.services.message.update( await strapi.api.message.services.message.update(
{ id: message.id }, { id: message.id },
{ state: "SENT" }
{ state: "SENDING" }
); );
} else {
await strapi.api.message.services.message.update(
{ id: message.id },
{ state: "ERROR" }
let send = await messageModel.sendMessage(
clients[i],
message["send_to"],
message["raw_text"]
); );
if (send["STATUS"] == 1) {
await strapi.api.message.services.message.update(
{ id: message.id },
{ state: "SENT" }
);
} else {
await strapi.api.message.services.message.update(
{ id: message.id },
{ state: "ERROR" }
);
}
} }
} else taskSendingMessage = false;
});
} catch (e) {
await strapi.api.message.services.message.update(
{ id: message.id },
{ state: "ERROR" }
);
}
}
} }

if (indx + 1 == Object.keys(clients).length)
taskSendingMessage = false;
});
}
taskSendingMessage = false;
} }
} }
}, },


+ 3
- 1
model/messageModel.js Parādīt failu

@@ -23,13 +23,15 @@ function callbacks(client, callback, type = "create") {
}); });
}); });
client.on("disconnected", async function (session) { client.on("disconnected", async function (session) {
console.log("disconnected from loading");
console.log("disconnected from ", type, session);
if (session == "UNPAIRED") { if (session == "UNPAIRED") {
try { try {
if (type == "load" && client && client.info) { if (type == "load" && client && client.info) {
console.log(getID);
getID = await strapi getID = await strapi
.query("session-data") .query("session-data")
.findOne({ phonenumber: client.info.wid.user }); .findOne({ phonenumber: client.info.wid.user });
console.log(getID);
if (getID) { if (getID) {
let id = getID["id"]; let id = getID["id"];
await strapi.api["session-data"].services[ await strapi.api["session-data"].services[


Notiek ielāde…
Atcelt
Saglabāt