shawenguan 1 vuosi sitten
vanhempi
commit
ecdfbec50f
1 muutettua tiedostoa jossa 522 lisäystä ja 522 poistoa
  1. 522 522
      Scripts/huluwa/huluwaHelper.js

+ 522 - 522
Scripts/huluwa/huluwaHelper.js

@@ -64,528 +64,528 @@ const SK = '0d65f24dbe2bc1ede3c3ceeb96ef71bb';
 let sendMessage = [];
 
 
-// let retBody;
-// if (!lk.isExecComm) {
-//     if (lk.isRequest()) {
-//         checkHandleRequest();
-//         lk.msg('');
-//         if (retBody) {
-//             lk.done({ body: JSON.stringify(retBody) });
-//         } else {
-//             lk.done();
-//         }
-//     }else{
-//         // main();
-//     }
-// }
-
-// function checkHandleRequest() {
-//     const url = $request.url;
-//     const path = $request.path;
-//     lk.log(`请求url=${url}#${$request.method}`);
-//     lk.log(`请求body=${lk.getRequestBody()}`);
-//     if ($request && $request.method != 'OPTIONS') {
-//         // if(path.match(/\/front-manager\/api\/login\/wxMiniLogin/)){
-//         //     handleWxMiniLogin();
-//         // } else if(path.match(/\/front-manager\/api\/get\/channelId/)){
-//         //     handleChannelId();
-//         // } else if(path.match(/\/front-manager\/api\/customer\/queryById\/token/)){
-//         //     handleUserInfo();
-//         // }
-//     }
-// }
-
-// function handleWxMiniLogin(){
-//     let reqParams = {};
-//     let reqBody = lk.getRequestBody();
-//     if (reqBody) {
-//         reqParams = JSON.parse(reqBody);
-//     }
-//     let rspBody = lk.getResponseBody();
-//     if (!rspBody) {
-//         return;
-//     }
-//     let appId = reqParams.appId;
-//     let rspParams = JSON.parse(rspBody);
-//     if(rspParams.code == '10000'){
-//         let rspData = rspParams.data;
-//         let token = rspData.token;
-//         let key = `huluwa#${appId}`;
-//         lk.setVal(key, token);
-//         key = APPID_TOKEN_STORE_KEYS[appId];
-//         if(key){
-//             key = `huluwa#${key}`;
-//             lk.setVal(key, token);
-//         }
-//     }
-// }
-
-// function handleChannelId(){
-//     let headers = $request.headers;
-//     if(!headers['X-access-token']){
-//         return;
-//     }
-//     let reqParams = {};
-//     let reqBody = lk.getRequestBody();
-//     if (reqBody) {
-//         reqParams = JSON.parse(reqBody);
-//     }
-//     let appId = reqParams.appId;
-//     let token = headers['X-access-token'];
-//     let key = `huluwa#${appId}`;
-//     lk.setVal(key, token);
-//     key = APPID_TOKEN_STORE_KEYS[appId];
-//     if(key){
-//         key = `huluwa#${key}`;
-//         lk.setVal(key, token);
-//     }
-//     let rspBody = lk.getResponseBody();
-//     if (!rspBody) {
-//         return;
-//     }
-//     let rspParams = JSON.parse(rspBody);
-//     if(rspParams.code == '10000'){
-//         let channelId = rspParams.data;
-//     }
-// }
-
-// function handleUserInfo(){
-
-// }
-
-// function getCookieByAppId(appId){
-//     let key = `huluwa#${appId}`;
-//     let value = lk.getVal(key);
-//     if(!lk.isEmpty(value)){
-//         return value;
-//     }
-//     key = APPID_TOKEN_STORE_KEYS[appId];
-//     if(key){
-//         key = `huluwa#${key}`;
-//         return lk.getVal(key);
-//     }
-// }
-
-// async function main() {
-//     const XLTH_COOKIE_ARR = getCookieByAppId(XLTH_APPID); // 新联惠购
-//     const GLYP_COOKIE_ARR = getCookieByAppId(GLYP_APPID); // 贵旅优品
-//     const KGLG_COOKIE_ARR = getCookieByAppId(KGLG_APPID); // 空港乐购
-//     const HLQG_COOKIE_ARR = getCookieByAppId(HLQG_APPID); // 航旅黔购
-//     const ZHCS_COOKIE_ARR = getCookieByAppId(ZHCS_APPID); // 遵行出山
-//     const GYQP_COOKIE_ARR = getCookieByAppId(GYQP_APPID); // 贵盐黔品
-//     const LLSC_COOKIE_ARR = getCookieByAppId(LLSC_APPID); // 乐旅商城
-//     const YLQX_COOKIE_ARR = getCookieByAppId(YLQX_APPID); // 驿路黔寻
-
-//     if (XLTH_COOKIE_ARR) {
-//         lk.log('新联惠购预约开始');
-//         sendMessage.push('新联惠购预约开始');
-//         for (let [index, item] of XLTH_COOKIE_ARR.split(SPLIT).entries()) {
-//             lk.log(`----第${index + 1}个号----`);
-//             sendMessage.push(`----第${index + 1}个号----`);
-//             await autoSubmit(XLTH_APPID, item);
-//             await delay(1000);
-//         }
-//         lk.log('新联惠购预约结束\n');
-//         sendMessage.push('新联惠购预约结束\n');
-//     }
-
-//     if (GLYP_COOKIE_ARR) {
-//         lk.log('贵旅优品预约开始');
-//         sendMessage.push('贵旅优品预约开始');
-//         for (let [index, item] of GLYP_COOKIE_ARR.split(SPLIT).entries()) {
-//             lk.log(`----第${index + 1}个号----`);
-//             sendMessage.push(`----第${index + 1}个号----`);
-//             await autoSubmit(GLYP_APPID, item);
-//             await delay(1000);
-//         }
-//         lk.log('贵旅优品预约结束\n');
-//         sendMessage.push('贵旅优品预约结束\n');
-//     }
-
-//     if (KGLG_COOKIE_ARR) {
-//         lk.log('空港乐购预约开始');
-//         sendMessage.push('新联惠购预约开始');
-//         for (let [index, item] of KGLG_COOKIE_ARR.split(SPLIT).entries()) {
-//             lk.log(`----第${index + 1}个号----`);
-//             sendMessage.push(`----第${index + 1}个号----`);
-//             await autoSubmit(KGLG_APPID, item);
-//             await delay(1000);
-//         }
-//         lk.log('空港乐购预约结束\n');
-//         sendMessage.push('空港乐购预约结束\n');
-//     }
-
-//     if (HLQG_COOKIE_ARR) {
-//         lk.log('航旅黔购预约开始');
-//         sendMessage.push('新联惠购预约开始');
-//         for (let [index, item] of HLQG_COOKIE_ARR.split(SPLIT).entries()) {
-//             lk.log(`----第${index + 1}个号----`);
-//             sendMessage.push(`----第${index + 1}个号----`);
-//             await autoSubmit(HLQG_APPID, item);
-//             await delay(1000);
-//         }
-//         lk.log('航旅黔购预约结束\n');
-//         sendMessage.push('航旅黔购预约结束\n');
-//     }
-
-//     if (ZHCS_COOKIE_ARR) {
-//         lk.log('遵行出山预约开始');
-//         sendMessage.push('新联惠购预约开始');
-//         for (let [index, item] of ZHCS_COOKIE_ARR.split(SPLIT).entries()) {
-//             lk.log(`----第${index + 1}个号----`);
-//             sendMessage.push(`----第${index + 1}个号----`);
-//             await autoSubmit(ZHCS_APPID, item);
-//             await delay(1000);
-//         }
-//         lk.log('遵行出山预约结束\n');
-//         sendMessage.push('遵行出山预约结束\n');
-//     }
-
-//     if (GYQP_COOKIE_ARR) {
-//         lk.log('贵盐黔品预约开始');
-//         sendMessage.push('贵盐黔品预约开始');
-//         for (let [index, item] of GYQP_COOKIE_ARR.split(SPLIT).entries()) {
-//             lk.log(`----第${index + 1}个号----`);
-//             sendMessage.push(`----第${index + 1}个号----`);
-//             await autoSubmit(GYQP_APPID, item);
-//             await delay(1000);
-//         }
-//         lk.log('贵盐黔品预约结束\n');
-//         sendMessage.push('贵盐黔品预约结束\n');
-//     }
-
-//     if (LLSC_COOKIE_ARR) {
-//         lk.log('乐旅商城预约开始');
-//         sendMessage.push('乐旅商城预约开始');
-//         for (let [index, item] of LLSC_COOKIE_ARR.split(SPLIT).entries()) {
-//             lk.log(`----第${index + 1}个号----`);
-//             sendMessage.push(`----第${index + 1}个号----`);
-//             await autoSubmit(LLSC_APPID, item);
-//             await delay(1000);
-//         }
-//         lk.log('乐旅商城预约结束\n');
-//         sendMessage.push('乐旅商城预约结束\n');
-//     }
-
-//     if (YLQX_COOKIE_ARR) {
-//         lk.log('驿路黔寻预约开始');
-//         sendMessage.push('驿路黔寻预约开始');
-//         for (let [index, item] of YLQX_COOKIE_ARR.split(SPLIT).entries()) {
-//             lk.log(`----第${index + 1}个号----`);
-//             sendMessage.push(`----第${index + 1}个号----`);
-//             await autoSubmit(YLQX_APPID, item);
-//             await delay(1000);
-//         }
-//         lk.log('驿路黔寻预约结束\n');
-//         sendMessage.push('驿路黔寻预约结束\n');
-//     }
-
-//     lk.appendNotifyInfo(sendMessage.join('\n'));
-//     lk.msg('');
-//     lk.done();
-// }
-
-// function delay(time) {
-//     return new Promise(resolve => setTimeout(resolve, time));
-// }
-
-// function calculateDigest(body, sk) {
-//     const CryptoJS = createCryptoJS();
-//     const signature = CryptoJS.HmacSHA256(body, sk);
-//     return CryptoJS.enc.Base64.stringify(signature);
-// }
-
-// function calculateSignature(method, url, ak, sk, date) {
-//     const strToSign = `${method.toUpperCase()}\n${url}\n\n${ak}\n${date}\n`;
-//     const signature = CryptoJS.HmacSHA256(strToSign, sk);
-//     return CryptoJS.enc.Base64.stringify(signature);
-// }
-
-// function buildHeader(method, url, body) {
-//     const nowDate = new Date();
-//     const date = lk.formatDate(nowDate, 'ddd, DD MMM YYYY HH:mm:ss [GMT]');
-//     const signature = calculateSignature(method, url, AK, SK, date);
-//     const digest = calculateDigest(body, SK);
-//     const headers = {
-//         'Content-Type': 'application/json',
-//         'X-HMAC-SIGNATURE': signature,
-//         'X-HMAC-ACCESS-KEY': AK,
-//         'X-HMAC-ALGORITHM': 'hmac-sha256',
-//         'X-HMAC-DIGEST': digest,
-//         'X-HMAC-Date': date,
-//         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF XWEB/6945'
-//     };
-//     return headers;
-// }
-
-// async function getUserInfo(appId, token) {
-//     const url = '/front-manager/api/customer/queryById/token';
-//     const method = 'post';
-//     const data = {appId};
-//     const headers = buildHeader(method, url, JSON.stringify(data));
-//     headers['X-access-token'] = token;
-//     return new Promise((resolve, _reject) => {
-//         try {
-//             const body = JSON.stringify(data);
-//             const url = HOST + url;
-//             let options = {
-//                 url: url,
-//                 headers: headers,
-//                 body: body
-//             };
-//             lk.post(options, async (error, response, data) => {
-//                 let resData;
-//                 try {
-//                     if (error) {
-//                         lk.execFail();
-//                     } else {
-//                         resData = JSON.parse(data);
-//                     }
-//                 } catch (e) {
-//                     lk.logErr(e);
-//                     lk.execFail();
-//                 } finally {
-//                     resolve(resData);
-//                 }
-//             });
-//         } catch (e) {
-//             lk.logErr(e);
-//             resolve({code:'-1', message: e.message});
-//         }
-//     });
-// }
-
-// async function getChannelActivity(id, token) {
-//     const url = '/front-manager/api/customer/promotion/channelActivity';
-//     const method = 'post';
-//     const data = {id};
-//     const headers = buildHeader(method, url, JSON.stringify(data));
-//     headers['X-access-token'] = token;
-
-//     return new Promise((resolve, _reject) => {
-//         try {
-//             const body = JSON.stringify(data);
-//             const url = HOST + url;
-//             let options = {
-//                 url: url,
-//                 headers: headers,
-//                 body: body
-//             };
-//             lk.post(options, async (error, response, data) => {
-//                 let resData;
-//                 try {
-//                     if (error) {
-//                         lk.execFail();
-//                     } else {
-//                         resData = JSON.parse(data);
-//                     }
-//                 } catch (e) {
-//                     lk.logErr(e);
-//                     lk.execFail();
-//                 } finally {
-//                     resolve(resData);
-//                 }
-//             });
-//         } catch (e) {
-//             lk.logErr(e);
-//             resolve({code:'-1', message: e.message});
-//         }
-//     });
-// }
-
-// async function getChannelInfoId(appId) {
-//     const url = '/front-manager/api/get/getChannelInfoId';
-//     const method = 'post';
-//     const data = {appId};
-//     const headers = buildHeader(method, url, JSON.stringify(data));
-//     headers['X-access-token'] = token;
-
-//     return new Promise((resolve, _reject) => {
-//         try {
-//             const body = JSON.stringify(data);
-//             const url = HOST + url;
-//             let options = {
-//                 url: url,
-//                 headers: headers,
-//                 body: body
-//             };
-//             lk.post(options, async (error, response, data) => {
-//                 let resData;
-//                 try {
-//                     if (error) {
-//                         lk.execFail();
-//                     } else {
-//                         resData = JSON.parse(data);
-//                     }
-//                 } catch (e) {
-//                     lk.logErr(e);
-//                     lk.execFail();
-//                 } finally {
-//                     resolve(resData);
-//                 }
-//             });
-//         } catch (e) {
-//             lk.logErr(e);
-//             resolve({code:'-1', message: e.message});
-//         }
-//     });
-// }
-
-// async function appoint(activityId, channelId, token) {
-//     const url = '/front-manager/api/customer/promotion/appoint';
-//     const method = 'post';
-//     const data = {activityId, channelId};
-//     const headers = buildHeader(method, url, JSON.stringify(data));
-//     headers['X-access-token'] = token;
-
-//     return new Promise((resolve, _reject) => {
-//         try {
-//             const body = JSON.stringify(data);
-//             const url = HOST + url;
-//             let options = {
-//                 url: url,
-//                 headers: headers,
-//                 body: body
-//             };
-//             lk.post(options, async (error, response, data) => {
-//                 let resData;
-//                 try {
-//                     if (error) {
-//                         lk.execFail();
-//                     } else {
-//                         resData = JSON.parse(data);
-//                     }
-//                 } catch (e) {
-//                     lk.logErr(e);
-//                     lk.execFail();
-//                 } finally {
-//                     resolve(resData);
-//                 }
-//             });
-//         } catch (e) {
-//             lk.logErr(e);
-//             resolve({code:'-1', message: e.message});
-//         }
-//     });
-// }
-
-// async function checkCustomerInQianggou(activityId, channelId, token) {
-//     const url = '/front-manager/api/customer/promotion/checkCustomerInQianggou';
-//     const method = 'post';
-//     const data = {activityId, channelId};
-//     const headers = buildHeader(method, url, JSON.stringify(data));
-//     headers['X-access-token'] = token;
-
-//     return new Promise((resolve, _reject) => {
-//         try {
-//             const body = JSON.stringify(data);
-//             const url = HOST + url;
-//             let options = {
-//                 url: url,
-//                 headers: headers,
-//                 body: body
-//             };
-//             lk.post(options, async (error, response, data) => {
-//                 let resData;
-//                 try {
-//                     if (error) {
-//                         lk.execFail();
-//                     } else {
-//                         resData = JSON.parse(data);
-//                     }
-//                 } catch (e) {
-//                     lk.logErr(e);
-//                     lk.execFail();
-//                 } finally {
-//                     resolve(resData);
-//                 }
-//             });
-//         } catch (e) {
-//             lk.logErr(e);
-//             resolve({code:'-1', message: e.message});
-//         }
-//     });
-// }
-
-// async function autoSubmit(appId, token) {
-//     let channelId = '';
-//     let channelName = '';
-//     if (appId === XLTH_APPID) {
-//         channelId = '8';
-//         channelName = '新联惠购';
-//     }
-//     if (appId === GLYP_APPID) {
-//         channelId = '7';
-//         channelName = '贵旅优品';
-//     }
-//     if (appId === KGLG_APPID) {
-//         channelId = '2';
-//         channelName = '空港乐购';
-//     }
-//     if (appId === HLQG_APPID) {
-//         channelId = '6';
-//         channelName = '航旅黔购';
-//     }
-//     if (appId === ZHCS_APPID) {
-//         channelId = '5';
-//         channelName = '遵行出山';
-//     }
-//     if (appId === GYQP_APPID) {
-//         channelId = '3';
-//         channelName = '贵盐黔品';
-//     }
-//     if (appId === LLSC_APPID) {
-//         channelId = '1';
-//         channelName = '乐旅商城';
-//     }
-//     if (appId === YLQX_APPID) {
-//         channelId = '9';
-//         channelName = '驿路黔寻';
-//     }
-
-//     try {
-//         const res1 = await getUserInfo(appId, token);
-//         if (res1.code != '10000') {
-//             lk.log(res1.message);
-//             sendMessage.push(res1.message);
-//             return;
-//         }
-//         const realName = res1.data.realName;
-//         const phone = res1.data.phone;
-//         lk.log(`当前用户[${phone}]`);
-//         sendMessage.push(`当前用户[${phone}]`);
-
-//         const res2 = await getChannelActivity(channelId, token);
-//         if (res2.code != '10000') {
-//             lk.log(res2.message);
-//             sendMessage.push(res2.message);
-//             return;
-//         }
-//         const activityId = res2.data.id;
-//         const activityName = res2.data.name;
-//         lk.log(`活动名称[${activityName}]`);
-//         sendMessage.push(`活动名称[${activityName}]`);
-
-//         const res3 = await checkCustomerInQianggou(activityId, channelId, token);
-//         if (res3.code != '10000') {
-//             lk.log(res3.message);
-//             sendMessage.push(res3.message);
-//             return;
-//         }
-//         const data = res3.data;
-
-//         let message = '用户已经预约成功';
-//         if (data == false) {
-//             const res4 = await appoint(activityId, channelId, token);
-//             this.sendMessage = res4.message;
-//         }
-//         lk.log(`预约结果[${message}]`);
-//         sendMessage.push(`预约结果[${message}]`);
-//     } catch (err) {
-//         lk.log(`运行异常[${err.message}]`);
-//         sendMessage.push(`运行异常[${err.message}]`);
-//     }
-// }
+let retBody;
+if (!lk.isExecComm) {
+    if (lk.isRequest()) {
+        checkHandleRequest();
+        lk.msg('');
+        if (retBody) {
+            lk.done({ body: JSON.stringify(retBody) });
+        } else {
+            lk.done();
+        }
+    }else{
+        // main();
+    }
+}
+
+function checkHandleRequest() {
+    const url = $request.url;
+    const path = $request.path;
+    lk.log(`请求url=${url}#${$request.method}`);
+    lk.log(`请求body=${lk.getRequestBody()}`);
+    if ($request && $request.method != 'OPTIONS') {
+        // if(path.match(/\/front-manager\/api\/login\/wxMiniLogin/)){
+        //     handleWxMiniLogin();
+        // } else if(path.match(/\/front-manager\/api\/get\/channelId/)){
+        //     handleChannelId();
+        // } else if(path.match(/\/front-manager\/api\/customer\/queryById\/token/)){
+        //     handleUserInfo();
+        // }
+    }
+}
+
+function handleWxMiniLogin(){
+    let reqParams = {};
+    let reqBody = lk.getRequestBody();
+    if (reqBody) {
+        reqParams = JSON.parse(reqBody);
+    }
+    let rspBody = lk.getResponseBody();
+    if (!rspBody) {
+        return;
+    }
+    let appId = reqParams.appId;
+    let rspParams = JSON.parse(rspBody);
+    if(rspParams.code == '10000'){
+        let rspData = rspParams.data;
+        let token = rspData.token;
+        let key = `huluwa#${appId}`;
+        lk.setVal(key, token);
+        key = APPID_TOKEN_STORE_KEYS[appId];
+        if(key){
+            key = `huluwa#${key}`;
+            lk.setVal(key, token);
+        }
+    }
+}
+
+function handleChannelId(){
+    let headers = $request.headers;
+    if(!headers['X-access-token']){
+        return;
+    }
+    let reqParams = {};
+    let reqBody = lk.getRequestBody();
+    if (reqBody) {
+        reqParams = JSON.parse(reqBody);
+    }
+    let appId = reqParams.appId;
+    let token = headers['X-access-token'];
+    let key = `huluwa#${appId}`;
+    lk.setVal(key, token);
+    key = APPID_TOKEN_STORE_KEYS[appId];
+    if(key){
+        key = `huluwa#${key}`;
+        lk.setVal(key, token);
+    }
+    let rspBody = lk.getResponseBody();
+    if (!rspBody) {
+        return;
+    }
+    let rspParams = JSON.parse(rspBody);
+    if(rspParams.code == '10000'){
+        let channelId = rspParams.data;
+    }
+}
+
+function handleUserInfo(){
+
+}
+
+function getCookieByAppId(appId){
+    let key = `huluwa#${appId}`;
+    let value = lk.getVal(key);
+    if(!lk.isEmpty(value)){
+        return value;
+    }
+    key = APPID_TOKEN_STORE_KEYS[appId];
+    if(key){
+        key = `huluwa#${key}`;
+        return lk.getVal(key);
+    }
+}
+
+async function main() {
+    const XLTH_COOKIE_ARR = getCookieByAppId(XLTH_APPID); // 新联惠购
+    const GLYP_COOKIE_ARR = getCookieByAppId(GLYP_APPID); // 贵旅优品
+    const KGLG_COOKIE_ARR = getCookieByAppId(KGLG_APPID); // 空港乐购
+    const HLQG_COOKIE_ARR = getCookieByAppId(HLQG_APPID); // 航旅黔购
+    const ZHCS_COOKIE_ARR = getCookieByAppId(ZHCS_APPID); // 遵行出山
+    const GYQP_COOKIE_ARR = getCookieByAppId(GYQP_APPID); // 贵盐黔品
+    const LLSC_COOKIE_ARR = getCookieByAppId(LLSC_APPID); // 乐旅商城
+    const YLQX_COOKIE_ARR = getCookieByAppId(YLQX_APPID); // 驿路黔寻
+
+    if (XLTH_COOKIE_ARR) {
+        lk.log('新联惠购预约开始');
+        sendMessage.push('新联惠购预约开始');
+        for (let [index, item] of XLTH_COOKIE_ARR.split(SPLIT).entries()) {
+            lk.log(`----第${index + 1}个号----`);
+            sendMessage.push(`----第${index + 1}个号----`);
+            await autoSubmit(XLTH_APPID, item);
+            await delay(1000);
+        }
+        lk.log('新联惠购预约结束\n');
+        sendMessage.push('新联惠购预约结束\n');
+    }
+
+    if (GLYP_COOKIE_ARR) {
+        lk.log('贵旅优品预约开始');
+        sendMessage.push('贵旅优品预约开始');
+        for (let [index, item] of GLYP_COOKIE_ARR.split(SPLIT).entries()) {
+            lk.log(`----第${index + 1}个号----`);
+            sendMessage.push(`----第${index + 1}个号----`);
+            await autoSubmit(GLYP_APPID, item);
+            await delay(1000);
+        }
+        lk.log('贵旅优品预约结束\n');
+        sendMessage.push('贵旅优品预约结束\n');
+    }
+
+    if (KGLG_COOKIE_ARR) {
+        lk.log('空港乐购预约开始');
+        sendMessage.push('新联惠购预约开始');
+        for (let [index, item] of KGLG_COOKIE_ARR.split(SPLIT).entries()) {
+            lk.log(`----第${index + 1}个号----`);
+            sendMessage.push(`----第${index + 1}个号----`);
+            await autoSubmit(KGLG_APPID, item);
+            await delay(1000);
+        }
+        lk.log('空港乐购预约结束\n');
+        sendMessage.push('空港乐购预约结束\n');
+    }
+
+    if (HLQG_COOKIE_ARR) {
+        lk.log('航旅黔购预约开始');
+        sendMessage.push('新联惠购预约开始');
+        for (let [index, item] of HLQG_COOKIE_ARR.split(SPLIT).entries()) {
+            lk.log(`----第${index + 1}个号----`);
+            sendMessage.push(`----第${index + 1}个号----`);
+            await autoSubmit(HLQG_APPID, item);
+            await delay(1000);
+        }
+        lk.log('航旅黔购预约结束\n');
+        sendMessage.push('航旅黔购预约结束\n');
+    }
+
+    if (ZHCS_COOKIE_ARR) {
+        lk.log('遵行出山预约开始');
+        sendMessage.push('新联惠购预约开始');
+        for (let [index, item] of ZHCS_COOKIE_ARR.split(SPLIT).entries()) {
+            lk.log(`----第${index + 1}个号----`);
+            sendMessage.push(`----第${index + 1}个号----`);
+            await autoSubmit(ZHCS_APPID, item);
+            await delay(1000);
+        }
+        lk.log('遵行出山预约结束\n');
+        sendMessage.push('遵行出山预约结束\n');
+    }
+
+    if (GYQP_COOKIE_ARR) {
+        lk.log('贵盐黔品预约开始');
+        sendMessage.push('贵盐黔品预约开始');
+        for (let [index, item] of GYQP_COOKIE_ARR.split(SPLIT).entries()) {
+            lk.log(`----第${index + 1}个号----`);
+            sendMessage.push(`----第${index + 1}个号----`);
+            await autoSubmit(GYQP_APPID, item);
+            await delay(1000);
+        }
+        lk.log('贵盐黔品预约结束\n');
+        sendMessage.push('贵盐黔品预约结束\n');
+    }
+
+    if (LLSC_COOKIE_ARR) {
+        lk.log('乐旅商城预约开始');
+        sendMessage.push('乐旅商城预约开始');
+        for (let [index, item] of LLSC_COOKIE_ARR.split(SPLIT).entries()) {
+            lk.log(`----第${index + 1}个号----`);
+            sendMessage.push(`----第${index + 1}个号----`);
+            await autoSubmit(LLSC_APPID, item);
+            await delay(1000);
+        }
+        lk.log('乐旅商城预约结束\n');
+        sendMessage.push('乐旅商城预约结束\n');
+    }
+
+    if (YLQX_COOKIE_ARR) {
+        lk.log('驿路黔寻预约开始');
+        sendMessage.push('驿路黔寻预约开始');
+        for (let [index, item] of YLQX_COOKIE_ARR.split(SPLIT).entries()) {
+            lk.log(`----第${index + 1}个号----`);
+            sendMessage.push(`----第${index + 1}个号----`);
+            await autoSubmit(YLQX_APPID, item);
+            await delay(1000);
+        }
+        lk.log('驿路黔寻预约结束\n');
+        sendMessage.push('驿路黔寻预约结束\n');
+    }
+
+    lk.appendNotifyInfo(sendMessage.join('\n'));
+    lk.msg('');
+    lk.done();
+}
+
+function delay(time) {
+    return new Promise(resolve => setTimeout(resolve, time));
+}
+
+function calculateDigest(body, sk) {
+    const CryptoJS = createCryptoJS();
+    const signature = CryptoJS.HmacSHA256(body, sk);
+    return CryptoJS.enc.Base64.stringify(signature);
+}
+
+function calculateSignature(method, url, ak, sk, date) {
+    const strToSign = `${method.toUpperCase()}\n${url}\n\n${ak}\n${date}\n`;
+    const signature = CryptoJS.HmacSHA256(strToSign, sk);
+    return CryptoJS.enc.Base64.stringify(signature);
+}
+
+function buildHeader(method, url, body) {
+    const nowDate = new Date();
+    const date = lk.formatDate(nowDate, 'ddd, DD MMM YYYY HH:mm:ss [GMT]');
+    const signature = calculateSignature(method, url, AK, SK, date);
+    const digest = calculateDigest(body, SK);
+    const headers = {
+        'Content-Type': 'application/json',
+        'X-HMAC-SIGNATURE': signature,
+        'X-HMAC-ACCESS-KEY': AK,
+        'X-HMAC-ALGORITHM': 'hmac-sha256',
+        'X-HMAC-DIGEST': digest,
+        'X-HMAC-Date': date,
+        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF XWEB/6945'
+    };
+    return headers;
+}
+
+async function getUserInfo(appId, token) {
+    const url = '/front-manager/api/customer/queryById/token';
+    const method = 'post';
+    const data = {appId};
+    const headers = buildHeader(method, url, JSON.stringify(data));
+    headers['X-access-token'] = token;
+    return new Promise((resolve, _reject) => {
+        try {
+            const body = JSON.stringify(data);
+            const url = HOST + url;
+            let options = {
+                url: url,
+                headers: headers,
+                body: body
+            };
+            lk.post(options, async (error, response, data) => {
+                let resData;
+                try {
+                    if (error) {
+                        lk.execFail();
+                    } else {
+                        resData = JSON.parse(data);
+                    }
+                } catch (e) {
+                    lk.logErr(e);
+                    lk.execFail();
+                } finally {
+                    resolve(resData);
+                }
+            });
+        } catch (e) {
+            lk.logErr(e);
+            resolve({code:'-1', message: e.message});
+        }
+    });
+}
+
+async function getChannelActivity(id, token) {
+    const url = '/front-manager/api/customer/promotion/channelActivity';
+    const method = 'post';
+    const data = {id};
+    const headers = buildHeader(method, url, JSON.stringify(data));
+    headers['X-access-token'] = token;
+
+    return new Promise((resolve, _reject) => {
+        try {
+            const body = JSON.stringify(data);
+            const url = HOST + url;
+            let options = {
+                url: url,
+                headers: headers,
+                body: body
+            };
+            lk.post(options, async (error, response, data) => {
+                let resData;
+                try {
+                    if (error) {
+                        lk.execFail();
+                    } else {
+                        resData = JSON.parse(data);
+                    }
+                } catch (e) {
+                    lk.logErr(e);
+                    lk.execFail();
+                } finally {
+                    resolve(resData);
+                }
+            });
+        } catch (e) {
+            lk.logErr(e);
+            resolve({code:'-1', message: e.message});
+        }
+    });
+}
+
+async function getChannelInfoId(appId) {
+    const url = '/front-manager/api/get/getChannelInfoId';
+    const method = 'post';
+    const data = {appId};
+    const headers = buildHeader(method, url, JSON.stringify(data));
+    headers['X-access-token'] = token;
+
+    return new Promise((resolve, _reject) => {
+        try {
+            const body = JSON.stringify(data);
+            const url = HOST + url;
+            let options = {
+                url: url,
+                headers: headers,
+                body: body
+            };
+            lk.post(options, async (error, response, data) => {
+                let resData;
+                try {
+                    if (error) {
+                        lk.execFail();
+                    } else {
+                        resData = JSON.parse(data);
+                    }
+                } catch (e) {
+                    lk.logErr(e);
+                    lk.execFail();
+                } finally {
+                    resolve(resData);
+                }
+            });
+        } catch (e) {
+            lk.logErr(e);
+            resolve({code:'-1', message: e.message});
+        }
+    });
+}
+
+async function appoint(activityId, channelId, token) {
+    const url = '/front-manager/api/customer/promotion/appoint';
+    const method = 'post';
+    const data = {activityId, channelId};
+    const headers = buildHeader(method, url, JSON.stringify(data));
+    headers['X-access-token'] = token;
+
+    return new Promise((resolve, _reject) => {
+        try {
+            const body = JSON.stringify(data);
+            const url = HOST + url;
+            let options = {
+                url: url,
+                headers: headers,
+                body: body
+            };
+            lk.post(options, async (error, response, data) => {
+                let resData;
+                try {
+                    if (error) {
+                        lk.execFail();
+                    } else {
+                        resData = JSON.parse(data);
+                    }
+                } catch (e) {
+                    lk.logErr(e);
+                    lk.execFail();
+                } finally {
+                    resolve(resData);
+                }
+            });
+        } catch (e) {
+            lk.logErr(e);
+            resolve({code:'-1', message: e.message});
+        }
+    });
+}
+
+async function checkCustomerInQianggou(activityId, channelId, token) {
+    const url = '/front-manager/api/customer/promotion/checkCustomerInQianggou';
+    const method = 'post';
+    const data = {activityId, channelId};
+    const headers = buildHeader(method, url, JSON.stringify(data));
+    headers['X-access-token'] = token;
+
+    return new Promise((resolve, _reject) => {
+        try {
+            const body = JSON.stringify(data);
+            const url = HOST + url;
+            let options = {
+                url: url,
+                headers: headers,
+                body: body
+            };
+            lk.post(options, async (error, response, data) => {
+                let resData;
+                try {
+                    if (error) {
+                        lk.execFail();
+                    } else {
+                        resData = JSON.parse(data);
+                    }
+                } catch (e) {
+                    lk.logErr(e);
+                    lk.execFail();
+                } finally {
+                    resolve(resData);
+                }
+            });
+        } catch (e) {
+            lk.logErr(e);
+            resolve({code:'-1', message: e.message});
+        }
+    });
+}
+
+async function autoSubmit(appId, token) {
+    let channelId = '';
+    let channelName = '';
+    if (appId === XLTH_APPID) {
+        channelId = '8';
+        channelName = '新联惠购';
+    }
+    if (appId === GLYP_APPID) {
+        channelId = '7';
+        channelName = '贵旅优品';
+    }
+    if (appId === KGLG_APPID) {
+        channelId = '2';
+        channelName = '空港乐购';
+    }
+    if (appId === HLQG_APPID) {
+        channelId = '6';
+        channelName = '航旅黔购';
+    }
+    if (appId === ZHCS_APPID) {
+        channelId = '5';
+        channelName = '遵行出山';
+    }
+    if (appId === GYQP_APPID) {
+        channelId = '3';
+        channelName = '贵盐黔品';
+    }
+    if (appId === LLSC_APPID) {
+        channelId = '1';
+        channelName = '乐旅商城';
+    }
+    if (appId === YLQX_APPID) {
+        channelId = '9';
+        channelName = '驿路黔寻';
+    }
+
+    try {
+        const res1 = await getUserInfo(appId, token);
+        if (res1.code != '10000') {
+            lk.log(res1.message);
+            sendMessage.push(res1.message);
+            return;
+        }
+        const realName = res1.data.realName;
+        const phone = res1.data.phone;
+        lk.log(`当前用户[${phone}]`);
+        sendMessage.push(`当前用户[${phone}]`);
+
+        const res2 = await getChannelActivity(channelId, token);
+        if (res2.code != '10000') {
+            lk.log(res2.message);
+            sendMessage.push(res2.message);
+            return;
+        }
+        const activityId = res2.data.id;
+        const activityName = res2.data.name;
+        lk.log(`活动名称[${activityName}]`);
+        sendMessage.push(`活动名称[${activityName}]`);
+
+        const res3 = await checkCustomerInQianggou(activityId, channelId, token);
+        if (res3.code != '10000') {
+            lk.log(res3.message);
+            sendMessage.push(res3.message);
+            return;
+        }
+        const data = res3.data;
+
+        let message = '用户已经预约成功';
+        if (data == false) {
+            const res4 = await appoint(activityId, channelId, token);
+            this.sendMessage = res4.message;
+        }
+        lk.log(`预约结果[${message}]`);
+        sendMessage.push(`预约结果[${message}]`);
+    } catch (err) {
+        lk.log(`运行异常[${err.message}]`);
+        sendMessage.push(`运行异常[${err.message}]`);
+    }
+}