shawenguan преди 1 година
родител
ревизия
bb2cdb77e5
променени са 2 файла, в които са добавени 64 реда и са изтрити 9 реда
  1. 13 1
      Scripts/wubian/wubianHelper.js
  2. 51 8
      Scripts/wubian/wubianSynthesis.js

+ 13 - 1
Scripts/wubian/wubianHelper.js

@@ -38,6 +38,7 @@ const WuBianConstKey = {
 
     SynthesisConcurrentMode: 'WubianSynthesisConcurrentMode',
     SynthesisRunsPerSecond: 'WubianSynthesisRunsPerSecond',
+    SynthesisActivityDisabled: 'WubianSynthesisActivityDisabled',
 
     FirstOrderCaptureEnabled: 'WubianFirstOrderCaptureEnabled',
     FirstArtListData: 'WubianFirstArtListData',
@@ -607,7 +608,7 @@ function handleActivityList() {
         dataDict[hashId] = item;
         // item.startTime = Math.floor(Date.now() / 1000 - 3600);
         // item.endTiem = Math.floor(Date.now() / 1000 + 3600);
-        if (nowTime < item.endTiem + 24 * 3600) {
+        if (nowTime < item.endTiem + 24 * 3600 * 100) {
             if (item.status == 0) {
                 item.name = `${item.name}(未开始)`;
             } else if (item.status == 2) {
@@ -641,6 +642,11 @@ function isFastBuyCaptureEnabled() {
     return isEnabled;
 }
 
+function setActivityDisabled(activityId, bDisabled = true) {
+    let key = `${WuBianConstKey.SynthesisActivityDisabled}#${activityId}`;
+    magicJS.data.write(key, bDisabled);
+}
+
 function handleCvtGoodsList() {
     let rspData = getResponsePlainData();
     if (!rspData) {
@@ -656,7 +662,10 @@ function handleCvtGoodsList() {
         let activityInfo = rspData.data.activityInfo;
         activityId = activityInfo.activityId;
         magicJS.data.write(WuBianConstKey.ActivityId, activityId);
+        magicJS.data.write(WuBianConstKey.ActivityIndexName, activityInfo.name);
         activityInfo.type = 1;
+        setActivityDisabled(activityId, false);
+
         magicJS.notification.appendNotifyInfo(`🎉[${activityInfo.name}]兑换数据采集成功!`);
     }
     let key = `${WuBianConstKey.ActivityGoodsList}#${activityId}`;
@@ -679,7 +688,10 @@ function handleCompositeGoodsList() {
         let activityInfo = rspData.data.activityInfo;
         activityId = activityInfo.activityId;
         magicJS.data.write(WuBianConstKey.ActivityId, activityId);
+        magicJS.data.write(WuBianConstKey.ActivityIndexName, activityInfo.name);
         activityInfo.type = 0;
+        setActivityDisabled(activityId, false);
+
         magicJS.notification.appendNotifyInfo(`🎉[${activityInfo.name}]合成数据采集成功!`);
     }
     let key = `${WuBianConstKey.ActivityGoodsList}#${activityId}`;

+ 51 - 8
Scripts/wubian/wubianSynthesis.js

@@ -17,6 +17,10 @@ const WuBianConstKey = {
     ActivityId: 'WubianActivityId',
     SynthesisConcurrentMode: 'WubianSynthesisConcurrentMode',
     SynthesisRunsPerSecond: 'WubianSynthesisRunsPerSecond',
+
+    SynthesisCompositeGoodsListReqTime: 'WubianSynthesisCompositeGoodsListReqTime',
+    SynthesisConvertGoodsListReqTime: 'WubianSynthesisConvertGoodsListReqTime',
+    SynthesisActivityDisabled: 'WubianSynthesisActivityDisabled',
 };
 
 const gUserAgent = `Mozilla/5.0 (iPhone; CPU iPhone OS 16_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Html5Plus/1.0 (Immersed/20) uni-app`;
@@ -217,7 +221,7 @@ async function getWillActivityData() {
 
     for (let hashId in activityLstMap) {
         let item = activityLstMap[hashId];
-        if ((indexName.length > 0 && item.name.indexOf(indexName) != -1) || (item.activityId == activityId || item.hashId == activityId)) {
+        if ((item.activityId == activityId || item.hashId == activityId) || (indexName.length > 0 && item.name.indexOf(indexName) != -1)) {
             activityData = item;
         }
     }
@@ -231,6 +235,37 @@ async function getWillActivityData() {
     return activityData;
 }
 
+function setCompositeGoodsListReqTime(time) {
+    magicJS.data.write(WuBianConstKey.SynthesisCompositeGoodsListReqTime, time);
+}
+
+function setConvertGoodsListReqTime(time) {
+    magicJS.data.write(WuBianConstKey.SynthesisConvertGoodsListReqTime, time);
+}
+
+function checkCompositeGoodsListReqForceNeed() {
+    let time = magicJS.data.read(WuBianConstKey.SynthesisCompositeGoodsListReqTime, 0);
+    let diffTime = Date.now() - Number(time);
+    return diffTime > 10 * 1000;
+}
+
+function checkConvertGoodsListReqForceNeed() {
+    let time = magicJS.data.read(WuBianConstKey.SynthesisConvertGoodsListReqTime, 0);
+    let diffTime = Date.now() - Number(time);
+    return diffTime > 10 * 1000;
+}
+
+function checkActivityDisable(activityId) {
+    let key = `${WuBianConstKey.SynthesisActivityDisabled}#${activityId}`;
+    let bDisable = magicJS.data.read(key, false);
+    return bDisable;
+}
+
+function setActivityDisabled(activityId, bDisabled = true) {
+    let key = `${WuBianConstKey.SynthesisActivityDisabled}#${activityId}`;
+    magicJS.data.write(key, bDisabled);
+}
+
 async function trySynthesize() {
     let activityData = await getWillActivityData();
     magicJS.logger.info(`activityData=${JSON.stringify(activityData)}`);
@@ -240,14 +275,18 @@ async function trySynthesize() {
     let activityId = activityData.hashId || activityData.activityId;
     let retCvtData = null;
     if (activityData.type == 0) {
-        retCvtData = await getCompositeGoodsList(activityId, true);
+        retCvtData = await doGetCompositeGoodsList(activityId, checkCompositeGoodsListReqForceNeed());
     } else if (activityData.type == 1) {
-        retCvtData = await getCvtGoodsList(activityId, true);
+        retCvtData = await doGetConvertGoodsList(activityId, checkConvertGoodsListReqForceNeed());
     }
     magicJS.logger.info(`retCvtData=${JSON.stringify(retCvtData)}`);
     if (!retCvtData) {
         return;
     }
+    if (checkActivityDisable(activityId)) {
+        magicJS.notification.appendNotifyInfo(`活动[${activityData.name}]已禁用,请重新配置`);
+        return;
+    }
     let willCount = getActivityWillCount();
     let combinationLst = getSynthesizeCombination(retCvtData);
     magicJS.logger.info(`combinationLst=${JSON.stringify(combinationLst)}`);
@@ -258,7 +297,9 @@ async function trySynthesize() {
     let ctrlMillSec = 1000 / nRuns;
     let isConcurrentExcute = isConcurrentMode();
     if (nExcuteCount == 0) {
-        tipsText += `缺少可执行的材料组合,请检查活动配置`;
+        tipsText += `由于缺少可执行的材料组合,该活动自动禁用\n`;
+        tipsText += `请检查活动重新配置,或购买相应材料,重新开启活动任务`;
+        setActivityDisabled(activityId, true);
     } else {
         if (isConcurrentExcute) {
             for (let n = 0; n < nRuns; n++) {
@@ -500,11 +541,12 @@ async function queryActivityList(activityType, page, status = 0) {
     return result;
 }
 
-async function getCvtGoodsList(activityId, noCache) {
+async function doGetConvertGoodsList(activityId, noCache) {
     let key = `${WuBianConstKey.ActivityGoodsList}#${activityId}`;
     let data = magicJS.data.read(key, null);
     if (!data || noCache) {
-        let ret = await queryCvtGoodsList(activityId);
+        setConvertGoodsListReqTime(Date.now());
+        let ret = await queryConvertGoodsList(activityId);
         if (ret && ret.code == 200) {
             data = ret.data;
             magicJS.data.write(key, data);
@@ -515,7 +557,7 @@ async function getCvtGoodsList(activityId, noCache) {
 
 
 
-async function queryCvtGoodsList(activityId) {
+async function queryConvertGoodsList(activityId) {
     const url = `https://api.wubian.pro/vmf/app/synthesis/convertGoodsList`;
     const reqData = {
         activityId: activityId,
@@ -541,10 +583,11 @@ async function queryCvtGoodsList(activityId) {
 }
 
 
-async function getCompositeGoodsList(activityId, noCache) {
+async function doGetCompositeGoodsList(activityId, noCache) {
     let key = `${WuBianConstKey.ActivityGoodsList}#${activityId}`;
     let data = magicJS.data.read(key, null);
     if (!data || noCache) {
+        setCompositeGoodsListReqTime(Date.now());
         let ret = await queryCompositeGoodsList(activityId);
         if (ret && ret.code == 200) {
             data = ret.data;