|
|
@@ -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}]`);
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
|
|
|
|