shawenguan há 1 ano atrás
pai
commit
36fb24afe9
1 ficheiros alterados com 40 adições e 7 exclusões
  1. 40 7
      Scripts/wubian/wubianSynthesis.js

+ 40 - 7
Scripts/wubian/wubianSynthesis.js

@@ -354,15 +354,16 @@ function getSynthesizeCombination(retCvtData) {
         magicJS.logger.info(`ruleList${JSON.stringify(ruleList)}`);
         magicJS.logger.info(`goodsList:${JSON.stringify(goodsList)}`);
         for (let i = 0; i < ruleList.length; i++) {
-            let oneData = goodsList[i];
             let limitCount = ruleList[i].num;
-            magicJS.logger.info(`oneData${JSON.stringify(oneData)}`);
+            let matchArtIdList = ruleList[i].matchArtIdList;
             magicJS.logger.info(`limitCount:${limitCount}`);
-            if (oneData && oneData.verList && limitCount <= oneData.verList.length) {
-                let oneListSub = oneData.verList.splice(oneData.verList.length - limitCount, limitCount);
-                for (let j = 0; j < oneListSub.length; j++) {
-                    oneListSub[j].title = oneData.title;
-                    retOneList.push(oneListSub[j]);
+            magicJS.logger.info(`matchArtIdList:${JSON.stringify(matchArtIdList)}`);
+            let oneData = goodsList[i];
+            let matchArtList = getSubGoodsList(goodsList, matchArtIdList, limitCount);
+            if (matchArtList && matchArtList.length == limitCount) {
+                magicJS.logger.info(`matchArtList:${JSON.stringify(matchArtList)}`);
+                for (let j = 0; j < matchArtList.length; j++) {
+                    retOneList.push(matchArtList[j]);
                 }
             } else {
                 isContinus = false;
@@ -376,6 +377,38 @@ function getSynthesizeCombination(retCvtData) {
     return retAllList;
 }
 
+function getSubGoodsList(goodsList, matchArtIdList, num) {
+    let retList = [];
+    for (let i = 0; i < goodsList.length; i++) {
+        const item = goodsList[i];
+        if (matchArtIdList.includes(item.artHashId)) {
+            let neddNum = num - retList.length;
+            let diffNum = item.verList.length - neddNum;
+            if (diffNum > 0) {
+                let tmpLst = item.verList.splice(item.verList.length - num, neddNum);
+                // retList = retList.concat(tmpLst);
+                for (let j = 0; j < tmpLst.length; j++) {
+                    tmpLst[j].title = item.title;
+                    retList.push(tmpLst[j]);
+                }
+                break;
+            } else {
+                let tmpLst = item.verList.splice(0, retList.length);
+                // retList = retList.concat(tmpLst);
+                for (let j = 0; j < tmpLst.length; j++) {
+                    tmpLst[j].title = item.title;
+                    retList.push(tmpLst[j]);
+                }
+            }
+            neddNum = num - retList.length;
+            if (neddNum == 0) {
+                break;
+            }
+        }
+    }
+    return retList;
+}
+
 function getActivityType(key) {
     let nType = 0;
     if (!key || key.length == 0) {