Kaynağa Gözat

cron wa service

master
jefry 4 yıl önce
ebeveyn
işleme
8f7c6ee9d5
2 değiştirilmiş dosya ile 60 ekleme ve 63 silme
  1. +57
    -62
      config/functions/cron.js
  2. +3
    -1
      model/messageModel.js

+ 57
- 62
config/functions/cron.js Dosyayı Görüntüle

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

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

module.exports = {
"*/10 * * * * *": async () => {
if (!taskClientLoading) {
console.log("refresh cients");
taskClientLoading = true;
// console.log("refresh cients");
const session_key = await strapi.api["session-data"].services[
"session-data"
].find({
@@ -25,57 +33,39 @@ module.exports = {
});
if (session_key.length == 0) taskClientLoading = false;
else {
session_key.forEach(async (i, indx) => {
for (const i of session_key) {
if (!Object.keys(clients).includes(`${i["id"]}`)) {
taskClientLoading = true;
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 () => {
if (!taskSendingMessage) {
console.log("auto send", clients);
if (!taskSendingMessage && Object.keys(clients).length != 0) {
// console.log("auto send");
taskSendingMessage = true;
if (Object.keys(clients).length == 0) taskSendingMessage = false;
else {
Object.keys(clients).forEach(async (i, indx) => {
for (const i of Object.keys(clients)) {
const sessions = await strapi.api["session-data"].services[
"session-data"
].getId({
_sort: "phonenumber:desc",
});
if (!sessions.includes(i)) {
delete clients[i];
if (!sessions.includes(parseInt(i))) {
delete clients[parseInt(i)];
} else {
const messages = await strapi.api.message.services.message.find(
{
@@ -84,36 +74,41 @@ module.exports = {
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(
{ 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 Dosyayı Görüntüle

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


Yükleniyor…
İptal
Kaydet