shawenguan 1 年之前
父節點
當前提交
ebcb55d2fc
共有 1 個文件被更改,包括 136 次插入9 次删除
  1. 136 9
      Scripts/imoutai/imoutaiHelper.js

+ 136 - 9
Scripts/imoutai/imoutaiHelper.js

@@ -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',