shawenguan 1 年之前
父節點
當前提交
70b64397fa
共有 3 個文件被更改,包括 114 次插入13 次删除
  1. 7 0
      BoxJsSub/release.json
  2. 92 13
      Scripts/elife/ofpayGrab.js
  3. 15 0
      Scripts/elife/ofpayHelper.js

+ 7 - 0
BoxJsSub/release.json

@@ -323,6 +323,13 @@
                     "desc": "默认开启"
                 },
                 {
+                    "id": "lkOfPayBuyFastModeEnable",
+                    "name": "快速抢购模式",
+                    "val": true,
+                    "type": "boolean",
+                    "desc": "默认开启"
+                },
+                {
                     "id": "lkOfPayMarketBuyList",
                     "name": "商品抢购清单",
                     "val": "星巴克|霸王茶姬|百果园|京东E卡|滴滴快车",

+ 92 - 13
Scripts/elife/ofpayGrab.js

@@ -14,6 +14,7 @@ const OfPayConstKey = {
     marketBuyList: 'lkOfPayMarketBuyList',
     awardDiscountPrice: 'lkOfPayDiscountPrice',
     checkBuyRepeatEnable: 'lkOfPayBuyRepeatEnable',
+    fastModeEnable: 'lkOfPayBuyFastModeEnable',
 }
 
 let ofpayUserAgent = `Mozilla/5.0 (iPhone; CPU iPhone OS 16_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 F-OFST  elife_moblie_ios  fullversion:6.0.2  BSComponentVersion:5.4 WorkStationChannel:0 isBreak:0  ICBCiPhoneBSNew 6.0.2 iphone os wkwebview:true`;
@@ -24,6 +25,7 @@ let ofpayAuthorization = lk.getVal(OfPayConstKey.token, '');
 let ofpayCookie = lk.getVal(OfPayConstKey.cookie,'');
 let ofpayAccountPhone = lk.getVal(OfPayConstKey.phone);
 let ofpayCheckBuyRepeatEnable = lk.getVal(OfPayConstKey.checkBuyRepeatEnable, true);
+let ofpayFastModeEnable = lk.getVal(OfPayConstKey.fastModeEnable, true);
 
 let appVersion = 602;
 
@@ -67,7 +69,13 @@ async function all() {
         if(lk.isEmpty(marketId) || lk.isEmpty(eventVisitorId)){
             lk.appendNotifyInfo(`❌缺少次要参数,请登录app采集`);
         } else {
-            let cateItems = await getMarketItems(marketId, eventVisitorId);
+            let cateItems = getMarketItemsFromCache(marketId, eventVisitorId);
+            if(!cateItems){
+                lk.log('请求即时商品列表数据');
+                cateItems = await getMarketItemsFromSvr(marketId, eventVisitorId);
+            }else{
+                lk.log('使用商品列表缓存数据');
+            }
             if(cateItems){
                 let cateCount = cateItems.length;
                 let allBuyList = getWillMarketBuyListAll();
@@ -159,26 +167,41 @@ async function checkToBuyOne(subActivityId, itemName, awardList){
             return oneRet;
         }
     }
-    for(let i=0; i < awardList.length; i++){
-        const awardData = awardList[i];
-        if(awardData.prizeName.indexOf(itemName) > -1){
-            lk.log(`开始尝试抢购-${awardData.prizeName}${awardData.prizeDesc},价格:${awardData.price},库存:${awardData.remainStock}`);
-            if(awardData.remainStock > 0){
-                oneRet = await itemBuy(subActivityId, awardData);
+    if(ofpayFastModeEnable){
+        for(let i=0; i < awardList.length; i++){
+            const awardData = awardList[i];
+            if(awardData.prizeName.indexOf(itemName) > -1){
+                lk.log(`开始尝试抢购-${awardData.prizeName}${awardData.prizeDesc},价格:${awardData.price},库存:${awardData.remainStock}`);
+                oneRet = await itemBuyFast(subActivityId, awardData);
                 if(oneRet){
                     // 抢购成功
                     lk.setVal(checkBuyRepeatKey, nowString);
                 }
-            }else{
-                lk.log(`库存不足,跳过~`);
+                break;
+            }
+        }
+    }else{
+        for(let i=0; i < awardList.length; i++){
+            const awardData = awardList[i];
+            if(awardData.prizeName.indexOf(itemName) > -1){
+                lk.log(`开始尝试抢购-${awardData.prizeName}${awardData.prizeDesc},价格:${awardData.price},库存:${awardData.remainStock}`);
+                if(awardData.remainStock > 0){
+                    oneRet = await itemBuyNormal(subActivityId, awardData);
+                    if(oneRet){
+                        // 抢购成功
+                        lk.setVal(checkBuyRepeatKey, nowString);
+                    }
+                }else{
+                    lk.log(`库存不足,跳过~`);
+                }
+                break;
             }
-            break;
         }
     }
     return oneRet;
 }
 
-async function itemBuy(subActivityId, awardData){
+async function itemBuyNormal(subActivityId, awardData){
     const activityId = awardData.activityId;
     const prizeName = awardData.prizeName;
     let actDataList = await getActivityItems(marketId, activityId, eventVisitorId);
@@ -220,7 +243,6 @@ async function itemBuy(subActivityId, awardData){
                 if(payRet){
                     return awardData;
                 }
-                return awardData;
             }
         }
     } else {
@@ -229,6 +251,22 @@ async function itemBuy(subActivityId, awardData){
     return null;
 }
 
+async function itemBuyFast(subActivityId, awardData){
+    const gameAccount = ofpayAccountPhone;
+    const thirdInfo = JSON.parse(awardData.thirdInfo);
+    const awardId = awardData.awardId;
+    let payInfo = await getPayInfo(subActivityId, awardId, '', '', gameAccount, eventVisitorId);
+    if(payInfo){
+        if(payInfo.detailId != void 0){
+            let payRet = await pay(subActivityId, eventVisitorId, payInfo.detailId);
+            if(payRet){
+                return awardData;
+            }
+        }
+    }
+    return null;
+}
+
 function getAwardExpectedDiscount(price, prizeName){
     if(!awardWantDiscountDict){
         awardWantDiscountDict = {};
@@ -264,7 +302,47 @@ function checkPickItem(prizeName, awardList){
     }
 }
 
-async function getMarketItems(marketId, eventVisitorId){
+function getMarketItemsFromCache(marketId, eventVisitorId){
+    let retData = null;
+    try{
+        let key = `${OfPayConstKey.marketItemsData}#${urlParams.marketId}${urlParams.eventVisitorId}`;
+        let jsonStr = lk.getVal(key);
+        if(jsonStr && jsonStr.length > 0){
+            retData = JSON.parse(jsonStr);
+        }
+    }catch{
+
+    }
+    if(!retData){
+        try{
+            let key = `${OfPayConstKey.marketItemsData}1`;
+            let jsonStr = lk.getVal(key);
+            if(jsonStr && jsonStr.length > 0){
+                retData = JSON.parse(jsonStr);
+            }
+        }catch{
+
+        }
+    }
+    if(retData){
+        let nowString = lk.formatDate(new Date(), 'yyyyMMdd');
+        if(retData.updateDate == nowString){
+            return retData;
+        }
+    }
+    return null;
+}
+
+
+function saveMarketItemsCache(marketId, eventVisitorId, data){
+    let key = `${OfPayConstKey.marketItemsData}#${marketId}${eventVisitorId}`;
+    let nowString = lk.formatDate(new Date(), 'yyyyMMdd');
+    data.updateDate = nowString;
+    let jsonStr = JSON.stringify(data);
+    lk.setVal(key, jsonStr);
+}
+
+async function getMarketItemsFromSvr(marketId, eventVisitorId){
     return new Promise((resolve, _reject) => {
         try {
             const headers = GCommonHeads;
@@ -288,6 +366,7 @@ async function getMarketItems(marketId, eventVisitorId){
                         if (info.code == 'success') {
                             lk.log(`请求市场商品列表数据成功`);
                             ret = info.data;
+                            saveMarketItemsCache(marketId, eventVisitorId, info);
                         } else {
                             lk.log(`请求市场商品列表数据成功,响应:${data}`);
                         }

+ 15 - 0
Scripts/elife/ofpayHelper.js

@@ -220,6 +220,21 @@ function handleMarketGoodsList(tabIndex){
     }
     let key = `${OfPayConstKey.marketItemsData}${tabIndex}`;
     lk.setVal(key, rspBody);
+    if(tabIndex == 1){
+        try{
+            saveMarketItemsCache(urlParams.marketId, urlParams.eventVisitorId, JSON.stringify(rspBody));
+        }catch{
+
+        }
+    }
+}
+
+function saveMarketItemsCache(marketId, eventVisitorId, data){
+    let key = `${OfPayConstKey.marketItemsData}#${marketId}${eventVisitorId}`;
+    let nowString = lk.formatDate(new Date(), 'yyyyMMdd');
+    data.updateDate = nowString;
+    let jsonStr = JSON.stringify(data);
+    lk.setVal(key, jsonStr);
 }
 
 function handleOrderList(){