|
@@ -1,15 +1,16 @@
|
|
|
/// 每个小时检查下api接口及数据一致性
|
|
/// 每个小时检查下api接口及数据一致性
|
|
|
-const axios = require('axios');
|
|
|
|
|
|
|
+const axios = require("axios");
|
|
|
|
|
|
|
|
-const { sendEmail } = require('./email')
|
|
|
|
|
-const { sendSms } = require('./sms')
|
|
|
|
|
-const SmsTemplate = require('./sms-templates');
|
|
|
|
|
|
|
+const { sendEmail } = require("./email");
|
|
|
|
|
+const { sendSms } = require("./sms");
|
|
|
|
|
+const SmsTemplate = require("./sms-templates");
|
|
|
|
|
|
|
|
-const onlineHost = 'app2.pcoloring.com';
|
|
|
|
|
-const offlineHost = 'color.jccytech.cn';
|
|
|
|
|
-const artLatestUri = 'napi/number/v9/list/art/content?column=latest';
|
|
|
|
|
-const jigsawLatestUri = 'napi/jigsaw/mobi/list/latest';
|
|
|
|
|
-const artPuzzleLatestUri = 'napi/puzzle/mobi/list/latest';
|
|
|
|
|
|
|
+const onlineHost = "app2.pcoloring.com";
|
|
|
|
|
+const offlineHost = "color.jccytech.cn";
|
|
|
|
|
+const artLatestUri =
|
|
|
|
|
+ "napi/number/v9_4/list/art/content?column=latest&lang=en-US&uid=flaRJA31QiqaatG24Shxbc&days=20&page=0&size=100&group=builtin";
|
|
|
|
|
+const jigsawLatestUri = "napi/jigsaw/mobi/list/latest";
|
|
|
|
|
+const artPuzzleLatestUri = "napi/puzzle/mobi/list/latest";
|
|
|
|
|
|
|
|
async function checkArtLatest() {
|
|
async function checkArtLatest() {
|
|
|
let onlineUrl = `https://${onlineHost}/${artLatestUri}`;
|
|
let onlineUrl = `https://${onlineHost}/${artLatestUri}`;
|
|
@@ -19,67 +20,67 @@ async function checkArtLatest() {
|
|
|
let resp = await axios.get(onlineUrl);
|
|
let resp = await axios.get(onlineUrl);
|
|
|
onlineData = resp.data;
|
|
onlineData = resp.data;
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
- console.error('Art线上latest数据请求出错, 请及时检查:', [e.message]);
|
|
|
|
|
|
|
+ console.error("Art线上latest数据请求出错, 请及时检查:", [e.message]);
|
|
|
return {
|
|
return {
|
|
|
result: false,
|
|
result: false,
|
|
|
errcode: 100,
|
|
errcode: 100,
|
|
|
- title: 'Art线上latest数据请求出错, 请及时检查',
|
|
|
|
|
|
|
+ title: "Art线上latest数据请求出错, 请及时检查",
|
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
|
data: [e.message],
|
|
data: [e.message],
|
|
|
- }
|
|
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
let resp = await axios.get(offlineUrl);
|
|
let resp = await axios.get(offlineUrl);
|
|
|
offlineData = resp.data;
|
|
offlineData = resp.data;
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
- console.error('Art 线下latest数据请求出错, 请及时检查:', [e.message]);
|
|
|
|
|
|
|
+ console.error("Art 线下latest数据请求出错, 请及时检查:", [e.message]);
|
|
|
return {
|
|
return {
|
|
|
result: false,
|
|
result: false,
|
|
|
errcode: 100,
|
|
errcode: 100,
|
|
|
- title: 'Art 线下latest数据请求出错, 请及时检查',
|
|
|
|
|
|
|
+ title: "Art 线下latest数据请求出错, 请及时检查",
|
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
|
data: [e.message],
|
|
data: [e.message],
|
|
|
- }
|
|
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 检查数据是否一致: 看第一条即可
|
|
// 检查数据是否一致: 看第一条即可
|
|
|
- if (!onlineData.data || onlineData.data.length <= 0) {
|
|
|
|
|
|
|
+ if (!onlineData.data || onlineData.data.length <= 50) {
|
|
|
return {
|
|
return {
|
|
|
result: false,
|
|
result: false,
|
|
|
errcode: 100,
|
|
errcode: 100,
|
|
|
- title: 'Art 线上latest数据有误, 请及时检查',
|
|
|
|
|
|
|
+ title: "Art 线上latest数据有误, 请及时检查",
|
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
|
- data: ['latest数据为空'],
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ data: ["latest数据为空"],
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
- if (!offlineData.data || offlineData.data.length <= 0) {
|
|
|
|
|
|
|
+ if (!offlineData.data || offlineData.data.length <= 50) {
|
|
|
return {
|
|
return {
|
|
|
result: false,
|
|
result: false,
|
|
|
errcode: 100,
|
|
errcode: 100,
|
|
|
- title: 'Art 线下latest数据有误, 请及时检查',
|
|
|
|
|
|
|
+ title: "Art 线下latest数据有误, 请及时检查",
|
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
|
- data: ['latest数据为空'],
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ data: ["latest数据为空"],
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (onlineData.data[0]._id != offlineData.data[0]._id) {
|
|
if (onlineData.data[0]._id != offlineData.data[0]._id) {
|
|
|
return {
|
|
return {
|
|
|
result: false,
|
|
result: false,
|
|
|
errcode: 100,
|
|
errcode: 100,
|
|
|
- title: 'Art latest 线上线下数据不一致, 请及时检查',
|
|
|
|
|
|
|
+ title: "Art latest 线上线下数据不一致, 请及时检查",
|
|
|
sms: SmsTemplate.SMS_SYNC_ERROR,
|
|
sms: SmsTemplate.SMS_SYNC_ERROR,
|
|
|
data: [onlineUrl, offlineUrl],
|
|
data: [onlineUrl, offlineUrl],
|
|
|
- }
|
|
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
return {
|
|
|
result: true,
|
|
result: true,
|
|
|
errcode: 0,
|
|
errcode: 0,
|
|
|
- title: 'Art 服务恢复正常运行',
|
|
|
|
|
|
|
+ title: "Art 服务恢复正常运行",
|
|
|
sms: SmsTemplate.SMS_RESUME,
|
|
sms: SmsTemplate.SMS_RESUME,
|
|
|
- data: ['Art 服务一切正常']
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ data: ["Art 服务一切正常"],
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async function checkJigsawLatest() {
|
|
async function checkJigsawLatest() {
|
|
@@ -90,28 +91,28 @@ async function checkJigsawLatest() {
|
|
|
let resp = await axios.get(onlineUrl);
|
|
let resp = await axios.get(onlineUrl);
|
|
|
onlineData = resp.data;
|
|
onlineData = resp.data;
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
- console.error('Jigsaw 线上latest数据请求出错, 请及时检查:', e.message);
|
|
|
|
|
|
|
+ console.error("Jigsaw 线上latest数据请求出错, 请及时检查:", e.message);
|
|
|
return {
|
|
return {
|
|
|
result: false,
|
|
result: false,
|
|
|
errcode: 200,
|
|
errcode: 200,
|
|
|
- title: 'Jigsaw 线上latest数据请求出错, 请及时检查',
|
|
|
|
|
|
|
+ title: "Jigsaw 线上latest数据请求出错, 请及时检查",
|
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
|
data: [e.message],
|
|
data: [e.message],
|
|
|
- }
|
|
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
let resp = await axios.get(offlineUrl);
|
|
let resp = await axios.get(offlineUrl);
|
|
|
offlineData = resp.data;
|
|
offlineData = resp.data;
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
- console.error('Jigsaw 线下latest数据请求出错, 请及时检查:', e.message);
|
|
|
|
|
|
|
+ console.error("Jigsaw 线下latest数据请求出错, 请及时检查:", e.message);
|
|
|
return {
|
|
return {
|
|
|
result: false,
|
|
result: false,
|
|
|
errcode: 200,
|
|
errcode: 200,
|
|
|
- title: 'Jigsaw 线下latest数据请求出错, 请及时检查',
|
|
|
|
|
|
|
+ title: "Jigsaw 线下latest数据请求出错, 请及时检查",
|
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
|
data: [e.message],
|
|
data: [e.message],
|
|
|
- }
|
|
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 检查数据是否一致: 看第一条即可
|
|
// 检查数据是否一致: 看第一条即可
|
|
@@ -119,38 +120,38 @@ async function checkJigsawLatest() {
|
|
|
return {
|
|
return {
|
|
|
result: false,
|
|
result: false,
|
|
|
errcode: 200,
|
|
errcode: 200,
|
|
|
- title: 'Jigsaw 线上latest数据有误, 请及时检查',
|
|
|
|
|
|
|
+ title: "Jigsaw 线上latest数据有误, 请及时检查",
|
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
|
- data: ['latest数据为空'],
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ data: ["latest数据为空"],
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
if (!offlineData.data || offlineData.data.length <= 0) {
|
|
if (!offlineData.data || offlineData.data.length <= 0) {
|
|
|
return {
|
|
return {
|
|
|
result: false,
|
|
result: false,
|
|
|
errcode: 200,
|
|
errcode: 200,
|
|
|
- title: 'Jigsaw 线下latest数据有误, 请及时检查',
|
|
|
|
|
|
|
+ title: "Jigsaw 线下latest数据有误, 请及时检查",
|
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
|
- data: ['latest数据为空'],
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ data: ["latest数据为空"],
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (onlineData.data[0]._id != offlineData.data[0]._id) {
|
|
if (onlineData.data[0]._id != offlineData.data[0]._id) {
|
|
|
return {
|
|
return {
|
|
|
result: false,
|
|
result: false,
|
|
|
errcode: 200,
|
|
errcode: 200,
|
|
|
- title: 'Jigsaw latest 线上线下数据不一致, 请及时检查',
|
|
|
|
|
|
|
+ title: "Jigsaw latest 线上线下数据不一致, 请及时检查",
|
|
|
sms: SmsTemplate.SMS_SYNC_ERROR,
|
|
sms: SmsTemplate.SMS_SYNC_ERROR,
|
|
|
data: [onlineUrl, offlineUrl],
|
|
data: [onlineUrl, offlineUrl],
|
|
|
- }
|
|
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
return {
|
|
|
result: true,
|
|
result: true,
|
|
|
errcode: 0,
|
|
errcode: 0,
|
|
|
- title: 'Jigsaw 服务恢复正常运行',
|
|
|
|
|
|
|
+ title: "Jigsaw 服务恢复正常运行",
|
|
|
sms: SmsTemplate.SMS_RESUME,
|
|
sms: SmsTemplate.SMS_RESUME,
|
|
|
- data: ['Jigsaw 服务一切正常']
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ data: ["Jigsaw 服务一切正常"],
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async function checkArtPuzzleLatest() {
|
|
async function checkArtPuzzleLatest() {
|
|
@@ -161,47 +162,47 @@ async function checkArtPuzzleLatest() {
|
|
|
let resp = await axios.get(onlineUrl);
|
|
let resp = await axios.get(onlineUrl);
|
|
|
onlineData = resp.data;
|
|
onlineData = resp.data;
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
- console.error('ArtPuzzle 线上latest数据请求出错, 请及时检查:', e.message);
|
|
|
|
|
|
|
+ console.error("ArtPuzzle 线上latest数据请求出错, 请及时检查:", e.message);
|
|
|
return {
|
|
return {
|
|
|
result: false,
|
|
result: false,
|
|
|
errcode: 300,
|
|
errcode: 300,
|
|
|
- title: 'ArtPuzzle 线上latest数据请求出错, 请及时检查',
|
|
|
|
|
|
|
+ title: "ArtPuzzle 线上latest数据请求出错, 请及时检查",
|
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
|
data: [e.message],
|
|
data: [e.message],
|
|
|
- }
|
|
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
let resp = await axios.get(offlineUrl);
|
|
let resp = await axios.get(offlineUrl);
|
|
|
offlineData = resp.data;
|
|
offlineData = resp.data;
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
- console.error('ArtPuzzle 线下latest数据请求出错, 请及时检查:', e.message);
|
|
|
|
|
|
|
+ console.error("ArtPuzzle 线下latest数据请求出错, 请及时检查:", e.message);
|
|
|
return {
|
|
return {
|
|
|
result: false,
|
|
result: false,
|
|
|
errcode: 300,
|
|
errcode: 300,
|
|
|
- title: 'ArtPuzzle 线下latest数据请求出错, 请及时检查',
|
|
|
|
|
|
|
+ title: "ArtPuzzle 线下latest数据请求出错, 请及时检查",
|
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
|
data: [e.message],
|
|
data: [e.message],
|
|
|
- }
|
|
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (!onlineData.data || onlineData.data.length <= 0) {
|
|
if (!onlineData.data || onlineData.data.length <= 0) {
|
|
|
return {
|
|
return {
|
|
|
result: false,
|
|
result: false,
|
|
|
errcode: 300,
|
|
errcode: 300,
|
|
|
- title: 'ArtPuzzle 线上latest数据有误, 请及时检查',
|
|
|
|
|
|
|
+ title: "ArtPuzzle 线上latest数据有误, 请及时检查",
|
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
|
- data: ['latest数据为空'],
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ data: ["latest数据为空"],
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
if (!offlineData.data || offlineData.data.length <= 0) {
|
|
if (!offlineData.data || offlineData.data.length <= 0) {
|
|
|
return {
|
|
return {
|
|
|
result: false,
|
|
result: false,
|
|
|
errcode: 300,
|
|
errcode: 300,
|
|
|
- title: 'ArtPuzzle 线下latest数据有误, 请及时检查',
|
|
|
|
|
|
|
+ title: "ArtPuzzle 线下latest数据有误, 请及时检查",
|
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
sms: SmsTemplate.SMS_API_ERROR,
|
|
|
- data: ['latest数据为空'],
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ data: ["latest数据为空"],
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 检查数据是否一致: 看第一条即可
|
|
// 检查数据是否一致: 看第一条即可
|
|
@@ -209,19 +210,19 @@ async function checkArtPuzzleLatest() {
|
|
|
return {
|
|
return {
|
|
|
result: false,
|
|
result: false,
|
|
|
errcode: 300,
|
|
errcode: 300,
|
|
|
- title: 'ArtPuzzle latest 线上线下数据不一致, 请及时检查',
|
|
|
|
|
|
|
+ title: "ArtPuzzle latest 线上线下数据不一致, 请及时检查",
|
|
|
sms: SmsTemplate.SMS_SYNC_ERROR,
|
|
sms: SmsTemplate.SMS_SYNC_ERROR,
|
|
|
data: [onlineUrl, offlineUrl],
|
|
data: [onlineUrl, offlineUrl],
|
|
|
- }
|
|
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
return {
|
|
|
result: true,
|
|
result: true,
|
|
|
errcode: 0,
|
|
errcode: 0,
|
|
|
- title: 'Jigsaw 服务恢复正常运行',
|
|
|
|
|
|
|
+ title: "Jigsaw 服务恢复正常运行",
|
|
|
sms: SmsTemplate.SMS_RESUME,
|
|
sms: SmsTemplate.SMS_RESUME,
|
|
|
- data: ['Jigsaw 服务一切正常']
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ data: ["Jigsaw 服务一切正常"],
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 检查art.pcoloring.com网站
|
|
// 检查art.pcoloring.com网站
|
|
@@ -232,27 +233,25 @@ async function checkArtSite() {
|
|
|
let resp = await axios.get(url);
|
|
let resp = await axios.get(url);
|
|
|
data = resp.data;
|
|
data = resp.data;
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
- console.error('art.pcoloring.com 网站无法访问,请及时检查', [e.message]);
|
|
|
|
|
|
|
+ console.error("art.pcoloring.com 网站无法访问,请及时检查", [e.message]);
|
|
|
return {
|
|
return {
|
|
|
result: false,
|
|
result: false,
|
|
|
errcode: 1000,
|
|
errcode: 1000,
|
|
|
- title: 'art.pcoloring.com 网站无法访问,请及时检查',
|
|
|
|
|
|
|
+ title: "art.pcoloring.com 网站无法访问,请及时检查",
|
|
|
sms: SmsTemplate.SMS_PCOLORING_ERROR,
|
|
sms: SmsTemplate.SMS_PCOLORING_ERROR,
|
|
|
data: [e.message],
|
|
data: [e.message],
|
|
|
- }
|
|
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
return {
|
|
|
result: true,
|
|
result: true,
|
|
|
errcode: 0,
|
|
errcode: 0,
|
|
|
- title: 'art.pcoloring.com 网站正常运行',
|
|
|
|
|
|
|
+ title: "art.pcoloring.com 网站正常运行",
|
|
|
sms: SmsTemplate.SMS_RESUME,
|
|
sms: SmsTemplate.SMS_RESUME,
|
|
|
- data: ['art.pcoloring.com 网站正常运行']
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ data: ["art.pcoloring.com 网站正常运行"],
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
async function run(lastErrCode = 0) {
|
|
async function run(lastErrCode = 0) {
|
|
|
console.log("check api...", new Date());
|
|
console.log("check api...", new Date());
|
|
|
try {
|
|
try {
|
|
@@ -336,7 +335,6 @@ async function run(lastErrCode = 0) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
for (let i = 0; i < 3; i++) {
|
|
for (let i = 0; i < 3; i++) {
|
|
|
result = await checkArtSite();
|
|
result = await checkArtSite();
|
|
|
console.log(result);
|
|
console.log(result);
|
|
@@ -362,19 +360,16 @@ async function run(lastErrCode = 0) {
|
|
|
sendSms(result.sms);
|
|
sendSms(result.sms);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
} catch (err) {
|
|
} catch (err) {
|
|
|
console.error(err.stack);
|
|
console.error(err.stack);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
function delay(ms) {
|
|
function delay(ms) {
|
|
|
- return new Promise(done => setTimeout(done, ms));
|
|
|
|
|
|
|
+ return new Promise((done) => setTimeout(done, ms));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-module.exports = { run }
|
|
|
|
|
-
|
|
|
|
|
|
|
+module.exports = { run };
|
|
|
|
|
|
|
|
if (require.main == module) {
|
|
if (require.main == module) {
|
|
|
run();
|
|
run();
|