shawenguan 1 yıl önce
ebeveyn
işleme
a26b692802

+ 47 - 3
BoxJsSub/hbcpre.json

@@ -269,14 +269,14 @@
                 },
                 {
                     "id": "HbcpreCompositeOnlyUseCache",
-                    "name": "是否仅用缓存的活动数据",
+                    "name": "仅用缓存数据来匹配",
                     "val": false,
                     "type": "boolean",
                     "desc": "默认关闭"
                 },
                 {
                     "id": "HbcpreCompositeActivityTaskMode",
-                    "name": "当前合成模式",
+                    "name": "当前合成任务模式",
                     "val": "1",
                     "type": "selects",
                     "desc": "",
@@ -331,7 +331,7 @@
                     "name": "合成功能入口名称自定义(模式2)",
                     "val": "",
                     "type": "text",
-                    "desc": "当前合成名称"
+                    "desc": "合成功能入口名称自定义(模式2)"
                 },
                 {
                     "id": "HbcpreCompositeActivityData",
@@ -367,6 +367,30 @@
                     "desc": "默认关闭"
                 },
                 {
+                    "id": "HbcpreExchangeOnlyUseCache",
+                    "name": "仅用缓存数据来匹配",
+                    "val": false,
+                    "type": "boolean",
+                    "desc": "默认关闭"
+                },
+                {
+                    "id": "HbcpreExchangeActivityTaskMode",
+                    "name": "当前兑换任务模式",
+                    "val": "1",
+                    "type": "selects",
+                    "desc": "",
+                    "items": [
+                        {
+                            "key": "1",
+                            "label": "模式1"
+                        },
+                        {
+                            "key": "2",
+                            "label": "模式2"
+                        }
+                    ]
+                },
+                {
                     "id": "HbcpreExchangeActivityId",
                     "name": "当前兑换Id",
                     "val": "",
@@ -381,6 +405,26 @@
                     "desc": "当前兑换名称"
                 },
                 {
+                    "id": "HbcpreExchangeEntryTitleList",
+                    "name": "兑换功能入口名称选择(模式2)",
+                    "val": "",
+                    "type": "radios",
+                    "desc": "",
+                    "items": [
+                        {
+                            "key": "上新兑换",
+                            "label": "上新兑换"
+                        }
+                    ]
+                },
+                {
+                    "id": "HbcpreCompositeEntryTitleCustom",
+                    "name": "兑换功能入口名称自定义(模式2)",
+                    "val": "",
+                    "type": "text",
+                    "desc": "兑换功能入口名称自定义(模式2)"
+                },
+                {
                     "id": "HbcpreExchangeActivityData",
                     "name": "活动列表",
                     "val": "{}",

+ 15 - 13
Scripts/hbcpre/hbcpreComposite.js

@@ -119,7 +119,7 @@ function getActivitDataCache(eventsType, eventsId){
     return data;
 }
 
-function saveActivitDataCache(eventsType, actData, eventsId){
+function saveActivitDataCache(eventsType, actData, aysncUpdateTask, eventsId){
     if(!actData){
         if(!eventsId){
             return;
@@ -145,12 +145,16 @@ function saveActivitDataCache(eventsType, actData, eventsId){
     let storeKey = null;
     if(eventsType == 1){
         storeKey = HbcpreConstKey.compositeActivityData;
-        magicJS.data.write(HbcpreConstKey.compositeActivityId, actData.eventsId);
-        magicJS.data.write(HbcpreConstKey.compositeActivityName, actData.eventsName);
+        if(aysncUpdateTask){
+            magicJS.data.write(HbcpreConstKey.compositeActivityId, actData.eventsId);
+            magicJS.data.write(HbcpreConstKey.compositeActivityName, actData.eventsName);
+        }
     }else if(eventsType == 3){
         storeKey = HbcpreConstKey.exchangeActivityData;
-        magicJS.data.write(HbcpreConstKey.exchangeActivityId, actData.eventsId);
-        magicJS.data.write(HbcpreConstKey.exchangeActivityName, actData.eventsName);
+        if(aysncUpdateTask){
+            magicJS.data.write(HbcpreConstKey.exchangeActivityId, actData.eventsId);
+            magicJS.data.write(HbcpreConstKey.exchangeActivityName, actData.eventsName);
+        }
     }
     if(!storeKey){
         data = {};
@@ -193,9 +197,8 @@ function getWillCompositeTaskSearchKeys() {
 }
 
 function getCompositeTaskMode(){
-    let mode = magicJS.data.read(HbcpreConstKey.compositeActivityTaskMode);
-    magicJS.logger.error(`mode=${mode}`);
-    return mode;
+    let mode = magicJS.data.read(HbcpreConstKey.compositeActivityTaskMode, 1);
+    return Number(mode);
 }
 
 function getActivityIdByName(activityName){
@@ -213,8 +216,7 @@ function getActivityIdByName(activityName){
 }
 
 function getHomeCompositeEntrySelectList(){
-    let retArr = magicJS.data.read(HbcpreConstKey.compositeEntryTitleList, []);
-    magicJS.logger.error(`select=${retArr}`);
+    let retArr = magicJS.data.read(HbcpreConstKey.compositeEntryTitleList, null);
     if (retArr && retArr.length > 0) {
         let segments = retArr.split(',');
         retArr = [];
@@ -277,7 +279,7 @@ async function tryOneComposite(activityId){
     if(!isCompositeOnlyUseCache()){
         magicJS.logger.info(`请求活动[${activityId}]数据`);
         activityData = await getCompositeList(activityId);
-        saveActivitDataCache(1, activityData);
+        saveActivitDataCache(1, activityData, false);
     }
     if(!activityData){
         magicJS.logger.info(`缺少合成活动数据`);
@@ -317,7 +319,7 @@ async function tryOneComposite(activityId){
         magicJS.notification.appendNotifyInfo(`🎉合成<${activityData.eventsName}>合成成功!`);
         // 刷新合成数据
         activityData = await getCompositeList(activityId);
-        saveActivitDataCache(1, activityData);
+        saveActivitDataCache(1, activityData, false);
     } else {
         magicJS.notification.appendNotifyInfo(`🎉合成<${activityData.eventsName}>${result.message}`);
     }
@@ -326,7 +328,7 @@ async function tryOneComposite(activityId){
 
 async function getActivityIdsByEntryTile(){
     let titleList = getHomeCompositeEntrySelectList();
-    if(titleList.length == 0){
+    if(!titleList || titleList.length == 0){
         return [];
     }
     let reqData = {};

+ 94 - 15
Scripts/hbcpre/hbcpreExchange.js

@@ -26,6 +26,9 @@ const HbcpreConstKey = {
     exchangeActivityData: 'HbcpreExchangeActivityData',
     exchangeActivityId: 'HbcpreExchangeActivityId',
     exchangeActivityName: 'HbcpreExchangeActivityName',
+    exchangeEntryTitleList: 'HbcpreExchangeEntryTitleList',
+    exchangeEntryTitleCustom: 'HbcpreExchangeEntryTitleCustom',
+    exchangeActivityTaskMode: 'HbcpreExchangeActivityTaskMode',
 };
 
 const gUserAgent = `Mozilla/5.0 (iPhone; CPU iPhone OS 16_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1`;
@@ -116,7 +119,7 @@ function getActivitDataCache(eventsType, eventsId){
     return data;
 }
 
-function saveActivitDataCache(eventsType, actData, eventsId){
+function saveActivitDataCache(eventsType, actData, aysncUpdateTask, eventsId){
     if(!actData){
         if(!eventsId){
             return;
@@ -142,12 +145,16 @@ function saveActivitDataCache(eventsType, actData, eventsId){
     let storeKey = null;
     if(eventsType == 1){
         storeKey = HbcpreConstKey.compositeActivityData;
-        magicJS.data.write(HbcpreConstKey.compositeActivityId, actData.eventsId);
-        magicJS.data.write(HbcpreConstKey.compositeActivityName, actData.eventsName);
+        if(aysncUpdateTask){
+            magicJS.data.write(HbcpreConstKey.compositeActivityId, actData.eventsId);
+            magicJS.data.write(HbcpreConstKey.compositeActivityName, actData.eventsName);
+        }
     }else if(eventsType == 3){
         storeKey = HbcpreConstKey.exchangeActivityData;
-        magicJS.data.write(HbcpreConstKey.exchangeActivityId, actData.eventsId);
-        magicJS.data.write(HbcpreConstKey.exchangeActivityName, actData.eventsName);
+        if(aysncUpdateTask){
+            magicJS.data.write(HbcpreConstKey.exchangeActivityId, actData.eventsId);
+            magicJS.data.write(HbcpreConstKey.exchangeActivityName, actData.eventsName);
+        }
     }
     if(!storeKey){
         data = {};
@@ -189,6 +196,11 @@ function getWillExchangeTaskSearchKeys() {
     return keyArr;
 }
 
+function getExchangeTaskMode(){
+    let mode = magicJS.data.read(HbcpreConstKey.compositeActivityTaskMode, 1);
+    return Number(mode);
+}
+
 function getActivityIdByName(activityName){
     let dataDict = getActivitDataCache(3);
     if(!dataDict){
@@ -203,24 +215,63 @@ function getActivityIdByName(activityName){
     return null;
 }
 
+function getHomeExchangeEntrySelectList(){
+    let retArr = magicJS.data.read(HbcpreConstKey.exchangeEntryTitleList, null);
+    magicJS.logger.error(`select=${retArr}`);
+    if (retArr && retArr.length > 0) {
+        let segments = retArr.split(',');
+        retArr = [];
+        for (let vstr of segments) {
+            retArr.push(vstr.trim());
+        }
+    }
+    let customStr = magicJS.data.read(HbcpreConstKey.exchangeEntryTitleCustom, null);
+    if(customStr && customStr.length > 0){
+        customStr = customStr.trim();
+        if(customStr.length > 0){
+            let segments = customStr.split(',');
+            retArr = [];
+            for (let vstr of segments) {
+                retArr.push(vstr.trim());
+            }
+        }
+    }
+    return retArr;
+}
+
 async function tryAllExchange() {
+    let taskMode = getExchangeTaskMode();
     let idsList = getWillExchangeTaskIds();
-    if(idsList.length == 0){
-        let namesList = getWillExchangeTaskSearchKeys();
-        for(let name of namesList){
-            let actId = getActivityIdByName(name);
-            if(actId){
-                idsList.push(actId);
+    if(taskMode == 1){
+        magicJS.logger.info(`尝试通过活动名称匹配对应活动ID`);
+        if(idsList.length == 0){
+            let namesList = getWillExchangeTaskSearchKeys();
+            for(let name of namesList){
+                let actId = getActivityIdByName(name);
+                if(actId){
+                    idsList.push(actId);
+                }
             }
         }
     }
+    if(taskMode == 2){
+        if(idsList.length == 0){
+            magicJS.logger.info(`尝试通过入口名称匹配对应活动ID`);
+            let newList = await getActivityIdsByEntryTile();
+            idsList = idsList.concat(newList);
+        }
+    }
     if(idsList.length == 0){
         magicJS.logger.info(`缺少兑换活动ID`);
-        magicJS.notification.appendNotifyInfo(`❌兑换活动缺少相关参数!`);
+        // magicJS.notification.appendNotifyInfo(`❌兑换活动缺少相关参数!`);
         return;
     }
+    let execFlags = {};
     for(let activityId of idsList){
-        await tryOneExchange(activityId);
+        if(!execFlags[activityId]){
+            execFlags[activityId] = true;
+            await tryOneExchange(activityId);
+        }
     }
 }
 
@@ -228,7 +279,7 @@ async function tryOneExchange(activityId){
     let activityData = getActivitDataCache(3, activityId);
     if(!isExchangeOnlyUseCache()){
         activityData = await getCompositeList(activityId);
-        saveActivitDataCache(3, activityData);
+        saveActivitDataCache(3, activityData, false);
     }
     if(!activityData){
         magicJS.logger.info(`缺少兑换活动数据`);
@@ -268,13 +319,41 @@ async function tryOneExchange(activityId){
         magicJS.notification.appendNotifyInfo(`🎉兑换<${activityData.eventsName}>兑换成功!`);
         // 刷新兑换数据
         activityData = await getCompositeList(activityId);
-        saveActivitDataCache(3, activityData);
+        saveActivitDataCache(3, activityData, false);
     } else {
         magicJS.notification.appendNotifyInfo(`🎉兑换<${activityData.eventsName}>${result.message}`);
     }
     return result;
 }
 
+async function getActivityIdsByEntryTile(){
+    let titleList = getHomeExchangeEntrySelectList();
+    if(!titleList || titleList.length == 0){
+        return [];
+    }
+    let reqData = {};
+    let result = await hbRequest({API: '/mall/homepage/info', METHOD: 'get'}, reqData);
+    if (result.code != 200) {
+        return [];
+    }
+    let infoList = [];
+    let idsList = [];
+    let bannerList = result.data.bannerList || [];
+    for(let i=0; i < bannerList.length; i++){
+        const item = bannerList[i];
+        if(item.url.indexOf('http') == -1){
+            continue;
+        }
+        if(checkKeysInText(titleList, item.name)){
+            const params = magicJS.parseQueryStr(item.url);
+            params.name = item.name;
+            infoList.push(params);
+            idsList.push(params.id);
+        }
+    }
+    return idsList;
+}
+
 function readMySeriesOwnCntFakeData() {
     gItemCntRwDict = {};
     let text = magicJS.data.read(HbcpreConstKey.myOwnSeriesCntFakeData, null);

+ 14 - 7
Scripts/hbcpre/hbcpreHelper.js

@@ -53,6 +53,9 @@ const HbcpreConstKey = {
     compositeActivityData: 'HbcpreCompositeActivityData',
     compositeActivityId: 'HbcpreCompositeActivityId',
     compositeActivityName: 'HbcpreCompositeActivityName',
+    compositeEntryTitleList: 'HbcpreCompositeEntryTitleList',
+    compositeEntryTitleCustom: 'HbcpreCompositeEntryTitleCustom',
+    compositeActivityTaskMode: 'HbcpreCompositeActivityTaskMode',
 
     // 兑换相关
     exchangeItemDataGrabEnabled: 'HbcpreExchangeItemDataGrabEnabled',
@@ -254,7 +257,7 @@ function getActivitDataCache(eventsType, eventsId){
 }
 
 
-function saveActivitDataCache(eventsType, actData, eventsId){
+function saveActivitDataCache(eventsType, actData, aysncUpdateTask, eventsId){
     if(!actData){
         if(!eventsId){
             return;
@@ -280,12 +283,16 @@ function saveActivitDataCache(eventsType, actData, eventsId){
     let storeKey = null;
     if(eventsType == 1){
         storeKey = HbcpreConstKey.compositeActivityData;
-        magicJS.data.write(HbcpreConstKey.compositeActivityId, actData.eventsId);
-        magicJS.data.write(HbcpreConstKey.compositeActivityName, actData.eventsName);
+        if(aysncUpdateTask){
+            magicJS.data.write(HbcpreConstKey.compositeActivityId, actData.eventsId);
+            magicJS.data.write(HbcpreConstKey.compositeActivityName, actData.eventsName);
+        }
     }else if(eventsType == 3){
         storeKey = HbcpreConstKey.exchangeActivityData;
-        magicJS.data.write(HbcpreConstKey.exchangeActivityId, actData.eventsId);
-        magicJS.data.write(HbcpreConstKey.exchangeActivityName, actData.eventsName);
+        if(aysncUpdateTask){
+            magicJS.data.write(HbcpreConstKey.exchangeActivityId, actData.eventsId);
+            magicJS.data.write(HbcpreConstKey.exchangeActivityName, actData.eventsName);
+        }
     }
     if(!storeKey){
         data = {};
@@ -1051,12 +1058,12 @@ function handlerCompositeList() {
     let eventsType = data.eventsType;
     if(eventsType == 1){
         if (isCompositeItemGrabEnabled()) {
-            saveActivitDataCache(1, data);
+            saveActivitDataCache(1, data, true);
             magicJS.notification.post(scriptName, "", `🎉[合成]<${data.eventsName}>采集成功!`);
         }
     } else if(eventsType == 3){
         if (isExchangeItemGrabEnabled()){
-            saveActivitDataCache(3, data);
+            saveActivitDataCache(3, data, true);
             magicJS.notification.post(scriptName, "", `🎉[兑换]<${data.eventsName}>采集成功!`);
         }
     }