Merge pull request '4943-master_closeTickets' (!1213) from 4943-master_closeTickets into master
gitea/salix/pipeline/head This commit looks good Details

Reviewed-on: #1213
This commit is contained in:
Vicent Llopis 2022-12-23 08:54:48 +00:00
commit 892121fbbc
1 changed files with 50 additions and 44 deletions

View File

@ -25,10 +25,10 @@ module.exports = Self => {
return false;
const con = mysql.createConnection({
host: `${config.hostDb}`,
user: `${config.userDb}`,
password: `${config.passwordDb}`,
port: `${config.portDb}`
host: config.hostDb,
user: config.userDb,
password: config.passwordDb,
port: config.portDb
});
const sql = `SELECT ot.ticket_id, ot.number
@ -38,23 +38,23 @@ module.exports = Self => {
JOIN (
SELECT ote.thread_id, MAX(ote.created) created, MAX(ote.updated) updated
FROM osticket.ost_thread_entry ote
WHERE ote.staff_id != 0 AND ote.type = 'R'
WHERE ote.staff_id AND ote.type = 'R'
GROUP BY ote.thread_id
) sub ON sub.thread_id = ot2.id
WHERE ot.isanswered = 1
AND ots.state = '${config.oldStatus}'
AND IF(sub.updated > sub.created, sub.updated, sub.created) < DATE_SUB(CURDATE(), INTERVAL ${config.day} DAY)`;
WHERE ot.isanswered
AND ots.state = ?
AND IF(sub.updated > sub.created, sub.updated, sub.created) < DATE_SUB(CURDATE(), INTERVAL ? DAY)`;
let ticketsId = [];
const ticketsId = [];
con.connect(err => {
if (err) throw err;
con.query(sql, (err, results) => {
con.query(sql, [config.oldStatus, config.day],
(err, results) => {
if (err) throw err;
for (const result of results)
ticketsId.push(result.ticket_id);
});
});
await getRequestToken();
async function getRequestToken() {
@ -94,24 +94,9 @@ module.exports = Self => {
await close(token, secondCookie);
}
async function getLockCode(token, secondCookie, ticketId) {
const ostUri = `${config.host}/ajax.php/lock/ticket/${ticketId}`;
const params = {
method: 'POST',
headers: {
'X-CSRFToken': token,
'Cookie': secondCookie
}
};
const response = await fetch(ostUri, params);
const body = await response.text();
const json = JSON.parse(body);
return json.code;
}
async function close(token, secondCookie) {
for (const ticketId of ticketsId) {
try {
const lockCode = await getLockCode(token, secondCookie, ticketId);
let form = new FormData();
form.append('__CSRFToken__', token);
@ -133,8 +118,29 @@ module.exports = Self => {
'Cookie': secondCookie
}
};
return fetch(ostUri, params);
await fetch(ostUri, params);
} catch (e) {
const err = new Error(`${ticketId} Ticket close failed: ${e.message}`);
err.stack += e.stack;
throw err;
}
}
}
async function getLockCode(token, secondCookie, ticketId) {
const ostUri = `${config.host}/ajax.php/lock/ticket/${ticketId}`;
const params = {
method: 'POST',
headers: {
'X-CSRFToken': token,
'Cookie': secondCookie
}
};
const response = await fetch(ostUri, params);
const body = await response.text();
const json = JSON.parse(body);
return json.code;
}
};
};