Files
post/cron.js
2026-05-12 22:40:58 +09:00

744 lines
26 KiB
JavaScript

const axios = require("axios");
const FormData = require("form-data");
const qs = require("querystring");
const cheerio = require("cheerio");
const _ = require("lodash");
const fs = require("fs/promises");
const Aigle = require("aigle");
const moment = require("moment");
const sleep = require("atomic-sleep");
const iconv = require("iconv-lite");
const { delay } = require("lodash");
const cron = require("node-cron");
const LZString = require("lz-string");
Aigle.mixin(_);
// let test = {}
// test.deliveryInfo = ['우체국택배', '7865401358906']
// checkPostOffice(test)
// if (!process.argv[2]) {
// console.log('사용방법')
// console.log('node test.js 완료일자 start|check')
// console.log(moment(new Date()).subtract(1, 'day').format('YYYY-MM-DD'))
// return false
// }
// if (!process.argv[3]) {
// console.log('사용방법')
// console.log('node test.js 완료일자 start|check')
// return false
// }
let data = {
// username: "aa509004",
// password: "daesik102049@@",
username: "JH1204",
password: "12345",
};
const WRITE_END_DATE = true;
const END_DATE = moment(new Date()).subtract(1, "day").format("YYYY-MM-DD");
// let loginForm = new FormData()
// loginForm.append('app_name',"크롬(chrome)")
// loginForm.append('from',"pc")
// loginForm.append('nhoj',"home3470")
// loginForm.append('mluap',"5aee9b59574a3b9666400f9ea3ee5b4b")
let loginObj = {
app_name: "크롬(chrome)",
from: "pc",
nhoj: "JH1204",
mluap: "827ccb0eea8a706c4c34a16891f84e7b",
};
let cookie = [
"ds_yn=y; save_id=aa509004; ccn172=84ed141356cb95148bac1afb88b5ddaa663fd58c36ffa2f5ea536285791c754bb938f93336c4c72ac18203fc2ce5bcb004baf34ab6953952a1cb4bbf7be5186f8340853bef8e73ef33bfbdba0d2ce833e5acf7fe074a6d3bb79aa47e4de0dd120ac8821e605e23838cc4d70f65aa4186ed66ee406e0c003514e8a7edb3a7a47f3e5fe9c9ea44467ed469ccfd3fc368da37267711de8f9571b504605793f4c11a32694799eebc8c456ecd7e631a854cbc5cb586ac65a9c1965b0f04fe477e6aec127d7ecb8a0397d811ed70064f5fa09c",
"ds_yn=y; path=/; domain=hyun.bizmax.net; HttpOnly",
];
let hanjinCookie = [];
async function createCookie() {
await axios.get("https://www.hanjin.co.kr").then((response) => {
console.log(response.headers["set-cookie"]);
hanjinCookie = response.headers["set-cookie"];
});
}
let bodyFormData = new URLSearchParams();
bodyFormData.set("form", JSON.stringify(loginObj));
function setCookie() {
console.log("setCookie");
return new Promise((resolve) => {
axios
.post(
"https://hyun.bizmax.net/login_pcs_jr.php",
qs.stringify(loginObj),
{
headers: {
"Content-Type": "application/x-www-form-urlencoded",
Host: "hyun.bizmax.net",
Origin: "https://hyun.bizmax.net",
"Accept-Encoding": "gzip, deflate",
"Accept-Language":
"ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,la;q=0.6,zh-CN;q=0.5,zh;q=0.4",
"Cache-Control": "no-cache",
Connection: "keep-alive",
"Content-Length": "96",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
Cookie: "ds_yn=y; save_id=home3470",
Host: "hyun.bizmax.net",
Origin: "https://hyun.bizmax.net",
Pragma: "no-cache",
Referer: `https://hyun.bizmax.net/main/?${Date.now()}`,
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36",
"X-BizMax-Ajax": 1,
"X-Requested-With": "XMLHttpRequest",
"X-Site-Gubun": "pc",
},
}
)
.then((response) => {
// console.log(response)
cookie = response.headers["set-cookie"];
resolve(response.headers["set-cookie"]);
});
});
}
async function getLists(page) {
let searchDate = {
start: moment(new Date()).subtract(1, "month").format("YYYY-MM-DD"),
// start: moment(new Date()).subtract(6, 'day').format('YYYY-MM-DD'),
end: moment(new Date()).subtract(1, "day").format("YYYY-MM-DD"),
};
console.log(searchDate);
let reqObj = {
state: 8,
_content_only: "y",
_ihl: "n",
_ihr: "n",
clm: 0,
use_date_1: "a.reg_date",
data_orderby: "a.reg_date",
start_date_1: searchDate.start,
end_date_1: searchDate.end,
excel_ext: "csv",
mode: "search",
page: page,
post_size: 1000,
sale_name_clm_q: "4b40dd075943efaf446b15696ebec5e3",
site_gubun: "pc",
tbs_end_date: "2021-02-26",
tbs_start_date: "2021-02-26",
};
// s_customer_group=&s_customer_group_src=&s_customer_group_dsp=-+%EA%B3%A0%EA%B0%9D%EA%B7%B8%EB%A3%B9&s_open_branch_prim=&s_open_branch_prim_src=&s_open_branch_prim_dsp=-+%EA%B0%9C%ED%86%B5%EC%B2%98&s_sale_branch_prim=&s_sale_branch_prim_src=&s_sale_branch_prim_dsp=-+%ED%8C%90%EB%A7%A4%EC%A0%90&s_sale_id=&state=8&state_obc=rgb(255%2C+255%2C+255)&state_otc=rgb(0%2C+0%2C+0)&state_src=&state_dsp=%E2%96%B6%EB%B0%9C%EC%86%A1&open_state=&open_state_obc=%23fff&open_state_otc=%23000&open_state_src=&open_state_dsp=-+%EA%B0%9C%ED%86%B5%EC%83%81%ED%83%9C&pre_model_return=&pre_model_return_obc=%23fff&pre_model_return_otc=%23000&pre_model_return_src=&pre_model_return_dsp=-+%EA%B2%B0%EC%A0%9C%EA%B5%AC%EB%B6%84&excel_ext=csv&conf_self=&conf_self_obc=%23fff&conf_self_otc=%23000&conf_self_src=&conf_self_dsp=-+2%EC%B0%A8%EC%A7%84%ED%96%89%EC%83%81%ED%83%9C&new_model_return=&new_model_return_obc=%23fff&new_model_return_otc=%23000&new_model_return_src=&new_model_return_dsp=-+%EA%B2%B0%EC%A0%9C%ED%98%84%ED%99%A9&post_size=500&data_orderby=a.reg_date&clm=0&search_word=&new_model=&new_model_src=&new_model_dsp=-+1%EC%B0%A8+%EC%83%81%ED%92%88&use_date_1=a.reg_date&start_date_1=${searchDate.start}&end_date_1=${searchDate.end}&age_sch_1=1&age_1=&age_cdn_1=1&age_cdn_join=1&age_sch_2=1&age_2=&age_cdn_2=1&ac_clm=0&ac_sbp=&sale_name_clm_q=eaaebfbf2fe3153006702ee0fda10b16&mode=search&page=${page}&hcv_p2=&list_type=&ol_type=logis&dv_prim=&team_prim=&tdm_prim=&prd_ds=&fav_group_prim=&no_ctm_rd_spd=&no_ctm_md_spd=&smr_vs=&no_sch_hl=&all_memo_sch_clm=&tbs_start_date=2022-10-05&tbs_end_date=2022-10-05&_ihr=n&_ihl=n&_content_only=y&site_gubun=pc
//블루맥스
// s_customer_group=&s_customer_group_src=&s_customer_group_dsp=-+%EA%B3%A0%EA%B0%9D%EA%B7%B8%EB%A3%B9&s_open_branch_prim=&s_open_branch_prim_src=&s_open_branch_prim_dsp=-+%EA%B0%9C%ED%86%B5%EC%B2%98&s_sale_branch_prim=&s_sale_branch_prim_src=&s_sale_branch_prim_dsp=-+%ED%8C%90%EB%A7%A4%EC%A0%90&s_sale_id=&state=8&state_obc=rgb(255%2C+255%2C+255)&state_otc=rgb(0%2C+0%2C+0)&state_src=&state_dsp=%E2%96%B6%EB%B0%9C%EC%86%A1&open_state=&open_state_obc=%23fff&open_state_otc=%23000&open_state_src=&open_state_dsp=-+%EA%B0%9C%ED%86%B5%EC%83%81%ED%83%9C&pre_model_return=&pre_model_return_obc=%23fff&pre_model_return_otc=%23000&pre_model_return_src=&pre_model_return_dsp=-+%EA%B2%B0%EC%A0%9C%EA%B5%AC%EB%B6%84&excel_ext=csv&conf_self=&conf_self_obc=%23fff&conf_self_otc=%23000&conf_self_src=&conf_self_dsp=-+2%EC%B0%A8%EC%A7%84%ED%96%89%EC%83%81%ED%83%9C&new_model_return=&new_model_return_obc=%23fff&new_model_return_otc=%23000&new_model_return_src=&new_model_return_dsp=-+%EA%B2%B0%EC%A0%9C%ED%98%84%ED%99%A9&post_size=1000&data_orderby=a.reg_date&clm=15&search_word=블루맥스&new_model=&new_model_src=&new_model_dsp=-+1%EC%B0%A8+%EC%83%81%ED%92%88&use_date_1=a.reg_date&start_date_1=${searchDate.start}&end_date_1=${searchDate.end}&age_sch_1=1&age_1=&age_cdn_1=1&age_cdn_join=1&age_sch_2=1&age_2=&age_cdn_2=1&ac_clm=0&ac_sbp=&sale_name_clm_q=eaaebfbf2fe3153006702ee0fda10b16&mode=search&page=${page}&hcv_p2=&list_type=&ol_type=logis&dv_prim=&team_prim=&tdm_prim=&prd_ds=&fav_group_prim=&no_ctm_rd_spd=&no_ctm_md_spd=&smr_vs=&no_sch_hl=&all_memo_sch_clm=&tbs_start_date=2026-04-23&tbs_end_date=2026-04-23&_ihr=n&_ihl=n&_content_only=y&site_gubun=pc
let testStr = `
s_customer_group=&s_customer_group_src=&s_customer_group_dsp=-+%EA%B3%A0%EA%B0%9D%EA%B7%B8%EB%A3%B9&s_open_branch_prim=&s_open_branch_prim_src=&s_open_branch_prim_dsp=-+%EA%B0%9C%ED%86%B5%EC%B2%98&s_sale_branch_prim=&s_sale_branch_prim_src=&s_sale_branch_prim_dsp=-+%ED%8C%90%EB%A7%A4%EC%A0%90&s_sale_id=&state=8&state_obc=rgb(255%2C+255%2C+255)&state_otc=rgb(0%2C+0%2C+0)&state_src=&state_dsp=%E2%96%B6%EB%B0%9C%EC%86%A1&open_state=&open_state_obc=%23fff&open_state_otc=%23000&open_state_src=&open_state_dsp=-+%EA%B0%9C%ED%86%B5%EC%83%81%ED%83%9C&pre_model_return=&pre_model_return_obc=%23fff&pre_model_return_otc=%23000&pre_model_return_src=&pre_model_return_dsp=-+%EA%B2%B0%EC%A0%9C%EA%B5%AC%EB%B6%84&excel_ext=csv&conf_self=&conf_self_obc=%23fff&conf_self_otc=%23000&conf_self_src=&conf_self_dsp=-+2%EC%B0%A8%EC%A7%84%ED%96%89%EC%83%81%ED%83%9C&new_model_return=&new_model_return_obc=%23fff&new_model_return_otc=%23000&new_model_return_src=&new_model_return_dsp=-+%EA%B2%B0%EC%A0%9C%ED%98%84%ED%99%A9&post_size=1000&data_orderby=a.reg_date&clm=0&search_word=&new_model=&new_model_src=&new_model_dsp=-+1%EC%B0%A8+%EC%83%81%ED%92%88&use_date_1=a.reg_date&start_date_1=${searchDate.start}&end_date_1=${searchDate.end}&age_sch_1=1&age_1=&age_cdn_1=1&age_cdn_join=1&age_sch_2=1&age_2=&age_cdn_2=1&ac_clm=0&ac_sbp=&sale_name_clm_q=eaaebfbf2fe3153006702ee0fda10b16&mode=search&page=${page}&hcv_p2=&list_type=&ol_type=logis&dv_prim=&team_prim=&tdm_prim=&prd_ds=&fav_group_prim=&no_ctm_rd_spd=&no_ctm_md_spd=&smr_vs=&no_sch_hl=&all_memo_sch_clm=&tbs_start_date=2022-10-05&tbs_end_date=2022-10-05&_ihr=n&_ihl=n&_content_only=y&site_gubun=pc
`;
try {
} catch (error) {}
return axios
.post(
// 'http://hyun.bizmax.net/customer/tpl/customer_list.php?list_type=&svc_gubun=0&prd_ds=&dss=',
`https://hyun.bizmax.net/customer/tpl/customer_list.php?list_type=&team_prim=&tdm_prim=&svc_gubun=0&prd_ds=&dss=&dv_prim=240`,
// qs.stringify(reqObj),
testStr,
{
headers: {
Cookie: cookie[0],
// 'Content-Type': 'application/x-www-form-urlencoded',
// 'Host': 'hyun.bizmax.net',
// 'Origin': 'https://hyun.bizmax.net',
// 'Accept-Encoding': 'gzip, deflate',
// 'Accept-Language':
// 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,la;q=0.6,zh-CN;q=0.5,zh;q=0.4',
// 'Cache-Control': 'no-cache',
// 'Connection': 'keep-alive',
// 'Content-Length': '96',
// 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
// 'Host': 'hyun.bizmax.net',
// 'Origin': 'https://hyun.bizmax.net',
// 'Pragma': 'no-cache',
// 'Referer':
// 'https://hyun.bizmax.net/customer/tpl/customer_list.php?list_type=&team_prim=&tdm_prim=&svc_gubun=0&prd_ds=&dss=&dv_prim=',
// 'User-Agent':
// 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36',
// 'X-BizMax-Ajax': '1',
// 'x-pvsn': 'V1',
// 'X-Requested-With': 'XMLHttpRequest',
// 'X-Site-Gubun': 'pc',
accept: "*/*",
"accept-language":
"ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,la;q=0.6,zh-CN;q=0.5,zh;q=0.4",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
pragma: "no-cache",
"sec-ch-ua":
'"Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": '"Windows"',
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"x-bizmax-ajax": "1",
"x-pvsn": "V1",
"x-requested-with": "XMLHttpRequest",
"x-site-gubun": "pc",
cookie: cookie[0],
Referer:
"https://hyun.bizmax.net/customer/tpl/customer_list.php?list_type=&team_prim=&tdm_prim=&svc_gubun=0&prd_ds=&dss=&dv_prim=",
"Referrer-Policy": "strict-origin-when-cross-origin",
},
}
)
.then(async (response) => {
try {
let lists = parseLists(response);
// console.log(lists)
console.log(lists.length);
// return false
return lists;
} catch (error) {
console.log(error);
}
});
function parseLists(response) {
let $ = cheerio.load(response.data);
let lists = $(".sort_tr");
// console.log(lists)
lists = _.map(lists, (list) => {
let item = {
name: _.get(list, "children[0].children[0].attribs.name"),
uuid: _.get(list, "children[0].children[1].attribs.value"),
receipt_dt: _.get(list, "children[1].children[0].data"),
group: _.get(list, "children[2].children[0].data"),
store: _.get(list, "children[3].children[0].data"),
r_name: _.get(list, "children[4].children[0].data"),
product: _.get(list, "children[5].children[0].data"),
progStatus: _.get(list, "children[6].children[0].data"),
openStatus: _.get(list, "children[7].children[0].data"),
deliveryInfo: parseDelivery(
_.get(list, "children[8].children[0].attribs.onclick")
),
deliveryStatus: _.get(list, "children[11].children[0].data"),
};
return item;
});
return lists;
}
}
async function checkLogis(lists) {
try {
let i = 0;
await Aigle.eachSeries(lists, async (order) => {
try {
// console.log('order in', order)
order.deliveryInfo[1] = order.deliveryInfo[1].replace(/-/g, "");
// if (i % 30 === 0 || hanjinCookie.length == 0) {
// await createCookie()
// }
// sleep(1000)
i += 1;
try {
console.log(`${i} :`, order.deliveryInfo);
if (_.get(order, "deliveryInfo")[0] == "CJ택배") {
let check = await checkCJ(order);
if (check) {
order.deliveryEndDate = moment(new Date(check.endDate)).format(
"YYYY-MM-DD"
);
order.deliveryEnd = true;
}
}
if (_.get(order, "deliveryInfo")[0] == "우체국택배") {
let check = await checkPostOffice(order);
if (check) {
order.deliveryEndDate = moment(new Date(check.endDate)).format(
"YYYY-MM-DD"
);
order.deliveryEnd = true;
}
// sleep(1500)
}
if (_.get(order, "deliveryInfo")[0] == "한진택배") {
// let check = await checkHanjin(order)
let check = await checkNewHanjin(order);
if (check) {
order.deliveryEndDate = moment(new Date(check.endDate)).format(
"YYYY-MM-DD"
);
order.deliveryEnd = true;
}
}
} catch (error) {
console.log("errorObject", order);
console.log(error);
}
} catch (error) {
console.log(error);
}
});
return lists;
} catch (error) {
console.log(error);
}
}
function parseDelivery(deliveryStr) {
if (deliveryStr) {
// return deliveryStr
// .replace('logisTrace("', '')
// .replace('")', '')
// .split('", "')
return deliveryStr
.split('");')[0]
.replace('logisTrace("', "")
.split('", "');
} else {
return undefined;
}
}
async function checkCJ(order) {
let url = `https://www.doortodoor.co.kr/parcel/doortodoor.do?fsp_action=PARC_ACT_002&fsp_cmd=retrieveInvNoACT&invc_no=${order.deliveryInfo[1]}`;
try {
let body = await axios.get(url);
let $ = cheerio.load(body.data);
let status = _.trim(
$(".cont:eq(1)")
.children(".board_area")
.find("table > tbody > tr:last-child > td:first-child")
.text()
);
let endDate = "";
if (status == "배달완료") {
endDate = _.trim(
$(".cont:eq(1)")
.children(".board_area")
.find("table > tbody > tr:last-child > td:nth-child(2)")
.text()
);
return {
endDate: endDate,
};
}
return false;
} catch (error) {
console.log(error);
}
}
async function checkNewHanjin(order) {
try {
let url = `https://www.hanjinexpress.hanjin.net/customer/hddcw18.tracking?w_num=${order.deliveryInfo[1]}`;
let body = await axios.get(url, {
responseType: "arraybuffer",
responseEncoding: "binary",
});
body.data = iconv.decode(body.data, "EUC-KR");
let $ = cheerio.load(body.data);
let status = _.trim(
$(".board-list-table")
.eq(1)
.find("tbody > tr:last-child > td:last-child")
.text()
);
let endDate = "";
if (status.indexOf("배송완료 되었습니다") !== -1) {
endDate = _.trim(
$(".board-list-table")
.eq(1)
.find("tbody > tr:last-child > td:first-child")
.text()
);
return {
endDate: endDate,
};
}
return false;
} catch (error) {
console.log(error);
if (error.response.status === 403) {
process.exit(0);
}
}
}
async function checkHanjin(order) {
try {
let url = `https://www.hanjin.co.kr/kor/CMS/DeliveryMgr/WaybillResult.do`;
let formData = {
mCode: "MN038",
wblnum: order.deliveryInfo[1],
// 'wblnum': 420095497301,
schLang: "KR",
wblnumText: "",
};
let body = await axios
.post(url, qs.stringify(formData), {
headers: {
accept:
"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"accept-encoding": "gzip, deflate, br",
"accept-language":
"ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,la;q=0.6,zh-CN;q=0.5,zh;q=0.4",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded",
cookie: hanjinCookie[0],
origin: "https://www.hanjin.co.kr",
pragma: "no-cache",
referer:
"https://www.hanjin.co.kr/kor/CMS/DeliveryMgr/WaybillSch.do?mCode=MN038",
"sec-fetch-dest": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "same-origin",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": 1,
"user-agent":
"Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36",
},
})
.then((response) => {
return response;
});
let $ = cheerio.load(body.data);
let status = _.trim(
$(".board-list-table")
.eq(1)
.find("tbody > tr:last-child > td:last-child")
.text()
);
let endDate = "";
if (status.indexOf("배송완료 되었습니다") !== -1) {
endDate = _.trim(
$(".board-list-table")
.eq(1)
.find("tbody > tr:last-child > td:first-child")
.text()
);
return {
endDate: endDate,
};
}
return false;
} catch (error) {
console.log(error);
return false;
}
}
async function checkPostOffice(order) {
let url = `https://service.epost.go.kr/trace.RetrieveDomRigiTraceList.comm?sid1=${order.deliveryInfo[1]}&displayHeader=N`;
try {
let body = await axios.get(url);
let $ = cheerio.load(body.data);
let status = _.trim(
$("#processTable")
.find("tbody")
.children("tr")
.last()
.children("td")
.last()
.text()
);
let endDate = "";
if (status.indexOf("배달완료") !== -1) {
endDate = _.trim(
$("#processTable")
.find("tbody")
.children("tr")
.last()
.children("td")
.first()
.text()
);
endDate = _.replace(endDate, new RegExp("\\.", "g"), "-");
return {
endDate: endDate,
};
}
return false;
} catch (error) {
console.log(error);
}
}
async function hanJinTest() {
try {
await createCookie();
let orderLists = [{ deliveryInfo: ["한진택배", "421714876844"] }];
await startCheckLogis(orderLists, false);
} catch (error) {}
}
async function startCron() {
console.log("startCron");
try {
console.log(await setCookie());
let orderLists = [];
let hanjinLists = [];
// await Aigle.eachSeries([1], async (page) => {
await Aigle.eachSeries([1, 2, 3, 4], async (page) => {
let result = await getLists(page);
orderLists = [...orderLists, ...result];
});
console.log("orderLists count", orderLists.length);
await fs.writeFile(
`${__dirname}/orderLists.json`,
JSON.stringify(orderLists, null, 2),
"utf8"
);
// console.log("saved orderLists", `${__dirname}/orderLists.json`);
// console.log(orderLists)
orderLists = _.filter(orderLists, (order) => {
return order.deliveryInfo !== undefined;
});
hanjinLists = _.remove(orderLists, (order) => {
// console.log(order)
return _.get(order, "deliveryInfo")[0] == "한진택배";
});
if (orderLists.length > 0) {
await startCheckLogis(orderLists, false);
}
if (hanjinLists.length > 0) {
await createCookie();
await startCheckLogis(hanjinLists, true);
}
console.log("ttt");
} catch (error) {
console.log(error);
}
}
async function startCheckLogis(procLists, loopDelay = undefined) {
procLists = _.reverse(procLists);
let chunkLists = _.chunk(procLists, 100);
// console.log(chunkLists[0])
// return false
console.log("배송대기 주문 갯수", procLists.length);
console.log(chunkLists[0].length);
await Aigle.eachSeries(chunkLists, async (lists) => {
let checkLists = await checkLogis(lists);
// orderLists = _.take(orderLists, 5)
// 배송 완료 리스트 추출
let finishedLists = _.filter(checkLists, (o) => {
return o.deliveryEnd == true;
});
// console.log(finishedLists)
// return false
// 배송 미완료 리스트 추출
let unfinishedLists = _.filter(checkLists, (o) => {
return o.deliveryEnd !== true;
});
// 배송 완료 리스트가 있으면
if (finishedLists.length > 0) {
await beforeChangePopUp(finishedLists);
}
sleep(3000);
if (loopDelay) {
console.log("5분 대기중 ...");
sleep(300000);
}
});
}
async function beforeChangePopUp(lists) {
let defaultBody = {
lz_ctm_lspl_uv: "",
lz_md_lsmdpl: "",
lz_ctm_lcspl: LZString.compressToEncodedURIComponent(
lists
.map((list) => {
return list.name;
})
.join(",")
),
lz_ctm_lspl: "",
ctm_lcsql: lists
.map((list) => {
return list.uuid;
})
.join(","),
ps_y: 0,
ps_x: 0,
_ihr: "n",
_ihl: "n",
_content_only: "y",
site_gubun: "pc",
};
let reqObj = _.merge(defaultBody);
let popup = await axios
.post(
"https://hyun.bizmax.net/customer/tpl/customer_list_logis_work.php",
qs.stringify(reqObj),
{
headers: {
Cookie: cookie[0],
"Content-Type": "application/x-www-form-urlencoded",
Host: "hyun.bizmax.net",
Origin: "https://hyun.bizmax.net",
"Accept-Encoding": "gzip, deflate",
"Accept-Language":
"ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,la;q=0.6,zh-CN;q=0.5,zh;q=0.4",
"Cache-Control": "no-cache",
Connection: "keep-alive",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
Host: "hyun.bizmax.net",
Origin: "https://hyun.bizmax.net",
Pragma: "no-cache",
Referer: `https://hyun.bizmax.net/main/?${Date.now()}`,
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36",
"X-BizMax-Ajax": 1,
"X-Requested-With": "XMLHttpRequest",
"X-Site-Gubun": "pc",
},
}
)
.then(async (response) => {
try {
console.log(response);
let request = await processChange(response, lists);
} catch (error) {
console.log(error);
}
});
}
async function processChange(response, lists) {
let prims = {};
_.map(lists, (o, idx) => {
idx += 1;
prims["prim_" + idx] = o.name;
prims["logis_invoice_" + idx] = o.deliveryInfo[1];
prims[`no_${o.name}`] = idx;
});
let parseObj = parsePop(response.data);
let defaultHeader = {
cllw_ncf_clm_logis_invoice: 1,
cllw_ncf_clm_logis_2_invoice: 1,
cllw_ncf_clm_logis_return_invoice: 1,
cllw_ncf_clm_open_seq: 1,
cllw_ncf_clm_open_number: 1,
cllw_ncf_clm_usim_seq: 1,
logis_state: "배달완료",
list_cnt: lists.length,
};
let reqObj = _.merge(defaultHeader, parseObj, prims);
if (WRITE_END_DATE) {
// reqObj.logis_end_date = moment(new Date()).format('YYYY-MM-DD')
reqObj.logis_end_date = END_DATE;
}
let result = await axios.post(
// 'http://hyun.bizmax.net/customer/mng_customer/customer_list_logis_work_pcs_if.php',
// 'http://hyun.bizmax.net/customer/mng_customer/customer_list_logis_work_pcs_if.php',
"https://hyun.bizmax.net/customer/mng_customer/ctm_list_logis_work_pcs_jr.php",
qs.stringify(reqObj),
{
headers: {
Cookie: cookie[0],
"Content-Type": "application/x-www-form-urlencoded",
Host: "hyun.bizmax.net",
Origin: "https://hyun.bizmax.net",
"Accept-Encoding": "gzip, deflate",
"Accept-Language":
"ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,la;q=0.6,zh-CN;q=0.5,zh;q=0.4",
"Cache-Control": "no-cache",
Connection: "keep-alive",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
Host: "hyun.bizmax.net",
Origin: "https://hyun.bizmax.net",
Pragma: "no-cache",
Referer: `https://hyun.bizmax.net/main/?${Date.now()}`,
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36",
"X-BizMax-Ajax": 1,
"X-Requested-With": "XMLHttpRequest",
"X-Site-Gubun": "pc",
},
}
);
console.log(result);
}
function parsePop(html) {
let $ = cheerio.load(html);
let result = {};
result.list_cnt = parseInt($("input[name=list_cnt]").val());
result.process_time = parseInt($("input[name=process_time]").val());
result.cssi = $("input[name=cssi]").val();
result.acsb = $("input[name=acsb]").val();
result.state = 6;
return result;
}
// changeTest()
// getLists()
async function run() {
console.log("started ....");
cron.schedule("1 0 * * *", () => {
try {
console.log("started Schedule");
console.log("run");
startCron();
} catch (err) {
console.log(err);
}
});
}
//run();
try {
startCron();
} catch (error) {
console.log(error);
}