|
|
@@ -32,7 +32,7 @@ const magicJS = MagicJS(scriptName, "INFO");
|
|
|
|
|
|
let G_SHOP_PC_MAP = {}; //{[province:string]:{[city:string]=shopId}};
|
|
|
let G_SHOP_SRC_MAP = {};//{[shopId:string]: any};
|
|
|
-let G_MT_VERSION = '1.6.7'; // MT版本
|
|
|
+let G_MT_VERSION = '1.7.1'; // MT版本
|
|
|
let G_MT_R = 'clips_OlU6TmFRag5rCXwbNAQ/Tz1SKlN8THcecBp/HGhHdw==';// 非必填
|
|
|
|
|
|
let G_USER_AGENT = 'iOS;16.6.1;Apple;?unrecognized?';
|
|
|
@@ -156,6 +156,43 @@ async function tryReserve() {
|
|
|
msg += `${msgItems[i].name}:${msgItems[i].value}\n`;
|
|
|
}
|
|
|
magicJS.notification.appendNotifyInfo(msg);
|
|
|
+
|
|
|
+ if (!magicJS.isEmpty(userData.tokenWap)) {
|
|
|
+ let retLstData = await getReservationList(userData.token, userData.tokenWap, userData.deviceId);
|
|
|
+ if (retLstData) {
|
|
|
+ let ntfMsgTips = '';
|
|
|
+ let reservationItemVOS = retLstData.reservationItemVOS;
|
|
|
+ let nowTime = getTodayZeroTime();
|
|
|
+ for (let i = 0; i < reservationItemVOS.length; i++) {
|
|
|
+ const item = reservationItemVOS[i];
|
|
|
+ const reservationTime = item.reservationTime;
|
|
|
+ if (reservationTime > nowTime) {
|
|
|
+ let statusStr = '';
|
|
|
+ switch (item.status) {
|
|
|
+ case 0:
|
|
|
+ statusStr = '静候申请结果';
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ statusStr = '申请失败';
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ statusStr = `未知状态(${item.status})`;
|
|
|
+ }
|
|
|
+ ntfMsgTips += `[${item.itemName}]${statusStr} 预约时间:${new Date(reservationTime).toLocaleString()}\n`;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ntfMsgTips && ntfMsgTips.length > 0) {
|
|
|
+ magicJS.fastWxpusherSend(ntfMsgTips, 'i茅台申购结果');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function getTodayZeroTime() {
|
|
|
+ const now = new Date();
|
|
|
+ // 创建一个新的日期对象,并将时间设置为当天的零点
|
|
|
+ const zeroDae = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
|
|
+ return zeroDae.getTime();
|
|
|
}
|
|
|
|
|
|
function checkHandleRequest() {
|
|
|
@@ -164,16 +201,18 @@ function checkHandleRequest() {
|
|
|
magicJS.logger.info(`请求url=${url}#${$request.method}`);
|
|
|
magicJS.logger.info(`请求body=${magicJS.getRequestBody()}`);
|
|
|
if ($request && $request.method != 'OPTIONS') {
|
|
|
- if (path.match(/\/xhr\/front\/user\/register\/login/)) {
|
|
|
+ if (path.indexOf('/xhr/front/user/register/login/') > -1) {
|
|
|
handleLogin();
|
|
|
- } else if (path.match(/\/xhr\/front\/user\/info/)) {
|
|
|
+ } else if (path.indexOf('/xhr/front/user/info') > -1) {
|
|
|
handleUserInfo();
|
|
|
- } else if (path.match(/\/xhr\/front\/mall\/message\/unRead\/query/)) {
|
|
|
+ } else if (path.indexOf('/xhr/front/mall/message/unRead/query') > -1) {
|
|
|
handleMessageUnRead();
|
|
|
- } else if (path.match(/\/game\/isolationPage\/getUserIsolationPageData/)) {
|
|
|
+ } else if (path.indexOf('/game/isolationPage/getUserIsolationPageData') > -1) {
|
|
|
handleUserIsolationPageData();
|
|
|
- } else if (path.match(/\/game\/userinfo/)) {
|
|
|
+ } else if (path.indexOf('/game/userinfo') > -1) {
|
|
|
handleUserInfoData();
|
|
|
+ } else if (path.indexOf('/xhr/front/mall/reservation/list/pageOne/queryV2') > -1) {
|
|
|
+ handleReservationList();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -189,6 +228,7 @@ function handleHeaders() {
|
|
|
let userTag = headers['MT-User-Tag'];
|
|
|
let cookie = headers['Cookie'];
|
|
|
let appVersion = headers['MT-APP-Version'];
|
|
|
+ let mtV = headers['MT-V'];
|
|
|
|
|
|
magicJS.data.write('lkMTToken', mtToken);
|
|
|
magicJS.data.write('lkMTUserAgent', userAgent);
|
|
|
@@ -197,6 +237,9 @@ function handleHeaders() {
|
|
|
magicJS.data.write('lkMTUserTag', userTag);
|
|
|
magicJS.data.write('lkMTCookie', cookie);
|
|
|
magicJS.data.write('lkMTAppVersion', appVersion);
|
|
|
+ if (mtV) {
|
|
|
+ magicJS.data.write('lkMT-V', mtV);
|
|
|
+ }
|
|
|
|
|
|
if (mtToken && mtToken.length > 0) {
|
|
|
let jwtData = magicJS.parseJwt(mtToken);
|
|
|
@@ -285,6 +328,28 @@ function handleUserInfoData() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+function handleReservationList() {
|
|
|
+ let rspBody = magicJS.getResponseBody();
|
|
|
+ if (!rspBody) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let rspParams = JSON.parse(rspBody);
|
|
|
+ if (rspParams.code != 2000) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let headers = $request.headers;
|
|
|
+ if (headers['MT-V']) {
|
|
|
+ magicJS.data.write('lkMT-V', headers['MT-V']);
|
|
|
+ }
|
|
|
+ let data = rspParams.data;
|
|
|
+ let reservationItemVOS = data.reservationItemVOS;
|
|
|
+ for (let i = 0; i < reservationItemVOS.length; i++) {
|
|
|
+ const item = reservationItemVOS[i];
|
|
|
+ item.status = 2;
|
|
|
+ }
|
|
|
+ gRetBody = rspParams;
|
|
|
+}
|
|
|
+
|
|
|
function getUserData() {
|
|
|
let data = {
|
|
|
userId: magicJS.data.read('lkMTUserId'),
|
|
|
@@ -416,7 +481,10 @@ function genActParam(data) {
|
|
|
|
|
|
async function mtAdd(sessionId, itemId, shopId, userId, token, deviceId) {
|
|
|
const mtK = `${new Date().getTime()}`;
|
|
|
- const mtV = await getMtv(deviceId, G_MT_VERSION);
|
|
|
+ let mtV = await getMtv(deviceId, G_MT_VERSION);
|
|
|
+ if (!mtV) {
|
|
|
+ mtV = magicJS.data.read('lkMT-V', '');
|
|
|
+ }
|
|
|
let headers = {
|
|
|
"MT-Network-Type": "WIFI",
|
|
|
"User-Agent": G_USER_AGENT,
|
|
|
@@ -820,10 +888,10 @@ async function getProvinceCityMapData() {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
-async function getUserEnergyAward(token, deviceId) {
|
|
|
+async function getUserEnergyAward(tokenWap, deviceId) {
|
|
|
const cookies = {
|
|
|
'MT-Device-ID-Wap': deviceId,
|
|
|
- 'MT-Token-Wap': token,
|
|
|
+ 'MT-Token-Wap': tokenWap,
|
|
|
'YX_SUPPORT_WEBP': '1',
|
|
|
};
|
|
|
const headers = {
|
|
|
@@ -907,6 +975,62 @@ async function getUserEnergyAward(token, deviceId) {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+async function getReservationList(token, tokenWap, deviceId) {
|
|
|
+ const mtK = `${new Date().getTime()}`;
|
|
|
+ const mtV = await getMtv(deviceId, G_MT_VERSION);
|
|
|
+ if (!mtV) {
|
|
|
+ mtV = magicJS.data.read('lkMT-V', '');
|
|
|
+ }
|
|
|
+ const cookies = {
|
|
|
+ 'MT-Device-ID-Wap': deviceId,
|
|
|
+ 'MT-Token-Wap': tokenWap,
|
|
|
+ '__bid_n': `19005351aab53d51134207`,
|
|
|
+ };
|
|
|
+ const headers = {
|
|
|
+ 'MT-Bundle-ID': `com.moutai.mall`,
|
|
|
+ 'MT-K': mtK,
|
|
|
+ 'Connection': `keep-alive`,
|
|
|
+ 'Accept-Language': `zh-Hans-CN;q=1`,
|
|
|
+ 'MT-R': G_MT_R,
|
|
|
+ 'MT-APP-Version': `1.7.1`,
|
|
|
+ 'MT-Device-ID': deviceId,
|
|
|
+ 'BS-DVID': `IffKb4dszH_n509uopo1ZZ0hs1Vpp3x85TDbPFLZH3A54JAA2ptDHxDxK_cUOK4vXoUexYYgHEipBg8jLS9vNxg`,
|
|
|
+ 'Accept-Encoding': `gzip, deflate, br`,
|
|
|
+ 'MT-Request-ID': getMTRequestId(),
|
|
|
+ 'User-Agent': `iOS;16.6.1;Apple;?unrecognized?`,
|
|
|
+ 'MT-User-Tag': `0`,
|
|
|
+ 'Cookie': magicJS.serializeCookies(cookies),
|
|
|
+ 'Host': `app.moutai519.com.cn`,
|
|
|
+ 'MT-Team-ID': ``,
|
|
|
+ 'MT-V': mtV,
|
|
|
+ 'MT-Token': token,
|
|
|
+ 'Accept': `*/*`,
|
|
|
+ 'MT-Network-Type': `WIFI`
|
|
|
+ };
|
|
|
+ const body = ``;
|
|
|
+
|
|
|
+ const options = {
|
|
|
+ url: url,
|
|
|
+ method: method,
|
|
|
+ headers: headers,
|
|
|
+ body: body
|
|
|
+ };
|
|
|
+ let result = await magicJS.http.get(options).then(response => {
|
|
|
+ try {
|
|
|
+ let rspData = response.body;
|
|
|
+ if (rspData.code == 2000) {
|
|
|
+ return rspData.data;
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ magicJS.logger.error(e);
|
|
|
+ }
|
|
|
+ }).catch(err => {
|
|
|
+ const msg = `请求申购列表异常\n${JSON.stringify(err)}`;
|
|
|
+ magicJS.logger.error(msg);
|
|
|
+ });
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
function signature(data, timestamp) {
|
|
|
let keys = [];
|
|
|
for (let k in data) {
|
|
|
@@ -928,6 +1052,9 @@ function signature(data, timestamp) {
|
|
|
async function login(phone, vCode, deviceId) {
|
|
|
const mtK = `${new Date().getTime()}`;
|
|
|
const mtV = await getMtv(deviceId, G_MT_VERSION);
|
|
|
+ if (!mtV) {
|
|
|
+ mtV = magicJS.data.read('lkMT-V', '');
|
|
|
+ }
|
|
|
const headers = {
|
|
|
'MT-Device-ID': deviceId,
|
|
|
'MT-User-Tag': '0',
|